基于ModBus的多路通信控制系统的设计方案
【摘 要】采用ModBus RTU通信协议,自行设计接口转换电路,使用C编程实现12路PMW控制,简化了系统复杂度,降低了成本,本文先介绍总的硬件系统设计,然后再介绍ModBus RTU协议以及具体实现方法,最终实现多路通信控制系统。
【关键词】ModBus RTU;PMW控制
0 引言
工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。ModBus就是工业控制器的网络协议中的一种,通过此协议,控制器相互之间、控制器经由网络和其它设备之间可以通信。基于上述原理,本项目的伺服电机联动控制系统拟采用ModBus RTU通信协议进行数据通信,控制多路PMW输出,达到能够同时对多台电机联动控制的目的。传输介质采用无线介质,延长了通信距离,在工业应用中日趋广泛。
本项目利用上位机和多个多路PMW输出级联控制板卡相连,设计实现基于ModBus协议的上位机软件,监控、调整、微调多路PMW输出,可广泛应用在从测量、通信到功率控制与变换的许多领域中。
1 通信系统硬件设计
1.1 控制系统硬件结构图
控制板卡采用自主研发的NMA_BPC1000同步控制器模块,主要用于控制多个变频器,单个控制模块具备12路DA信号输出。采用GY-12DA同步控制器模块,通过RS485通讯与PLC或电脑连接,产生0~10VDC模拟量输出。其板载资源包括:1路RS485接口,支持ModBus-RTU协议;12路DA输出,输出幅度0~10V;支持多个ModBus从站站点设置,最多支持9个站点;正常工作电压+24VDC,输入电压范围+22VDC~+26VDC,功耗4W。
本控制器具备1路RS485接口、电源输入接口及DA输出接口3中电气接口,其各自连接器在板上分布如下图1所示:
图1 NMA_BPC1000电气连接示意图
1.2 ModBus-RTU控制说明
GY_12DA支持ModBus-RTU协议,其读写操作支持单寄存器写(06功能码)、多寄存器读(03功能码)、多寄存器写(10功能码)。其控制寄存器及说明如下:
表1 NMA1000_BPC1000控制寄存器
1.2.1 电压设置寄存器(0x0~0xB)
ModBus寄存器地址0x0~0xB为用户读写设置地址,用来被用户写入DA输出值用,输入值范围为0~5000,对应输出电压为0V~10.00V。
此寄存器初始值为0。
1.2.2 电压满度微调寄存器(0x1000~0x100B)
ModBus寄存器地址0x1000~0x100B为维护及微调参数地址,用来对满度的输出电压10.00V进行微调使用,输入值范围为-10~10。此寄存器初始值在出厂前由厂家进行调整完毕,用户一般情况下禁止操作。此寄存器不可反复进行写入操作,用户调整完参数后应关闭此寄存器的写入操作,否则,将降低控制器的使用寿命。
2 通信系统下位机软件设计
2.1 ModBus RTU协议
ModBus是一种广泛应用于工业控制领域的标准通信协议,ModBus协议定义的是一种数据帧结构,独立于物理层介质,所以控制器能够识别和使用,而不管设备通信的网络类型,具有良好的适用性。当ModBus协议应用在标准ModBus网络.将被直接传送;如果应用在其他网络,ModBus协议将被封装到该网络的通信数据帧结构中发送。
ModBus通讯协议支持传统的RS-232、RS-422、RS-485和以太网设备。ModBus协议连接工控设备可形成工业网络,进行集中监控。 RS-485是一个多引出线接口,这个接口可以有多个驱动器和接收器,可以实现一台PC与多台单片机之间的串行通信。而且RS-485的最长传输距离可达1200m,适合于远距离传输。本项目需要实现多站点通信,采用Rs-485串口通信标准。
本项目依据ModBus RTU模式协议,该协议特点有使用CRC校验,数据帧的开头和结尾都使用不少于3个半字符的时间间隔作为标志,数据帧的发送必须是一个连续的数据流,不允许中途停顿。
2.2 数据帧结构
ModBus数据帧包括几个部分,地址、功能码、校验码等。其中地址指的是从站栈号,取值为1-9,0为广播地址。功能码表示上位机要求从站执行何种操作。GY_12DA功能码有单寄存器写(06功能码)、多寄存器读(03功能码)、多寄存器写(10功能码)。从站收到上位机的功能码后,如果一切正常,将原样返回功能码,否则,将返回错误代码。提示上位机有错误发生。数据足请求和响应的主要内容。当上位机向从站请求读取寄存器内容时,数据将包括寄存器的起始地址及读取的寄存器个数。寄存器是从站存放数据的地方,它的起始地址是从l开始的。但是上位机计算是由0开始的.所以对应的实际寄存器地址应该加l。从站回送响应的数据包括数据长度、实际采集的数据。数据长度只是计算数据区的长度,并不管其他部分的长度。如果从站出现异常,数据就返回错误代码(Exception code),说明发生何种错误。
CRC校验即循环冗余校验,是一个16位字,加入到数据帧时CRC是低位在前,高位在后。
表2 ModBus数据帧格式
2.3 下位机通信软件设计
本系统单片机采用的是GY-12DA同步控制器模块,程序采用C语言编写。从实时性考虑,下位机的通信程序采用的是中断方式。该控制系统支持多点通信,最大支持9个站点,站点号选择开关E1采用旋转编码器实现,旋转编码器支持0~9共10个编码,其中0号编码为模块维护使用,编码1~9代表ModBus站点号1~9。
下位机通信终端程序流程图见图3,首先进行系统初始化(图2),其中需要对ModBus协议初始化和使能,3个定时器初始化,一个定时器控制4路PMW信号,从而控制12路PMW输出。检测RS485接口是否收到数据,启动ModBus定时器,检测是否接受到ModBus数据帧,如果数据帧在确定范围内,进行CRC校验,如果从站地址正好是当前站号,检测功能码是否存在,实现读写功能。
图2 系统初始化 图3 系统控制流程
3 结语
本文提出并设计了一种多路PMW控制板卡的设计与实现方案,可以适用于PC机和多个板卡之间的串行通信控制系统中,该控制板卡采用RS-485总线标准,半双工传输方式。下位机充分利用ModBus协议原理设计实现PMW多路控制输出,测试表明,该设计方案可行。
【参考文献】
[1]王有绪,许杰.PIC系列单片机接口技术及应用系统设计[M].北京:北京航空航天大学出版社,2001,5:136-160.
[2]杨旭雷,张浩.基于RS485总线的测控系统串行通信协议及软硬件实现[J].电气自动化,2002(2):28-31.
[责任编辑:汤静]
推荐访问: 控制系统 设计方案 多路 通信 ModBus