一、硬件连接

RS485时,TX+和RX+接一起,代表485的A+,TX-和RX-接一起,代表B-。即2,3引脚短接,7,8引脚短接。
二、创建TwinCAT XAE Project项目
连接CPU,并扫描出EL6022硬件;创建Standard PLC Porject;
三、编程
在POUs同级菜单“References”上右击,选择“Add library” 项,选择“Tc2_ModbusRTU”库;

变量声明:
代码块
// 变量声明区的内容
PROGRAM MAIN
VAR
ton0:ton;
ton_start:BOOL := TRUE;
RS485Run :BOOL;
ReadRegEdge:R_TRIG;
WriteRegEdge:R_TRIG;
ReadCoilEdge:R_TRIG;
WriteCoilEdge:R_TRIG;
//ReadRegDo:BOOL;
//WriteRegDo:BOOL;
//ReadCoilDo:BOOL;
//WriteCoilDo:BOOL;
ReadWriteFun:ModbusRtuMaster_KL6x22B;
DataRead : ARRAY[1..10] OF WORD;
DataWrite:ARRAY[1..10] OF WORD:=[11,12,13,14,15,16,17,18,19,20];
CoilRead:ARRAY[1..2]OF BYTE;
CoilWrite:ARRAY[1..2] OF BYTE:=[244,156];
END_VAR
复制成功
主程序:
代码块
PlainText
ton0(IN:= TRUE, PT:= T#0.1S, Q=> , ET=> );
IF ton0.Q THEN
RS485Run := NOT RS485Run;
ton0(IN:= FALSE, PT:= T#0.1S, Q=> , ET=> );// 关闭定时器
END_IF
//ReadRegEdge(CLK:= ReadRegDo, Q=> );
ReadRegEdge(CLK:= RS485Run, Q=> );
// 功能码:3
ReadWriteFun.ReadRegs(
UnitID:= 9, //从站地址
Quantity:= 4, //读取4个字,以word计
MBAddr:= 1, //地址偏移量
cbLength:= SIZEOF(DataRead), //存放读取值的变量的大小,以byte计,该值必须大于等于Quantity值的一半
pMemoryAddr:= ADR(DataRead),
Execute:= ReadRegEdge.Q,
Timeout:= T#100MS,
BUSY=> ,
Error=> ,
ErrorId=> ,
cbRead=> );
(*
WriteRegEdge(CLK:= ton0.q, Q=> );
ReadWriteFun.WriteRegs(
UnitID:= 9,
Quantity:= SIZEOF(DataWrite)/2,
MBAddr:= 1,
cbLength:= SIZEOF(DataWrite),
pMemoryAddr:= ADR(DataWrite),
Execute:= WriteRegEdge.Q,
Timeout:= T#100MS,
BUSY=> ,
Error=> ,
ErrorId=> ,
cbRead=> );
*)
(*
//ReadCoilEdge(CLK:= ReadCoilDo, Q=> );
ReadCoilEdge(CLK:= ton0.Q, Q=> );
// 功能码:1
ReadWriteFun.ReadCoils(
UnitID:= 9,//从站地址
Quantity:= 16, //要写入16个bit,以bit计
MBAddr:= 0, //地址偏移量
cbLength:= 2, //存放待写入变量的大小,以byte计,该值必须大于或等于Quantity的值(相同单位时)
pMemoryAddr:= ADR(CoilRead),
Execute:= ReadCoilEdge.Q,
Timeout:= T#100MS,
BUSY=> ,
Error=> ,
ErrorId=> ,
cbRead=> );
*)
(*
WriteCoilEdge(CLK:= WriteCoilDo, Q=> );
// 功能码:13
ReadWriteFun.WriteMultipleCoils(
UnitID:= 9,
Quantity:= 16,
MBAddr:= 0,
cbLength:= 16,
pMemoryAddr:= ADR(CoilWrite),
Execute:= WriteCoilEdge.Q,
Timeout:= T#100MS,
BUSY=> ,
Error=> ,
ErrorId=> ,
cbRead=> );
*)
复制成功
激活配置“Activate Configuration”。

四、硬件通讯参数设置
在扫描出的硬件中选中EL6022模块,在右侧“COE-ONLINE”选项卡里面的8000折叠项中设置波特率,数据格式和通讯方式。
8000:11 用于设置波特率,选择9600;
8000:15 设置数据格式,选择8N1;
8000:06和8000:07结合起来用于设置通讯方式;;
06 07 通讯方式
true false RS485
false true RS422

三、关联变量
在扫描出的EL6022硬件中,同时选择“Status”和“Data In 0~21”,右击选择“Change Mulite Link”,在弹框中选择对应的变量;输出同理;

激活配置“Activate Configuration”。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删