S7-1200/1500通信库LCom是西门子官方推出的用于博途环境下的通信库,使用该通信库,通过简单的配置即可在两个设备之间基于TCP协议进行数据交换。LCom除了可用于标准的TCP通信,还自定义了一个称为LCom的附加协议。今天这篇文章,我们先来介绍下LCom通信库。
本文包括如下两个主题:
如何下载LCom库并添加到项目中;
LCom库文件介绍;
1、如何下载LCom库并添加到项目中
1.1、如何下载?
可以到西门子官网下载,或在公众号(founderchip)底部输入口令“lcom”。
1.2、如何添加到项目中?
关于函数库的加载,我曾经在通用函数库(LGF)的文章中介绍过,这里我们再介绍一遍。
打开博途开发环境(我使用的是V16),新建一个项目并打开。在右侧的导航栏单击“库”选项卡,在全局库中单击下图的“打开全局库”图标
在弹出的对话框中浏览到你下载文件的存放位置,如下图所示:
目前最新的LCom库版本是V2.0.6,早期开发环境是博途V14版本。我们使用博途V16打开会自动升级,并保存一个V16版本的库。默认情况下,我们以只读的方式打开,如下图所示:
2、LCom库文件介绍
LCom库由三部分组成:
函数库代码:LCom_Communication;
函数库常量:LCom_Constants;
函数库自定义类型:typeLCom_Config和typeLCom_Diagnostics
为了能正常使用该通信库,需要如下操作:
将函数库代码(LCom_Communication)复制到项目的“程序块”中,可以新建一个分组(文件夹)以标识;
将函数库常量(LCom_Constants)复制到项目的“PLC变量”中;
函数库自定义类型(typeLCom_Config和typeLCom_Diagnostics)复制到项目的“PLC数据类型”中;
接下来我们介绍下LCom_Communication的参数。
创建一个函数块(比如FB100),将LCom_Communication拖放到该函数块中,可以看到LCom_Communication的参数,如下图所示:
各参数的含义如下:
2.1、输入参数
名称 | 数据类型 | 说明 |
---|---|---|
enable | BOOL | 上升沿与通信伙伴建立连接 |
send | BOOL | 上升沿发送数据 |
sendDataLength | UDInt | 数据的长度(字节数) |
readDataLength | UDInt | 详见2.1① |
configuration | typeLCom_Config | 详见数据类型: typeLCom_Config |
2.1①、readDataLength,用于设置数据读取的时机,分两种情况:
不使用LCom协议时:0=不读取TCP缓冲区;1~4294967294=等待TCP缓冲区处于可读取状态,设置输出位“dataReceived”为TRUE,设置值之外的数据依然存放在TCP缓冲区;4294967295(16#FFFFFFFF)=立即读取TCP缓冲区的所有可用数据 (默认);
使用LCom协议时:0=不读取TCP缓冲区;1~4294967294=不相关;4294967295(16#FFFFFFFF)=不相关;
2.2、输出参数
名称 | 数据类型 | 说明 |
---|---|---|
connected | BOOL | 通信是否建立,1=建立 |
sending | BOOL | 数据是否已经被发送,1=已经发送 |
dataReceived | BOOL | 已经接收到新数据 |
receivedDataLength | UDInt | 接收数据的长度,以字节为单位 |
busy | BOOL | 是否繁忙,1=繁忙 |
error | BOOL | 是否出错,1=出错 |
status | WORD | 状态字 |
2.3、输入/输出参数
名称 | 数据类型 | 说明 |
---|---|---|
sendBuffer | Variant | 数据发送缓存区 |
receiveBuffer | Variant | 数据接收缓存区 |
diagnostics | typeLCom_Diagnostics | 诊断数据缓存区 |
限于篇幅,typeLCom_Config和typeLCom_Diagnostics我们就在下一篇文章详细介绍吧。
我的微信视频号分享一些工控小知识,欢迎扫描下面的二维码观看:
发表评论