5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; 6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低 字节进行交换;
8.最后得到的CRC寄存器内容即为:CRC码。 四、通讯错误信息及数据的处理:
当PDM表检测到除了CRC码出错以外的错误时,必须向主机回送信息,功能码的最高位置为1,即从机返送给主机的功能码是在主机发送的功能码的基础上加128 。以下的这些代码表明有意外的错误发生。
PDM从主机接收到的信息如有CRC错误,则将被PDM表忽略。 PDM返送的错误码的格式如下(CRC码除外): 地址码: 1字节
功能码: 1字节(最高位为1) 错误码: 1字节 CRC码:2字节。 PDM响应回送如下错误码: 81.非法的功能码。
接收到的功能码PDM表不支持。 82.非法的数据位置。
指定的数据位置超出PDM表的范围。 83.非法的数据值。
接收到主机发送的数据值超出PDM相应地址的数据范围。
基于VB的分布式监控系统Modbus通信设
计与实现
2008-11-17 来源:未知 收藏此信息 推荐给好友
摘 要:在工业自动化监控系统中,为了通过上位机与智能仪表的通信达到实时控制管理的目的,在详细分析了Modbus RTU规约及其通信原理的基础上,结合一个应用实例,给出了VB 6.0编程环境下利用MSComm通信控件和Timer定时器控件实现基于该规约的计算机与智能仪表之间的串口通信编程方法,建立了低成本的分布式监控系统。该系统简单、实用,具有良好的兼容性和可移植性,对类似的由其它类型智能仪表与上位机组成的控制系统的通信实现具有一定的参考价值,并在石化企业中得到了成功应用,有效地提高了智能化控制水平和企业的生产效率。
关键字:智能仪表;Modbus协议;VB 6.0;分布式监控系统;串口通信
Abstract: In the field of industry automation control system, in order to realize real-time control and management by communication of computer and intelligent instrument, on the basis of the analysis of Modbus-RTU protocol and the communication principle, this paper gives a method which uses the component MSComm and Timer provided by VB. This method establishes a low cost distributed monitoring system by integrating an application. This system is easy to use and good for compatibility and portability, also have some value on the communication realization in the systems which are control by intelligent instrument and host computer. Moreover, it has been used in petrochemical enterprise successfully and improved the level of intelligent control and the production efficiency of the enterprise effectively.
Key Words: intelligent instrument; Modbus protocol; VB 6.0; distributed monitoring system; serial communication
1 引言
分布式监控系统(DMS)已在工业领域得到广泛应用,许多企业对于中小规模的设备,出于硬件软件投资利润率和性能价格比的考虑,常常是自行开发或参与开发本企业的监控系统。分布式监控系统以微机为基础,用数据通信将微机连在一起实现数据共享,从而对工业过程进行集中监视管理和分散控制[1]。
本文的实例为低压配电监控系统,随着自动化大规模生产时代的到来,生产现场往往同时运转着上十台甚至数十台电动机,往往需要对这些电动机的运行参数进行集中监控,以便操作人员及时发现故障并进行处理。现采用计算机+智能仪表的方案,由上位机定时对下位机采用轮巡的方式进行数据采集。上位机和下位机之间采用RS485总线进行通信,现场智能Modbus仪表挂在RS485总线上,上位机通过RS232/485转换器与RS485总线相连,采用VB编程语言,通过Modbus协议用串口与智能仪表进行通信,在控制成本的情况下,组成一个小型分布式监控系统。
2 监控系统概述
系统采用主从式点对点的通讯方式,由现场智能仪表和1台PC机组成,其中现场智能仪表采用天津东泰科技发展有限公司生产的DYZB-101A型低压智能综合保护器。由于本系统的智能电子设备通讯是通过RS485总线的,因此采用特征阻抗为120Ω的屏蔽双绞线连接。PC机一般没有RS485接口,但都有RS232串行接口,因此采用一个RS232/485转换器,可将RS232串行接口直接转换成RS485接口,再通过RS485总线与智能仪表相连。在串行通讯中,主要借助VB开发平台下的MSComm、Timer控件来设计。其中智能仪表对所检测的电力系统进行在线检测,检测电网的电流、电压、视在功率、启动次数、运行时
间、频率等状态信息。PC机通过网络可以实现对仪表的数据读取、诊断、测试、参数更新等,轻松实现遥测、遥信、遥控。
图1 监控系统结构图
Fig.1 The structure of monitoring system
3 Modbus通讯协议简介
Modbus协议是MODICON公司开发推行的通信协议,已经成为一种广泛应用于工业自动化控制器上的标准通信协议。通过该协议,不同厂商生产的控制设备可以进行工业网络互联,从而实现集散控制[2]。
Modbus协议采用主从工作方式,允许一台主机和多台从机通信,每台从机地址由用户设定,地址范围为1-255。通信采用命令/应答方式,每一种命令帧都对应一个应答帧。命令帧由主机发出,所有从机都将收到报文,但只有被寻址的从机才会响应相应命令,返回相应的应答帧。图2是一个完整的主从查询-回应周期。
图2 主从查询-回应周期表
Fig.2 The periodic table of master salve query-response
3.1 Modbus协议通讯模式
Modbus通讯协议有两种传送方式:RTU方式和ASCII方式,两种方式如下所示:
ASCII模式:当控制器设为在Modbus网络上以ASCII(美国标准信息交换代码)模式通信,在消息中的每个8Bit字节都作为两个ASCII字符发送。这种方式的主要优点是字符发送的时间间隔可达到1秒而不产生错误。
RTU模式:当控制器设为在Modbus网络上以RTU(远程终端单元)模式通信,在消息中的每个8Bit字节包含两个4Bit的十六进制字符。这种方式的主要优点是:相对于ASCII模式,RTU模式表达相同的信息需要较少的位数,且在相同通讯速率下具有更大的数据流量。因此通常情况下,一般工业智能仪器仪表都是采用RTU模式的Modbus规约。本文采用的是Modbus RTU模式。
3.2 Modbus RTU消息帧格式