设备改造案例:S7-200PLC与横河DCS系统的通讯实现
The following article is from 工控论坛 Author 陆宁
一
Modbus简介
Modbus通信协议广泛应用于工业控制领域,已经成为一种通用的通信标准。不同厂商提供的设备(如变频器、PLC、仪表、伺服等)可通过Modbus协议连成通信网络,从而实现集中控制。Modbus 串行链路协议的通信接口可采用RS-485接口,也可使用RS-232C接口。
由于Modbus串行链路通信协议成本较低,长期以来使用最为广泛,比如在S7200 PLC作为从站的工程中。
二
S7200从站工程中的注意点
1. 目前支持 Modbus 通信的 DCS 系统和过程仪表大都采用基于串行接口的 Modbus RTU 模式,西门子提供了针对西门子 PLC Modbus RTU 通信的协议库。
2. 使用 Modbus 指令库前,需要将其安装Step7-Micro/WiN中,STEP 7-Micro/WIN 必须为 V3.2 或以上版本。S7-200 CPU必须是固化程序修订版2.00。
3. S7200的Modbus从站库仅支持Port0通讯。
4. 子程序参数中须注意:HoldStart 和 MaxHold 指定的保持寄存器区,是在S7-200 CPU 的V数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。
5. 注意Modbus中的保持寄存器区按“字”寻址,即MaxHold规定的是VW 而不是VB个数。CPU型号不同V数据存储区大小不同。应根据需要选择 Modbus 保持寄存器区域的大小。
下面有个案例就是利用了Modbus串口通信来低成本地实现了横河DCS系统控制以S7200 PLC为控制器的干燥机设备。
三
S7200从站工程案例
1、问题的发生
前不久,接到一家干燥机设备的厂家求助:该厂多年前为南通一家化工企业做了一套圆盘干燥机,当初设计安装的时候,甲方只要求控制柜安装在干燥机旁,操作工直接在机旁操作。这套电控柜使用S7200的PLC,没有上位机也没有触摸屏,机柜上有按钮操作。但目前甲方对自己的设备都进行了升级,增加了DCS系统,所以甲方要求主控室的DCS系统能够监控干燥机的炉腔温度、电机转速并直接控制干燥机组各电机的启动和停止。
2、改造方案选择
由于原来的电控系统没有设计接口给外部操作,目前要满足甲方的要求,可以采用以下方法:
方法1:使用通讯卡实现DCS与PLC的通讯,从而通过DCS控制PLC;采用这一方法,DCS和PLC必须都支持相应的通讯协议,例如:MODBUS、DP、HOST-LINK协议等。
方法2:通过硬件接线的方式实现DCS控制PLC。即DCS的AO、DO通道连接到PLC的AI、DI通道,DCS的AI、DI通道连接到PLC的AO、DO通道。
根据现场反馈的情况:甲方用的是横河DCS系统,且该系统原本就利用了通讯卡连接了多个Modbus通讯设备,而乙方的电控柜S7200的CPU模块集成的通讯口Port0未被使用。如果使用方法2,不仅需要增加双方的硬件模块,还要放较多的电缆;而方法1是利用甲方原有的通讯卡,乙方这端可以利用模块上集成的通讯口Port0。再了解到干燥机对甲方来说,实时控制的要求不高。基于以上情况,采用方法1通过Modbus RTU通讯是人工和物料成1本最低的方案。由于DCS那端由甲方在软件配置和画面更改即可,我们也只要更改PLC程序,使得干燥机控制柜的S7200成为Modbus RTU从站,给出相应的Modbus点表即可。
3、RS485网络硬件链路
在S7-200系统中,CPU上的通信口是符合RS-485电气标准的。无论是组成PPI、MPI还是RPOFIBUS-DP网络,或是Modbus RTU网络,用到的主要部件都是一样的:
PROFIBUS电缆和PROFIBUS网络连接器。S7200 PLC端口Port0增加一路RS485接头,连接到DCS系统的Modbus总线上。在工业环境下,通讯线应该使用屏蔽双绞线。注意圆圈内的"终端电阻"开关设置。网络终端的插头,其终端电阻开关必须放在"ON"的位置;中间站点的插头其终端电阻开关应放在"OFF"位置。
4、S7200程序改写部分
4.1关键知识点:
4.1.1 RTU模式下,报文中的每个8位字节被转化为两个16进制字符,然后以字节为单位进行传输,并采用CRC(循环冗余校验)方式进行校验。
4.1.2 西门子Modbus 从站协议库包括两条指令:MBUS_INIT 指令和 MBUS_SLAVE 指令。其中MBUS_INIT指令用于启用和初始化或禁止Modbus通讯,MBUS_INIT指令必须执行完并且“Done”位被立即置位。
4.1.3 MBUS_INIT指令应该在每次通讯状态改变时只执行一次。因此,EN输入端应使用边沿检测元素以脉冲触发,或者只在第一个循环周期内执行一次。
4.1.4 MBUS_SLAVE指令用于服务来自Modbus主站的请求,必须在每个循环周期都执行,以便检查和响应Modbus请求。
4.2 Modbus初始化指令
Network13:在第一循环扫描中初始化Modbus从站协议。设置从站地址为5,设置port0为9600,无检验,可以访问所有的I、Q和AI,允许访问100个保持寄存器(200字节),起始地址为VB0。
◆参数详解:
• EN:指令使能位。
• Mode:模式选择,启动/停止 Modbus从站通信。
Mode 参数允许使用以下两个数值:1—启动, 0—停止。
• Address:从站地址,MODBUS从站地址,取值1~247。
• Baud:波特率,可选1200,2400,4800,9600,19200,38400,57600,115200。
• Parity:奇偶校验,0=无校验;1=奇校验;2=偶校验。
• Delay:延时,附加字符间延时,缺省值为0。
• MaxIQ:最大I/Q位,参与通信的最大I/O点数,S7-200的I/O映像区为 128/128,缺省值为128。
• MaxAI:最大AI字数,参与通信的最大AI通道数,可为16或32。
• MaxHold:设定供Modbus地址4xxxx使用的V存储器中的字保持寄存器数目。
• HoldStart:保持寄存器区起始地址,以&VBx指定(间接寻址方式)。
• Done:初始化完成标志,成功初始化后置1。
• Error:初始化错误代码。
4.3 Modbus从站响应指令
Network14:每循环周期内执行Modbus从站协议。
◆参数详解:
•当MBUS_SLAVE指令响应Modbus请求时Done输出接通。如果没有服务的请求,Done输出会断开。
•Error输出包含该指令的执行结果。该输出只有Done接通时才有效。如果Done断开,错误代码不会改变。
4.4 分配该指令库存储区
利用指令库编程前首先应为其分配存储区,否则 Step7-Micro/Win 编 译时会报错。具体方法如下:
(1)执行 Step7-Micro/Win 菜单命令“文件”>“库存储区”,打开“库存储区分配”对话框。
(2)在“库存储区分配”对话框中输入库存储区的起始地址,注意避免该地址和程序中已经采用或准备采用的其它地址重合。
(3)点击“建议地址”按钮,系统将自动计算存储区的截止地址。
(4)点击“确定”按钮确认分配,关闭对话框。
4.5 原梯形图程序中添加DCS远程控制命令行
如下为部分截图:
5、此工程中部分S7200地址与Modbus地址对应表
来源/中华工控网,转载请联系
文章推荐
我知道你“在看”哟~