1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > TwinCAT3串口通讯EL6021模块使用-和串口调试助手自由协议通讯

TwinCAT3串口通讯EL6021模块使用-和串口调试助手自由协议通讯

时间:2019-05-17 17:21:36

相关推荐

TwinCAT3串口通讯EL6021模块使用-和串口调试助手自由协议通讯

目录

一、简介

二、环境介绍

三、接线连接

四、创建TwinCAT3程序工程

1、IO扫描和参数设置

2、字符串型数据发送和接收PLC程序创建

(1)库文件添加

(2)创建任务和程序

(3)变量关联

(4)重新激活工程、运行

3、运行和测试

(1)运行PLC程序

(2)串口调试助手和PLC程序测试

五、Byte型数据发送和接收

0、简介

1、变量创建

2、用户程序

3、测试

六、测试问题

七、程序工程下载链接

1、字符串型数据发送和接收程序工程

2、Byte型数据发送和接收程序工程

一、简介

EL6021是倍福推出的RS422/485串口通信模块,一般用作Modbus RTU通信的主站也可以做串口自由协议通讯,EL6021是单口RS422/485模块,EL6022是双口(DB9)RS422/485模块,且两个口可独立设置,互不影响。

EL6021支持2400…115200 kbuds的标准波特率,默认波特率为9600,8N1配置。 RS422支持全双工的通信模式,其发送数据线采用差分线对TxD+和TxD-,接收数据线也采用差分线对RxD+和RxD-,这样的设计方式增强了通信的抗干扰能力。 RS485支持半双工的通信模式,不支持全双工模式,只使用一对差分线进行数据传输,一般称为A和B或者TxD和RxD,这样的设计导致设备在发送数据的时候是无法接收数据的,因为总线被占用且正在进行发送操作。

EL6021出厂默认的工作模式是RS422。

二、环境介绍

1、PLC端:CX5130-0125、EL6021,Twincat3

2、PC端:USB转232、232/485转换器,win10系统(USB转232驱动安装好)、串口调试助手

3、EL6021对应的软件授权需额外购买,测试使用7天试用

Modebus-RTU:TF6255

Serial-Communication:TF6340

三、接线连接

485模式 接线说明:

1和2短接然后跟第三方设备485正连接

5和6短接然后跟第三方设备485负连接

422模式 接线说明:

四根线分开依次连接。

首先确保接线正确,将EL6021上面的1、2短接,5、6短接,然后将EL6021的1和5管脚连接到电脑USB转485/422口的RXD+和RXD-上面,USB转485/422的驱动必须装好,这种方式采用485的接线方式,EL6021默认的COEONLINE设置就是485的方式。

EL6021和485的地GND,可以接也可以不接。建议都接0V。

四、创建TwinCAT3程序工程

1、IO扫描和参数设置

(1)配置模式下,在IO-Device进行硬件扫描。找到EL6021硬件模块。

(2)CeE-OnLine参数设置

(3)设置自启动初始化时候参数值

2、字符串型数据发送和接收PLC程序创建

(1)库文件添加

在References中添加Tc2_SerialCom库文件

(2)创建任务和程序

添加全局变量

VAR_GLOBAL(**xBuffer 的作用是,在 PLC 要发送的数据和串行通讯的硬件 Process Data 之间设置一个缓存区。*比如 KL6outData22B 类型的接口,每个 PLC 周期只能发送 22 字节。假如程序需要发送的数据为 100 个,*那么实际上 PLC 程序是把这些数据放到 TxBuffer 中,再由硬件分几个 PLC 周期发送出去*)TxBuffer_PC:ComBuffer;RxBuffer_PC:ComBuffer;COMinAT%I*:KL6inData22B;COMoutAT%Q*:KL6outData22B;COMportControl:SerialLineControl;END_VAR

在Main程序中添加代码

(**功能块的作用,把 TxBuffer 缓存区的数据经过 Process Data 的 ComOut 发送出去,*而把 ComIn 中的数据接收到 RxBuffer。引用这个功能块的程序执行周期越短,*数据交换的效率就越高,所以这段程序应该放在快速任务中作为 Backgroud 代码无条件执行。*)COMportControl(Mode:= SERIALLINEMODE_KL6_22B_STANDARD, pComIn:= ADR(COMin), pComOut:= ADR(COMout), SizeComIn:= SIZEOF(COMin), Error=> , ErrorID=> , TxBuffer:= TxBuffer_PC, RxBuffer:= RxBuffer_PC );

在SerialSend程序中添加局部变量

PROGRAM SerialSendVARsend1:SendString;receive1:ReceiveString;Timer1:TON;_sendString:STRING:='4567';_receive1string:STRING;_recvLast:STRING;//保存上一个周期接收的字符END_VAR

在SerialSend程序中添加程序

//3000ms发送一次Timer1(IN:= NOT timer1.q, PT:=T#3000MS , Q=> , ET=> );IF timer1.Q THENSEND1(SendString:=_sendString ,TXbuffer:=TxBuffer_PC ,Busy=> ,Error=> );END_IF//接收Receive1(Timeout:= t#100ms,ReceivedString:=_receive1string ,RXbuffer:=RxBuffer_PC , );//保存上一个周期接收的字符IF Receive1.Busy THEN_recvLast:=_receive1string;END_IF

然后,重新编译、生成工程,没有错误、没有警告。

(3)变量关联

EL6021中输入输出的21个IO变量分别和PLC程序中的变量关联起来

(4)重新激活工程、运行

3、运行和测试

(1)运行PLC程序

①程序设置3000ms发送一次

②设置发送的字符串

(2)串口调试助手和PLC程序测试

串口参数要和PLC的EL6021配置的串口参数一致。

①打开串口

②串口调试助手接收PLC发送的数据。

③串口调试助手发送数据,在PLC中观测。

五、Byte型数据发送和接收

0、简介

Byte型数据的发送和接收和字符串型数据发送和接收方式一样,都属于串口自由协议通讯方式。因此工程中硬件组态配置是一样的、Main程序中的SerialLineControl功能块使用也一样。本测试程序工程直接复制前面的工程,Task中删除SerialSendString、添加新创建的SerialSendByte程序,如下图所示:

1、变量创建

PROGRAM SerialSendByteVARsend1:SendData;receive1:ReceiveData;Timer1:TON;nSendByteLength: UDINT:= 5;arr_SendData:ARRAY[1..20]OFBYTE;(*READ*)arr_RcvData:ARRAY[1..200]OFBYTE;END_VAR

2、用户程序

arr_SendData[1]:=16#A1;arr_SendData[2]:=16#A2;arr_SendData[3]:=16#A3;arr_SendData[4]:=16#B1;arr_SendData[5]:=16#B2;arr_SendData[6]:=16#B3;arr_SendData[7]:=16#C1;//3000ms发送一次Timer1(IN:= NOT timer1.q, PT:=T#3000MS , Q=> , ET=> );IF timer1.Q THENsend1(pSendData:= ADR(arr_SendData), Length:= nSendByteLength, Busy=> , Error=> , TXbuffer:= TxBuffer_PC);END_IF//receive1(pPrefix:= , LenPrefix:= , pSuffix:= , LenSuffix:= , pReceiveData:= ADR(arr_RcvData), SizeReceiveData:= 200, Timeout:= T#300MS, Reset:= , DataReceived=> , busy=> , Error=> , RxTimeout=> , LenReceiveData=> , RXbuffer:= RxBuffer_PC);

3、测试

六、测试问题

1、RS485通讯,发送的数据又返回来了

解决:由于 BECKHOFF 提供 RS485 和 RS422 通讯是同一个硬件,所以当用作 RS485 通讯 时, 必须发送和接收短接在一起, 并设置参数为半双工“Half Duplex”,

如果是 EL602x, 参 数 8000: 06 置 True 即为半双工。

2、发送和接收数据都没有

解决:

①检查PLC程序配置是否正确

②PLC程序是否执行

③IO中EL6021的变量是否关联起来了,有X表示关联成功、没有X需要再次关联然后重新激活工程。

七、程序工程下载链接

1、字符串型数据发送和接收程序工程

/download/panjinliang066333/87408302

2、Byte型数据发送和接收程序工程

/download/panjinliang066333/87410022

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。