PLC串口自由协议通讯例程

sunnyroc  2024-03-12 14:21  阅读 2,039 次 评论 0 条
 

自由协议通讯也称无协议通讯,需要根据对方设备的通讯数据格式编写一个临时协议,虽然随着标准协议(Modbus,USS等)的普及,自由协议通讯应用越来越少,但是对于一些小的设备如扫码枪、LCD显示屏等,由于没有集成标准通讯协议,所以只能选用自由协议通讯。以下例程是基于MC532(同平台其它系列使用方法相同) PLC的RS232及RS485硬件端口与电脑串口调试助手(用于模拟串口设备)的自由协议通信例程说明。

 

MC532 PLC端设置及程序编写

 

1、添加通讯功能库

左键双击【库管理器】—左键单击【添加库】,搜索【Serial Communication】,单击【确定】即可添加完成。

PLC串口自由协议通讯例程 Codesys 第1张

PLC串口自由协议通讯例程 Codesys 第2张

2、创建如图所示的变量 

PLC串口自由协议通讯例程 Codesys 第3张

3、调用如图所示的功能块 

PLC串口自由协议通讯例程 Codesys 第4张

4、编写如图所示程序 
①调用COM.Open,此功能块为打开串口;变量usiListLength为变量pParameterList的数据长度(根据后续介绍可知,数据长度为7);变量pParameterList为指针变量,指针地址指向结构体COM.PARAMETER的数组aParamsB115200,数组包含了udiPort,udiValue(波特率)、udiBaudrate,udiValue(端口号) 、 udiParity,udiValue(校验) 、 udiStopBits,udiValue(停止位) 、udiTimeout,udiValue(超时时间) 、udiByteSize,udiValue(数据位)及udiBinary,udiValue(二进制参数,启用二进制模式)7种关于串口的参数,相关的变量创建直接参照下列库文件中的例程,再对参数进行设置;变量hCom为结构体CAA.HANDLE数据类型,获取通讯句柄;
②udiPort,udiValue:波特率,此次例程设置波特率为115200;udiBaudrate,udiValue:端口号,2PLC的RS232端口为COM2,第一个RS485端口为COM0,第二个RS485端口为COM1,因此可根据使用不同硬件端口进行赋值;udiParity,udiValue:校验类型(奇校验、偶校验或无校验),此次例程设置偶校验,赋值COM.PARITY.EVEN ;udiStopBits,udiValue:停止位( ONESTOPBIT/ONE5STOPBIT/TWOSTOPBIT ),此次例程设置为ONESTOPBIT;udiTimeout,udiValue:超时时间,此次例程设置成500ms;udiByteSize,udiValue:数据位,此次例程设置成8;udiBinary,udiValue:二进制参数,采取默认值设置成1即可;设置完成后由于pParameterList为指针类型,则填入ADR(aParamsB115200)即可;

PLC串口自由协议通讯例程 Codesys 第5张

PLC串口自由协议通讯例程 Codesys 第6张

PLC串口自由协议通讯例程 Codesys 第7张

③调用COM.Write,此功能块为串口发送数据;变量udiTimeout超时时间,此次例程设置为500ms;变量hCom为结构体CAA.HANDLE数据类型,为通讯句柄,可从Com.Open中的输出变量hCom获取;pBuffer为指针类型,数据指向串口发送数据缓存的地址,本例程设置写入数值变量为BYTE类型的byWriteData,因此本例程填入ADR(byWriteData);szSize 为写入数据长度,此次例程设置为10个BYTE数据长度,因此填入10;
④调用COM.Read,此功能块为串口读取数据;变量udiTimeout超时时间,此次例程设置为500ms;变量hCom为结构体CAA.HANDLE数据类型,为通讯句柄,可从Com.Open 中的输出变量 hCom获取;pBuffer为指针类型,数据指向串口读取数据缓存的地址,本例程设置写入数值变量为BYTE类型的byReadData,因此本例程填入ADR(byReadData);szBuffer为从串口缓存读取数据的大小,此次例程设置为10个BYTE数据长度,因此填入10;
⑤调用COM.Close,此功能块为关闭串口;变量hCom为结构体CAA.HANDLE数据类型,为通讯句柄,可从Com.Open中的输出变量hCom获取。

 

 

打开串口助手,设置相关参数

 

1、打开计算机管理,查看计算机串口端口号(本次例程使用USB转串口,端口号为COM4)

PLC串口自由协议通讯例程 Codesys 第8张

2、打开串口助手软件(大家可自行在网络上搜索购买,使用方法基本类似)并设置相关参数

【端口】COM4(计算机端口号);【波特率】115200;【数据位】8;【校验位】E偶;【停止位】1;左键单击选择【输入 HEX】及【显示HEX】,设置以16进制数据类型进行写入及显示;左键单击【打开串口】即可。

PLC串口自由协议通讯例程 Codesys 第9张

 

PLC与电脑端做数据发送及读取

1、PLC发送数据,电脑端读取数据

触发COM.Open打开串口端口,对byWriteData赋值十进制数65(16进制为0x41)后触发COM.Write,可见电脑端可读取PLC发送的数值。

PLC串口自由协议通讯例程 Codesys 第10张

2、电脑端发送数据,PLC端读取数据

通过串口助手发送16进制数值0x86;触发COM.Open打开串口端口,关闭串口数据写入功能块,触发COM.Read 功能块,可成功读取16进制数值0x86(十进制为134)

PLC串口自由协议通讯例程 Codesys 第11张

PLC串口自由协议通讯例程 Codesys 第12张

PLC串口自由协议通讯例程 Codesys 第13张

 

-END-

 

 

 

 

本篇文章来源于: 雷赛控制技术

本文地址:https://www.roc666.com/2024/03/industry/plc/codesys/rs485-2.html
版权声明:欢迎分享本文,转载请保留出处!

发表评论


表情