技术中心

基于CAN总线的计算机与PLC通信

2011/2/17 10:01:52
导读:
  1引言
  
  在现代工业中,PLC之间或PLC与计算机之间的通信联网应用日益广泛。PLC的联网功能越来越强。以欧姆龙CP1、CJ1和CS1系列PLC为例,配合使用各种模块,可以支持工业以太网、ControllerLink等现场总线通信联网功能。但是,应用广泛的CPM1A、CPM2A等中小型PLC的通信联网一般只能采用工业总线的物理层形式(如RS232或RS485),通信的稳定性与抗*力并不是很强。
  
  本文选用欧姆龙的CPM2A机型,配合使用RS232-CAN适配器,实现了计算机与PLC的通信联网,方法简单,实用性强。
  
  2CAN总线简介
  
  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内部系统软件的限制,zui多只能支持32台PLC联网)。
  
  RS232-CAN适配器采用光电隔离,大大提高了系统的抗*力和安全性能。
  
  另外,使用RS232-CAN适配器,并不需改变PLC系统原有的PLC通讯协议和上位机监控软件,开发人员无须更改现在使用的串口通信程序,zui大限度的节省成本。
  
  4HOST-LINK通信协议
  
  采用RS232-CAN适配器,计算机与PLC的串口都被配置成CAN总线。通信方式与上位机监控软件的编程方式与串行通信*相同。通信协议一般采用OMRON公司的HOST-LINK通信协议。
  
  OMRON公司的HOST-LINK通信系统是由上位计算机(IBMPC或兼容机)通过安装在各台PLC上的HOST-LINK单元或串行通信接口连接多台PLC构成的网络。上位机对系统中的PLC进行集中管理与监控,通过与HOST-LINK单元的通信,可以编辑或修改各台PLC的程序,实时监控其运行过程,实现自动化系统的集散控制。对于小型PLC(如CPM2A),可以通过其RS232通信端口进行链接。
  
  系统使用HOST-LINK通信协议进行通信,上位机具有传送优先权,总是首先发出命令并启动通信,HOST-LINK单元收到命令交由PLC执行,然后将执行结果返回上位机,二者以通信帧为单位,轮流交换数据。
  
  通信时,一组传送的数据称为“块”,它是命令或响应的单位,从上位机发送到HOST-LINK单元的数据块称为命令块,反过来,从HOST-LINK单元发送到上位机的数据块称为响应块。多点通信时,可作为单帧发送的zui大数据块为131个字符,因此当一个数据块含有132个或更多字符时,要分成两帧或多帧发送。
  
  每个数据块都以设备号及标题开始,以校验码(FCS)及结束符结束。响应块中还包括反应执行结果的响应码。通信格式如图2所示。
  
  图2HOST-LINK通信帧格式
  
  5通信实现
  
  用户可以采用通用的组态软件(如组态王)实现计算机与PLC的通信,也可以编写计算机程序。
  
  要编写计算机通信程序,可以采用VB、VC等语言进行编程,编程可以有多种方式[4]。使用MSComm控件通过串行端口传送和接收数据,实现计算机与PLC之间的数据通信,编程较简单。
  
  MSComm控件提供了一种有效的处理串*互作用的方法:事件驱动法。该方法利用OnComm事件捕获并处理通信及其错误,当CommEvent属性发生变化时,就产生事件并等待相应处理。每个MSComm控件都有一个串口相对应。
  
  VisualBasic6.0(以下简称VB)是一种功能强大、简单易学的程序设计语言,利用ActiveX控件MSComm能十分方便地开发出使用计算机串口的计算机通信程序。本文在VB中使用MSComm控件实现上位机与PLC的串行通信。
  
  VB程序由串口初始化、数据发送、数据接收等几大部分组成。主要的程序段如下所示。
  
  Rem程序加载时进行串口初始化
  
  以上给出了计算机与PLC通信的主要程序段。需要注意的是,如果传送的数据大于132个字符,可以将数据分成起始帧、若干中间帧、结束帧进行传送。起始帧必须包含设备号,命令码等,否则通信的过程中将会有错误发生。上位机每发送完一帧时,在收到PLC返回的分界符(即“↙”)后再发送下一帧,只有当结束帧数据发送完毕时才返回响应代码。
  
  6结束语
  
  本文基于VB利用MSComm控件实现了上位机与欧姆龙PLC的串行通信,充分发挥了CAN总线实时、可靠、高速、远距离、易维护的特点。计算机能够深入地配合PLC厂商提供的各种软件,从而实现更多强大的功能,比如系统配置、人机界面、组态开发等。
  
  通常,计算机与PLC通过串口连接,实现各种通信功能。但串口的通信距离、节点数量都受到了串口本身的性能限制。比如,RS-232标准只可以实现1:1通信,RS-422/485标准能够实现32个节点以内的通信,通信距离、抗*力都比较弱,并不能够满足实际工业现场多台PLC联网应用的需求。即使借助RS232/RS485-CAN适配器也很难突破串行通信本身的功能限制[5]。
  
  针对这一情况,可以采用计算机内置PC-CAN接口卡,可以建立起1条或者多条CAN总线网络,并通过连接在CAN总线网络中的RS232/RS485-CAN适配器,借助于CAN总线网络配套的虚拟串口软件,建立多达2047个标准的串行通信端口,从而连接多达2047条串行网络[6]。也就是说,可以在同1条普通双绞线上连接多达2047台PLC设备,工控PC访问连接在这条CAN总线网络上的PLC设备,也与操作标准串口*一致。
  
  这种方式可以充分发挥工控PC的作用,通信效率比较高,应用灵活,是一般PLC网络建设的主流方向。

相关技术

您的留言已提交成功~

采购或询价产品,请直接拨打电话联系

联系人:

联系方式:
当前客户在线交流已关闭
请电话联系他 :