modbus通讯协议格式 RTU 的协议怎么用呢? 单片机和另外的模块怎么通过modbus通讯协议格式进行相互通信呢?

近几年,车联网一直占据热搜榜居高不下,随着BAT大佬们的……
电力改变了世界,也造福了我们的生产生活。电力安全大于……
近日尼吉康在北京召开了关于锂离子二次电池的新品发布会……
以&极致突破创新&为主题,在7月26日的吹田……
DLP技术自1987年问世以来,经过数年技术更新,其已经在投……
演讲人:Jim时间: 10:00:00
演讲人:李思齐时间: 10:00:00
演讲人:张厚新时间: 10:00:00
预算:¥200000预算:小于¥10000
上海市上海市
基于Modbus RTU通信协议的伺服电机联动控制系统
[导读]摘要:针对改进传统的复杂伺服电机联动控制系统的目的,提出一种新的设计方案,采用Modbus RTU通信协议,简化了系统复杂度,降低了成本,并且通过自行设计接口转换电路,提高了通用性;另外,该系统通过改进优化的软
摘要:针对改进传统的复杂伺服电机联动控制系统的目的,提出一种新的设计方案,采用Modbus RTU通信协议,简化了系统复杂度,降低了成本,并且通过自行设计接口转换电路,提高了通用性;另外,该系统通过改进优化的软件设计,能实现系统的连续运行,解决了定位数据运行模式只能定位不能连续运行的问题。先介绍总的系统设计,然后介绍Modbus RTU协议以及具体实现方法,最后以LabView编程为例,介绍上位机软件系统的实现过程。
关键词:Modbus RTU;通信协议;伺服电机;LabView
&&& 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。基于上述原理,文中设计了一套伺服电机联动控制系统,采用Modbus RTU通信协议进行数据通信,达到能够同时对2台电机联动控制的目的。
1 系统构成以及原理
&&& 在工业控制过程中,电机是控制系统一个重要组成部分。一般通过微处理器控制电机继而达到实现自动控制的目的。而上位机通过串行或者并行通信协议控制微处理器,来实现远程控制。具体框图如图1所示。本文引用地址:
&&& 文中提出了一种新的伺服电机联动控制系统的设计方案,采用Modbus RTU协议,使上位机(PC)直接可以和伺服放大器进行通信,其框图如图2所示。本设计上位机采用一般PC即可,最好带RS485接口。伺服放大器选用富士公司RYH201F5-VV2,伺服电机选用富士公司GYS201D5-RC2。由于系统设计过程中节省了微处理器,所以不仅在数值处理运算和数据传送上运行速度快,实时性强,而且简化了系统复杂度,降低了成本。
&&& 由于有的PC不自带RS485接口,因此上位机不能利用Modbus通信协议来控制伺服放大器。虽然市场没有专门接口转换电路,但是由于一般上位机(PC或者工控机等)都自带USB接口,自己根据Modbus协议和实验室现有器件,自行设计接口转换电路,接口图如图3所示。
&&& 其中USB转RS232和RS232转RS485可以在市场买到。RS485-RJ45具体接线如图4所示。
2 Modbus RTU协议及实现
2.1 Modbus协议
&&& Modbus是OSI模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。标准的Modbus口是使用RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。控制器通信使用主-从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据做出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。本系统中主设备指上位机,从设备主要指伺服放大器。
&&& 上位机可单独和伺服放大器通信,也能以广播方式和所有放大器通信。如果单独通信,伺服放大器返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了上位机查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。伺服放大器回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据和一错误检测域。如果在消息接收过程中发生一错误,或不能执行其命令,伺服放大器将建立一错误消息并把它作为回应发送出去。
&&& 通信过程主要分查询和响应。查询指从上位机通过功能代码告之被选中的伺服放大器要执行的何种功能;响应指伺服放大器对查询信息功能代码的回应。通信是由来自上位机的查询开始的。伺服放大器之间不能进行查询。
&&& 控制器能设置为两种传输模式(ASCII或RTU)之中的任意一种标准进行通信。文中选用RTU(远程终端设备)模式,还包括设置其他串口通信参数(波特率,校验方式等)。需要注意的是,在同一个Modbus网络上所有的设备都必须有相同的传输模式和串口参数。RTU模式下,数据帧格式是:地址+功能代码+信息+CRC-16校验。CRC校验的全称是循环冗余校验,其特点是:检错能力极强,花费CPU开销小。
2.2 参数编辑
2.2.1 参数绑定
&&& 设计中伺服电机采用定位数据运行,默认最多15点定位数据,AD3~AD0分别对应1~15点定位数据,具体数据见表1。
&&& 在伺服放大器上通过参数绑定,一一对应到伺服放大器输出端子,然后通过调整输出端子的逻辑值(0或者1),进而改变AD3~AD0的数值,最后决定选取的定位数据编号。其中部分参数绑定信息见表2。
&&& 例如:AD3~AD0分别对应1~15点定位数据,输出端子分别选用PA3-9~PA3-12,设定值分别为60~63,
2.2.2 参数编辑
&&& 通过参数编辑,改变定位数据编号,最终改变运行状态和运行结束停止位置。参数编辑信息见表2。
&&& 例如:定位数据编号选择01,此时AD3~AD0分别为0001
2.2.3 定位数据编辑
&&& 通过定位数据编辑,可以设置一组定位数据,包括相对位置/绝对位置,定位结束停止位置,运行速度(转速),加/减速时间和M代码等。其中相对位置以上次运行结束坐标为参考系;绝对位置以原点为参考系。定位结束停止位置表示定位结束时候停止的位置,是数字量。运行速度表示运行过程中的转速,单位是转/分。加/减速时间表示从上次运行速度更新到设定速度变化所需要的时间,单位是0.1 ms。通过查询M代码可以查询伺服系统运行的定位数据编号,设置值为00~FF。
&&& 例如:定位数据1:(绝对位置(ABS),停止位置100000,转速120转/分,加减速时间都是0.1 ms,不输出M代码)
2.3 运行状态图
&&& 按照来自Modbus通信的指令,进行定位运行。定位结束[INP]ON时,设定要运行的定位数据编号,若将自动起动[START]ON(起动)则执行相应定位数据编号的定位,具体运行状态图如图5所示。由此可见,START信号是上升沿有效信号。
2.4 连续运行实现
&&& 系统可以设置1~15号定位数据持续运行,每次运行先要设定运行的定位数据编号,然后将自动起动[START]1 ON(起动)。但是,运行到最后一个定位数据编号结束之后,系统就会自动停止运动。
&&& 根据运行状态图,可以设置其他编号定位数据运行后不输出M代码。当最后一个定位数据运行完成后输出一个M代码。实时查询M代码,如果查询到设定的M代码,表明系统设定最后一个定位数据编号已经执行完成,然后立即通过软件开启START。由于[START]信号是上升沿有效信号,因此,每次将[START]ON之后,要置于OFF,方便下一次ON时有上升沿。
3 上位机软件系统设计
&&& 上位机采用LabView 2010软件编译。当按下启动按钮,定位运行,此时定位指针指向设定初始定位数据编号,然后自动启动信号[STA RT]置于ON,此时,系统开始运行;然后,将[SFART]置于OFF,方便下一次启动。系统此时开始检测是否有急停或者停止按钮,如果有,就立即停止,如果没有,就每隔300 ms查询M代码状态。如果正好是设定的M代码,就表明最后一个定位数据编号运行结束,将定位指针指向初始定位数据编号;如果不是设定的M代码或者没有M代码输出,就返回。具体流程图如图6所示。
&&& Labview软件设计部分程序图如图7所示,设置波特率是9 600,偶校验,停止位是1位。由于采用队列操作,并且根据数据流小的特点,设置Modbus通信等待时间是150 ms,大大提高运算速度和程序效率。
&&& 文中介绍的基于Modbus RTU通信协议的伺服电机联动控制系统,不仅通信可靠性高,运算速度快,实时性强,而且硬件结构简单。最大的创新之处在于根据伺服放大器功能和原理,进行巧妙的软件设计,实现了系统连续运行的目的。此外,在复杂控制系统中利用此设计思路,能更加体现出设计优势,降低系统成本和复杂度,相信一定会被用到更多的工业现场。
据报道,土耳其流亡商人哈坎?乌赞(Hakan Uzan)旗下投资公司Baferton以5000万英镑(约合6100万美元)的价格从中国企业手中收购了奢侈手机公司Vertu(威图)。......关键字:
Vertu以打造奢侈手机为人熟知,这家英国手工奢侈智能手机制造商由诺基亚1998年创立,2012年被瑞典私人股本集团殷拓(EQT)以超过2亿欧元的价格收购Vertu。出售Vertu后,诺基亚仍保留了Vertu的一小部分股权。而现在,Ve......关键字:
VR 是否能成为艺术作品?在伦敦皇家艺术研究院的展览 Virtually Real(虚拟的真实)上,古典名作与融入 VR 技术的雕塑并列在一起。 对此,研究院的 Mark Hampson 认为这其实很正常。......关键字:
分析公司IHS Markit预测到2025年,物联网(IoT)将涵盖750亿互联物品。要达到如此庞大的规模,制造商将需要将其原有系统(以及数十年来的囊括大部分有线协议的老旧基础设施)与不断改进的无线连接标准和技术相融合。
......关键字:
2017年7月,英国比克科技(Pico Technology)发布Modbus ASCII和Modbus RTU解码软件,进一步增强了PicoScope示波器的分析能力。PicoScope是目前市场上唯一能够解码和分析Modbus(RS-......关键字:
自德国提出工业4.0之后,中国也提出了“中国制造2025”规划,随着中国自动化步伐的加快,未来中国将成为超级机器人大国,工业机器人需求量大大增长。然而在工业机器人高增长刺激下,其控制系统和自动化主要产品伺服电机发展之路必将发生改变,伺服电......关键字:
在智能硬件和物联网领域,时下大名鼎鼎的ZigBee可谓是无人不知,无人不晓。作为除了wifi、蓝牙之外,ZigBee是目前最重要的无线通信协议之一,主要应用于物联网和智能硬件等领域。关于ZigBee,下文采用问答形式向你详......关键字:
我 要 评 论
热门关键词
Cypress面议 | 上海市 浦东新区
Cypress面议 | 上海市 浦东新区
Cypress面议 | 上海市 浦东新区
Cypress面议 | 上海市 浦东新区
Cypress面议 | 上海市 浦东新区modbus RTU通信时,CRC验证码怎样计算?是否有快捷简单的方法?麻烦举例一下(原理很难懂啊)_百度知道
modbus RTU通信时,CRC验证码怎样计算?是否有快捷简单的方法?麻烦举例一下(原理很难懂啊)
我是用PLC跟温控表做通信的...
我是用PLC跟温控表做通信的
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
获赞数:13
擅长:暂未定制
我这人比较笨,花了2天时间,看了很多资料,才把CRC校验原理弄清楚。其实该CRC校验的过程就是异或、移位、取余数。目前CRC校验有直接计算和查表法。这两种方法我都用PLC(AB)梯形图实现过。直接计算会让PLC的执行时间将变得很长,特别是当传输数据量大的时候,因为每个字节的每个位都要进行一次计算。推荐用查表法,PLC执行快,一个字节查表一次,计算一次。至于算法可百度搜索,很多用C语言实现的,想办法把它转为梯形图实现就可以了,并不需要知道它的原理。CRC校验是否正确,你可以下载CRC校验器来验证。
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。modbus rtu通讯协议格式详细说明
MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。
常用的MODBUS 通讯规约有两种,一种是MODBUS ASCII,一种是MODBUS RTU。一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。
在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。
modbus rtu通讯传送方式
通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义也与MODBUS RTU通讯规约相兼容:
初始结构 = &4字节的时间 地址码 = 1 字节 功能码 = 1 字节 数据区 = N 字节
错误校检 = 16位CRC码 结束结构 = &4字节的时间
地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。
功能码:通讯传送的第二个字节。ModBus通讯规约定义功能号为1到127。本仪表只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。
数据区:数据区是根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。 CRC码:二字节的错误检测码。
modbus rtu通讯协议格式
Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。Modbus通信协议有3中模式,Modbus RTU 模块厂家为那|通信的WCTU,支持Modbus RTU/Modbus ASCII/ModbusTCP 协议,多路自主定义模拟量采集和开关量/数字量接口。
关注电子发烧友微信
有趣有料的资讯及技术干货
下载发烧友APP
打造属于您的人脉电子圈
关注发烧友课堂
锁定最新课程活动及技术直播
单片机通信uart和modbus有什么区别,modbus是一个应用层的协议,他是构建在串口,网线等底...
OPC统一架构(OPC Unified Architecture)是OPC基金会(OPC Found...
MODBUS通讯以其优越的经济性广泛应用于各种自动化通讯场合,常应用于仪表、变频器以及PLC之间通讯...
RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检...
Modbus ASCII的通信格式与Modbus RTU其实“神合貌离”,就是把Modbus RTU...
当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,...
本文为大家介绍modbus读取浮点数的两个程序设计。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求...
在Modbus总线中,数据传输时是低位字节先传送,传送过来后如果不进行交换,二进制的数值排列是反向的...
Modbus具有两种串行传输模式,ASCII 和 RTU。它们定义了数据如何打包、解码的不同方式。支...
利用Modbus协议可以实现设备间的数据交换。Modbus通讯理论上支持4种ModiconPLC地址...
标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协...
大多数Modbus设备通信通过串口EIA-485物理层进行。 对于串行连接,存在两个变种,它们在数值...
当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行...
RS485是一个物理接口,简单的说是硬件;MODBUS是一种国际标准的通讯协议,用于不同厂商之间的...
Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制...
本文详细论述了基于Modbus协议的RS485总线通讯机设计原理。虽然此主站的增加会使系统成本稍有上...
本文介绍一个用于监控整个动模系统的SCADA系统,监控系统的构建以Prosoft公司的3150-MC...
带你了解MODBUS技术
串行通信接口标准经过使用和发展,目前已经有几种。但都是在RS-232标准的基础上经过改进而形成的。所...
现在大部分的仪器设备都要求能过通过上位机软件来操作,这样方便调试,利于操作。其中就涉及到通信的过程。...
 摘要:介绍以太网的帧协议和以太网控制芯片RTL8019AS的结构特性;介绍51单片机控制RTL80...
每个仪表都有自己独特的通讯协议,常见的有modbus通讯协议 、RS-232通讯协议、RS-485通...
2017年7月,英国比克科技(Pico Technology)发布Modbus ASCII和Modb...
同伟总结,物联网将创造巨大的市场商机,只是物联网的市场属性过于分散,而且有太多标准规范。因此要了解物...
由于WTB采用双绞屏蔽线工作,所以其传输速率为1Mbit/s,并采用规定型号的电缆。WTB满足UIC...
随着环保和消防要求的提高,柴油发电机逐渐失去优势,而由于逆变技术的成熟发展,新型无公害、高可靠性、动...
目前,从各大FPGA厂商公布的销售数据来看,Xilinx的FPGA市场份额占到了近50%。Spart...
介绍了三菱FX2N 系列PLC 在无协议通信方式下与基于DS18b20 型数字温度传感器的STA-D...
采用MSP430系列单片机、MAX1270模/数转换器,并利用Modbus-RTU 协议,成功地开发...
首先介绍了RFID 中间件的概念,接着介绍了通讯组件所处理的数据的封装格式:即某企业的系列高频读写器...
本文对modbus tcp协议以及modbus tcp串行通信在智能楼宇工程中的应用作了简单介绍,重...
计算机技术的发展和普及,为PLC又提供了新的技术手段,通过计算机可以实施监测PLC的控制过程和结果,...
1 引言Modbus应用层协议由美国Modicon公司(现为施耐德电气旗下品牌)于1979年开发的,...
  由于各种各样的原因,MODBUS是今天大家使用的工业协议当中最受欢迎的一种。它简单、便宜、通用性...
  1 引言
  Modbus 是工业通讯通用协议中的一种,已被众多的厂商所支持并广泛用于工业控制...
随着石油化工企业的不断扩大,现在越来越多的企业拥有了自己独立的变电站。变电站等级的不断提高,则要求配...
2010年世界博览会正在上海举行,这是一个世界各国展示各自文化、科技和产业成果的平台,也是一个相互交...
ModBus通讯协议分为RTU协议和ASCII协议,下面就ModBus&RTU协议简要介绍...
Modbus是一种通信协议,于1979 年由Modicon公司发明,并公开、推向市场,基于主站—从站...
PROFI BUS-DP/MODBUS的网关结构设计
引 言&&& ...
基于MODBUS通信协议的低压交流配电柜智能监控系统
介绍了一种基于MODBUS协议的低压开关柜智...
IC卡的应用越来越广泛,从存储卡到逻辑加密卡,目前CPU卡已经逐渐在应用中占据主导地位。CPU卡根据...
Modbus RTU通信协议在MCF51QE128上的实现
引言 工业控制已从单机控制走向集中监控...
摘要:从红外通讯协议的特点、基本原理对红外无
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-Modbus-RTU
一、数据分析
两个设备(单片机)通讯,用的是Modbus协议。
在单片机中拿出一部分内存(RAM)进行两个设备通讯,例如:
代表是输出线圈,用功能码 0x01,0x05,0x0F 访问, 开头地址是 0 (这个后续说明)
代表是输入线圈,用功能码 0x02 访问,开头地址是 1 (这个后续说明)
另外两个一样的道理。
注意:所谓的“线圈”“寄存器”就是“位变量”“16位变量”。之所以称“线圈”因为Modbus最初是施耐德公司为其PLC制定的一种通讯协议很自然Modbus协议中的很多术语是和PLC中的术语相关的。
二、报文分析
简单分析一条Modbus-RTU报文,例如:01
这一串数据的意思是:把数据 0x0017(十进制23) 写入 1号从机地址 0x0001数据地址。
一个报文就是一帧数据,一个数据帧就一个报文:
指的是一串完整的指令数据,就像上面的一串数据。
98 04是它前面的数据(01
06 00 01 00 17)通过一算法(见附录2)计算出来的结果,其实就像是计算累加和那样(就是加起来的值,它的算法就是加法运算)
1、主机对从机写操作
如果单片机接收到一个报文那么就对报文进行解析执行相应的处理,如上面报文:
假如本机地址是 1 ,那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:
HoldDataReg[1]
Modbus主机就完成了一次对从机数据的写操作,实现了通讯。
2、主机对从机读操作
主机进行读HoldDataReg[1] 操作,则报文是:
读取数据个数
那么单片机接收到这串数据根据数据计算CRC校验判断数据是否正确,如果判断数据无误,则结果是:返回信息给主机,返回的信息也是有格式的:
返回内容:
数据字节个数
两个字节数据
Modbus主机就完成了一次对从机数据的读操作,实现了通讯。
三、Modbus报文模型
以上了解到了Modbus的一帧报文是如何通讯的,其实每个报文的格式都基本一样的。
ADU: 应用数据单元
PDU: 协议数据单元
四、Modbus数据模型
五、Modbus事务处理
下列状态图描述了在服务器侧Modbus事务处理的一般处理过程。
六、Modbus请求与响应
看Modbus协议手册,中文第 10 页开始,英文第 24 页开始。手册非常详细举例说明了Modbus协议各个功能号的请求与响应。
Modbus任务处理函数(在单片机上实现过程)
函数中,RcvBuf 为串口接收缓冲区,如果接收了一个报文则,RcvBuf[0] 为从机地址,RcvBuf[0] 为MODBUS功能号。根据功能号做出响应,而具体的操作根据功能号在各自的函数中执行,相当于解析接收到的数据。附录1:Modbus-RTU功能码
最常用功能码:
下面“线圈”“寄存器”其实分别直的就是“位变量”“16位变量”
读离散量输入
读保持寄存器
读输入寄存器
写单个线圈
写单个寄存器
写多个线圈
写多个寄存器
附录2:CRC Generation
Modbus 一个工业上常用的通讯协议、一种通讯约定。Modbus协议包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比较简单,在单片机上很容易实现。虽然RTU比较简单,但是看协议资料...
MODBUS-RTU数据帧格式、报文实例
MODBUS-RTU报文模型
没有更多推荐了,单片机、电路板
连接器、接插件
其他元器件
ModbusRTU通信协议在MCF51QE128上的实现
ModbusRTU通信协议在MCF51QE128上的实现
引言工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一种通信规约。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信。它已经成为主流的工业标准之一。不同厂商生产的控制设备通过Modbus协议可以连成工业网络,进行集中监控。Modbus通信协议1通信传送
引言 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络集约制造时代。工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。Modbus协议是应用于电子控制器上的一种通信规约。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信。它已经成为主流的工业标准之一。不同厂商生产的控制设备通过Modbus协议可以连成工业网络,进行集中监控。 Modbus通信协议1 通信传送方式每一个数据字节包括:每个字节的位、1个起始位、8个数据位、最小的有效位先发送、1个奇偶校验位(无校验则无)、1个停止位(有校验时)、2个停止位(无校验时)。在RTU模式下每个字节的格式(11bit)如下:编码系统:8位二进制字节组成:1bit起始位、8bit数据位,最低位最先发送、1bit奇偶校验位、1bit停止位(或者没奇偶校验位,就发送一个附加的停止位)。2 数据帧结构地址码:地址码为通信传送的第一字节。这字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。 功能码:通信传送的第二字节。ModBus通信规约定义功能号为1~127。根据实际需要只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1,则表明从机没有响应操作或发送出错。 表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所示。表2 功能代码MCF51QE128的主要特性系统核心控制器采用的是Freescale公司推出的32位单片机MCF51QE128。它是一款32位ColdFire V1 MCU,特点包括:停止电流降至370nA,6μs唤醒时间,超低运行电流为50mA;50.33MHz ColdFire V1内核运行频率;25.165MHz的总线频率;最大为8KB的RAM;最高128KB的闪存;24信道的12位ADC;两个模拟比较器;2xSCI、2xI2C、2xSPI;一个6信道和两个3信道的定时器PWM模块;RTC;最多70路通用输入/输出(GPIO);系统集成频率锁定环(FLL)和软件看门狗;内部时钟源(ICS);低功耗外部32kHz振荡器;电压范围为1.8~& 3.6V;增强型内部振荡器、电压调节器和实时计数器。通用开发环境是CodeWarrior for Microcontrollers 6.0。软件设计1 接收软件流程如图1所示。&图1 从机软件流程2 配置串口和定时器void usart_init(){&&SCI1C1=0x13;//9bit character mode,odd parity&SCI1C2=0x2c;&SCI1BDL=0x29;//38400bps&SCI1BDH=0;}void timer3_init(void)//8MHz主时钟1333Hz中断判断命令包结束{&TPM3CNTH=0;&TPM3CNTL=0;&TPM3MODH=0x49;&TPM3MODL=0&& &TPM3SC=0x48;& } 3 MCF51QE128解包modbus RTU的程序&void interrupt VectorNumber_ Vsci1rx SCI_RX_ISR(void)//字节接收程序&{&&if(SCI1S1_PF==1)communication_error=1;//字节校验错误置通信失败标志位&&*(pointer_RX1)=SCI1D;//将数据放入缓冲队列&&pointer_RX1++;//队列指针后移&&len_RX1++;//收到字节长度加1&&timer3_reset();//定时器复位&&timer3_init();//定时器重启动&}&void interrupt VectorNumber_Vtpm3ovf Timer3_ISR(void)//判断命令包接收结束&{&&timer3_cnt++;//定时器中断次数加1&&if(timer3_cnt==2)&&&{&&&timer3_reset();//定时器复位pointer_RX1=Buffer_RX1;//队列指针初始化&&full_RX1=1;//收完置标志位&&&}&}4 CRC查表产生函数由于篇幅有限,此处不再详述,表具体内容可参照相关参考文献。总结笔者的设计基于MCF51QE128控制核心来实现Modbus协议,已经成功进行了实际应用,通信可靠,而且实现起来比较容易。该设计为采用MCF51QE128微控制器进行工业产品设计通信的应用提供了参考方案。
型号/产品名

我要回帖

更多关于 51单片机和arduino 的文章

 

随机推荐