时间:2022-08-03 23:16:48

关键词:Modbus; RTU; FPGA; VHDL
中图分类号:TP316 文献标识码:A
文章编号:1004-373X(2010)11-0203-05
Modbus Communication Protocol Based on FPGA
YU Zheng-lin, ZHANG Long, HUANG Yong
(Changchun University of Science and Technology,Changchun 130022,China)
Abstract: Modbus protocol is a popular fieldbus, and has become one of national standards in China with easy perfor-mance, widely opening and compact frame format. A method of implementing Modbus RTU protocol based on Cyclone FPGA is introduced. A interface can be used both in Modbus server and client, a Modbus slave coprocessor was designed based on it. The test results show that the design meets the communication requirement of industry environment, and has certain value in other kinds of FPGA.
Keywords: Modbus; RTU; FPGA; VHDL
0 引 言
现场总线是一种应用于生产现场,在现场设备之间,现场设备与控制装置之间实现双向、串行、多节点数字通信的技术[1]。Modbus协议其节点安装数量非常多,安装的地区遍及世界各地。
今天的FPGA可包含内嵌乘法器、专用计算例程和片上RAM等,加上FPGA的并行性,其结果比最快的DSP芯片还要快上500倍乃至更多。随着FPGA价格不断下降,甚至最小的器件都足以实现一个集成可选定制I/O功能的软处理器核。可见,FPGA对嵌入控制应用越来越具有吸引力[2]。
目前Modbus协议实现方式多为单片机和PLC,随着FPGA的广泛应用,研究Modbus现场总线的FPGA解决方案有很大的实用价值。
1 Modbus协议简介[3-4]
Modbus串行链路系统可以使用不同的物理接口(RS 485,RS 232),最常用的是RS 485两线制接口。为了提高通信模块在工业应用中的抗干扰性和稳定性,接口芯片和FPGA核心模块之间应加入高速光耦进行隔离,总线两端处放置线路终端电阻,采用屏蔽双绞线作为通信线等。
在串行链路上,Modbus RTU(Remote Terminal Unit)模式报文中每8个位字节含有两个4位十六进制字符,这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的吞吐率。RTU模式每个字节(11位)的格式如图1所示,支持奇、偶和无校验,使用无校验时要求2个停止位。Modbus RTU帧最大为256 B,由发送设备将Modbus报文构造为带有已知起始和结束标记的帧,报文帧由时长至少为3.5个字符时间的空闲间隔区分,整个报文帧必须以连续的字符流发送,如果两个字符之间的空闲间隔大于1.5个字符时间,则报文帧被认为不完整被接收节点丢弃,如图1所示。
图1 RTU模式位序列和报文帧
在应用层上,Modbus是一个请求/应答协议,并且提供功能码规定的服务。有三类Modbus功能码:公共码、用户定义码和保留码,大多数情况下只用公共码,其主要包括比特(线圈)访问、16 b(寄存器)访问、文件记录访问、诊断和其他信息访问。
2 Modbus RTU通信协议接口设计
2.1 接口功能及模块划分
Modbus RTU接口框图及输入、输出引脚示意图如图2所示。
图2 Modbus接口示意图
在某一确定的主时钟频率、通信波特率和奇偶校验方式下,通过设置CE_Modbus和R_Tn的状态,可以控制该接口模块处于接收Modbus协议帧模式、发送Modbus协议帧模式或输入/输出寄存器操作模式,如表1所示。
表1 操作模式控制
CE_ModbusR_Tn操作模式
11接收Modbus协议帧
10发送Modbus协议帧
0×输入/输出寄存器操作
典型的波特率和奇偶校验位设置如表2、表3所示。这两组控制信号可以从端口引出接到拨码开关,然后可以通过调节拨码开关来灵活控制该设备奇偶性与波特率,也可以通过寄存器配置方式控制。
表2 波特率控制
Sel_baud[2..0]波特率/(b/s)
009 600
0119 200
1038 400
11115 200
表3 奇偶校验控制
Sel_parity [2..0]校验方式
00偶
01奇
10或11无
2.2 接收过程
(1) 系统处于接收Modbus协议帧模式下之后,清零标志位和定时器,然后启动定时器,如果检测到有串口输入数据,则清零定时器,如果没有检测到串口输入数据且定时器第一次计时到3.5个字符时间,置帧起始标志;
(2) 把接收到的第一个字符放入接收缓冲寄存器的0x00地址(协议帧最长为256 B,故接收缓冲大小为256 B,地址为8 b),置已开始接收标志;
(3) 将接收到的正确字符依次放入接收缓冲寄存器中,即地址每次加1,每接收完一个字符之后清零定时器;如果在接收字符时检查到起始错误(起始位没有持续波特率所对应bit时间的一半),奇偶校验错误,或者帧错误(停止位为0),则丢弃该字符,重新同步起始位;
(4) 如果检测到两个字符时间间隔大于1.5个字符时间,则重置帧起始标志,把下一个接收到的字符放入接收缓冲寄存器的0x00地址,再继续步骤(3);
(5) 当检测到没有字符输入且定时器第二次检测到3.5个字符时间,置协议帧接收完全标志;
【关键词】Modbus协议;温湿度传感器;无线传感器
0 引言
无论是在工业现场还是日常生活中,我们都需要对环境的温湿度参数进行监测。传感器节点作为温湿度监测的终端,直接接触被测环境,是整个监测系统的重要组成部分。精度高、成本低、使用时限长、安装方便是我们在设计中需要考虑的因素[1]。
本文综合以上各个因素设计了一款使用Modbus通信协议和433MHz无线频段的无线温湿度传感器节点。考虑到传感器节点成本和精度的因素,使用瑞士Sensirionn公司生产的SHT10传感器,它可以同时测量温度和湿度,且有较高的测量精度和简洁的电路。为了便于安装,使用433MHz无线频段作为传感器节点的通信媒介,有较远的通信距离和穿墙能力,避免了有线通信电缆安装的不便。
1 总体结构
温湿度传感器节点的总体结构如图1所示,主要包含传感器数据采集、电源供电、主控芯片数据处理、无线通信数据收发几个部分。传感器数据采集负责采集环境温湿度的值,电源供电则是为传感器数据采集、主控和无线通信芯片提供3.3V电压电源,主控芯片主要是对采集到的数据进行数据分析和处理以得到实际的温度和湿度的值,无线通信部分实现的是433MHz的通信频段。
图1 温湿度传感器节点的总体结构
2 硬件设计
无线温湿度传感器节点的硬件设计包含电源供电,数据采集,数据处理,数据收发几个部分。电源供电部分主要是把3.7V电池电压转换为3.3V,作为各个部分的供电电源,以及5V电源给电池充电两个部分,使用Maxim公司的MAX8881作为3.7V转3.3V的降压芯片,MAX1555作为5VDC电源给电池充电的芯片;数据采集主要是对环境温湿度参数的采集,使用Sensirionn公司生产的SHT10传感器;数据处理主要是对采集到的数据进行计算求值等,使用ST公司的STM32F103芯片;无线数据通信则是为传感器节点提供一个数据通信的通道,使用TI公司的CC1101芯片。这里主要对数据采集部分进行详细的阐述。
数据采集部分使用SHT10传感器,它传感器把传感元件和信号处理电路集成在了一块微型电路板中,输出为完全标定的数字信号。传感器内部包含一个电容性聚合体测湿敏感元件,一个用能隙材料制成的测温元件,14位的A/D转换器,串行接口电路。由此,传感器具有极高的可靠性和长期的稳定性,并且响应速度快、性价比高等优点。SHT10温湿度传感器测量温度的范围在-40~+123.8°C,测量湿度的范围在0~100%RH;测量温度的精度典型值为±4.5%RH,测量湿度的精度典型值为±0.5°C[2]。
图2 SHT10典型电路
温湿度传感器SHT10一共有4个接口,分别是地(GND),双向串行数据接口(DATA),串行时钟输入口(SCK)以及电源接口(VDD)。传感器的电源供电电压范围为2.4-5.5V,这里使用3.3V电源。电源和地(即VDD,GND)之间需要加一个去耦滤波的电容,电容值为100nF。传感器的典型应用电路如图2所示,传感器的电路采用I2C的总线形式,数据接口DATA接一个10KΩ的上拉电阻再与主控芯片相连进行双向通信,时钟输入口的信号来自主控芯片。
3 软件设计
软件设计部分包含温湿度数据的采集、处理,无线数据收发和Modbus通信协议几个部分。这里把数据的采集、处理以及收发统一到数据监测,一并进行阐述。
3.1 数据监测
数据监测的整个过程是无线温湿度传感器节点上电初始化后,等待无线部分接受数据采集命令,收到采集命令后进行数据采集、处理,最后通过无线部分转发出去,即完成了一次数据采集,整个过程的程序流程图如图3所示。
图3 数据监测的程序流程图
3.2 Modbus通信协议
Modbus通信协议是一种工业现场通用协议,主要规定了应用层报文传输的格式,使得不同生产厂商的设备可以连成网络,集中监控[3]。
Modbus协议可分为在TCP/IP上的实现与串行链路上的实现,即Modbus-TCP和Modbus-RTU。传感器节点内部实现的是Modbus-RTU协议。Modbus协议使用的是客户机/服务器(C/S)的通信模式,主站向从站发送请求的模式有两种:单播和广播,本文实现的是单播的模式。
Modbus通用帧即ADU应用数据单元分为附加地址、功能码、数据和差错校验4个部分,其中功能码和数据部分为PDU协议数据单元。从站地址和功能码各一个字节,数据段最多252个字节,差错校验2个字节。RTU帧还应该注意的是不同的帧与帧之间至少3.5个字符的空闲,同一帧内两字符之间最多1.5个字符的空闲[4]。
传感器内部具体的Modbus通信协议的封包解包过程如图4所示。
图4 Modbus协议通信过程
4 测试结果
无线温湿度传感器节点射频性能的测试结果如表1,每次发送1000个数据包,有效传输距离可达到120米的情况下0%的丢包率,穿越两层楼达到0%的丢包率(注:排除433MHz频段其他设备的干扰)。
传感器精度的测试,在同一环境情况下,使用市场上购买的手持红外温度仪与本文设计的传感器节点进行环境监测数据的对比,温度值的误差保持在±0.5°C以内。例如,传感器节点监测值为21.2°C,手持红外温度仪为21.5°C,误差为-0.3°C。传感器精度测试结果如表2所示。
表1 射频性能测试结果
表2 传感器精度性能测试结果
5 结束语
本文设计了一种使用Modbus通信协议的温湿度传感器节点,给出了传感器节点硬件与软件的设计方法,详尽的介绍了传感器数据采集的软硬件设计和Modbus通信协议的程序实现过程,最后进行了传感器设备的测试。从测试结果看,设计的该款传感器具有较远的通信距离和穿墙能力,并且具有较低的测量值误差。
【参考文献】
[1]李品,孙周.SHT10传感器在温湿度监测系统中的应用[J].传感器与微系统,2012,31(9):136-138.
[2]瑞士Sensirionn公司.SHT10数据手册[S].
引言
工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一种通信规约。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信。它已经成为主流的工业标准之一。不同厂商生产的控制设备通过Modbus协议可以连成工业网络,进行集中监控。
Modbus通信协议
1 通信传送方式
每一个数据字节包括:每个字节的位、1个起始位、8个数据位、最小的有效位先发送、1个奇偶校验位(无校验则无)、1个停止位(有校验时)、2个停止位(无校验时)。
在RTU模式下每个字节的格式(11bit)如下:
编码系统:8位二进制
字节组成:1bit起始位、8bit数据位,最低位最先发送、1bit奇偶校验位、1bit停止位(或者没奇偶校验位,就发送一个附加的停止位)。
2 数据帧结构
地址码:地址码为通信传送的第一字节。这字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通信传送的第二字节。ModBus通信规约定义功能号为1~127。根据实际需要只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1,则表明从机没有响应操作或发送出错。
数据区:数据区根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。
CRC码:二字节的错误检测码。冗余循环码检查(CRC)包含两字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位、起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。
在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一位,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。
这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。CRC码中的数据发送、接收时低字节在前。在实际应用中,为了提高运算速度,采用了查表的方法取代计算方法。
3 Modbus RTU数据帧结构
在RTU模式下,每一个数据帧之间的间隔至少是3.5个字符位。一个完整的数据帧必须要连续的传送,当一帧消息中两字节间的间距大于1.5字符位时,此数据帧错误,被接受方放弃。
当通信波特率小于等于19 200b/s。对1.5个字符位/3.5个字符位计算时间有严格要求。当通信波特率大于19 200b/s。1.5个字符位固定为750μs,3.5个字符位固定为1.75ms。官方的Modbus RTU规定标准为3.5个字符长周期,不同的串口设备由于使用环境不同可能在发送中出现5~10字长的间隙。对于Modbus RTU来说比较安全的设置为50ms。
4 用到的功能代码
用到的功能代码如表2所示。
【关键词】火电厂 MODBUS通讯协议 应用
近年来,火电厂在建设过程中逐将较多先进的控制系统与仪表引入,如智能仪表、数据采集器以及PLC控制系统等。尽管这些先进系统引入下,对提升火电厂发电机组综合性能可起到突出作用,但由于系统与仪表过多,要求借助DCS完成一系列控制与监视操作,而这些操作的实现关键在于DCS与所有系统间保持通讯,此时便可考虑以MODBUS通讯协议为依托,对通讯目标的实现将发挥重要作用。因此,本文对火电厂自动化改造中MODBUS通讯协议的应用研究,具有十分重要的意义。
1 MODBUS通讯协议的相关概述
关于MODBUS通讯协议,其可应用的方式集中表现在RTU与ASC II两种方式上。其中前者强调所选用的二进制数据为8位字节,并通过CRC检验方式的应用,对二进制数据进行校验,具有较快的通讯速度。而ASC II方式下,其利用的为ASC II码,为7位字节,且在冗余校验中采用的方式为LRC,通讯速率上相比RTU要低处许多。所以在通讯方式选择中,可考虑引入RTU通讯方式。另外,MODBUS通讯协议应用下,通讯的双方分别为的主机与从机,通讯指令字符串将由主机向从机进行发送,而从机会判断其中是否有与地址不相同的指令,通过筛选后给出相应的回答。对于MODBUS通讯协议中的指令字符串,一般也可具体细化到功能码、数据起始地址、数据量等方面。保证这些内容合理的情况下,便可引入CRC冗余校验方式,若字符串校验结果达到相应标准,可判断字符串正确,而在结果不一致的情况下,将禁止数据被投入使用[1]。
2 MODBUS通讯下的数据寄存与通讯过程
2.1数据寄存
数据寄存是MODBUS通讯协议应用下需考虑的主要问题,通常需依托于寄存器地址,使通讯双方数据保持对应。从其中寄存器地址类型看,集中表现为:第一,内部数字量线圈。该地址一般可通过1XXXX进行表示,对于逻辑运算结果,都可通过寄存器的利用实现,无需考虑到设备I/O通道问题。第二,外部输入线圈。该部分寄存器地址通常可用2XXXX表示,其中寄存器的运用与具体I/O通道保持对应,数字量状态可直接通过读取寄存器状态实现。第三,外部输入模拟量。对于该寄存地址,可用3XXXX进行表示,其中的I/O通道也与寄存器保持对应,模拟量数值可通过寄存器数值被掌握。第四,内部模拟量。其可用4XXXX对寄存地址进行描述,寄存器在作用上表现为中间寄存器,数值运算结果都可被存放于寄存器中。
2.2通讯过程
MODBUS通讯协议实现中,所采用的主要以主从式通讯为主,其中的主机为一台,而从机数量有多个。当从机对主机指令字符串接收后,会给予相应的应答,此时便意味整个通讯过程实现。例如,通讯时主机发出的指令中,要求由01从机将内部线圈状态返回,以0001-0008作为返回地址。此时若线圈状态正常,其将返回对应的字符串,且在功能码、从机地址等各方面都与主机命令字符串一样。这样整个通讯过程便得以实现[2]。
3火电厂自动化改造中的MODBUS通讯协议应用
火电厂自动化改造是当前火电厂建设需考虑的主要问题。本文在研究中主要以WT300数据采集器作为实例,其本身具有免维护、通讯距离远、通讯速率快且价格较低等优势,在火电厂中应用极为广泛。为使该采集器应用中,可与DCS系统保持通讯,使整个控制系统更为完整,便需将MODBUS通讯协议引入其中。具体应用中,首先需做好CA总线分析。CAN总线通讯协议本身在数据采集器中有所体现,可保持10km的通讯距离与1Mbps的通讯速率,并将双绞线作为通讯介质。此时采集器装设中,可考虑与工业现场设备相近位置,使信号采集更为便利,在此基础上通过一根双绞线的应用使网络连接通畅,可满足信号电缆节约的目标。
其次,需在WT300上做好设计。可考虑将一定数量的输入通道设置于采集器中,由其负责完成数字量信号、电流、电压、热电阻与热电偶采集过程,并在CAN总线应用下,使采集后的数据向MOD-CAN接口处传送。需注意的是,在CAN网络中,数据采集器在分布数量上有一定的限制,应做好控制工作。
最后,MOD-CAN接口部分。由于设计过程中需考虑到通讯接口问题,如CAN接口方面,其主要负责来自数据采集器中的数据,这就要求引入MODBUS通讯协议使DCS系统能够对CAN缓存的数据读取。而对于MOD-BUS接口,也负责向DCS系统中传送数据,其中主机部分为DCS,从机为MOD-CAN接口。通过MODBUS通讯协议的引入,最终设计的机组在整体性能上都将得到提高,有利于改造目标的实现[3]。
4 结语
MODBUS通讯协议的引入为火电厂自动化改造提供坚实的技术支撑。实际应用该通讯协议中,应正确认识其基本内涵与实现的原理,明确MODBUS通讯协议应用下的通讯过程、数据寄存等问题,在此基础上结合火电厂发电机组实际情况,利用MODBUS通讯协议,使所有采集器、控制系统能够重新构成一个新的系统,以此提升系统综合性能,且节约系统控制成本,对提高火电厂综合效益将发挥重要作用。
参考文献:
[1]翁献进. RS232、RS422/RS485串行通讯标准及其在火力发电厂热工自动化系统中的应用实践[J].科技信息,2010,10:241-242.
关键词:PLC,modbus,自动化
1、引言
Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。论文参考,modbus。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。
因此,Modbus协议具有适用性广泛,使用灵活,同时还具备实时纠错等多种优点,应用在打印适配板与PLC通讯中可以自如的设定其数据格式,并有效防止打印乱码等打印故障的产生。
2、设计方法
本设计采用打印适配板作为主站,S7-200 PLC做从站的方式,由打印适配板主动读取PLC中的数据,并根据数据内容来决定打印的格式、时间、打印字符内容。
2.1 modbus通讯帧的结构
本设计采用消息帧采用RTU模式,其结构如下:
① 因其消息发送至少要以3.5个字符时间的停顿间隔开始,所以其起始位为T1-T2-T3-T4。
② 设备地址标示主机下从站的地址,如可以将从站S7-200地址 设为16(如右图)。
③ 功能代码为该消息所要实现的功能
例如:一从主设备发往从设备的消息要求读一组保持寄存 器,将产生如下功能代码:
0 0 0 0 0 0 11 (十六进制03H)
对正常回应,从设备仅回应同样的功能代码。对异议回应,它返回:
1 0 0 0 0 0 11 (十六进制83H)
除功能代码因异议错误作了修改外,从设备将一独特的代码放到回应消息的数据域中,这能告诉主设备发生了什么错误。
④从主设备发给从设备消息的数据域包含附加的信息:从设备必须用于进行执行由功能代码所定义的所为。这包括了象不连续的寄存器地址,要处理项的数目,域中实际数据字节数。
⑤当选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC的高位字节是发送消息的最后一个字节。
2.2 modbus协议的通讯周期
查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。论文参考,modbus。论文参考,modbus。
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。
2.3 PLC modbus库初始化的设置
其中:
Mode: 输入数值1将端口0指定给Modbus协议并启用协议;将输入数值0指定给PPI,并禁用Modbus协议。
Addr:S7-200作为从站的地址。论文参考,modbus。
Baud:通讯的波特率。
Parity: 0-无奇偶校验,1-奇数奇偶校验,2-偶数奇偶校验。
Delay: 数通过将指定的毫秒数增加至标准Modbus讯息超时的方法延长标准Modbus讯息结束超时条件。
MaxIQ: 参数将供Modbus地址00xxxx和01xxxx使用的I和Q点数设为0至128之间的数值。数值0禁用所有向输入和输出的读取。
MaxAI: 参数将供Modbus地址03xxx使用的字输入(AI)寄存器数目设为0至32之间的数值。数值0禁用模拟输入的读数。
MaxHold: 参数设定供Modbus地址04xxx使用的V内存中的字保持寄存器数目。
HoldStart:即打印适配板存取V内存中保持寄存器的起始地址。设置为&VB100,而MaxHold为25,所以VB100-VB200将被打印适配板所使用,编程时需避免与其冲突。
2.4 打印适配板的控制
打印适配板会持续读取VB100-200中所储存的信息,以做出其动作判断。因此,向规定地址中写入数据,就可以控制打印系统的运行。
如将”20”送入VB125,即可启动打印板的数据记录
VD136,VD140,VD144即为数据被打印适配板所读取的地址。
打印适配板将打印报表的格式固化在打印板中,接受到数据采集结束信号以后,会将本次数据储存,并在接到打印信号以后将其打印在报表的固定位置。论文参考,modbus。
3、结束语
Modbus工业协议因其适用性广泛、简单易用,通讯较为可靠等优点,在现代自动化设备与工业控制领域得到了广泛的应用。而在传统的PLC数据打印方式中,数据受到干扰时微打无法判断接收的是否正确,经常造成打印异常,表现为乱码、微打不打印等故障。论文参考,modbus。采用Modbus协议以后,就可以有效的避免这些问题的产生,使得需严格数据保存的自动化设备的可靠性得以保证。
参考文献
[1]SIEMENSSIMATICS7-200可编程序控制器
[2]MODBUSoverseriallinespecificationandimplementationguideV1.0www.modbus.org
[3]华镕编著从Modbus到透明就绪—施耐德电气工业网络的协议、设计、安装和应用机械工业出版社2009
[4]中国国家标准化管理委员会基于Modbus协议的工业自动化网络规范中国标准出版社2004
关键词:Modbus;协议;模块
中图分类号:TP301 文献标识码:A 文章编号:1009-3044(2016)22-0193-02
Abstract: With the development of informatization, application of Modbus device is more and more widely, this paper introduces the Modbus communication protocol, Modbus serial link protocol, Modbus/TCP protocol, and connecting with the actual work introduces some standard Modbus modules: ioLogik E2000, MB3280, DAM - 3601, and the use of these module method and the matters needing attention.
Key words: Modbus; protocol; module
1 概述
随着科学技术的发展,也随着无线局对信息化的重视,大功率短波发射机房内的设备自动化程度越来越高,发射机自动化系统、天线自动化系统以及附属设备温度自动控制系统普遍应用。在附属设备温度自动控制系统开发过程中,采用厂商的标准Modbus模块能大大缩短系统开发过程,本文结合实际开发过程,针对一些模块的使用与大家探讨交流。
2 Modbus协议介绍
Modbus 通信协议是 Modicon 公司在1979年开发的一种通信协议,是一个请求应答的协议,也是一种串行的、非同步的通讯协议,支持传统的RS-232、RS-422、RS-485和以太网设备。MODBUS 是一项应用层报文传输协议, 用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。Modbus 通信协议是一种真正开放、标准的、免收许可费的网络通信协议,现已成为一种公认的通用工业标准。基于Modbus 协议,不同厂商生产的控制设备可以连成工业网络,从而可以集中监控。
MODBUS 协议允许在各种网络体系结构内进行简单通信。各种设备包括PLC、HMI、驱动程序、动作控制、输入/输出设备都能使用 MODBUS协议来启动远程操作。这些设备可以在串行链路和以太 TCP/IP 网络的 MODBUS 上进行通信。通过使用网关设备可以使不同的设备在使用 MODBUS 协议的总线或网络之间进行通信。Modbus 协议有 2 种传输模式即 RTU 模式和 ASCII 模式,一般工业智能设备都是采用 RTU 模式的Modbus 协议。
Modbus 串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点 (最大编号为 247 ) 连接于同一个串行总线。由主节点发起通信,子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间不会互相通信。
Modbus串行链路协议上帧格式如图1所示,地址域为子节点地址,功能码指明服务器要执行的动作,后面跟有表示含有请求和响应参数的数据域。
在 TCP/IP 上的MODBUS 协议是一种报文传输服务,提供以太网上设备之间的客户机/服务器通信,MODBUS 通信前需要建立客户机与服务器之间的 TCP 连接,通信使用一种专用报文头识别 MODBUS 应用数据单元,这种报文头称为 MBAP 报文头。帧格式如图2所示。
3 典型模块介绍
3.1 MOXA 以太网RTU控制器 ioLogik E2200
ioLogik E2000系列产品是一种新型的以太网RTU控制器,是一种智能以太网远程I / O设备,可以连接传感器和开/关,基于PC进行数据采集与设备控制,通过基于事件的PUSH通信方式,实现实时数据采集和报警。E2212配备有8路可设置的 DI/O 通道, 有最简单的本地控制逻辑程序Click&GO,Click&GO还支持一个特殊功能,即“继电器计数”,可以提供继电器开关的计数,实现继电器报废提醒功能,当继电器快要报废时,事先提前通知维护人员替换继电器从而避免系统失效。
在机房附属设备温度控制系统中,E2212可用来控制风机、百叶窗等的开关和证实。使用E2212时要使用配置软件进行IP地址设定,在程序中建立SOCKET连接后,就可以发送相关命令进行设备控制和检测。
开命令:0x00,0x00,0x00,0x00,0x00,0x06, 0x01, 0x05, 0x00,0x01,0xFF,0x00
MBAP 报文头设备地址 功能码写 通道01 状态:ON
关命令:0x00,0x00,0x00,0x00,0x00,0x06,0x01,0x05,0x00,0x01,0x00,0x00
查询开关状态命令:
0x00,0x00,0x00,0x00,0x00,0x06, 0x01, 0x02, 0x00,0x00,0x00,0x08
MBAP 报文头 设备地址 读输入 首地址 读8个
3.2 标准的Modbus网关MB3280
MB3280是标准的Modbus网关,它可以完成Modbus TCP和Modbus RTU/ASCII协议之间的转换。同时支持16个Modbus TCP master连接,每个端口可以连接31个RTU/ASCII slaves设备,对于RTU/ASCII master最大可以支持 32个TCP slave。是为快速整合Modbus TCP和RTU/ASCII 网络而设计的,使用MB3280,Modbus串口slave设备可以无缝地整合到现有的Modbus TCP网络中,并且Modbus TCP slave也可以和serial master正常通讯,使用MB3280最多可以管理62个串口slave节点,可以为每个通道的Modbus RTU或Modbus ASCII 配置不同的波特率,允许不同的Modbus网络整合到一个Modbus TCP网络上来。
在机房附属设备温度控制系统中,利用MB3280的网关转换功能,可以把串口485的设备例如变频器、温度采集模块等转接到以太网中,方便现场布线,原有的设备控制命令只需要加上MBAP 报文头即可正常使用。
3.3 温度采集模块DAM-3601
DAM-3601是一种远程数字化温度采集系统,可同时连接128个数字温度传感器(共8通道,每路最多16个),以RS485方式同上位机通讯。模块采用DC/24V直流供电,带电源极性保护,测温范围:-55~+125℃,测温距离:≤200m。DAM-3601可使用厂家提供的软件进行模块地址的修改、传感器编号、温度查看等,也可以在程序中发送相关的命令进行温度的采集。
DAM-3601和数字温度探头DS18B20配合使用可用来测量环境温度,DS18b20传感器与模块之间的导线连接应选用绞线连接,如果现场环境电磁干扰比较大,应选用带屏蔽的绞线进行连接,距离超过50米,需要提供单独的5V电源。如果DAM-3601与计算机的485串口连接,发送的相关命令为:
查询温度命令: 0x01, 0x03, 0x00,0x00, 0x00,0x08
模块地址 读 探头首地址 读8个探头
若DAM-3601通过网关MB3280连接到计算机,查询命令需要加上MBAP 报文头。
查询温度命令为:0x00,0x00,0x00,0x00,0x00,0x06,0x01,0x03,0x00,0x00,0x00,0x08
3.4 串口联网服务器
串口服务器能够将RS-232/485/422串口转换成TCP/IP网络接口,使得串口设备能够立即具备TCP/IP网络接口功能,连接网络进行数据通信。串口服务器与网关不同,串口服务器的串口只能连接一个串口设备,与设备连接后,控制命令与原来一样。
3.5 DS18B20
DS18B20是常用的数字智能温度传感器,具有抗干扰能力强,精度高的特点。DS18B20温度传感器接线方便,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现组网多点测温,测温范围:-55℃~+125℃。
4 结束语
MODBUS 协议应用相关的模块还有很多,但是只要模块遵守MODBUS 协议,使用方法和控制命令就相似。使用这些标准模块,可以快速的开发温度控制系统,从而实现对发射机房附属设备的自动,使发射机更加稳定运行。
参考文献:
【关键词】Modbus协议;监控系统;网络模型构建;供水自动化
Abstract:According to the application requirement of water supply monitoring control system,an effective net-work model is put forward adopting Modbus protocol to teletransmit data,monitoring application level and field level exchange data in real time to real-time online monitoring of automatic water supply system.Through the construction of the network model,descript the composition of the whole system,monitoring software design and development,as well as the implementation of Modbus Protocol.Practice has proved that this programme is a good attempt,has been well used.
Key words:modbus Protocol;monitoring system;network model construction;water supply automation
1.引言
信息技术和网络技术的不断发展,促使新一代的工业自动化系统必将向着信息化和网络化的方向发展。远程数据监控是保障工业生产正常进行的方法之一,其工作方式主要是通过远程智能仪表设备实时采集各项现场数据,并实时传输到上位机服务器中进行分析和处理,进而实现对现场设备的监视与控制。Modbus协议是一种开放性好、可靠性高的远程通信协议,基于TCP/IP体系的Modbus协议可以使用户摆脱非标准的、封闭的专用工业控制网络和现场总线技术的束缚,从而提供可靠和灵活的通信方案[1-2]。
随着人们生活水平的提高,人们对供水品质的要求也越来越高。许多城市现有供水系统中的通信协调、管网故障诊断、压力和流量的控制策略等方面的技术革新和工艺改进已到刻不容缓的地步。本文将计算机控制技术、工业网络技术和远程通信技术应用于供水自动化监控系统中,构建了一种基于Modbus的供水自动化监控系统。该系统操作简便,功能完善,远程监控数据通信可靠,为保障城市供水提供了的重要技术手段。
2.供水自动化监控网络结构设计
2.1 Modbus通信协议
Modbus协议是由美国Modicon公司开发的一种通信协议,通过该协议各种控制器和其它相关设备之间可以进行透明通信。
Modbus协议只定义了设备能够识别和使用的消息结构和命令应答机制,没有规定物理层,故可以方便地在任何网络中进行通信[3-4]。Modbus协议采用Master/Slave技术,是一种应答方式的通信协议。控制器与智能设备在网络上采用基于Modbus协议进行通信时,需要确定各种设备的硬件地址,通过识别消息中的各种动作,进行数据反馈或数据处理[5]。一个Master可以对应一个或多个Slave,Master有地址分配权,能够为所有的Slave分配地址并进行初始化的询问。Modbus协议定义了一个控制器能识别的消息结构,它描述了控制器请求访问和应答回应其他设备的过程,以及错误检测和记录的规范,制定了报文字段和内容的公共格式。2002年5月施耐德公司又发表了Modbus/TCP规范。Modbus/TCP协议与Modbus协议主要的区别在于数据帧的校验方式上,Modbus协议需自行生产校验数据,Modbus/TCP协议借助于TCP协议本身有校验机制的优势,不用再次生成校验数据[6]。本项目结合供水自动化系统自身特点,应用工业以太网技术,对两种Modbus两种传输方式进行优势互补,为供水自动化系统提供了灵活的组网方式。
2.2 供水系统生产流程结构
供水自动化系统一般分为制水和供水调度两大部分。其中制水工艺一般包括:引水、混凝、给药、沉淀、过滤、消毒、供水、排污八个环节,涉及水厂生产和加压站处理两个主要过程,此过程中需要监控包括电压、电流等电信号和流量、水的品质因数、压力值等水信号。而供水调度部分则主要涉及供水管网分布点的压力测量采集,各测压点的数据无线传输,水泵机组的变频调速控制等。以上各种电信号、水信号以及远程控制数据都是通过Modbus协议在前端传感器和监控终端之间进行数据交换。
2.3 监控系统网络的架构
供水自动化监控系统是一种典型的现代工业自动化控制系统,需要对其进行组网设计,本设计提出了基于B/S模式,建立两级监控系统,实现了供水总公司对整个供水系统各部分的远程监控。两级监控系统分别为监控应用层和现场层。供水监控系统的网络拓扑结构由IP以太网和无线IP网组成,水厂生产和加压站处理采用的是IP以太网,应用Modbus/TCP协议与远程仪表通信;供水管网分布点的压力检测采用的是GPRS网络,GPRS模块通过PLC与现场自动化仪表、传感器等监控终端设备等连接,这样GPRS模块和监控中心之间就可以通过IP地址进行双向通信。其网络物理结构如图1所示。
在以上系统结构中,上位采集服务器主要负责把采集到的数据按照既定格式写入数据库服务器,同时充当Modbus主站,为供水管网检测点通过GPRS网络提供模拟的串口服务。
图1 供水系统数据采集与监控物理结构图
图2 软件结构及描述示意图
3.通讯系统设计
3.1 Modbus通信模型的构建
现场层采用Modbus协议通信方式对现场数据进行采集,PLC设备作为主站,现场各种智能仪表作为从站设备。智能仪表以Modbus协议作为通信标准,将采集到的数据通过PLC上的RS485接口传输给PLC。智能仪表输入输出的电压、电流等模拟数据信号或是数字信号,需经过转换电路,才能与PLC内置的存储单元进行数据交换[7]。上位机通过Modbus/TCP方式对PLC存储单元数据进行定时访问,从而实时获得现场设备各种参数数据。
Modbus/TCP协议以TCP协议为基础,与TCP协议有着一致工作方式,需要经过“建立连接、通信和断开连接”3个操作步骤才能建立连接。
Modbus/TCP协议采用服务端/客户端模式,结合本系统大数据量、集中访问、多点连接的特点,在Windows XP平台中采用VC++异步非阻塞Socket封装类CAsyncSocket技术进行开发。其具体开发步骤如下:
a.服务器端,首先从CAsyncSocket派生一个新类CServerSocket,然后用这个新类定义CAsyncSocket对象,即定义一个该类的对象m_pServerSocket,调用Listen()函数进入侦听状态,重载函数OnAccept()。当客户端有连接请求时,服务器则建立一个新的Socket,以接受客户端发来的信息。
b.客户端,创建CAsyncSocket派生m_ClientSock对象并与服务器端建立连接,连接完成后,即可调用成员函数send()发送数据,当收到数据时,OnReceive()函数被调用接收数据,在该函数中调用m_nLength=Receive(m_szBuffer,sizeof(m_szbuffer))接收数据。
c.客户端CAsyncSocket类调用函数Create()函数完成创建后即可通过函数Connec t()和服务端建立连接。当客户端和服务器端通信结束后,调用Close()函数关闭Socket。
3.2 通信控件的设计
ActiveX控件是一组可执行的代码,例如:OCX、EXE、DLL文件。在软件开发过程中,通信控件与其它ActiveX控件一样,也是用一系列的属性和用户接口,它使用户能够方便地访问Windows通信驱动程序的大多数特性,包括输入、输出缓冲区的大小及决定何时使用流控制命令挂起数据传输等。由于ActiveX是一种开放的技术,开发者可以在其他程序,甚至用其它语言编写的程序中重复使用这些ActiveX控件。本设计中将一个用VB编写的通信控件插入用VC++编写的程序中。其源代码如下:
4.监控软件的设计与开发
4.1 监控软件设计
基于Modbus协议的供水自动化监控系统的上位机远程监控系统是在Windows XP平台中利用VC++ 6.0开发的,它通过Modbus/TCP方式、GPRS网络对PLC存储单元数据进行定时访问,现场智能仪表通过Modbus协议与PLC通信,从而实时在线监控自动供水系统运行状况。
供水自动化监控系统数据传输通道主要依靠以太网构建,如果由于网络安全原因导致重要数据上传失真、智能控制装置发出错误动作信号或是引起系统异常等,将给供水自动化监控系统的稳定运行造成严重威胁,甚至产生灾难性后果。考虑整个系统的安全性和稳定性,监控系统应从病毒防御、内部人员培训、网络设备加密等方面进行预防解决。
4.2 监控软件开发
VC++ 6.0开发工具提供了现成的窗口、控制与工具条的制作手段,大大简化了界面的开发过程,并且使得开发出的界面具有组态软件风格,使用起来方便、灵活、简单易学。监控系统拥有用户管理,实时监控,参数设置,报表打印,数据归档,实时报警及历史报警查询等多项功能。软件总体架构及描述示意图如图2所示。
监控软件采用模块化设计思想,主要对监控部分、图形显示部分、数据库部分等方面进行组态。
a.控制部分:监控软件通过Modbus/TCP方式、GPRS网络对PLC存储单元数据进行定时访问,PLC又通过Modbus协议与现场智能仪表通信,从而实时在线监控供水自动化系统。
b.图形显示部分:通过对各种组态控件的编写,组成生动形象的人机界面,为客户提供实时数据、实时曲线、历史曲线及报警状态的显示,并提供设备信息的设置、修改及设备的添加、修改和删除等组态功能。
c.数据库部分:数据库是联系上位机和下位机的桥梁,在组态画面运行时,它含有全部数据变量的当前值[8]。在进行项目组态时,变量管理是非常重要的一环。通过对监控点连接的变量赋予不同的外部变量值的方法。根据系统要采集的外部变量建立相应的内部变量,而内部变量与画面上的监控点对象通过属性连接建立对应关系,将控制现场的PLC控制系统和上位计算机监测系统连接起来,形成完美的监控画面。
完成对上述几方面的内容的组态之后,就生成了一套完整的供水自动化的监控软件系统,运行主画面采用级连图形子菜单的方式实现与各控制单元之间的切换[9]。该系统能够实现对制水自动化过程的实时监控以及供水管网水泵机组的启停等控制、历史数据的记录查询等等一系列功能,基本满足工业控制自动化的要求。主控界面如图3所示:
图3 主监控界面
5.结束语
Modbus协议由于其良好的适用性被广泛的使用。基于Modbus协议的供水自动化监控系统正是一种有益的尝试,可以有效地满足供水行业对生产监控的要求。华北某供水公司引入了上述的方案,一段时间以来系统运行稳定,监控效果良好,同时也提高了工厂自动化管理的水平。
参考文献
[1]邓欣茹,丁建兴,杨翼,等.Modbus/TCP工业以太网的现状与发展[J].工业控制计算机,2004,7(9):14-15.
[2]邓卫平.基于Modbus协议的PLC通信控制模块的实现[J].软件导刊,2008,7(11):114-115.
[3]吴学文,王新光,周金陵.基于Modbus通信协议的水闸计算机监控系统[J].计算机工程,2005,31(13):195-197.
[4]汪献忠,刘巍,吕运朋.基于MODBUS协议的工业智能通讯模块的设计[J].仪表技术与传感器,2006(6):47-49.
[5]卢文俊,冷杉,杨建军.基于Modbus协议的控制器远程监控系统[J].电力自动化设备,2003(6):54-56.
[6]姜斌,刘彦呈,孙凡金,等.基于Modbus/TCP的工业控制网络设计[J].低压电器,2007(13):30-33.
[7]刘晓玲,方彦军,李京丽.基于Modbus的PLC与多台电量智能仪表的通信研究[J].工业仪表与自动化装置,2003(1):24-26.
[8]林英芸,杨煜普.基于WinCC的网络化监控系统的设计与实现[J].微型电脑应用,2006,22(5).
[9]黄天戌.组态软件在工业监控系统中的二次开发[J].武汉水利电力大学学报,1999,32(2):77-79.
作者简介:
关键词: STM32; Modbus RTU; Modbus TCP; 组态软件
中图分类号: TN964?34 文献标识码: A 文章编号: 1004?373X(2013)20?0102?05
0 引 言
随着信息化进程的加快,工厂、企业及现代化楼宇都要求其现场设备接入信息网络进行统一管理。现有工厂企业控制网络中的设备大多只支持RS 232,RS 485串行链路形式的通讯。串行链路应用广泛,但由于传输距离的限制,只能应用在小型局域控制网络。要将现场设备接入信息网络必须解决不同网络通讯协议转接问题。要构建大型信息控制网络必须要采用分层次管理的形式,将一个局域网分为若干子局域网,子局域网内部采用串行链路方式进行连接,对子局域网配置一个信息中转装置,不同局域网信息通过转换装置最终连接到控制中心PC,利用网络技术将控制中心信息到互联网,实现控制网络每个节点信息连入互联网。
本文根据组建大型控制网络方案,实现一种支持远程访问的智能温湿度控制系统,系统可实现对分区域、分层多点温湿度信息的采集,并通过每一处放置的风机设备对温湿度情况进行实时控制,支持远程用户对控制系统的访问,远程用户同步对整个控制系统进行监控。智能温湿度控制系统由智能温湿度控制模块、嵌入式桥接网关及上位计算机组成,其中智能温湿度控制模块及嵌入式网关都是基于STM32平台的嵌入式系统,支持Modbus RTU串行方式数据传输,嵌入式桥接网关支持Modbus RTU与Modbus TCP转接功能,上位机利用组态软件的组态功能与控制系统进行无缝连接。本系统的实现为工厂企业控制网路的智能化、网络化、集中化提供了一种切实可行的技术路径。
1 系统组网结构设计
智能温湿度控制系统分为4层,分别从底层传感层、网关层、上位机到最上层的互联网层,分层原则按物理链路传输路径划分。传感层由智能温湿度控制模块及其控制的温湿度传感器和继电器组成,负责实时环境温湿度信息采集及风机设备控制。网关层为连接传感层与上位机的中转层,实现链路协议转换,它相对于智能温湿度控制模块作为Modbus主机节点,相对于PC是服务器端。上位机实现计算机监控软件设计,实时监控环境温湿度信息及风机状态监控,并将监控软件的实时画面通过Web到远程客户端。互联网层通过Web浏览器对监控系统画面同步监控。系统结构如图1所示。
每个嵌入式网关与其相连的智能温湿度控制模块分布在同一范围内,组成一个子局域网,负责在局域网内的数据采集、风机设备控制。不同的子局域网之间不会产生干扰,有利于整个控制网络的模块化管理。在整个控制系统中,嵌入式桥接网关只起到协议桥接作用,并不对数据进行处理,所以上位机挂载智能模块数量需要根据Modbus RTU模式规定有所限制,同时,挂载过多的子节点也会影响系统实时性。本文智能温控系统使用5个嵌入式网关,每个网关搭载10个智能温湿度控制模块节点,保证了传输可靠性及实时性。
2 系统硬件系统设计
2.1 智能温湿度控制模块硬件结构设计
智能温湿度控制模块通过温湿度传感器的信息采集,将系统所需要的环境信息转化为可识别的数字信号,针对这些数字信号的值及状态来决定智能温湿度控制模块的继电器动作,继电器可控制风机、阀门等设备的状态。智能温湿度控制模块的结构框图如图2所示。
在智能温湿度控制模块中,处理器采用ARM公司低功耗、高性价比32位Cotex?M3内核处理器STM32F103VET6,可搭载UCOS,Linux等嵌入式操作系统,F103是属于“增强型”系列,最高工作频率可达72 MHz,512 KB的FLASH存储器,其丰富的时钟系统为外设提供多种时钟选择,温湿度控制模块扩展外设包括温湿度采集、继电器驱动、RS 485接口模块及其他电路。温度采集模块采用SHT10温湿度传感器,通讯采用I2C协议,即单片机I/O引脚模拟I2C总线协议方式与传感器通讯。
利用STM32的I/O管脚通过控制三极管的开关来驱动继电器模块作为风机、阀门控制开关。温湿度控制模块除温湿度模块与继电器模块外,还包括BOOT电路、时钟电路、电源电路及串行接口电路,保证系统正常运转。
2.2 嵌入式网关硬件结构设计
嵌入式网关与智能温湿度控制模块类似,都是采用STM32处理器作为处理核心,外设要增加LCD模块及网络接口模块,但不需要传感器及继电器控制模块。其中,LCD模块为用户提供人机交换接口,LCD采用触摸屏方式,提供比按键更加灵活的操作方式。LCD由STM32的FSMC接口、液晶驱动芯片及触屏驱动芯片进行驱动。以太网模块提供RJ45接口与计算机通讯,RJ45接口接到10 Mb/s的以太网是通过网络变压器HR911105+SPI接口的独立以太网控制器ENC28J60完成。
3 系统软件设计
3.1 智能温湿度控制模块程序设计
3.1.1 智能温湿度控制程序流程
智能温湿度控制模块主要实现两个功能:环境温湿度监测和数据上传。智能温湿度控制模块的程序设计是在STM32函数库支撑下实现的,调用库函数实现系统初始化及其外设接口的程序编写。温湿度控制模块程序流程见图4。
温湿度数值及风机的状态是在每一次While()主循环都会进行读取,这种方式可以保证系统的实时性,在上位机发来读取命令时可以直接将温湿度及风机状态取走,而不必等待温湿度传感器相对漫长的读取过程。
风机的状态由智能温湿度控制模块自身进行控制,当检测其温湿度数值超标时自动打开风机设备,当温湿度达到要求标准时自动关闭。
在数据传输中ModbusInput()与ModbusOutput()实现Modbus协议的解码与编码。
3.1.2 基于Modbus RTU实现数据传输
Modbus是Modicon(现为施耐德电气公司的一个品牌)开发的报文传输协议,Modbus通信协议在OSI模型中属于数据链路层[1]。Modbus串行通讯有RTU和ASCII两种模式,相对于ASCII模式,RTU模式表达相同的信息需要较少的位数,且在相同通讯速率下具有更大的数据流量[2],RTU模式的具体每个字节的格式[3]:编码系统:8位二进制,16进制0~9,A~F;数据位:1起始位;8数据位,低位先送;奇/偶校验时1位,无奇/偶校验时0位;带校验时1位停止位,无校验时2位停止位;错误校验区:循环冗余校验(CRC)。
Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU)。特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。图5为Modbus RTU下的ADU格式。
ModbusInput()与ModbusOutput()函数实现数据包解析与打包工作,全部要遵循ADU的格式进行编写。功能码与数据组成了基本的PDU单元,Modbus支持15个功能码,用户可以根据实际需要进行删减,设计中只应用到3个相应功能码如表1所示。
表1 系统Modbus功能码及地址对应关系
Modbus协议除了规定其数据帧格式外,还需要满足其时序要求,在RTU模式下信息帧开始前必须有至少3.5个字符的静止时间t3.5,发送完毕后也需要t3.5时间间隔,即两个帧之间要有3.5个字符的静止时间来保证一帧的信息已发送完成。
在一帧发送期间,如果出现1.5字符时间以上的间隔,则会认为该信息帧不完整,系统会刷新不完整的帧,并认为下一个接收为下一帧的器件地址,这个时间一般由串口的波特率来保证。
当系统波特率大于19 200 b/s时用1.75 ms代替3.5字符静止时间,通过对定时器计数值及预分频的设定达到定时时间=1.75 ms,程序如下:
TIM_TimeBaseStructure.TIM_Period =175;
//计数值:175 定时1.75 ms
TIM_TimeBaseStructure.TIM_Prescaler=720;
//预分频,除数:720 100 kHz
3.2 嵌入式网关程序设计
3.2.1 网关程序实现流程
嵌入式网关相对于智能温湿度控制模块是Modbus的主机,相对于上位机PC是服务器端,所以嵌入式网关不但要支持两种模式下的数据传输,还要解决协议转换的任务,即Modbus RTU到Modbus TCP/IP之间的相互转换。图6为一次转换流程图。
3.2.2 Lwip在STM32上的移植
Modbus/TCP是运行在TCP/IP协议之上的协议,所以移植了一轻量级的TCP/IP协议栈:Lwip。Lwip是一开放源码的TCP/IP协议栈,相较于现流行的Uip协议栈,更加适合在32位嵌入式平台上应用。
在使用Lwip之前,需要对协议栈的相关文件进行修改,以便其可以支持STM32平台,移植主要在以下几个方面:
(1)数据类型的定义,这与移植的硬件平台及编译环境紧密相关。
(2)协议栈底层函数的修改,这里主要是底层的数据接收和发送,主要与使用的网卡芯片有关。
(3)需要编写网卡的相关驱动,需要在数据收发过程中由Lwip协议栈进行调用。
要实现与上位机TCP通讯,还需要编写相关的用户应用程序,主要包括初始化及服务端程序的编写,其中初始化程序负责初始化网络硬件MAC地址、选定通讯方式等;服务端程序负责完成与上位机通讯,包括指定主机IP及监听端口等任务。
3.2.3 Modbus RTU到Modbus TCP转换
Modbus已实现应用TCP在通讯层进行通讯[4],即Modbus协议的网络版:Modbus TCP,它的基本PDU单元与RTU模式相同,其数据帧的格式与RTU稍有不同。
字节0:事务处理标识符,通常设为0;
字节1:事务处理标识符,通常设为0;
字节2:协议标识符等于0;
字节3:协议标识符等于0;
字节4:长度字段(上半部分字节)等于0(所有的消息长度小于256);
字节5:长度字段(下半部分字节)等于后面字节的数量;
字节6:单元标识符;
字节7:MODBUS功能代码;
字节8:寄存器数据。
其中Byte 0~Byte 4一般取0x00即可,Byte 5为Byte 6~Byte 8的字节数,Byte 6单元标识符及RTU模式下的设备地址,所以Byte 6~Byte 8与RTU模式下的ADU相同,去除了CRC校验,TCP帧的校验通过TCP/IP校验实现。Modbus RTU转为Modbus TCP只需将帧前加上请求响应列,去除末尾的CRC校验字节。如RTU帧01 03 00 01 00 02 95 F8转换为Modbus TCP数据包为00 00 00 00 00 06 01 03 00 01 02即可,然后通过lwip协议栈打包为tcp传输包在网络链路进行传输通讯,响应帧采取同样策略。其中Modbus TCP数据包管理是通过结构体pbuf实现的,其结构如下:
struct pbuf {
struct pbuf *next;
void *payload;
u16_t tot_len;
u16_t len;
u8_t
u8_t flags;
u16_t ref;
};
其中payload为指向Modbus TCP数据包的指针,len表示数据包的长度,通过改写pbuf指针指向管理数据流向,将接收到数据包交给处理器处理,由嵌入式网关处理器实现链路协议的转换。
3.3 上位机软件
上位机PC是温控系统人机交换核心:一方面利用上位机组态软件对局域网络设备进行现场监控,在工厂或企业的工作人员可以对温湿度信息进行监控,同时自动调节风机设备的运转。在系统没有连入互联网络的情况下,在工业现场进行操作;另一方面PC作为外网访问的服务器端,通过组态软件的Web功能,使得远端监控PC通过IE客户端可以与Web服务端保持高度的数据同步,使得远程用户可以获得组态王运行系统相同的控制画面,通过网络用户可以与Web服务器上获得工厂及企业现场相同的数据显示、报表显示、报警显示、趋势曲线显示以及方便快捷的控制功能。
4 试验与结果分析
取两个温湿度控制节点进行测试。图7(a)为未加装风机设备,不能自动调节节点温湿度;图7(b)为加装风机,能自动调节的节点温湿度。在连续72 h采样过程中,系统运行稳定,并且加装调节设备后可以获得较好的调节效果,温湿度曲线在规定值范围内波动,可以获得稳定的温湿度环境,满足现场对温湿度环境控制的要求。
5 结 语
设计实现了一种支持远程监控的智能温湿度控制系统,具备温湿度监控、自动调节及分布式多节点控制功能。利用STM32处理器设计了智能温湿度控制模块及嵌入式桥接网关,支持Modbus RTU协议传输及Modbus RTU与Modbus TCP之间的转换功能。在嵌入式网关上实现了Lwip协议的移植,使其支持Modbus TCP协议的传输,并通过Modbus TCP与组态王软件实现无缝连接。本系统可以解决大型分布式控制系统链路转化问题,支持远程访问操作,实现了系统的集中化、智能化及网络化管理。
参考文献
[1] RAMIREZ LEYVA F H, CUELLAR J P A, BASILIO R G M, et al. Wireless system for electrical networks testing based on MODBUS protocol [C]// Proceedings of 14th International Conference on Electronics, Communications and Computers. Veracruz, Mexico: ICECC, 2004: 58?62.
[2] 李英奇,吴桂初. Modbus?Modbus TCP/IP的网关设计[J].微型机与应用,2013,32(10):48?50,53.
[3] Modicon Inc. Modicon modbus protocol reference guide [R]. USA: Modicon Inc., 1996.
[4] GOLDENBERG Niv, WOOL Avishai. Accurate modeling of Modbus/TCP for intrusion detection in SCADA systems [J]. International Journal of Critical Infrastructure Protection,2013, 6(2): 63?75.
关键词:Modbus协议;RS-485总线;智能控制器
中图分类号:TN915.04 文献标识码:A文章编号:1009-3044(2010)18-5096-02
WANG Li1, YU Cheng-Gang2
(1.HeFei Casting and Forging Works, HeFei 230022, China; 2.HeFei Ocean Automatization Equipment Limited Company, HeFei 230041, China)
Abstract: To introduces the whole structure of RS-485 bus that used in meter contral system, also expatiates the intelligentized node’s hardware circuit implement and the ways of its software flow design(take RCS-9611CS equipment as example ).The RS-485 bus which concerned in paper is based on the Modbus communication protocol.
Key words: modbus protocol; rs-485 bus; intelligentized controller
随着工业自动化程度越来越高,传统的手动操作和控制方式已不再适应当今的发展要求,计算机在自动化控制系统得到越来越多的运用。RS-485因硬件设计简单、控制方便、成本低廉等优点广泛应用于工厂自动化、工业控制等领域。因此针对当现场仪表的现状和发展需要,大部分仪表都提供支持Modbus协议,本文将介绍一种基于MODBUS通讯协议的 RS-485总线技术用计算机控制仪表的智能控制系统。
1 控制系统整体结构
基于RS-485总线的仪表自动化控制系统由综保装置(仪表)、监控计算机和RS-232转RS-485模块、RS-485控制网络4部分构成。
综保装置是在高、低压配电中直接运用到保护装置,其核心控制器件智能控制器,主要功能是采集现场电流、电压、频率及功率因素等数值,按照一定的控算方法对配电控制回路的断路器进行控制操作;将现场检测到的电流、电压、断路器分合闸状态等信息通过RS-485总线通信网络传送至监控机,并实时处理监控机下传的遥控分/合闸等各种命令。
监控计算机的主要功能是对现场装置的运行参数进行实时检测,获得现场运行数据,监测系统状态异常,并根据故障信息发出相应的报警信号;以友好的图形界面直观指示当前各个装置的运行状况及参数信息;实现故障记录管理,并实现远程控制智能断路器分/合闸功能。
RS-232转RS-485模块主要是将计算机串口转换为与仪表接口相适应的数据链接通路。
RS-485控制网络部分主要由RS-485通信接口、通信介质、接口电路、Modbus通讯协议及相应的通信软件组成。RS-485通信接口实现智能节点与监控计算机之间的串行连接;Modbus通讯协议制定了消息域格局和内容的公共格式,为智能节点与监控计算机之间提供通信规约;通信介质为双绞线,负载连接在A、B线之间。该控制网络已集成在综保装置里。
2 现场智能节点总体结构
如前所述,智能控制器在自动控制系统中需完成现场数据采集和处理、控制器各执行器件的控制及与远程监控计算机之间的通信等主要工作,因此智能控制器的设计是整个系统的关键部分。其结构框图如图1所示。
考虑到可靠性、性价比等因素,智能控制器CPU采用三菱系列单片机M30201。智能控制器设计采用结构化设计方法,包括四大部分:RS-485通信接口电路部分、电源管理部分、信号输出执行部分、I/O接口部分。其中I/O接口部分包括现场数据采集、键盘输入与显示和执行器的控制信号输出等工作。下面简要介绍RS-485通信接口电路的硬件实现。
3 转换器RS232/RS-485接口电路设计
由于计算机标准接口是RS-232,传输距离短(
RS-485采用半双工工作方式,支持多点数据通信。RS-485总线网络拓扑一般采用终端匹配的总线型结构。即采用一条总线将各个节点串接起来,不支持环形或星型网络。
4 MODBUS通讯协议及编程
Modbus是一项应用层报文传输协议,它通过主从式的请求/应答模式提供功能码规定的服务。Modbus协议定义了一个与基础通讯层无关的简单协议数据单元(PDU),特定总线或网络上的Modbus协议映射能够在应用数据单元(ADU)上引入一些附加域。
Modbus协议用一个字节编码Modbus数据单元的功能码域,以此说明操作类型。Modbus通用帧格式如图3所示。
从主机向从机发送的报文数据域包括附加信息,从机使用这些信息执行功能码定义的操作。数据域包括离散项目和寄存器地址、处理项目的数量以及域中实际数据字节数。
当从机对主机响应时,它使用功能码域来指示正常响应或者出现某种差错即异常响应。对于正常响应,从机仅对原始功能码响应;对于异常响应,服务器返回一个与原始功能码等同的码,并置该原始功能码的最高有效位为逻辑1。
Modbus以“Big-Endian”(大端对齐)表示地址和数据项。这意味着当发送多个字节时,首先发送最高地址的字节数据。
对于单个比特量,仍按字节进行传输。传输比特量时,第一个数据字节的LSB(最低有效位)对应第一个比特量,依次类推,一直到这个字节的MSB(最高有效位)为止,再从第二个字节开始。如果数量不是八的倍数,则用零填充数据字节中剩余的位,一直到字节的MSB。
Modbus以一系列具有不同特征的表格上的数据模型为基础。基本表格如表1所示。
5 结束语
Modbus协议是目前得到广泛应用的通信协议,而其构筑的硬件平台RS-485总线具有硬件设计简单、控制方便、成本低廉等优点,在工控自动化系统中将得到越来越多的应用。
参考文献:
1系统硬件设计
系统硬件主要包括主控器、8路温度传感器采集电路、无线数据传输及远程计算机,数据通信采用Modbus通信协议。1.1主控器主控器选择了一款显控触摸屏Samkoon-7b,26万色的4线高精度电阻触摸屏,两个通信口COM(RS232、RS422、RS485),色彩丰富,显示内容较多,控件齐全;特别是除了显示还可以实现控制,通过串口可与外部部件进行数据的传输[3]。本设计使用Modbus协议,使其中一个COM口实现无线数据传输到远程计算机,另外一个COM口实现和数据采集模块进行数据传输。同时,触摸屏实时显示当前温度,显示界面如图2所示。触摸数据采集系统按钮还可以显示当前8个温度传感器所在的层位及温度值,具有更加直观的特点。1.2数据采集电路数据采集电路(见图3)主要完成温度数据的采集,以Modbus协议方式将数据传输到触摸屏。其中,控制部件选择的是性价比高的STC89C51RC,它采用8051核的ISP在系统可编程芯片,最高工作时钟频率可以达到80MHz,片内含可反复擦写的Flash只读程序存储器,不需要外扩存储器,芯片运行速度快、可靠性高[4]。寒地水稻灌溉晒水池中的水温范围在4~35℃之内,所以温度传感器选择了美国DALLAS公司生产的数字温度传感器DS18B20。它的供电电压范围宽在3.0~5.5V,测温范围可达到-55~+125℃。DS18B20还具有体积小、功耗低、精度高、可靠性好的特点,单总线易于扩展多路测量,占用I/O口少,便于和单片机连接等优点[5],适合多点测温系统。在设计中使用了浸水封装式传感器,用于防水,满足系统设计需要。数据采集电路设计了8路温度采集,加入了一个4位的开关电路,用来设定本采集模块的地址,串行口可以设计为RS485通信方式或者RS232通信方式。由于只对8点温度采集,只需要一款采集板,所以选择了RS232通信方式。若采集点很多,可以将电路改为RS485通信方式。这样在整个系统中最多可以挂接16块采集板,采集128点的温度,也适用于其他需要多路温度采集的应用场合。1.3无线数据传输数据采集电路采集的数据需要传输到远程计算机中,便于存储、分析、监控。GPRS模式走流量需要花费一定的费用,而晒水池离控制中心距离不到2km,所以选择了无线数传模块YL-500IW。它是一款高稳定性、低功耗、高性价比的采用GFSK调制方式的无线透明数据收发模块,传输距离3000m以上,线高度2m、开阔地无干扰情况下可达4000m,满足系统需要。无线数传模块的RS232接口直接连接到触摸屏的另外一个COM口中,实现和远程计算机的数据传输。
2系统软件设计
为了实现触摸屏与单片机、触摸屏与远程计算机的通讯,需解决通讯协议的问题。本设计中使用开放的Modbus通讯协议,在触摸屏与单片机通信中,以触摸屏作主站,单片机作从站;在触摸屏与远程计算机通信中,设置触摸屏为从站,计算机为主站。Samkoon触摸屏本身支持Modbus通讯协议,如果单片机和计算机也支持Modbus协议,它们之间就可以进行通信了。触摸屏与单片机之间采用的RS232接口直接连接[6],触摸屏与计算机之间通过无线透明传输的模块的RS-232C接口直接连接,传输速率设置为9600kb/s,8位数据位,无校验位。2.1基于Modbus协议的数据传输Modbus协议具有极强的开放性,系统选用的显控触摸屏自带Modbus协议库[7]。设计者无需了解协议底层规则,直接设置触摸屏相应串口的外部寄存器,可自动以MODBUS协议形式读写外部控制器的数据,软件开发设计非常简便,和触摸屏相连的计算机及单片机自编Modbus协议,就可以实现三方数据通信了。支持Modbus协议常用的功能码如表1所示。通过这些功能码,可读写的地址有LB(位地址)、LW(字地址)、RWI(字地址)。系统主要使用了Modbus协议中的ReadHoldingRegisters报文(功能码03)来传送信息[8]。系统的设计中采用了两套采集装置:一套用于晒水池水温监测:另一套用于稻田水温监测。所以,两个触摸屏作为从机时,设置地址分别为01,02。在数据传输的过程中,作为主机的计算机向从机触摸屏发送指令。主机触摸屏向从机单片机发送的指令格式如表2所示,从机应答格式如表3所示。其数据都是以十六进制的形式发送和接收。从机接收到的指令经过CRC校验,如果正确,则执行相应传送命令。主机接收到数据后,同样需要经过CRC校验,如果正确开始接收传感器数据。两个字节一个数据,分别对应各区温度值,一共8个区16个字节数据;但在显示时需要将数据除以10,避免有浮点数传输而增加工作量,因为在单片机采集端已经将数据乘以10,使数据作为整数传输。2.2系统软件流程系统软件主要分为两部分:一是采集电路与触摸屏间的数据通信,流程图如图4所示。触摸屏作为主机,单片机为从机,触摸屏发出指令,从机接收到以后送相应的数据,触摸屏接收后显示。二是触摸屏与远程计算机间数据通信,流程图如图5所示。计算机作为主机,触摸屏设置为从机,计算机发送传输数据指令,触摸屏接收后,将从单片机所传输来的数据再传输给计算机,完成整个数据的采集、显示、传输。所有通信及定时均以中断的方式实现,相应的处理程序在主程序中执行。Modbus通信应答程序负责完成一次Modbus通信过程,包括解析主站报文、打包从站响应报文及控制通信接口收发操作。
3试验与应用
本系统在黑龙江省胜利农场进行实际应用,设置了两个采集点:一个采集晒水池中8个位置的温度数据,实现对水温的监测;另外一个采集水稻田中不同层位水温,采集了大量数据用于分析水温对水稻生长的影响。系统在运行中数据采集误差小于±0.5℃,没有发现错误数据,证明该系统传输数据可靠、准确。
4结语
设计了一种基于Modbus通信协议用于寒地水稻灌溉晒水池水温监测系统,并在农场实际应用,证明该系统性能优良、显示丰富、操作简单、性价比高,满足农场对晒水池水温监测实际需求。其不仅实现了水温的远程监控,存储了大量的数据为农业生产决策提供了数据支持,且整个系统经过简单的改变就可以应用到其他领域,具有广阔的发展前景。
作者:席桂清 衣淑娟 谭峰 单位:黑龙江八一农垦大学 信息技术学院
本文提出了一种智能远程油井监控 控制系统的原理和硬件和软件组成和实现方法。该方法具有多种链路方式,上层采用MODBUS串行或MODBUS_TCP协议,并提供MODBUS网关功能。该控制方式应用于智能远程油井监控仪上。
【关键词】远程监控 MODBUS 智能油井
采油监控是油田开发面临的一项重要工作。人工定时检查需要耗费大量人工,且不能保证实时性和准确性。油井远程监控系统能实现现场数据的实时采集和数据分析,通过远程下达指令实现控制功能,对分布广泛的生产现场实现网络化。油井参数采集要求系统支持长距离传输,可靠性和可维护性要求高,轮询响应时间快、通讯系统速率高,系统的兼容性和开放性高,可M行可靠扩容。
本文对一种现场数据采集准确快捷、恶劣环境下可靠、通信方式灵活、数据传输综合能力强的油井远程智能监控系统的主控部分的原理和实现方法进行了说明。
1 总体功能
主控模块可远程采集多种油井参数。通信采用多种链路方式,包括以太网、RS485、RS232有线链路以及Zigbee无线链路。上层应用通信协议采用MODBUS串行或MODBUS_TCP协议,并提供MODBUS网关功能,实现MODBUS数据包在不同物理传输介质上的透明传输。
2 硬件框架和组成
硬件框架和组成图如图1所示。
2.1 EBI外部总线接口
主要提供CPU最小系统的外部内存接口。NOR Flash:存储系统启动代码以及系统映像。上电复位后,程序从NOR Flash开始执行。SDRAM:提供程序的运行内存环境。NAND Flash:电参数的累积数据以及系统的配置文件存储在NAND Flash,实现文件系统。
2.2 SPI:Zigbee芯片连接接口
2.3 GPIO并行输入输出控制器
与离散数字量输入、离散数字量输出、状态指示灯模块、掉电检测模块、RTC模块以及电参量采集芯片相连,实现相关的功能。掉电检测模块:当电源电压低于一定值时,通知系统进行相关的数据保存工作,防止数据的丢失。RTC模块:保存系统的实时时钟。电参数采集芯片:提供供电线路参数信息。串行同步控制器(SSC):实现语音报警功能。
2.4 DBGU 调试单元
实现3线式串口,用于程序下载调试,参数配置以及超级终端功能等。
2.5 USART 通用同步异步接收变换器
实现RS232口和RS485口,上层实现串行MODBUS RTU协议。
2.6 EMAC 以太网口
用于远程网络通信,上层支持MODBUS TCP协议。
2.7 WDT 看门狗定时器
用于在系统程序出现异常时重启系统。
3 软件构架
软件层操作系统基于Linux内核版本进行移植,使用u-boot作为系统引导程序来引导操作系统。
驱动层用于驱动板载设备。驱动层通过统一接口(read,write,ioctl)向应用层提供操作控制接口。
应用层Modbus Server利用驱动层提供的接口来获取设备状态及控制设备。Modbus Server应用程序可通过配置文件工作在三种不同的模式下以满足不同的应用场景。软件结构如图2所示。
4 系统拓扑结构
油井RTU可配置成普通模式、网关模式或混合模式。普通模式仅采集数据并等待Modbus Client获取数据。网关模式用于转发数据,设备本身不采集数据,解析和转发上位机的请求到对应的采集设备上,将采集设备返回的数据重新进行解析和组包后返回给上位机,一般用于连接异种网络。混合模式结合了网关模式和普通模式,既采集数据,也具有网关功能可转发数据包。
上位机中运行Modbus Client或者其它符合Modbus协议标准的应用程序,通过RJ45连接到交换机,各RTU也通过RJ45连接到交换机,井场主RTU通常工作在网关模式或者混合模式下,通过RS485连接各个单井采集器,单井采集器通常工作在普通模式下。各个RTU设备通过RJ45和上位机连接起来,可通过telnet登陆到各个采集器,也可通过tftp来获取采集器上的数据文件,上传内核镜像文件、根文件系统及设备驱动到各个RTU设备中,通过telnet来进行系统的更新。
5 结论
本文对一种智能远程油井控制系统的组成和实现进行介绍,该实现方法通过了通讯可靠性测试和油田方的实井测试,现已部署在油田多井监控系统上,被证实是一种可行的、优点突出的、智能性高的控制方法。
参考文献
[1]董明明,孙万蓉等.基于RTU油井远程测控系统的数据采集与传输层软件设计[J].物联网技术,2012,02(02).
[2]孙殿新.油田生产监控管理系统[J].石油仪器,2003,17(04).
[3]张建军,王蓉.油田油井远程自动化监控技术方案的研究[J].自动化应用,2010(09).
[4]董明明,孙万蓉等.基于RTU油井远程测控系统的数据采集与传输层设计(硕士学位论文)[D].西安:西安电子科技大学,2010.
【关键词】modbus总线;智能控制;modbus协议
智能配电控制改变了传统配电点对点的工作模式,基于modbus现场总线的智能配电控制系统的主要特点是开放性好,可多点通信,运行可靠,易维护,提升了对低压智能元件的保护能力。为达到系统的稳定可靠,必须保证系统通信畅通,因此系统软件设计的合理性显得尤为重要。
1 系统结构设计
系统的结构如图1所示。系统采用半双工主从通信方式,系统通过modbus总线协议将主机与多个从机组网在一起,主机可以读取从机的报告并命令从机动作。因pc机自带的是rs232串行口,为方便电平匹配,需要通过rs232/485转接卡实现系统组网。因利用modbus总线协议组网有crc校验纠错功能,可以提升系统的稳定可靠性。
图1 系统结构图
总线的软件实现主要由上位机和下位通信两部分组成。上位机作为服务器端具有控制的主动权,而下位机负责根据上位机的指令进行相应的动作。系统上位机主要完成数据管理、远端控制器管理,以及系统通信管理等功能。上位机的软件设计包括组态界面的开发与实现、串口通信和moudbus协议实现三部分。
2 modbus总线实现
2.1 协议格式
modbus总线有ascii和rtu两种传输模式,本文采用rtu传输模式。协议采用二进制代码编码格式,常用波特率为19200 bps,采用半双工通信方式,每个字符由11位组成,含1位起始位、8位数据位、2位停止位,字符的发送顺序为高位在前低位在后,帧结束标志为至少3.5个字符间隔时间,帧校验方式采用crc校验,一个消息帧一般由起始位、设备地址、功能码、数据、crc校验、结束符按相应格式组成。
2.2 sci通信程序
2.2.1 sci中断发送子程序(scia_txint_isr)
本子程序用中断的形式对发送缓存器内的数据进行发送,每发送一个字节中断一次,直到一帧发送完成为止。如图2所示为本子程序流程图。
2.2.2 sci中断接收子程序(scia_rxint_isr)
图2 sci中断发送子程序流程图
本子程序用中断的形式接收数据帧,在接收过程中,可能会伴随一系列的错处,如溢出错、校验错、帧错等一些接收单个字节引起的通信出错,同时包括moudbus接收的一些帧过滤及错误判断功能,如字符时间、地址及帧内时序错等判断,以保证接收到有效的数据帧。如图3所示为本子程序流程图,详细说明如下:
(1)通信错误判断。包括奇偶校验错(moudbus不使用)、超时溢出错、帧出错、间断检测错、接收器错误等通信错误判断,主要是为了出错后能及时做出响应,保证接下去的通信保持正常,在发现通信错误后,在每次中断返回时,清出错标志。
(2)正常接收判断。当正在进行帧内接收(scia_rxflag = l_false)并且1.5和3.5字符时间都未到,说可以进行帧内数据接收,对帧内数据的接收过程包括接收到的字节放缓存单元。重新启动定时器,对字符时间进行计数。
(3)数据帧出错处理。当正在进行帧内数据接收,但字符时间超过1.5字符时间,说明出现帧内时序错,进行错误帧数据接收,接收过程基本与正常接收一致,只是多了一个置时序错表示。
(4)帧起始接收判断。当允许新数据帧接收,并且字符时间超过3.5个字符时间,则进行起始字节接收,由于协议规定,帧的起始字节是地址,要对其进行判断,若与自己的地址相符,说明帧是发给自己的,可以进行正常接受。
图3 sci中断接收子程序流程图
3 通信软件设计
图4 上位机通信软流程图
3.1 上位机通信软件设计
上位机modbus协议的软件实现,首先主设备对串口进行初始化,然后对设备层的各个站点进行轮询,以0.5s为一个周期,发送运行参数消息帧后等待那个从设备的响应,如果超时进行下一个,并且实时判断从设备的响应消息是否正确,无论帧错误还是响应超时都将产生一个错误,并在实时数据库系统中显示并记录下来。调试时在连续三轮对同一站点轮询都出错时,此站点将被屏蔽,直到调试人员来重新调整。第一次读取协议规定的所有参数,以后如果整个系统都正常,既没有调整参数也没过载时,上位机将以0.5s为周期发送运行参数消息帧一直轮询。相应的流程图如图4所示:
3.2 从设备通信软件设
计
从设备在上电时就对串口进行了初始化,采用中断的方式实时检测串口事件,一旦接收到消息,就会产生相应的中断,接收到完整的消息帧后根据modbus协议对消息帧进行解析,首先判断地址是否相符,如果不符合就不回应主设备。如果符合就对该消息进行校验,包括crc校验或是否超时,一旦错误就发送响应的错误消息帧返回主设备,正确则解析该消息帧并根据要求回应相应的参数。相应的流程图如图5所示:
图5 从机通信软件流程图
4 结论
基基于modbus协议的智能配电控制系统运行稳定可靠,简单经济,既提高了配电保护水平,也提高了管理的效率及系统稳定性,对区域性的智能配电发展有较好的推广和借鉴意义。
【参考文献】
[1]于志军.基于rs-485总线的智能低压配电系统设计[j].智能建筑与城市信息,2008,134(1).
[2]丁恩杰,编.监控系统与现场总线[m].北京:中国矿业大学出版社,2003.
[3]胡平平,王东兴,王晶杰.modbus协议在无线监控系统中的应用[j].电气自动化,2006,28(1):56-59.