一、概述
PLC-IOT通过提供常用的物联网组件来实现相关项目的快速开发和交付,物联网组件大体上在于增强设备的通信能力,有两个部分:连接传感器(或者外设) 和 连接服务器。
传感器模块或者外设的通信接口非常多,我们目前提供的是 串口(UART)、SPI、和 RS485(modbus),本文我们将介绍串口通信组件,演示通过串口作为调试工具的方法,提供两个实用场景中串口通信的应用例子。

二、串口通信的配置和功能块
在项目的配置变量里面增加相关的配置启用串口通信, 配置信息的格式是
UART_CONFIG@[波特率,数据位,停止位,校验方式]
默认配置是 UART_CONFIG@[9600,8,1,0]。在不混淆的情况下,默认参数可以不写,例如UART_CONFIG@[115200],就是数据位、停止位和校验位都采用默认配置。
例如

串口通信的功能块包括:文本消息发送和接收(UART_MSG_TX,UART_MSG_RX), 二进制发送和接收(UART_BIN_TX,UART_BIN_RX)。文本消息发送和接收功能块传输的内容都是ASCII码或者UNCODE编码的文本消息;二进制发送和接收功能块传输的则是二进制原始信息。
文本消息发送(UART_MSG_TX)和二进制发送(UART_BIN_TX), 都是在功能块的接口 T 的上升沿触发发送信息,信息的构造则按照接口MSG所描述的消息模板进行。
文本消息接收(UART_MSG_RX)和二进制接收(UART_BIN_RX)依据接口信号MSG所描述的消息模板对接收到的信息进行解析,如果收到的信息能够成功匹配消息模板,则在接口 R 输出一个持续一个扫描周期的正脉冲。
发送和接收功能块都会用到消息模板进行信息构造或者解析,消息模板是一个描述信息构成和排列次序的字符串,内容由 变量引用 和 分隔符 构成,变量引用或者分隔符定义了收发信息的构成部分,变量引用或者分隔符的次序定义了对应信息在收发信息中的排列次序。变量引用的格式是
[@变量名]
消息模板中不是变量引用的其他内容,统称为分隔符,两个变量引用之间的内容、消息模板开始到第一个变量引用前的内容、最后一个变量引用后到消息模板结束的内容,都被视为一个分割符。
变量名可以程序组织单元(POU)中的基本数据类型变量。例如 程序组织单元中的BOOL类型局部变量 IN0,在消息模板用 [@IN0], 在构造文本消息的时候,如果 IN0 的值是 TRUE,[@IN0]则为‘TRUE’,否则为 ‘FALSE’;在构造二进制消息的时候,如果 IN0 的值是 TRUE,[@IN0]则为 1,否则为 0。
变量名也可以是功能块(FB)实例中的接口变量,格式为:
[@功能块实例名称.接口变量名]
例如某POU 中有一个计数器 CTU 的实例 CTU1,消息模板中[@CTU1.CV]则是对实例CTU1 的CV接口变量的引用。
三、基础实验
串口的示例包括: 基本回环测试 、通过串口获取变量值。
3.1 基本回环测试
串口基本回环测试,是把PLC-IOT4813 的接口RXD、TXD 短路起来,自发自收。

这个示例演示输入 IN0(%IX0) 出发串口消息发送功能块按照预设的消息模板发送消息,所用的消息模板描述消息是由变量 IN0 的当前值构成;有一个串口消息接收功能块,这个功能块按照预设的消息模板解析收到消息,如果解析成功,就在 R 端口输出一个脉冲作为指示,用解析得到信息控制OUT0(%QX0)输出接口;有一个 TP 功能块,把串口接收成功指示变换成一个 0.2秒的脉冲输出到 RCV(%QX1)输出接口。
用导线把PLC-IOT4813 的接口RXD、TXD连接在一起,通电下载UART回环测试的程序,用导线连接 X0 和GND 的时候,可以观察到 Y0 继电器吸合,Y1做作为接收指示吸合0.2秒后松开;断开X0 和GND 的时候,Y0 继电器松开,Y1做作为接收指示吸合0.2秒后松开。
3.2 通过串口获取变量值
有了串口通信,电路板就具备了互动的能力,实践中常常用串口作为调试工具,本例将演示用串口查看变量的值。

示例中包含一个计数器 CTU0,由IN0 触发计数值递增。包含两个文本消息接收功能块和文本消息发送功能块。
用USB转串口外设把PLC-IOT4813连接到电脑,按照下表连接信号。
| PLC-IOT4813 | USB串口 |
| GND | GND |
| TXD | RXD |
| RXD | TXD |
用串口调试助手之类的软件做操作界面。波特率设置为 115200,打开串口,把接收和发送的模式都设置为 文本。
用导线接通 X0 和 GND,用串口助手发送文本 IN0,可以看到串口助手收到 TRUE;断开X0 和GND 的连接,用串口助手发送 IN0,可以看到串口助手收到 FALSE。用串口助手发送文本 CV,串口会收到一个数字,用导线在X0 和 GND之间通断一次,再用串口发送CV,可以看到接收的数值在递增。
我们可以增加一个功能块来体验串口查看设计的内部状态的效果。

用串口助手发送文本 NOW,串口助手可以收到 一串当前的日期和时间的字符串。

这个查看设计内部变量的原理,也是设计平台调试工具的基本工作原理。
四、应用实例
串口是常用的外设连接接口,PLC-IOT 的相关功能块,在大量的项目工程实施中得到验证,可以满足常见的项目应用,下面提供两个具体的应用示例。
4.1 RFID 读卡应用
某RFID模块的资料说明了其通信协议的格式如下:

处理接收这种RFID模块的读卡信息,可以使用UART_BIN_RX 功能块,例如

示例中,UART_BIN_RX 会识别所有以0x02 开始、0x03结束的信息,截取中间的信息存放到 命名为RFID的字符串变量中,如果有收到匹配消息模板的内容,通过接口R输出一个正脉冲,触发启动执行其他处理。由于此接收信息的有用部分只有 10 个字节,示例程序截取RFID的左边10个字节,输出到 名为 ID 的字符串,这个动作完成以后,通过UART_TX 功能块把 ID 以文本形式输出到串口。STRING 类型的变量和字符串处理功能,常被用于处理变长数据消息。
这个示例演示了明确格式的二进制消息的处理方法,以及在满足具体条件才启动执行的动作的控制方法——用功能块的 EN 接口控制是否执行动作。 示例的运行测试结果如下:

4.2 无线收发模块应用
长距离无线通信模块TP2210 和TP1107组合,支持串口透传模式,可以把PLC-IOT 采集的信息直接传到服务器。

由于TP2210 和TP1107组合支持串口透传,协议的设计没有太多限制,只考虑服务器端和设备端对数据的解析没有歧义,而且实现工作量要轻,采用 json 格式来传递信息是比较便利的。
五、总结
PLC-IOT提供串口组件,通过配置字设置串口的波特率等参数,用消息模板描述发送数据的格式和接收数据的解析匹配,提供 文本、二进制消息发送和接收功能块,能够处理定长或者变长的数据消息,具体应用项目可以用串口连接外设(例如RFID 读卡模块或者串口透传无线模块),或者作为设计中的应用级调试工具。
1558

被折叠的 条评论
为什么被折叠?



