基于Modbus的主从通信模式的通用化设计
- 格式:doc
- 大小:19.00 KB
- 文档页数:5
一种通用化的Modbus站点任务队列执行的模块实现首先上两幅HMI的动态GIF截图,看一下这种通用化解决方案,在界面上看起来是什么样子的。
它们分别描述了站点通信良好,和站点掉线通信故障的情形。
PLC与任意一个Modbus从站进行通信,都会有一个通信队列。
这个队列由多个通信任务组成,它们一个接一个的执行,读或写整数或二进制。
所以设计思路就是:不管和什么样的站点通信,一个给定通信队列的执行过程的处理逻辑是完全一样,可以通用的。
这个通信队列从哪里来呢?就需要事先给每一类别的站点,预备一个队列加载的FC模块,把这个队列所需的通信信息和任务配置,定制加载到一个标准队列中。
这个标准队列在通信执行完毕后,还需要有这同一个类别站点的数据解析FC模块,把队列中的所有的读取数据都解析到它们该去的地方。
这就是一个站点的通信过程。
这个过程暗示了一个通信队列UDT的需求,而这个UDT一定是由通信任务UDT做为基本单元组成的。
多个站点就需要轮询调度,一个站点执行完毕就执行下一个。
这下一个站点有可能和上一个站点是同类的,也可能是不同类的。
每一类不同的站点都要有自己专用的通信前加载和通信后解析模块。
这暗示着一种通用的站点调度UDT的需求。
站点轮询中,通信质量不好的,或者不在线的,需要从轮询调度中淘汰出去。
这只是临时的,以观后效,表现好了可以召回。
多个站点之间的轮询,如何切换调度等等,或者每一个具体站点在通信前后的数据如何处理,那些很多是个性化的东西。
这里要介绍的是这个通用的负责单个站点的通信队列执行的模块。
这个模块有两个FB:一个是站点FB;一个是Modbus任务执行FB,后者嵌入在前者内部做为子模块被调用执行。
站点FB的功能是把任意从站的通信队列,在其内部调度分派给Modbus任务FB。
任务FB每次执行一个任务,依次把整个队列执行完毕。
同时顺便采集一些必要的监控信息。
1、站点FB下面的图片是站点FB被调用的样子。
这个FB的设计是基于假设通常大多数情况下,多个从站会采用相同的通信参数连接到一个485端口,所以没有为每一个从站的执行单独进行不同的端口初始化设置。
Modbus协议多机通讯系统设计【摘要】课题是基于Modbus协议的一个多单片机通信系统,整个多机通信系统是实际应用中多机通信系统的模型。
系统是由单片机AT89S52和1602液晶等模块组成的多机通信系统。
系统各部分的软件设计是根据Modbus协议规约编写,系统编程采用C语言。
系统的技术可以用于很多需要多机连接通信的系统,有很强的实用价值。
【关键词】单片机;Modbus协议;多机通信1.绪论目前单片机渗透到生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录象机、摄象机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械了。
在大部分单片机应用领域都是多个单片机构成一个多机通信系统,他们之间相互通信接收、发送和处理信息,发挥整体的作用。
Modbus协议是MODICON公司推出的一个开放式现场总线的通信协议,由于得到众多仪表厂家的支持,正在成为仪表及智能终端的工业标准,目前,多数智能仪表已利用该协议向户提供通信接口,随着仪表和通信技术的发展,Modbus 协议由Standard Modbus(标准型)发展到Modbus Plus(增强型)。
Modbus的通信方式为主从方式。
主方首先向从方发送通信请求指令,从方根据请求指令中的功能码向主方发回数据。
每个从方都有自己独立的地址。
主方所发的请求帧和从方所发的应答帧都是以从方地址开头的。
从方只读发给自己的指令,对以其他从方地址开头的报文不予理睬,并对接收到的正确的报文予以应答,这种一问一答的通信模式,大大提高了通信的正确率。
但是在多机系统中,要求既有主机与从机通信,也要有从机与主机通信,这种结构的系统是无法满足要求的。
单片机多机通信的目的是实现分布式处理系统,其通信方式有很多种,应用前景广阔,具有很大的研究意义!2.本设计的主要内容设计制作一个一主二从的多机通信系统,用Modbus协议实现他们的通信,设计内容是:(1)选择系统元件;(2)设计一主二从三个分立系统;(3)完成一主二从的硬件制作;(4)根据Modbus协议编写多机通信程序;(5)系统整体调试;(6)撰写设计说明书。
基于Modbus仪表的通用测试软件的设计
沈泉鑫
【期刊名称】《《电脑知识与技术》》
【年(卷),期】2012(008)004
【摘要】为了方便基于Modbus的多功能智能仪表的测试功作,提高测试效率,研究了应用简单的图形界面,自动组织报文、发送报文、解释报文的功能。
根据通用的Modbus通信标准,提出更为高效的测试软件设计方法,再应用c#软件进行具体实现,使测试软件可以通过界面点击实现智能仪表的测控,并自动通过后台发送测试报文实时更新显示所需的各台智能仪表的数据量。
通过实验显示所提的测试软件具有简单友好的用户界面,且功能完善,能高效实现测试任务。
【总页数】5页(P811-815)
【作者】沈泉鑫
【作者单位】厦门大学信息科学与技术学院自动化系福建厦门361005
【正文语种】中文
【中图分类】TP311
【相关文献】
1.汽车组合仪表通用测试软件设计 [J], 张明福;刘成厚;郭俊
2.基于VISA及IVI技术的仪器仪表自动测试系统软件设计 [J], 黄娟;李文臻
3.基于USB的卫星通用化地面测试软件的设计 [J], 安然;任家峪;张卓;闵康磊;罗铿
4.基于Modbus仪表的通用测试软件的设计 [J], 沈泉鑫
5.基于共性需求的软件通用自动化测试设计研究 [J], 左万娟; 虞砺琨; 王小丽; 董燕
因版权原因,仅展示原文概要,查看原文内容请购买。
基于MODBUS的主从通信系统的设计
金鹰
【期刊名称】《南通大学学报(自然科学版)》
【年(卷),期】2007(6)3
【摘要】概述了MODBUS通信协议,分析了花色捻线机控制器的功能需求,构建了基于MODBUS的花色捻线机控制器的触摸屏与单片机的主从通信系统,详细说明了主从机的软件设计、从机的通信软件设计、通信协议帧以及CRC校验子程序的设计.实际运行情况表明,系统可以便捷地设定和更改生产工艺参数,满足生产不同花色线的要求,主从通信稳定可靠.
【总页数】4页(P76-78,82)
【作者】金鹰
【作者单位】淮阴工学院,计算机工程系,江苏,淮安,223001
【正文语种】中文
【中图分类】TP23
【相关文献】
1.基于MODBUS TCP协议的船用以太网通信系统设计 [J], 郑轶;杨明超
2.基于RS-232标准实现的远距离多机主从式通信系统的设计 [J], 樊宇;赵宇;程全
3.基于Profibus-DP的S7-300主从站通信系统实训装置的设计与实现 [J], 曾一新
4.基于MODBUS协议的密集架智能仓储通信系统设计 [J], 裴春梅;王艳秋;杨秀清;
韩伟
5.基于Modbus的S7-120通信系统设计 [J], 韩涛
因版权原因,仅展示原文概要,查看原文内容请购买。
目前大量的测控系统是由上位机与以单片机为核心的测控装置组成,单片机把采集的数据(模拟量、数字量)通过串口传送到上位机进行分析、处理、显示和存储,同时上位机的数据或命令也通过串口传送到单片机,从而实现控制设备间数据交换。
实现单片机与上位机通信而进行数据传输,早期主要有动态数据交换(DDE )、板卡等方式,但这些方式具有一定局限性,如DDE 方式增加了系统的不可靠性,降低了系统的实时性,同时对开发人员的要求也更高。
Modbus 通信协议的出现,使得单片机通过串口即可以实现与上位机通信[1]。
本文利用Modbus 通信协议,实现了一个基于一主多从的数据采集系统,能够将不同形式的来自传感器的信号集中到主机进行处理。
1系统的总体设计系统由一个主机和三个从机构成。
其中,三个从机分别以不同的接口形式连接了传感器,不停地采集相应的传感器信号。
主机通过Modbus 总线发送命令,对应的从机接收其命令并回送传感器数据。
2硬件电路设计2.1主机硬件电路的设计主机电路主要有两部分构成,其中第一部分是单片机的最小系统以及Max485总线接口电路,实现主机与各从机之间的物理连接;第二部分是基于LCD12864的液晶显示电路,用以实时显示来自各从机的传感器数据。
如图2、图3所示。
图3液晶屏接口电路从图2、图3可以看出,主机的RXD 、TXD 分别和RO 、DI 相连。
P2.7用来确定当前485总线的数据传输方向。
主机的P1口连接液晶屏的并行数据线接口DB0~DB7,P2.0~P2.4连接液晶屏的控制引脚。
2.2各从机硬件电路的设计从机1采用比较简单的数字式温度传感器DS18B20采集外界的温度数据,作为其通过Modbus 总线向主机传送的数据源。
基于Modbus 总线的一主多从数据采集系统的设计扈书亮(天津机电职业技术学院,天津300350)韩淼(天津天狮学院,天津301799)Design of Multi Parameter Monitoring System for Repertory Based on Modbus RTU摘要:采用基于Modbus 通信协议实现一主多从的多点数据采集系统,各从机分别采用不同的传感器测量温/湿度,主机采用Modbus 协议获取各从机的数据,并通过液晶显示模块显示。
© 1994-2009 China Academic Journal Electronic Publishing House. All rights reserved. 修正仪表系数为K 1,1ΠK 1则表示补偿后每个脉冲的升数,则由式(2)可得:K 1=αK (1-cp Πη)v(5)流量计在受到温度的影响时,随着温度的升高,壳体和转子都膨胀,因此有必要进行温度补偿。
温度修正是指使用温度与标定温度不同而进行的修正,温度修正按下式计算:C T =-βα(T 2-T 1)(6)式中C T 为温度修正值;T 2为使用温度;T 1为标定时标定介质温度;βa 为流量计壳体体膨胀系数。
不锈钢壳体的βa 是0100486%℃;普通碳钢壳体的βa 是010036%Π℃;青铜壳体的βa 是0100576%Π℃。
仪表系数修正计算按下式计算:K c =K 1(1+c T )(7)式中,K c 为修正后的仪表系数。
21数控灌油装置误差分析传统的灌桶型数控灌油装置在控制上采用A 、B 阀控制方式,即开始灌油时打开A 阀,B 阀关闭,当所灌液体达到每桶的预置量时,发出指令,关闭A 阀,同时打开B 阀,当所灌液体达到每桶的预置量时,发出指令,关闭B 阀,同时打开A 阀,重复此过程,直到达到所预置的总量为止。
由LCB -9800系列不锈钢椭圆齿轮流量计的原理可知,流量计产生的脉冲与流量有式(4)的关系。
由于阀门开关时间的存在,造成灌桶误差,灌桶的体积V 为:V =Qt 1+珡Q 1t 2=F K (t 1+12t 2)(8)式中:t 1为数控发出起动指令到数控发出切换指令的时间;t 2为数控发出切换指令到切换完成的时间,珡Q 1的关闭时间t 2的平均流量。
用误差传播公式求得V 的误差式d V =(t 1+t 2Π2K )2d F 2+(F (t 1+t 2Π2)K2)2d K 2+F K (d t 1+12d t 2)式中:1ΠK (t 1+t 2Π2)d F 是流量计输出脉冲的稳定性和流量波动造成的误差;F ΠK 2(t 1+t 2Π2)d K是流量计仪表系数非线性误差造成的误差;F ΠK d t 1是数字信号±1计数误差造成的误差;F Π(2K )d t 2是阀门的关闭时间造成的误差。
0 引言电梯是高层建筑的重要机电设备,电梯轿厢是运送乘客和货物的电梯组件,作为乘客唯一可见的电梯部件,是电梯的工作部分。
随着人们物质生活水平的提高,作为一种特殊的垂直交通工具,它存在两方面的需求:第一、各种电梯轿厢内广告播放、显示系统多采用独立的VCD广告机、屏幕后面嵌入小型的PC机或者是VGA音视频双绞线传输技术等,存在成本较高、内容更新不方便的问题[4];第二、目前的电梯控制系统中,主要是PLC控制器与各层的内外呼板进行多机通信,采用的是令牌式,这样就加大了PLC控制器的工作量度,为了解决这一问题,就考虑到在PLC控制器与各外呼板之间加一个可以双串口通信的器件,进行信号采集与计算,从而提高系统的工作效率。
基于这两方面的需求,通过设计一套电梯轿厢的多媒体显示系统,并且在这一系统中,在基于嵌入式ARM9双串口硬件平台的基础上,移植WinCE操作系统,利用其丰富的图形界面和多媒体功能,实现嵌入式系统与各楼层内外呼板单片机的信号采集[3],并与PLC主控制器进行串口通信的多机通信系统,取代传统的PLC直接进行呼梯信号采集的方式。
此多媒体电梯通信系统可以提高整个电梯系统的工作效率,具有很大的实用价值,也增强了电梯的安全性和可靠性,从而也可以提高产品的质量和服务水平。
1 通讯系统硬件设计本系统的设计是以ARM9核心板组成的嵌入式多媒体系统为主机,以电梯各楼层的外呼板单片机以及PLC主控机作为从机,构成基于RS-485总线的多机通信系统。
1.1 系统组成基于Modbus协议的多机通信系统的设计与实现孔令彬 黄 敏(中国地质大学,机电学院)摘 要:在采用嵌入式微处理器S3C2440X芯片为核心的基础上,扩展外围硬件,裁剪移植WinCE操作系统,利用S3C2440X芯片的多串口特性设计了基于Modbus协议的ARM9核心板与多单片机及西门子PLC主控机串行通信的多机通信系统,介绍了基于RS-485总线技术的多机通讯的原理,提供了多机通信系统的硬件电路图和软件设计方案,将此多机通信系统应用到电梯的控制系统中,提高了电梯控制系统的效率。
基于Modbus的主从通信模式的通用化设计作者:叶笑冬陆宇王子健来源:《硅谷》2014年第23期摘要本文根据分层设计思想,基于RS485总线和Modbus协议,实现主从通信模式下的通用化设计,同时满足不同设备和硬件平台下的可移植性和扩展性的需要。
另外,设计中利用侦测帧技术,解决子节点信息及时上告的问题。
关键词 RS485;Modbus;RTU;OSI模型;主从模式;对等模式中图分类号:TP23 文献标识码:A 文章编号:1671-7597(2014)23-0058-02在工业现场,设备间通信、分布式系统的模块之间的通信,都离不开主从通信模式或对等通信模式。
对等通信模式的通信主体没有主从之分,每个设备、每个模块都是主节点,可以随时发起通信,随时接收信息;主从通信模式,相对而言比较复杂,主节点是唯一的控制主体,它向每个从节点发起通信,而相关子节点则响应,每个子节点之间不能直接通信。
主节点可以点对点地和子节点通信,也可以向所有子节点发起广播。
由于RS485总线采用半双工拓扑结构,使得某一段时间段内,只有某个特定的子节点和主节点之间才能而且必须建立一个完整的会话,即主节点发起请求,子节点收到后响应并回复请求。
而其它子节点必须等待。
在实际应用中,经常会有以下情况发生:1)由于不同子节点的响应,不同的命令的响应,需要延时的时间不同,则对于应用而言就显得比较复杂。
2)由于主节点发送的命令可能某些原因未被子节点响应,从应用角度而言,可能需要进行重发,如果针对每一个命令做相应工作其扩展性存在很大的问题。
3)子节点由于产生事件或告警,希望尽快告知主节点,子节点因无法直接发起请求,使得这种应用的及时性存在问题。
4)由于项目的需要,MCU芯片可能有所不同,有可能是单片机、DSP、ARM等其中的任何一种或几种,也可能是同种类型的不同配置,但是通信都同样遇到以上问题。
如果针对每一款MCU都重写通信部分的功能,开发周期、测试周期都会涉及这部分内容,浪费有限的人力资源。
这些共性的问题如果能在通用的模块内解决,一方面企业的共性模块可以增强可复用性,另外一方面,开发工程师就可以把精力花在相关的应用领域,降低开发复杂度。
工业现场使用Modus现场总线协议非常普遍,利用Modbus协议作为载体作为通用模块的一部分具有典型性。
对于RS485总线的应用场合,不管是设备(或装置)之间的通信还是设备(或装置)内的主节点和子节点之间的通信,通用模块都适合。
1 协议简介1)RS485总线。
RS485总线由于其成本低廉、布线简单,抗干扰性强,通信距离长,稳定可靠等特点,从而广泛的应用于工业控制、电力通信、智能仪表等领域中。
RS-485采用半双工工作方式,任何时候只能有唯一节点处于发送状态,因此,发送电路须由使能信号加以控制。
应用RS-485可以联网构成分布式系统,在不加中继器的情况下,允许最多32个子节点。
主节点同时只能和一个子节点进行通信,子节点之间不能直接通信。
另外,主节点可以通过广播方式和所有子节点进行通信。
其拓扑结构如图1所示。
2)Modbus 串行链路协议。
Modbus协议定义了一个与基础通信层无关的简单协议数据单元(PDU),位于在OSI模型[1][2]中的第7层。
是一个应用层报文传输协议。
其数据包结构如图2所示。
而Modbus串行链路协议位于OSI 模型的第二层,是一个主/从协议。
如图3所示。
在一个串行总线上,只有一个主节点,有一个或多个子节点(最大编号为247)。
Modbus通信总是由主节点发起。
子节点从来不会主动发送数据。
子节点之间也不会直接通信。
正因为这种特点,主从节点采用的是乒乓机制,即同一时刻有且只有一个子节点和主节点进行交互,完成之后,主节点才能访问下一个子节点。
Modbus串行链路协议是Modbus在串行总线上的实现协议,特别适合于RS485总线结构。
另外,如果把RS232结构可以看成是一个只有一个子节点的主/从结构。
则Modbus串行链路协议也同样适合。
Modbus串行链路协议支持单播模式和广播模式。
如图2所示,地址域的地址值用于区分单播模式和广播模式,其中1~247是单播模式地址,0是广播模式地址。
在单播模式下,主节点指定某个子节点的地址进行访问,被指定的子节点接到并处理完请求后,向主节点返回一个‘应答’,而其它子节点,虽然也收到数据,但是由于地址域信息和自身不符,就会抛弃该报文。
在广播模式下,主节点向所有的子节点发送请求,即报文中地址域的值为0。
各子节点接收到报文后判断是广播模式,因此,仅仅处理请求,但不会应答。
所以广播请求一般用于写命令。
2 主从模式下的及时响应由于RS485的总线方式决定了通信方式必然是主从通信机制,主从方式的最大缺陷在于子节点无法主动发起通信,而主节点发起通信也是定时或按需的。
如果子节点有告警需要尽快得到主节点响应,对于主节点而言,这将是一个很大的挑战。
如果主节点缩短轮询周期,则会无形中加大主节点和子节点的负荷,也会浪费RS485的通信带宽。
如果轮询周期太长,子节点的告警可能就得不到及时的响应。
事实上,我们通过对需求的分析归纳可以得出结论,即一个应用系统的通信命令无非是由两种类型的命令组成:交互式命令和主动上告命令。
在这里交互式命令就是主节点和子节点进行通信;主动上告命令就是子节点有告警需要通知主节点。
如何满足子节点及时上告主节点的需要,是通用性设计的一个重要内容。
3 通用化设计1)数据链路层的设计。
在通用化设计中,根据OSI分层设计思想,数据链路层实现Modbus串行链路协议[3],包括两部分的内容:①满足一个完整帧的处理的要求。
一个完整帧的处理包括发送命令方如何组成一个完整的RTU模式下的Modbus帧;接收命令方如何接收一个完整的RTU模式下的Modbus帧。
如果接收错误,进行相应的处理。
由于这部分功能牵涉到具体硬件,因此被封装在相应的文件中,对应于不同的MCU,修改相关硬件实现即可。
②满足上层对一个完整的事务处理的需求。
上层对一个完整的事务处理,包括对接收的命令进行解析和回复;支持单播模式和广播模式;判断命令请求超时;超时启动重发机制等。
另外,考虑到以后多子板热插拔的应用需要,该层也预留了相应的接口,如定义探测帧获取子板是否存在的信息等。
这些内容已经和具体硬件没有关系,因此这部分可以很方便地移植。
另外,对于具体应用而言,可能不同命令的需要子节点响应的时间也不尽相同,而且需要重发的要求也可能有所不同,但是通信的状态迁移图都是一样的,如图4所示,因此,通用模块中利用了一个数据结构,如图5所示,采用同一种方法解决不同命令的发送和等待回复以及重发的过程。
实际应用中,应用开发工程师只需按照这一结构,建立相应的一张命令表,并通过配置的方法让模块知道如何访问该表即可。
至于,如何根据该表中的命令ID,获得该命令是否单播命令,timeout时间,允许重发次数等参数,按图4的机制运行等工作,这些都是模块完成的任务。
2)网络层的设计。
Modbus协议规范中并没有网络层的定义,但实际应用中针对每个端口都会存在主模式或者从模式,因此,模块增加了网络层的功能。
网络层实现对通信端口的配置,包括是该节点的某一个端口是处于主模式还是从模式。
如果是主模式,则可以充当主节点的作用,发起和子节点的通信;如果是从模式,则只能被动的接收来自主节点的请求,并进行回复。
该层没有涉及到硬件,也可以很方便地移植。
由于目前的需求不要求通信端口之间进行转发,因此,该层的机制比较简单。
以后需要增加功能,可以修改相应的文件。
此外,模块内在主模式下,增加了一个特殊的侦测帧,定时地访问各子节点,用最小的通信带宽和工作负荷换来子节点及时的响应,满足了子节点主动上告,即子节点响应及时性的需求。
在模块设计中,增加了侦测帧和普通帧的协同工作的机制。
他们轮流工作,当允许进行侦测时,这一阶段主节点依此发送简短的侦测帧给每个子节点。
子节点也会回送简短的信息,可以用位定义方式定义各种上告类型,比如运行是否正常、是否有告警等等。
对于应用层,主节点可以根据这些信息,决定下一步将发起什么命令。
比如发现告警,则下一个命令就是获取告警的具体信息。
从而实现及时响应的需求。
4 实际应用该通用化设计模块已被应用在储能装置的信息采集子系统,主板MCU采用TMS320F28335,子板的MCU采用MSP430,子板共32块。
系统的波特率设为115200bps,数据格式8/N/2,每个字节的传输时间约为87us。
对于侦测帧,帧的长度为8个字节,则0.087*8+1.75=2.446ms,考虑到命令的一个来回时间,则大致需要5ms的时间。
如果按32个子节点的系统计算,则一次一个完整的系统访问所需时间为5*32=160ms。
考虑到一定的通信占空比,则一个合理的侦测帧系统访问周期为1秒时间。
除此之外,如果保证通信带宽负荷为80%,如果按每秒访问各子板一次的周期测算,则平均每个子节点传输数据的最大数据量不超过23个字节为宜。
如果采集周期适当放宽,则每次采集数据量可以相应增加。
5 结论本通用化模块可以应用于各种嵌入式设备中,由于在设计之初已经充分考虑到移植性和扩展性,采用分层设计方法,对于不同的MCU,只要修改和硬件相关的文件即可,而且主要牵涉到串口部分和定时器部分,因此移植到新的硬件平台也很方便。
另外,虽然模块目前的应用主要是非操作系统下的单进程运行环境中,但是由于层内利用状态机的运行机制,层之间利用信号方式进行耦合,这样已经和是否单进程无关。
因此理论上模块同样可以用在操作系统多进程的运行环境中。
目前单进程环境的移植已经在MSP430平台上,TMS320F28335平台得到验证,对于ARM等芯片也同样可以快捷地应用该模块实现系统的通信。
另外,正如前文所述,如果需要进行功能扩展,可以在相应功能层,即相应的文件中修改。
参考文献[1]胡道元.计算机局域网[M].清华大学出版社,1996:10-12.[2]李逊林,袁宗福.计算机网络[M].电子科技大学出版社,1998:33-40.[3]王苒,汤冬谊.基于RS485主从通信协议的实现[J].现代电子技术,2003(24):67-71.。