首页 理论教育 自由口通信的应用实例

自由口通信的应用实例

时间:2023-07-01 理论教育 版权反馈
【摘要】:以两个CM1241RS232通信模块之间的自由口通信为例,介绍S7-1200PLC串口通信模块使用自由口协议和指令编程发送和接收数据。使用“以任意字符开始”;消息结束:设置参考图9-28。

自由口通信的应用实例

以两个CM1241RS232通信模块之间的自由口通信为例,介绍S7-1200PLC串口通信模块使用自由口协议和指令编程发送和接收数据。

1.本例所用的硬件和软件

本例中使用标准RS232C电缆连接两个CM1241 RS232通信模块,硬件和软件如下:

•CPU 1217C DC/DC/DC(6ES7217-1AG40-0XB0)V4.2;

•CM1241 RS232(6ES7241-1AH32-0XB0)V2.2;

•标准RS232C电缆。

2.S7-1200 PLC自由口通信组态

本示例中,在RS232模块“属性>常规>RS232接口选项卡组态自由口通信。

•端口组态:设置参考图9-10。使用“波特率:9.6Kbit/s;奇偶校验:无;数据位:8位字符;停止位:1;流量控制:无”;

•组态传送消息:默认不使用;

•消息开始:设置参考图9-23。使用“以任意字符开始”;

•消息结束:设置参考图9-28。使用“通过消息超时识别消息结束,超时时间

3.S7-1200 PLC自由口通信发送端编程

在指令选项卡“通信>通信处理器>PtP Communication”下,将“Send_P2P”指令拖入到Main[OB1]程序段1中,分配背景数据块“Send_P2P_DB”,并对“Send_P2P”指令的输入输出引脚赋值,如图9-37所示。

978-7-111-58391-2-Chapter09-50.jpg

图9-37 发送程序

“Send_P2P”指令各引脚的解释如下所述:

•REQ:发送请求,每个上升沿发送一个消息帧;

•Port:端口硬件标识符。本例中的值为269;

•BUFFER:发送缓冲区。本例中建立数据块DB10名称为“SendBuffer”,在DB10的“常规>属性”选项卡取消“优化的块访问”。

在DB10中定义变量名称“Send_Data”,其结构为10个字节的数组Array[0..9]of Byte,如图9-38所示。

•LENGTH:发送的消息帧中包含数据字节的长度。传输复杂结构时,建议设置LENGTH为0,此时指令将会传送BUFFER中定义的整个帧。

978-7-111-58391-2-Chapter09-51.jpg

图9-38 Send_P2P发送缓冲区

•DONE:发送完成无错误,置位为TRUE并保持一个周期。(www.xing528.com)

•ERROR:发送完成有错误,置位为TRUE并保持一个周期。

•STATUS:发送状态。通信接口接受发送数据时,STATUS=16#7001;数据传输时STATUS=16#7002;发送完成无错误DONE=TRUE一个周期,STATUS=16#0000,随后STATUS=16#7000;发送完成有错误ERROR=TRUE一个周期,STATUS输出错误代码

本例中,M4.0由FALSE变为TRUE时,发送“SendBuffer”[DB10]内“Send_Data”数组中的10个字节字符数据“hi siemens”,发送结束无错误后,STATUS=16#7000。“Send_P2P”指令的输入输出引脚在监控表中的值如图9-39所示。

978-7-111-58391-2-Chapter09-52.jpg

图9-39 S7-1200 PLC发送端监视表

4.S7-1200 PLC自由口通信接收端编程

在指令选项卡“通信>通信处理器>PtP Communication”下,将“Receive_P2P”指令拖入到Main[OB1]程序段1中,分配背景数据块“Receive_P2P_DB”,并对“Receive_P2P”指令的输入输出引脚赋值,如图9-40所示。

978-7-111-58391-2-Chapter09-53.jpg

图9-40 接收程序

“Receive_P2P”指令各引脚的解释如下所述:

•Port:端口硬件标识符。本例中的值为269。

•BUFFER:指定接收缓冲区。本例中建立非优化的数据块DB11名称为“ReceiveBuffer”,在DB11的“常规>属性”选项卡取消“优化的块访问”。

在DB11中定义变量名称“RCV_Data”,其结构为10个字节的数组Array[0..9]of Byte。

•NDR:成功接收到一个新的消息,置位为TRUE并保持一个周期。

•ERROR:发送完成有错误,置位为TRUE并保持一个周期。

•STATUS:接收完成无错误NDR=TRUE一个周期,STATUS=16#0000或信息代码;接收完成有错误ERROR=TRUE一个周期,STATUS输出错误代码。

•LENGTH:接收到的消息中包含的字节数,长度信息保持一个周期。

由于接收完成位NDR,错误位ERROR和长度LENGTH信息仅保持一个周期,因此在程序段2和3分别调用MOVE指令,以获取接收长度和错误信息,如图9-41所示。

978-7-111-58391-2-Chapter09-54.jpg

图9-41 获取接收长度和错误信息

查看S7-1200 PLC自由口通信接收端的监视表,接收到发送端发送的10个字符“hisie-mens!”,“Receive_P2P”指令一直使能,STATUS将返回状态16#7002,“Receive_P2P”指令接收到的数据及输入输出引脚在监控表中的值如图9-42所示。

978-7-111-58391-2-Chapter09-55.jpg

图9-42 S7-1200 PLC接收端监视表

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈