本文用最简洁的程序写了一个以起始字符,断帧停收的自由协议通讯程序

1、前期准备

1.1什么是自由协议

自由协议是一种用户自由定义协议内字符的协议,前提是符合接收方的接收内容要求,即要求接收方看的懂。该协议在不同的厂家有不同的称呼,例如西门子:自由口通讯,松下:通用协议,汇川:自由协议,欧姆龙:无协议通讯;自由口协议无主从站之分,通常以发送请求的一方定义为主站,响应请求的一方定义为从站。

1.2硬件

汇川EASY 320PLC一台,连接本机端子排COM0口;

PC机(带串口调试助手)一台;

USB转485线缆一根,USB端连接PC机,另一端连接PLC的COM0口;

1.3定义各部件

1.3.1串口参数定义:9600bps,8位数据位,1位停止位,无奇偶校验

a/在PC机设备管理器中串口处定义该参数(可能需要)

b/在AutoShop软件“配置”COM0中设定该参数

read-normal-img

1.3.2 本次使用自由口协议缓存区设定;

a/发送字节为16进制的,共8个:01/03/00/ 00/00/01/84/0A

b/接收的字节为16进制的,共7个:01/03/02/00/E9/79/CA

c/新建变量表“通讯”,定义发送和接收缓存区变量,都是数组型的

其中发送的内容需要提前设定在变量区中,如下

read-normal-img

变量区中只接受10进制的输入,因此需要将16进制的转化为10进制的,转化可使用WINDOWS自带的计算器中的程序员功能;

2、程序编写

2.1主程序

主程序中使用CALL指令调用写有自由口通讯的子程序;

主程序如下:

子程序如下:

因为本文使用串口调试助手做从站,因此程序块中SerialSR中TIMEOut管脚的时间要足够长,时间短了将不予接收。

上方程序还有一个需要注意的点:SerialSR中Done管脚并不是发送完成为ON,而是接收完成为ON并保持,如果没有接收成功则不为ON,且该指令管脚Execute下次为ON时Done管脚自动为OFF。

3串口调试助手

上图中绿色为串口调试助手接收到的内容,蓝色为串口调试助手发送的内容。

如需要配套程序的请与我联系。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐