zl程序教程

您现在的位置是:首页 >  其他

当前栏目

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

调试模块协议 通讯 串口 自由 助手 使用
2023-09-11 14:16:29 时间

目录

一、简介

二、环境介绍

三、接线连接

 四、创建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;
	
	COMin				AT%I*		:KL6inData22B;		
	COMout				AT%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 SerialSend
VAR
	send1:							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 THEN
	SEND1(
		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 SerialSendByte
VAR
	
	send1:							SendData;
	receive1:						ReceiveData;

	Timer1:							TON;
	
	nSendByteLength: 				UDINT:= 5;	
	arr_SendData:					ARRAY[1..20]			OF		BYTE;(*READ*)
	arr_RcvData:					ARRAY[1..200]			OF		BYTE;
				
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 THEN
	send1(
		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、字符串型数据发送和接收程序工程

https://download.csdn.net/download/panjinliang066333/87408302

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

https://download.csdn.net/download/panjinliang066333/87410022