基于MODBUS RTU协议的数据采集及控制模拟研究

2015-10-09 12:36朱姣
软件导刊 2015年9期
关键词:组态软件数据采集

朱姣

摘 要:通过对Modbus RTU协议的详细分析,基于AT91SAM7X256单片机功能,开发了一种关于抽油机控制器数据采集及模拟的上位机软件。以4~20mA的模拟量作为输入,按照一定规约转换后的工程值存储在AT91SAM7X256单片机的寄存器中,基于C#实现的上位机软件通过Modbus RTU协议进行数据采集,通过组态软件实现控制模拟。

关键词:Modbus RTU协议;数据采集;控制模拟;组态软件

DOIDOI:10.11907/rjdk.151609

中图分类号:TP302

文献标识码:A 文章编号文章编号:16727800(2015)009003403

0 引言

Modbus协议已经成为我国工业自动化网络协议规范的国家标准之一,国内许多厂商的产品或系统均支持该协议[1]。Modbus协议是由Modicon公司在1979年开发出来的网络协议,是第一个真正意义上用于工业现场的总线协议,它定义了设备与设备之间的信息传输方式,使控制器之间、控制器和其它设备之间可以进行通信和数据传输 [2]。文献[1]介绍了一种基于MSP430单片机的Modbus协议软件设计方法,只是简单地将通信过程分为4个阶段,未涉及采集到的数据。文献[3]把特定数据从单片机的存储设备里读取出来,作适当处理后存储到数据库中并显示部分数据,而在现场工业控制过程中往往需要的是实时数据,所以数据库的设计显得有些冗余。文献[4]开发设计了一款上位机仿真软件,为数据采集系统调试、检验提供了便捷的手段,但是不能直观仿真显示采集数据的信息。为了使人们更加直观地看到采集的数据,通过对Modbus协议实用案例的分析和研究,本设计进行了完善,并采用组态软件实现了数据的显示,达到了数据采集与控制模拟的目的。

1 系统总体结构

系统体系结构如图1所示。该系统主要包括5大功能区,各功能模块如下:

(1) 模拟量4~20mA:根据CPU以及外围设备正常工作时所需要的供电电压,选取合适的电阻值,从而获得模拟量4~20mA的电流值作为输入。

(2) CPU:中央处理单元,专用于对采集到的数据进行处理的单元模块。本设计中通过I/O口接收输入的模拟量,再通过A/D转化模块将模拟量转为数字量并存储在CPU的Registers中。

(3) Modbus Data:一旦下位机(从站)接收到上位机(主站)下达的正确命令,则从站立刻将CPU所存储的数据进行处理,遵照Modbus RTU协议规范,形成Modbus ADU数据包,通过串口发送出去。

(4) 上位机:基于C#编写实时显示数据软件。接收来自串口传送的数据包,按照Modbus RTU协议对数据包进行解析,获得要显示的数据。

(5) 组态软件:使用Espider 力控6.0组态软件直观显示数据。

图1 系统结构

2 系统设计

2.1 硬件电路设计

2.1.1 单片机电源模块

AT91SAM7X256是基于32位ARM RISC处理器系列微控制器中的一员,集成有256K字节的高速Flash和64K字节的SRAM和全套外围设备。硬件系统采用24V电源作为输入电压,经过两次电路转换(先由24V转为5V,再由5V通过内部电路转为3.3V)后给AT91SAM7X256管脚VDDIN等提供输入标称值为3.3V的电压,AT91SAM7X256工作后通过VDDOUT管脚输出1.8V电压为各个逻辑部件供电。

2.1.2 串口通信模块

系统采用通用的RS232作为串口通信。通过CPU各个管脚PA3、PA4、RXD1、TXD1和VDD3.3与转换芯片连接,达到串口数据收发的目的。

2.2 软件设计

软件设计包含3部分:上位机PC界面设计、组态软件设计以及下位机控制系统设计。

2.2.1 上位机软件设计

上位机软件主要完成本机设置和数据实时显示2个任务。本机设置包括对串口通信的设置:选择串口,设置串口(本系统采用默认的串口属性设置。波特率是9 600,数据位是8,停止位是1,无校验位),打开串口。串口打开成功即进入数据显示界面,打开失败则提示重新选择正确串口。实时显示数据的变化,开机按钮起到上载数据的作用,关机按钮则用于停止上位机与下位机的通信。上位机软件设计流程如图2所示。

图2 上位机软件流程

2.2.2 组态软件设计

在Espider软件中进行组态界面设计。本系统通过串口对变量包括数据库组态和IO设备组态进行设置,选择标准的Modbus RTU协议串行口,并对内存区、偏置和数据格式进行设置,用以在界面上显示相应的实时数据。

2.2.3 下位机控制系统

控制系统完成数据的采集及发送功能。系统上电后进入初始化,一切准备工作就绪后,等待上位机命令,一旦接收到发送来的数据即按命令进行处理,随后将所需数据发送到上位机实时显示。控制系统部分流程如图3所示。

3 MODBUS 通信协议

目前,Modbus通信协议是工业控制领域最为流行的协议,主要分为3种类型:Modbus RTU、Modbus ASCII和Modbus TCP/IP。通信协议栈结构见图4。Modbus协议采用主从工作方式,允许一台主机和多台从机进行通信,从机地址由用户设定。地址范围为1-255,地址0用作广播地址,所有主机把它当作一条命令来执行,从设备不作任何回应[5]。本设计采用Modbus RTU协议,因为RTU模式规定了消息、数据的结构、命令和应答方式。在校验上,RTU模式采用16位CRC校验[6],CRC校验保证了数据传输的正确性。在Modbus 协议中,一般CRC产生的校验数据位于Modbus ADU的后两个字节,比如在本设计中,主站上位机需要向下位机写入的数据是:0x00 0x00 0x00 0x04,按照图5,先后加入从地址(系统默认为1)、功能码和校验位形成Modbus ADU(0x01 0x03 0x00 0x00 0x00 0x04 0x44 0x09),再通过串口发送给下位机,下位机再对接收到的数据包进行解析,从而得知要执行的动作,并将上位机所需的数据(0x01 0x03 0x08 0x00 0x1a 0x00 0x1e 0x00 0x09 0x00 0x1a 0xd7 0xdd)以同样的方式传送给上位机。收到的数据同样包括站号和功能码,该处功能码是3,最后两字节是校验位,0x08表示返回的数据字节数。数据位采用大端模式,0x00 0x1a 0x00 0x1e 0x00 0x09 0x00 0x1a分别表示十进制数26,30,9,26。

图3 控制系统流程

图4 MODBUS通信协议栈

根据标准Modbus协议规范(Modbus 通用数据帧如图5所示),通过串口通信的ADU(Application Data Unit)最大字节长度为256 bytes,所以在通信过程中PDU长度是:256-Server address(1 byte 从地址)-CRC(2 byte CRC校验)=253 bytes。

Server address:从地址。用于标识和上位机通信的下位机模块,具有唯一性。

Function code:功能码。它是Modbus协议最重要的标志,位于所需数据之前,表示上位机给下位机下达的命令。下位机接收到数据包后解析出功能码,按照功能码执行上位机分配的任务,随后返回上位机所需数据(同时返回相同的功能码以便上位机识别)。本设计使用的Modbus协议功能码见表1。

图5 Modbus通用帧

校验位:一般占用2个字节,用于对丢失或者错误数据的检测。

表1 功能码

Function Code[]Description

0x01[]Read Coils

0x02[]Read Discrete Inputs

0x03[]Read Holding Registers

0x04[]Read Input Registers

0x05[]Write Single Coil

4 运行结果

4.1 上位机运行界面

通过本机设置选择需要连接的串口,打开串口后点击开机按钮,通过RS232接口与下位机通信,将采集到的数据上传到上位机并进行实时显示,运行界面如图6所示。

图6 数据采集界面

为了更加直观形象地看到数据的动态显示,通过组态软件设计了组态画面,用于对接收到的数据进行模拟显示,部分运行界面如图7所示。

图7 组态软件数据采集界面

4.2 Modscan 测试验证

为了测试接收的数据是否正确,选择Modscan软件进行验证,用以读取寄存器中的数值。经过对数据的分析和验证表明该系统数据采集的正确性,如图8所示。

(a)采集的数据(30001~30005寄存器)

(b)转换后的工程值(40001~40005寄存器)

图8 测试验证

5 结语

本设计实现了对AT91SAM7X256单片机中存储的4~20mA模拟量转换为工程值后的数据采集,并使用组态软件进行仿真。对运行结果的分析表明,上位机操作便捷、运行良好。系统充分运用了Modbus RTU协议进行数据传输,协议中的CRC校验减少了数据出错,这一点进一步说明了Modbus协议在工业控制领域中的优势。

参考文献参考文献:

[1] 高旭彬.基于MSP430单片机的Modbus协议软件设计方法[J].工矿自动化,2013,39(4):8790.

[2] 中国国际标准化管理委员会.基于Modbus协议的工业自动化网络规范GB/T19582-2008[J].仪器仪表标准化与计量,2008 (2):155159.

[3] 姜拓,张剑平.基于C#的数据采集系统上位机软件设计与实现[J].电子测试,2009(9):5861.

[4] 高旭彬.基于Modbus协议的数据采集系统上位机仿真软件设计[J].电气开关,2013,51(4):4447.

[5] 许龙虎,张浩,彭道刚,等.基于Modbus的嵌人式数据采集系统设计[J].华东电力,2009,37(2):311313.

[6] 刘紫燕,冯亮,詹志辉.Modbus协议RTU模式与TCP模式的通信转换设计[J].科学技术与工程,2013,13(18):51915196.

责任编辑(责任编辑:杜能钢)

猜你喜欢
组态软件数据采集
基于组态软件的PLC仿真教学系统的设计与开发
CS5463在植栽用电子镇流器老化监控系统中的应用
基于面向对象的组态软件实时数据库的设计
大数据时代高校数据管理的思考
基于广播模式的数据实时采集与处理系统
通用Web表单数据采集系统的设计与实现
基于开源系统的综合业务数据采集系统的开发研究
PLC与组态软件在空压机气源测控系统中的应用
基于WebAccess的PLC远程控制系统设计
基于Linux平台组态软件图形界面系统的设计研究