6ES7222-1BD22-0XA0诚信经营
1 引言
在现代工业中,PLC 之间或PLC 与计算机之间的通信联网应用日益广泛。PLC 的联网功能越来越强。以欧姆龙CP1、CJ1和CS1 系列PLC 为例,配合使用各种模块,可以支持工业以太网、Controller bbbb等现场总线通信联网功能。应用广泛的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-bbbb 通信协议
采用RS232-CAN 适配器,计算机与PLC 的串口都被配置成CAN总线。通信方式与上位机监控软件的编程方式与串行通信完全相同。通信协议一般采用OMRON 公司的HOST-bbbb 通信协议。
OMRON 公司的HOST-bbbb 通信系统是由上位计算机( IBM PC 或兼容机) 通过安装在各台PLC上的HOST-bbbb 单元或串行通信接口连接多台PLC 构成的网络。上位机对系统中的PLC进行集中管理与监控,通过与HOST-bbbb 单元的通信,可以编辑或修改各台PLC的程序,实时监控其运行过程,实现自动化系统的集散控制。对于小型PLC( 如CPM2A) , 可以通过其RS232通信端口进行链接。
系统使用HOST-bbbb 通信协议进行通信,上位机具有传送优先权, 总是发出命令并启动通信,HOST-bbbb单元收到命令交由PLC 执行,将执行结果返回上位机, 二者以通信帧为单位, 轮流交换数据。
通信时, 一组传送的数据称为“块”, 它是命令或响应的单位,从上位机发送到HOST-bbbb 单元的数据块称为命令块,反过来,从HOST-bbbb 单元发送到上位机的数据块称为响应块。多点通信时,可作为单帧发送的大数据块为131个字符,当一个数据块含有132 个或更多字符时, 要分成两帧或多帧发送。
每个数据块都以设备号及标题开始,以校验码(FCS)及结束符结束。响应块中还包括反应执行结果的响应码。通信格式如图2 所示。
图2 HOST-bbbb 通信帧格式
5 通信实现
用户可以采用通用的组态软件(如组态王)实现计算机与PLC 的通信,也可以编写计算机程序。
要编写计算机通信程序,可以采用VB、VC等语言进行编程,编程可以有多种方式[4]。使用MSComm控件通过串行端口传送和接收数据,实现计算机与PLC之间的数据通信,编程较简单。
MSComm 控件提供了一种有效的处理串*互作用的方法:事件驱动法。该方法利用OnComm事件捕获并处理通信及其错误,当CommEvent 属性发生变化时,就产生事件并等待相应处理。每个MSComm控件都有一个串口相对应。
Visual Basic 6.0(以下简称VB) 是一种功能强大、简单易学的程序设计语言,利用ActiveX控件MSComm能十分方便地开发出使用计算机串口的计算机通信程序。本文在VB中使用MSComm控件实现上位机与PLC的串行通信。
VB 程序由串口初始化、数据发送、数据接收等几大部分组成。主要的程序段如下所示。
Rem 程序加载时进行串口初始化
电力线通信(PLC)可以利用现有基础设施提供低成本的网络。数字信号控制器为PLC网络提供维持稳健信号所需的处理性能,其运行开销和片上外设可降低系统成本。下文将对此作进行详细介绍。
在环境非常恶劣的工厂或室外经常能见到照明、测量和其他控制应用,但在这些地方的网络通信若不采取常规方法则变得异常困难。因为恶劣的环境不仅对信号有相当大的干扰,在许多情况下,如果还没有专用通信布线的话,安装费用也非常昂贵。建立控制网络通信的佳介质将是无处不在的电力线。
PLC是各种网络工业、公共事业和商业应用中的监控网络的理想解决方案。为了达到较高的效率,PLC必须具备成本效益和稳健性。而要实现这些性能,系统开发人员可以借助于数字信号控制器所提供的强大性能和集成度。
与使用专用传输线的传统网络不同,PLC网络可以通过现有的低压、中压和高压电力线在数公里范围内收发数据。基于高性能数字信号处理器(DSP)技术的数字信号控制器可在恶劣环境中的全规模网络上实现可靠的PLC吞吐量,使其能够监控所有的网络节点。
高度集成的控制器还能降低系统成本和易于适应不断变化的网络需求。在工厂、公共事业分布系统、办公建筑群、矿山、海底电缆和其他恶劣环境中,数字信号控制器都可以在实时监控所需速率下支持高效的PLC传输。
单芯片modem和应用软件
在许多监控应用中,成本是首要考虑因素,这时系统的集成度越高越好。PLC系统功能可以被分成三部分:模拟前端(AFE)、调制解调器(modem)以及测量或控制应用软件。AFE主要用于接收和驱动信号,并将信号从电力信号中分离出来;modem则使用特定的频率和键控技术对通信信号进行调制和解调。很多设计方案中的modem和应用软件采用不同的控制器,但数字信号控制器带给PLC设计的一个重要好处是其可以在单个器件中集成modem和应用软件。
位于数字信号控制器核心的DSP可提供比价格相当的RISCMCU强得多的运算性能,这些性能足以用来执行modem和应用软件。片上外设是针对控制需求特别选取的,其提供的是一种系统解决方案。数字信号控制器的性能和集成度可以减少元件使用数量和电路板空间,这对诸如可调光照明镇流器、电子表和电机驱动器等成本敏感的应用非常有利。DSP的可编程性使得系统能更好地适应环境干扰,从而提高传输的可靠性,而DSP的额外MIPS性能还可以用来增加功率因数补偿等功能,从而使终端产品具有更高的能效。
稳健的通信
由于典型的PLC使用环境比较恶劣,传输必须高度稳健。在多种能传送位的物理层调制方案中,有两种特别适合工业监视和控制的方案,即频移键控(FSK)和二元相移键控(BPSK)。由于该两种方案都不依赖电力信号作为载波,可以用在任何频率、任何电压值的AC和DC电力线上。而当节点的供电中断时,只要控制通信电路的独立供电不间断,FSK和BPSK还能照常工作。
FSK采用两个不同的频率发送信号,电平“1”时用74kHz,电平“0”时用63.3kHz;而BPSK则采用相同频率发送“1”和“0”,其相位差为180度。监控通信常用标准是CEA179,其指定BPSK发送频率为131.5kHz,波特率是5.5kbps或每个码元24个周期。CEA-179没有对FSK加以规范,但它完全兼容该标准的协议栈,也可以使用CEA-179进行传输。在满足系统限制的前提下,数字信号控制器可以通过改变传输频率来避开干扰,从而提高通信性能。
图1是专为可靠性进行设计的CEA-179数据包格式。该数据包和位的边界是用于位同步的24位向量,后面是指示数据起始位的11位字同步信号。发送器将每8位指令编码成一个11位的字,在接收器侧再将其解码并移位至存储器缓存。在PLC中,指令数据还增加了16位的循环冗余校验码(CRC),EOP则使用重复的11位字进行识别。CEA-179协议与BPSK和FSK的结合可确保稳健的PLC传输,并能为多节点的实时控制提供足够的带宽。
图1:CEA-179数据包格式。
PLC设计
下面给出了使用数字信号控制器直接实现PLC的设计实例。图2是用于诸如可调光镇流器等应用的AC环境下的PLC通信与控制系统框图。AFE接收器-发送器位于图的左边,modem和应用软件算法运行在中间的控制器上,右边则包含了应用电路。例如在一个电流解决方案中,一个测量芯片与C2000相连。测量芯片执行测量功能,C2000使用PLC发送测量数据。本文重点放在FSK调制方面,但相同设计经过AFE和控制算法方面的少许修改也可以用于BPSK。
图2:PLC系统框图。
上述设计中使用的数字信号控制器是一个带DSP内核的器件,该内核工作在100MHz时可提供100MIPS的性能。在一个普通应用中,约45MIPS用于modem,余下约55MIPS可用来运行应用软件。在34KB片上闪存和一次性可编程存储器中,12KB用于modem代码;12KB的数据存储器中的5KB用于modem;其余的存储器空间则全部用于应用软件。控制器还提供6个带独立定时器的脉宽调制(PWM)输出,可用于modem和应用软件的信令传输。12位ADC使用单通道对所接收的信号进行采样,剩余的15个通道则处于空闲状态。数字信号控制器还提供了SPI和SCI接口用于本地通信,还有30多个通用I/O通道。
一、概述
很多自动化工程师在实际应用中使用组态软件与PLC进行modbus通讯,组态软件作为主站PLC作为从站。组态软件来采集PLC数据使用这种方式是比较常见的。反向的利用modbus协议让PLC去读组态软件里的数据确有着特殊的意义,在某些工控场合也是很好解决方案。紫金桥软件在组态软件行业里推出了modbusserver,既紫金桥modbusserver可以作为modbus从机为其他软件和硬件设备提供数据,在这篇文章中对此功能我们详细地加以介绍。
二、S7-200Modbus主站的实现
1、S7-200Modbus 通信协议介绍
Modbus是一种单主站的主/从通信模式。Modbus 网络上只能有一个主站存在,主站在 Modbus 网络上没有地址,从站的地址范围为 0 -247,其中 0 为广播地址,从站的实际地址范围为 1 - 247。在 S7-200 CPU 通信口上实现的是 RS485半双工通信,使用的是 S7-200 的自由口能。S7-200支持 Modbus 通信协议: S7-200 CPU 上的通讯口 0 和1 (Port 0 和 Port 1)通过指令库支持 Modbus RTU 主站模式。
2、S7-200 Modbus主站的配置
西门子在Micro/WIN V4.0 SP5 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。要使用 Modbus RTU 主站指令库,须遵循下列步骤:
⑴安装西门子标准指令库
⑵按照要求编写用户程序调用 Modubs RTU 主站指令库 ModbusRTU 主站功能编程使用 SM0.0 调用 MBUS_CTRL 完成主站的初始化,并启动其功能控制:
具体参数的解释如下:
EN使能:必须保证每一扫描周期都被使能(使用SM0.0)
Mode模式:常为1,使能 Modbus 协议功能;为0 时恢复为系统PPI 协议
Baud波特率:设为9600,要与从站波特率对应
Parity校验:校验方式选择 0=无校验
Timeout超时:主站等待从站响应的时间,以毫秒为单位,典型的设置值为1000毫秒(1秒),允许设置的范围为1-32767。注意:这个值必须设置足够大以保证从站有时间响应。
Done完成位:初始化完成,此位会自动置1。可以用该位启动 MBUS_MSG读写操作
Error初始化错误代码(只有在 Done位为1时有效):
0=无错误
1=校验选择非法
2=波特率选择非法
3=模式选择非法
⑶调用 Modbus RTU主站读写子程序MBUS_MSG,发送一个Modbus 请求;
如图1所示,具体参数设置如下:
Slave从站地址:可选择的范围 1-247
RW读写操作:0=读, 1=写
注意:1. 开关量输出和保持寄存器支持读和写功能
2. 开关量输入和模拟量输入只支持读功能
Addr读写从站的数据地址:选择读写的数据类型00001至0xxxx-开关量输出10001至1xxxx-开关量输入
30001至3xxxx-模拟量输入
40001至4xxxx-保持寄存器
Count通讯的数据个数(位或字的个数)
注意: Modbus主站可读/写的大数据量为120个字(是指每一个MBUS_MSG 指令)
DataPtr数据指针:1.如果是读指令,读回的数据放到这个数据区中
2. 如果是写指令,要写出的数据放到这个数据区中
Done读写功能完成位
图1西门子Modbus RTU 主站协议库
三、紫金桥软件Modbus从站的实现
1、紫金桥modbusserver的设置
Modbus服务器可以把紫金桥数据库中的点映射为Modbus 设备的HR寄存器,当前版本为3.0,支持串口和TCP/IP访问方式,支持HR区的读和写方式。也就是说支持03、06、16号命令。
具体操作是先在紫金桥软件的安装目录中找到 ModbusSerSet.exe并运行。其中左侧为变量配置显示区,它分为三列,分别是序号、数据库位号和Modbus地址。后两列的意义是把某一个数据库位号和一个Modbus地址建立映射关系。再调出系统设置对话框配置从机地址、串口等参数或以太网端口号、数据格式等。
2、通讯过程
配置完成后,先运行紫金桥软件在紫金桥软件的安装目录中找到 ModbusServer.exe 并运行。
从上面的通讯过程看到,S7-200与紫金桥modbus server通讯的响应速度为毫秒级的。