基于BorlandC++Builder的Modbus通讯协议技术交流Word格式文档下载.docx
- 文档编号:13566324
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:12
- 大小:368.31KB
基于BorlandC++Builder的Modbus通讯协议技术交流Word格式文档下载.docx
《基于BorlandC++Builder的Modbus通讯协议技术交流Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于BorlandC++Builder的Modbus通讯协议技术交流Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。
这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。
1.2Modbus的几个特点
(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。
目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。
(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。
(3)Modbus的帧格式简单、紧凑,通俗易懂。
用户使用容易,厂商开发简单。
1.3在Modbus网络上转输
标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。
控制器能直接或经由Modem组网。
控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。
其它设备(从设备)根据主设备查询提供的数据作出相应反应。
典型的主设备:
主机和可编程仪表。
典型的从设备:
可编程控制器。
主设备可单独和从设备通信,也能以广播方式和所有从设备通信。
如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。
Modbus协议建立了主设备查询的格式:
设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。
从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。
如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。
1.4查询—回应周期
(1)查询:
查询消息中的功能代码告之被选中的从设备要执行何种功能。
数据段包含了从设备要执行功能的任何附加信息。
例如功能代码03是要求从设备读保持寄存器并返回它们的内容。
数据段必须包含要告之从设备的信息:
从何寄存器开始读及要读的寄存器数量。
错误检测域为从设备提供了一种验证消息内容是否正确的方法。
(2)回应:
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。
数据段包括了从设备收集的数据:
象寄存器值或状态。
如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。
错误检测域允许主设备确认消息内容是否可用。
1.5两种串行传输模式
控制器可使用ASCII或RTU通讯模式,在标准Modbus上通讯。
在配置每台控制器时,用户须选择通讯模式以及串行口的通讯参数。
(波特率,奇偶校验等),在Modbus总线上的所有设备应具有相同的通讯模式和串行通讯参数。
选择ASCII或RTU模式用于标准的Modbus总线,它定义了总线上串行传输信息区的“位”的含义,决定信息打包及译码方法。
(本次交流仅限于RTU模式)
RTU模式:
Ø
控制器以RTU模式在Modbus总线上进行通讯时,信息中的每8位字节分成2个4位16进制的字符,该模式的主要优点是在相同波特率下其传输的字符的密度高于ASCII模式,每个信息必须连续传输。
RTU模式中每个字节的格式:
编码系统:
8位二进制,十六进制0-9,A-F
数据位:
1位起始位8位数据,低位先送奇/偶校验时1位;
无奇偶校验时0位。
带校验时1位停止位;
无校验时2位停止位
错误校验区:
循环冗余校验(CRC)。
1.6ModBus信息帧
无论是ASCII模式还是RTU模式,Modbus信息以帧的方式传输,每帧有确定的起始点和结束点,使接收设备在信息的起点开始读地址,并确定要寻址的设备(广播时对全部设备),以及信息传输的结束时间。
可检测部分信息,错误可作为一种结果设定。
①.地址设置
信息地址包括2个字符(ASCII)或1个8位字符(RTU),有效的从机设备地址范围0-247,(十进制),各从机设备的寻址范围为1-247。
主机把从机地址放入信息帧的地址区,并向从机寻址。
从机响应时,把自己的地址放入响应信息的地址区,让主机识别已作出响应的从机地址。
地址0位于广播地址,所有从机均能识别。
当Modbus协议用于高级网络时,则不允许广播或其他方式替代。
②.功能码设置
信息帧功能代码包括字符(ASCII)或8位(RTU)。
有效码范围1-225(十进制),其中有些代码适用全部型号的Modicon控制器,而有些代码仅适用于某些型号的控制器。
当主机向从句发送信息时,功能代码向从机说明应执行的动作。
如读一组离散式线圈或输入信号的ON/OFF状态,读一组寄存器的数据,读从机的诊断状态,写线圈(或寄存器),允许下载、记录、确认从机内的程序等。
当从机响应主机时,功能代码可说明从机正常响应或出现错误(即不正常响应),正常响应时,从句简单返回原始功能代码;
不正常回应时,从机返回与原始代码相等效的一个码,并把最高有效位设定为“1”。
③.数据区的内容
数据区有2个16进制的数据位,数据范围为00-FF(16进制),根据网络串行传输的方式,数据区可由一对ASCII字符组成或由一个RTU字符组成。
主机向从机设备发送的信息数据中包含了从机执行主机功能代码中规定的请求动作,如离散量寄存器地址,处理对象的数目,以及实际的数据字节数等。
④.信息帧错误校验
标准Modbus总线,有两类错误检查方法(LRC和CRC),错误检查区的内容按使用的错误检查方法填写。
使用RTU方式时,错误校验码为一个16位的值,2个8位字节。
错误校验值是对信息内容执行CRC校验结果。
CRC校验信息帧是最后的一个数据,得到的校验码先送低位字节,后送高位字节,所以CRC码的高位字节是最后被传送的信息。
⑤.串行传送信息
在标准的Modbus上传送的信息中,每个字符或字节,按由左向右的次序传送,最低有效位:
(LSB)最高有效位:
(MSB)
⑥.RTU帧
RTU模式中,信息开始至少需要有3.5个字符的静止时间,依据使用的波特率,很容易计算这个静止的时间(如下图中的T1-T2-T3-T4)。
接着,第一个区的数据为设备地址。
各个区允许发送的字符均为16进制的0-9,A-F。
网络上的设备连续监测网络上的信息,包括静止时间。
当接收第一个地址数据时,每台设备立即对它解码,以判定是否是自己的地址。
发送完最后一个字符号后,也有一个3.5个字符的静止时间,然后才能发送一个新的信息。
整个信息必须连续发送。
如果在发送帧信息期间,出现大于1.5个字符的静止时间时,则接收设备刷新不完整的信息,并假设下一个地址数据。
同样一个信息后,立即发送的一个新信息,(若无3.5个字符的静止时间)这将会产生一个错误,是因为合并信息的CRC校验码无效而产生的错误。
2.BorlandC++Builder开发环境简介
BorlandC++Builder是Inprise(Borland)公司推出的基于C++语言的快速应用程序开发(rapidapplicationdevelopment,RAD)工具。
C++Builder充分利用已经发展成熟的Deliphi的可视化组件库(visualcomponentlibrary,VCL),吸收BorlandC++优秀编译器的诸多优点,结合先进的基于组件的程序设计技术,已成为一个非常成熟的可视化应用程序开发工具,可以快速、高效地开发出基于Windows环境的各类程序,尤其是数据库和网络方面,C++Builder更是一个十分理想的软件开发平台。
C++Builder6.0加入了许多新功能,包括用于创建Web服务应用程序的新一代Web开发技术WebSnap,以及可用于实现不同平台上的应用程序互操作性的SOAP/WebService技术。
利用它可以实现最小的代码开发量编写出高效率的32位Windows应用程序和Internet应用程序。
一般用户的应用程序是由应用程序界面和数据处理两部分组成,如在Windows应用程序中单击窗体的菜单或按钮(用户界面)来执行某一命令或完成某一操作(数据处理)。
这种基于窗体的应用程序运用C++Builder这样的可视化开发工具后,用户界面的设计过程就如同“搭积木”一般,只需要根据需要在窗体上放置各种组件(“积木块”),并根据需要改变它们的位置或者外观,程序员不必编写大量的代码来实现界面功能,因而可以把主要精力集中在关键代码的设计上。
Windows平台下常用的可视化开发工具(编程环境)有Inprise(Borland)公司的Delphi、C++Builder,Microsoft公司的VisualBasic等。
Inprise(Borland)公司还提供与Delphi相似的Linux下的可视化开发工具Kylix,它也是Linux平台下市场占有率最高的RAD工具。
通过这些工具,程序员可以直观地使用图形化工具来创建Windows应用程序。
C++Builder6的集成开发环境(IDE)使程序员可以利用一组窗体、菜单和其他组件,并使用可视化的方式(WYSISWYG——whatyouseeiswhatyouget,所见即所得)来设计应用程序的界面,将代码和事件与界面中的某一元素建立联系,并对整个应用程序进行调试。
3.本文所做的工作说明
在本文中,基于BorlandC++Builder6.0开发环境,结合加拿大FISO公司的NortechII光纤测温设备的Modbus通讯技术协议,编写了Modbus功能码中0x03(ReadHoldingRegisters)读取6个通道(也即6个温度传感器)的浮点型温度数据的可视化上位机软件,用第三方显示控件显示出来,并在表格中同步显示。
由于没有相应的设备供测试,又根据NortechII光纤测温设备的Modbus通讯技术协议编写了从机设备模拟应用程序。
从机设备和上位机软件通过计算机串口进行通讯,传输RTU格式的Modbus协议数据帧。
限于篇幅,本文只给出了上位机软件中的主要部分代码以及重复代码中的单段代码。
二、程序代码
NortechII光纤测温设备的Modbus通讯技术协议中数据格式和温度数据地址说明:
①数据格式描
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 BorlandC Builder Modbus 通讯 协议 技术交流
![提示](https://static.bdocx.com/images/bang_tan.gif)