一、引 言
现代工业的迅速发展,不断促进着自控技术及设备创新的日新月异。当前,dcs、ipc、plc及智能仪表已广泛应用到工厂现场生产控制系统当中,并发展到由上述设备相互协同、共同面向整个生产过程的分布式工业自动控制系统。在此系统中,现场通信技术堪称关键。但由于开始没有统一的通信协议标准,各厂商自控产品通信协议各自为政,通信网络各成体系,造成不同厂家的自控设备网络连接困难甚至不能连接,给分布式控制系统的灵活应用造成了不便。一些公司为适应市场,纷纷将各自的协议标准公开化,可无偿使用。经过多年发展,一些通信协议如modicon公司的modbus通信协议因其兼容性、易用性的优势,在工业领域得到了广泛应用,已成为一种通用的工业通信标准。本文就某化纤项目分布式控制系统的设计,介绍基于modbus协议的通信网络在其中的应用。
二、系统组成
1、系统结构
本系统构成如图1,其中略去了现场仪表信号的采集、控制部分。系统上位机采用横河cs3000型dcs集散控制系统,对整个生产过程进行集中监控;下位机采用omron的cs1h系列plc,分布在3个电气控制室,负责现场电机、ocv阀、流量开关、变频器等执行、检测机构的启停控制、反馈信号采集、故障判断等操作。
基于通信实时性的考虑,将dcs与3个plc控制站分为两个相对独立的通信网络:plc1和plc2与dcs一端口组成网络一,plc3与dcs二端口组成网络二。由于上下位机均无面向同一协议的通信设备,给设计造成了困难。经考虑,决定采用modbus通信协议,由其构成本分布式控制系统的通信网络。
2、通信网络组成
2.1通信协议
modbus协议是一种适用于工业控制领域的主从式串口通讯协议,它采用查询通讯方式进行主从设备的信息传输,可寻址1-247个设备地址范围。协议包括广播查询和单独设备查询两种方式,二者区别就是广播查询不需要从设备回应信息,主从设备查询通讯过程见图二。
modbus协议有两种传输模式:ascii模式和rtu模式。同波特率下,rtu模式较ascii模式能传输更多的数据,所以工业网络大都采用rtu模式。rtu模式下的信息传输报文格式如图三
它没有起始位和停止位,而是由至少3.5个字符间隔时间作为信息的起始、结束标志。信息帧所有字符位由16进制字符0-9、a-f组成。本设计采用单独设备查询的rtu模式通信方式,根据系统构成,将dcs一端口设01h、02h两个plc从站地址,二端口设01h一个plc从站地址,并使用modbus协议中的读字存储区03h和写字存储区06h两个功能码。
2.2 网络构成及硬件介绍
网络采用rs485串行接口,通信媒体由4芯屏蔽电缆连接主从设备,传输距离最大达1.5km,全双工,串口设定波特率19200,8位数据位、偶校验、1位停止位。dcs通信部分采用横河型号为alr121的通信模块,并配套横河提供的modbus通信软件包,该通信模块最大通信数据容量4000字。plc通信部分则采用omron的c200h-ascii 21可编程特殊单元模块(以下简称ascii模块),该模块支持basic语言编程,内有200k字节的程序存储区,配备rs232、rs485通信串口各一个。通过对该模块的编程,可实现与外围设备的各种通信。本系统通过ascii模块与dcs基于modbus协议的通信,将dcs的读、写指令及数据做相应转换,并与plc的cpu单元进行数据存取交换,以实现上下位机控制信息的实时传输。如图四所示。
三、软件实现
1、 建立地址分配、对应表
dcs人机监控界面(hmi)上面向现场仪表的图形符号对象的监控,需通过dcs i/o物理地址对现场仪表信号的采集来实现。dcs对现场电气执行、检测机构的监控,则是由dcs通信i/o地址与plc i/o物理地址一一对应完成的。为此,在编程前,需建立一张dcs通信i/o地址与plc i/o地址的分配、对应表。由于plc逻辑控制编程需要,不便直接将plc i/o物理地址与dcs通信i/o地址对应,故采取了间接地址的方式。具体设计采用plc的数据存储区dm区作为间接地址区,与dcs通信i/o区建立联系,再将dm区与plc i/o区相对应。如将dcs的%wb000101位通信i/o地址与d0000.00位地址对应,d0000.00再对照plc的i0000.00位物理输入点,就能将现场电气执行机构的运行状态反馈到hmi上。按照这种方法就建立了一张上下位机地址分配、对应表,因篇幅所限,该表略。
2、程序设计
ascii模块支持basic语言编程,此外,又附加了多条系统及函数指令,如接收、发送缓冲区操作指令、信息传输差错控制crc、lrc校验函数指令和与cpu单元数据交换的读写指令等。编程使用windows操作系统上附带的hyperterminal(超级终端)软件,通过此软件,pc机可与连接在网络上的其它pc机或串口终端设备进行文本文件的传输及显示。编程时,将pc机串口与ascii模块的rs232串口连接,运行该软件,就能在其界面上对ascii模块进行程序编写、上传、下载和调试等工作。也可先通过windows系统的写字板编写程序,并保存为文本格式,然后再通过hyperterminal将程序下载到ascii模块。通信程序的主工作流程见图五。
部分程序代码如下:
option base 0 //定义数组
dim r(128),fc(128)
r(48)=0:r(49)=1:r(50)=2:r(51)=3:r(52)=4:r(53)=5:r(54)=6:r(55)=7:r(56)=8
r(57)=9:r(65)=&h0a:r(66)=&h0b:r(67)=&h0c:r(68)=&h0d:r(69)=&h0e:r(70)=&h0f
r(97)=&h0a:r(98)=&h0b:r(99)=&h0c:r(100)=&h0d:r(101)=&h0e:r(102)=&h0f
open #2,comu:19200,8,e,1 //设定串口参数
a%=loc(2) //判断接收缓冲区字符
if a%=8 then
rex$=input$(a%,#2)
……….
endif
gosub *zfcl //对信息进行分解处理
if st=1 then *jaoy else *back //判断是否本站信息
*jaoy
gosub *crc //crc循环冗余校验子程序
if r=crc then *work else *back //信息校验正确判断
*work
if (fu=3) then goto *djs //读功能码判断,调写操作子程序
if (fu=6) then goto *xjs else goto *back //写功能码判断,调读操作子程序
*djs //读子程序
………
*xjs //写子程序
………
*crc //crc 校验子程序
……….
*zfcl //字符处理子程序
………
由于ascii模块支持ascii码,而rtu则是基于二进制码的16进制字符通信方式,所以在程序编程中增加了码制转换程序。
ch5$=mid$(rex$,5,1) :ch6$=mid$(rex$,6,1) //提取字符段
vol=asc(ch5$)×256+asc(ch6$) //将ascii码字符转换十进制数
vol$=hex$(vol) //将十进制数转换成十六进制字符
3、程序优化及安全措施
在ascii模块与cpu单元数据交换程序部分,采取由ascii模块向cpu 单元主动发送读写请求信号,cpu单元在收到请求时才执行数据交换程序的方法。这样,就缩短了plc的扫描周期,提高了通信实时性。
在信息差错控制部分,采用了crc-16循环冗余校验算法,该算法能使信息的差错率低于10-14以下。如果信息校验错误,程序将清除缓冲区,等待dcs信息重发。
根据生产需要,可在hmi上将现场按钮等手控设备设为无效状态,所有手、自动操作均在dcs上进行。考虑到如通信网络遭到瘫痪等严重故障时,需保证现场电气设备正常启停,又增加了通信状态定时侦测程序,在规定时间(10秒)内网络上如无信号,plc自动将现场按钮等手控设备设为有效,同时dcs故障报警,直到网络恢复正常为止。
四、结束语
当前分布式控制系统通信网络的设备、软件及整体架构,大部分是由专业厂商生产提供的,其总体性能较好。但如前所述,它们也有系统配置可选性小、网络架构适应面窄、价格较高等缺点。笔者采用modbus协议这一成熟通信技术,选用plc的可编程模块,进行基于modbus通信协议的自主程序设计,架构起本自控系统的通信网络。该网络易扩展、易维护,具有结构简单、应用灵活、编程方便、造价低廉等特点。这套系统在某化纤生产线一次投运成功,实际运行状态良好,证明其稳定可靠,能完全满足系统设计要求。到目前为止,该系统已在多个工程项目上投入使用,全部运行正常,取得了良好的经济效益。
本文创新点:采用工业领域通用的modbus通信协议标准,利用可编程的plc特殊功能模块,并进行通信程序设计,低成本的解决了本系统的通信架构问题,可为分布式控制系统通信网络兼容性设计的一个思路。