×
接口总线驱动 > 总线 > 详情

Modbus 通信协议在分布式控制系统中的应用

发布时间:2020-05-25 发布时间:
|

一、引 言

  现代工业的迅速发展,不断促进着自控技术及设备创新的日新月异。当前,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两个功能码。[page]

  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[page]

  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特殊功能模块,并进行通信程序设计,低成本的解决了本系统的通信架构问题,可为分布式控制系统通信网络兼容性设计的一个思路。

参考文献:

  1. Modicon. Modbus Protocol Reference Guide. 1996

  2. Omron. C200H-ASCII UNITS Operation Manual. 1998

  3. Omron. SYSMAC CS1 Series Programmable Controllers Operation Manual. 1999

  4. 横河CS3000 Reference Manual. 2001

  5. 其其格 利用VC实现Modbus的两种检测方法 《微计算机信息》 2004.1

  6. 刘东 循环冗余校验CRC算法分析及程序实现. 《计算机与信息技术》2002.9 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
高速串行总线技术发展与应用分析