1 引言
近年来,随着工业自动化技术的快速发展,可编程逻辑控制(PLC)的功能日益强大,PLC早已不局限于替代传统继电器、接触器电路,实现逻辑控制功能,现在PLC已经集过程控制、运动控制、数据通信和网络通信等众多功能于一身。随着功能的提高和完善,PLC与工业现场设备之间的数据通信量也越来越大,越来越多的工业设备上集成一个RS232/485通信接口,提供自身的通信协议,PLC在进行数据采集和远程控制时,都需要通过串行通信来实现。
d310851【中国自动化网社区】7c283b【http://sns.ca800.com】bc9334
2 串行通信简介
在通信领域内,有两种数据通信方式:串行通信和并行通信。串行通信:是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。特别使用于PC与PC、PC与外设之间的远距离通信。
串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。
773e4【中国自动化网社区】9b0f20【http://sns.ca800.com】e5c
3 PLC常用串行通信程序编写方法
1) 串行通信由于没有一个标准的通信协议,所以自动化设备的通信协议非常多,常用的Modbus、Pofibus、Devicenet等,PLC一般都带有标准的硬件单元,所以在使用这些协议时,程序上只需要建立标准数据连接表就可以,无需在按照协议格式,填写头、数据、校验等内容。
2) 但是遇到一些没有标准协议的设备,比如一些仪表采用的SWP协议,就需要在程序中按照第三方设备的协议格式,将数据完整的填写在PLC内存中,然后再使用串行通信指令,将数据由制定的通信接口发送出去,然后再按照响应数据的格式编写接收响应数据的程序,而且遇到变量数据,校验码又不能提前计算好写入内存,只能在程序中编写校验程序,这样不可避免造成程序的编写量非常大,程序非常繁琐。
3) 如SWP系列仪表的通信协议,PLC读取仪表当前的数值(温度、压力等),需要按照协议内容发送命令,如“图1”PLC发送的数据(读取当前测量数值),“图2”仪表回送的响应数据,按照协议内容,该数据是一个ASC码格式的浮点数,在很长的响应数据中,只有“图2”中低字节、高字节、小数点,是当前需要的数据,所以需要在程序中使用数据处理指令,将有用的数据摘选出来,再将ASC码格式数据转换成16/10进制的数据,才完成仪表数据读取的工作。
773e4【中国自动化网社区】9b0f20【http://sns.ca800.com】e5c
8a【中国自动化网社区】a52b90【http://sns.ca800.com】21
4 协议宏通信功能
1) 在遇到非标准协议时,如何能够像使用Modbus、Devicenet等硬件单元时,在程序中只建立数据连接表,填写有用的数据内容,对于仪表回送的数据,只把有用的数据保存到PLC内存。欧姆龙CJ系列PLC的协议宏功能,将协议格式使用第三方软件,方便的写入到串行通信模块中,在PLC程序中不需要编写过多程序,只需调用要按照串口模块中的协议序列号即可完成程序。
2) 对于数据串很长的回送响应,也可以在协议宏中添加变量数据,头、尾、校验等数据,可以通过变量数据进行区分,只将仪表的当前数值(温度、压力等)译码并写入到PLC指定的内存中,PLC在处理仪表当前数值时,只需要读取自身的寄存器就可以完成。
3) 协议宏通信功能:是用来控制PLC与第三方设备进行数据交换的另一种通信方式。PLC需要配备串行通信单元,通过RS232方式实现1:1的连接,也可以通过RS/422/485方式实现1:N的连接。通过带有的通信协议宏软件CX-Protocol可以对通信格式进行编程。
8a【中国自动化网社区】a52b90【http://sns.ca800.com】21
5 串行通信程序设计
传统的串行通信程序,如“图3”只截取了很小一部分,可以看出在PLC梯形图中完成串行通信所有数据的编写,程序量是非常巨大的。其中SWP使用的是CRC校验,虽然常用的校验计算在PLC有相关指令(如FCS、CRC等校验),但是要求进行校验的数据必须连续放置在寄存器中,中间如果有空位,校验指令会直接将“0”也作为一个数据进行校验,所以需要使用大量的数据处理指令将数据按照标准格式码放完成,才能使用校验指令进行计算,在PLC程序中编写校验是非常繁琐的。
8a【中国自动化网社区】a52b90【http://sns.ca800.com】21
f760fce【中国自动化网社区】c45729【http://sns.ca800.com】6b0
使用协议宏通信完成SWP仪表的通信,将数据同时进行写入为例进行程序编制。按照SWP协议内容,将读取数据的指令写入到CX-Protocol中。Protocol中有固定的协议格式,按照对应表格内容填写通信指令,校验可以使用有专用工具添加。
1) 将SWP仪表通信指令写入,把“图1”的数据写入Protocol。(见图4)。
f760fce【中国自动化网社区】c45729【http://sns.ca800.com】6b0
f760fce【中国自动化网社区】c45729【http://sns.ca800.com】6b0
2) 使用协议宏工具添加CRC-16校验。(见图5)
f760fce【中国自动化网社区】c45729【http://sns.ca800.com】6b0
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
3) 将回送的相应数据“图2”中,具体数值低字节、高字节、小数点三个字节,添加变量,并转换格式,保存到PLC内存D2000开始的寄存器中。(见图6)
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
4) 在PLC中写入协议宏程序,所有通信协议数据通过CX-Protocol写入到串口通信单元中,程序中只需要调用单元中协议数据的序列号即可,极大的简化了梯形图程序。(见图7)
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
5) PLC串行通信过程中经常需要对指定通信口收发的数据进行监控,查看发出数据和收到的数据都正确无误,串行通信才调试完成,在以往的调试过程中,使用PLC的编程软件监控串口在视觉上不是很便捷,如果使用其它串口调试软件进行监控,必须将PLC上的串口电缆接到现场调试计算机上来进行,所以使用起来都不是很方便。
6) 使用CX-Protocol可以直接与PLC进行在线连接,有专用监控界面,将指定通信接口当前收发地数据,非常直观的显示出来。如“图8”,监控界面中按照收发协议的格式,ASC码数据进行直观的显示,蓝色线条上方数据是PLC当前发出的,红色线条是收到的数据,可以对照“图1、图2”中的协议内容检查收发数据是否正确。(见图8)
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
在以往串口调试过程中,经常会遇到没有相应数据的现象,原因主要有,硬件接线错误,协议内容填写错误。CX-Protocol中的数据监控功能视觉上非常直观的将当前通信接口收发的数据呈现出来,非常方便对数据进行检查和修改。
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
6 结束语
使用通信协议宏功能,协议简单、校验算法容易,通信的稳定性都比较以往串行通信更高。而协议宏通信可以编辑复杂协议及校验的自动计算。CX-Protocol软件的特点,可以将繁多的通信步骤灵活登记,并使其易于管理,另外还具有多种灵活接收数据的方式,以及更高级的通信控制功能、通信诊断功能、协议保护功能等。
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364
参考文献:
[1] 李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2001.
[2] 刘守义主编.数字电子技术[M].西安:西安电子科技大学出版社,2001.
作者简介:裴月玲(1980-),女,工程师,项目经理,目前主要从事交通行业机电工程的设计工作。
9af0e【中国自动化网社区】ed6844【http://sns.ca800.com】649b364