两台LE PLC 通讯 ,
参数 波特率38400bps ,无校验,停止位1 ,数据位8,两台PLC参数一致
一、 期中发送数据的PLC 调用自由协议通讯数据发送“COMM_SEND” 指令。
程序说明:
通过Port 参数将通讯口设置为CPU 本体的圆形接口。
EN_R 置位并保持时,将%MB200 的连续8 个字节(即%MB200-%MB207)顺序发送一次,Q 在发送完成的一个周期内等于TRUE,之后变为FALSE。
EN_R 复位时,不进行发送。
EN_R 每次由FALSE 变为TRUE(置位)时,发送一次数据。
二、接收数据的PLC 调用自由协议通讯数据接收 COMM_RECEIVE 指令
程序说明:
在自由协议通讯状态下,上电Q 等于FALSE,当开始运行时第一个扫描周期准备接收8 个字节数据分别保存到%MB200-%MB207 中,接收成功后Q 等于TRUE,从而EN_R 等FALSE。下一个扫描周期时该指令不进行接收,Q 等于FALSE,从而EN_R 等于TRUE。再下一个扫描周期再次准备接收8 个字节数据分别保存到%MB200-%MB207 中,如此循环接收数据。
三、可参考《LE 系列可编程控制器指令手册》
楼上的朋友解答的很细心,是对自由口所需指令的正确描述。
常用见的自由口通讯一般都为polling方式(即一问一答)需要牢记8个字:组帧、发送、接收、解析。可以形象的做一个类比:组帧-组织语言 发送-问话 接收-听到对方回话 解析-理解对方话的含义
和利时通过“COMM_SEND”“COMM_RECEIVE”两条指令解决了LE的RS485口的“发送”和“接收”问题。组帧和解析就要体现我们工程师的智慧了,主要表现在对协议的理解。
组帧:意思就是把一串16进制或字符型的询问帧按照通讯协议内容的要求放在COMM_SEND功能块的TBL中(即发送缓冲区)。
解析:就是从“COMM_RECEIVE”的TBL寄存器区中提取出有效的数据字节再转换成实际物理量的一个过程。
当然个别设备是主动上送数据,我们只需要调用COMM_RECEIVE功能块,然后从接收缓冲区里解析数据就行了。