CAN现场总线的计算机与PLC通信
时间:03-22
来源:互联网
点击:
1 引言
在现代工业中,PLC 之间或PLC 与计算机之间的通信联网应用日益广泛。PLC 的联网功能越来越强。以欧姆龙CP1、CJ1 和CS1 系列PLC 为例,配合使用各种模块,可以支持工业以太网、Controller Link 等现场总线通信联网功能。但是,应用广泛的CPM1A、CPM2A等中小型PLC 的通信联网一般只能采用工业总线的物理层形式(如RS232 或RS485),通信的稳定性与抗干扰能力并不是很强。
本文选用欧姆龙的CPM2A 机型,配合使用RS232-CAN 适配器,实现了计算机与PLC 的通信联网,方法简单, 实用性强。
2 CAN 总线简介
CAN 总线由德国BOSCH 公司首先提出来的,CAN总线是目前工业界广泛应用的总线。CAN 控制器工作于多主站方式,网络中的各节点都可根据总线访问优先权采用无损结构的逐位仲裁的方式竞争向总线发送数据。CAN 协议废除了传统的站地址编码, 可使网络内的节点个数在理论上不受限制, 通信实时性强, 提高系统的可靠性和系统的灵活性。
报文采用短帧格式,传输时间短,受干扰概率低, 保证了数据出错率极低。CAN 的每帧信息都有CRC 校验及其他检错措施,具有极好的检错效果。CAN 的通讯介质可以为双绞线、同轴电缆或光纤,选择灵活。CAN 节点在错误帧的情况下具有自动关闭输出功能,而总线上其它节点的操作不受影响。CAN 总线通过两个输出端CANH 和CANL 与物理总线相连,不会出现损坏某些节点的现象。CAN 节点在错误严重的情况下具有自动关闭输出功能, 以使总线上其他节点的操作不受影响, 不会出现象“死锁”状态。
3 通信结构
通信系统组成如图1 所示,上位计算机运行监控软件与OMRON 专用的PLC 编程及配置软件,并将计算机串口连接到RS232-CAN 适配器,配置为CAN 总线。下位PLC 采用多台OMRON 的CPM2A 型PLC,将CPM2A的串口连接RS232-CAN 适配器,实现CAN 总线通信。
通过适配器,计算机与PLC 成为CAN 总线的节点。节点之间通过双绞屏蔽线进行总线式连接,首尾节点需要接120R 的匹配电阻。上位计算机可以通过CAN 总线实时监控PLC 系统的运行。
此方案是现场总线技术与集中控制技术的有机结合,联网后的PLC 网络可以构成一个DCS 系统。用户在计算机上可以远程监控、配置任何一台PLC 的程序或状态。并能够在投入较低硬件成本的基础上,实现良好的系统运行性能。这个方案充分发挥了CAN 总线的通信特点: 实时、可靠、高速、远距离、易维护等。
使用RS232-CAN 适配器后,通信距离扩大到5 公里(9600bps 时),组网的PLC 可增至110 台(实际上受PLC内部系统软件的限制,最多只能支持32 台PLC 联网)。
RS232-CAN 适配器采用光电隔离,大大提高了系统的抗干扰能力和安全性能。另外,使用RS232-CAN 适配器,并不需改变PLC 系统原有的PLC 通讯协议和上位机监控软件,开发人员无须更改现在使用的串口通信程序,最大限度的节省成本。
4 HOST-LINK 通信协议
采用RS232-CAN 适配器,计算机与PLC 的串口都被配置成CAN 总线。通信方式与上位机监控软件的编程方式与串行通信完全相同。通信协议一般采用OMRON 公司的HOST-LINK 通信协议。
OMRON 公司的HOST-LINK 通信系统是由上位计算机( IBM PC 或兼容机) 通过安装在各台PLC 上的HOST-LINK 单元或串行通信接口连接多台PLC 构成的网络。上位机对系统中的PLC 进行集中管理与监控,通过与HOST-LINK 单元的通信,可以编辑或修改各台PLC 的程序,实时监控其运行过程,实现自动化系统的集散控制。对于小型PLC( 如CPM2A) , 可以通过其RS232 通信端口进行链接。
系统使用HOST-LINK 通信协议进行通信,上位机具有传送优先权, 总是首先发出命令并启动通信,HOST-LINK 单元收到命令交由PLC 执行,然后将执行结果返回上位机, 二者以通信帧为单位, 轮流交换数据。
通信时, 一组传送的数据称为“块”, 它是命令或响应的单位,从上位机发送到HOST-LINK 单元的数据块称为命令块,反过来, 从HOST-LINK 单元发送到上位机的数据块称为响应块。多点通信时,可作为单帧发送的最大数据块为131 个字符,因此当一个数据块含有132 个或更多字符时, 要分成两帧或多帧发送。
每个数据块都以设备号及标题开始,以校验码(FCS)及结束符结束。响应块中还包括反应执行结果的响应码。通信格式如图2 所示。
5 通信实现
用户可以采用通用的组态软件(如组态王)实现计算机与PLC 的通信,也可以编写计算机程序。
要编写计算机通信程序,可以采用VB、VC 等高级语言进行编程,编程可以有多种方式[4]。使用MSComm控件通过串行端口传送和接收数据,实现计算机与PLC之间的数据通信, 编程较简单。
MSComm 控件提供了一种有效的处理串*互作用的方法:事件驱动法。该方法利用OnComm 事件捕获并处理通信及其错误,当CommEvent 属性发生变化时,就产生事件并等待相应处理。每个MSComm 控件都有一个串口相对应。
Visual Basic 6.0(以下简称VB) 是一种功能强大、简单易学的程序设计语言,利用ActiveX 控件MSComm能十分方便地开发出使用计算机串口的计算机通信程序。本文在VB中使用MSComm控件实现上位机与PLC的串行通信。
VB 程序由串口初始化、数据发送、数据接收等几大部分组成。主要的程序段如下所示。
在现代工业中,PLC 之间或PLC 与计算机之间的通信联网应用日益广泛。PLC 的联网功能越来越强。以欧姆龙CP1、CJ1 和CS1 系列PLC 为例,配合使用各种模块,可以支持工业以太网、Controller Link 等现场总线通信联网功能。但是,应用广泛的CPM1A、CPM2A等中小型PLC 的通信联网一般只能采用工业总线的物理层形式(如RS232 或RS485),通信的稳定性与抗干扰能力并不是很强。
本文选用欧姆龙的CPM2A 机型,配合使用RS232-CAN 适配器,实现了计算机与PLC 的通信联网,方法简单, 实用性强。
2 CAN 总线简介
CAN 总线由德国BOSCH 公司首先提出来的,CAN总线是目前工业界广泛应用的总线。CAN 控制器工作于多主站方式,网络中的各节点都可根据总线访问优先权采用无损结构的逐位仲裁的方式竞争向总线发送数据。CAN 协议废除了传统的站地址编码, 可使网络内的节点个数在理论上不受限制, 通信实时性强, 提高系统的可靠性和系统的灵活性。
报文采用短帧格式,传输时间短,受干扰概率低, 保证了数据出错率极低。CAN 的每帧信息都有CRC 校验及其他检错措施,具有极好的检错效果。CAN 的通讯介质可以为双绞线、同轴电缆或光纤,选择灵活。CAN 节点在错误帧的情况下具有自动关闭输出功能,而总线上其它节点的操作不受影响。CAN 总线通过两个输出端CANH 和CANL 与物理总线相连,不会出现损坏某些节点的现象。CAN 节点在错误严重的情况下具有自动关闭输出功能, 以使总线上其他节点的操作不受影响, 不会出现象“死锁”状态。
3 通信结构
通信系统组成如图1 所示,上位计算机运行监控软件与OMRON 专用的PLC 编程及配置软件,并将计算机串口连接到RS232-CAN 适配器,配置为CAN 总线。下位PLC 采用多台OMRON 的CPM2A 型PLC,将CPM2A的串口连接RS232-CAN 适配器,实现CAN 总线通信。
图1 通信系统结构
通过适配器,计算机与PLC 成为CAN 总线的节点。节点之间通过双绞屏蔽线进行总线式连接,首尾节点需要接120R 的匹配电阻。上位计算机可以通过CAN 总线实时监控PLC 系统的运行。
此方案是现场总线技术与集中控制技术的有机结合,联网后的PLC 网络可以构成一个DCS 系统。用户在计算机上可以远程监控、配置任何一台PLC 的程序或状态。并能够在投入较低硬件成本的基础上,实现良好的系统运行性能。这个方案充分发挥了CAN 总线的通信特点: 实时、可靠、高速、远距离、易维护等。
使用RS232-CAN 适配器后,通信距离扩大到5 公里(9600bps 时),组网的PLC 可增至110 台(实际上受PLC内部系统软件的限制,最多只能支持32 台PLC 联网)。
RS232-CAN 适配器采用光电隔离,大大提高了系统的抗干扰能力和安全性能。另外,使用RS232-CAN 适配器,并不需改变PLC 系统原有的PLC 通讯协议和上位机监控软件,开发人员无须更改现在使用的串口通信程序,最大限度的节省成本。
4 HOST-LINK 通信协议
采用RS232-CAN 适配器,计算机与PLC 的串口都被配置成CAN 总线。通信方式与上位机监控软件的编程方式与串行通信完全相同。通信协议一般采用OMRON 公司的HOST-LINK 通信协议。
OMRON 公司的HOST-LINK 通信系统是由上位计算机( IBM PC 或兼容机) 通过安装在各台PLC 上的HOST-LINK 单元或串行通信接口连接多台PLC 构成的网络。上位机对系统中的PLC 进行集中管理与监控,通过与HOST-LINK 单元的通信,可以编辑或修改各台PLC 的程序,实时监控其运行过程,实现自动化系统的集散控制。对于小型PLC( 如CPM2A) , 可以通过其RS232 通信端口进行链接。
系统使用HOST-LINK 通信协议进行通信,上位机具有传送优先权, 总是首先发出命令并启动通信,HOST-LINK 单元收到命令交由PLC 执行,然后将执行结果返回上位机, 二者以通信帧为单位, 轮流交换数据。
通信时, 一组传送的数据称为“块”, 它是命令或响应的单位,从上位机发送到HOST-LINK 单元的数据块称为命令块,反过来, 从HOST-LINK 单元发送到上位机的数据块称为响应块。多点通信时,可作为单帧发送的最大数据块为131 个字符,因此当一个数据块含有132 个或更多字符时, 要分成两帧或多帧发送。
每个数据块都以设备号及标题开始,以校验码(FCS)及结束符结束。响应块中还包括反应执行结果的响应码。通信格式如图2 所示。
图2 HOST-LINK 通信帧格式
5 通信实现
用户可以采用通用的组态软件(如组态王)实现计算机与PLC 的通信,也可以编写计算机程序。
要编写计算机通信程序,可以采用VB、VC 等高级语言进行编程,编程可以有多种方式[4]。使用MSComm控件通过串行端口传送和接收数据,实现计算机与PLC之间的数据通信, 编程较简单。
MSComm 控件提供了一种有效的处理串*互作用的方法:事件驱动法。该方法利用OnComm 事件捕获并处理通信及其错误,当CommEvent 属性发生变化时,就产生事件并等待相应处理。每个MSComm 控件都有一个串口相对应。
Visual Basic 6.0(以下简称VB) 是一种功能强大、简单易学的程序设计语言,利用ActiveX 控件MSComm能十分方便地开发出使用计算机串口的计算机通信程序。本文在VB中使用MSComm控件实现上位机与PLC的串行通信。
VB 程序由串口初始化、数据发送、数据接收等几大部分组成。主要的程序段如下所示。
- 全球FTTH大发展下的国内PLC产业现状(01-16)
- 基于PLC的服务器机房电源控制系统(07-10)
- PLC与ADSL宽带接入方式对比(02-22)
- 基于PLC的Modbus协议的实现(10-03)
- 电力线通信实现智能电网连接(11-12)
- 基于Modbus TCP的OPC服务器设计(08-10)