- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
free_modbus分析
FreeMODUS简介/index.php?lang=cn
源码下载地址/projects/freemodbus.berlios/?source=directory
Modbus是一个工业制造环境中应用的一个通用协议。一个Modbus通信协议栈包括两层:Modbus应用层协议,该层定义了数据模式和功能;另外一层是网络层。在当前版本中,FreeMODBUS 提供了一个针对Modbus 应用层协议V1.1以及支持在Modbus over serial line speifications 1.0 协议中定义的RTU/ASCII 传输模式。自从0.7版本以后,FreeModbus也支持在 Modbus Messaging on TCP/IP Implementation Guide V1.0a中定义的Modbus TCP协议。FreeModbus是遵循BSD许可证,这意味着用户可以将FreeModbus应用于商业环境中。目前支持的Modbus功能包括:
读输入寄存器(0x04)?读保持寄存器(0x03)?写单个寄存器 (0x06)?写多个寄存器 (0x10)?读/写多个寄存器(0x17)?读线圈状态 (0x01)?写单个线圈(0x05)?写多个线圈(0x0F)?读离散输入(0x02)?报告从结点ID (0x11)Modbus RTU/ASCII帧的接受和发送通过硬件提取层的回调函数驱动的一个状态机实现的。这就使得该协议很容易移植到新的平台上。当一个数据帧组合完毕,该数据将自动被传到Modbus应用层,数据帧的内容在该应用层得到解释。应用层提供Hooks(钩子函数),以方便增加新的Modbus功能。如果在处理一个新的数据帧时用到了Modbus TCP,移植层必须向协议层发送一个事件标志。协议层将调用一个返回接收到的Modbus TCP帧的功能函数。如果创建了一个有效的回复并且移植层支持Modbus回复。该层将向子端回复一个反馈。实现FreeModbus协议所需要的软/硬件需求实现Modbus协议对硬件的需求是极其少的-任何一个具有串行接口和一定量的能够处理modbus数据帧的RAM就足够了。?一个支持中断的异步串行接口,该中断至少包括接收缓冲区满中断和发送寄存器空中断?一个定时器,用以产生Modbus的RTU模式所需要的T3.5个字符的超时时间?对于软件部分而言,实现Modbus仅仅需要一个简单的事件队列。在STR71X/FreeRTOS 的移植中,使用了FreeRTOS的队列来实现了该事件队列以降低处理Modbus任务时的时间消耗。较小的微控制器往往不使用实时内核,在这种情况下,可以通过全局变量的使用来实现这个事件队列(Atmel的AVR控制器的移植中使用了该方法)。实际的内存需求量决定于使用的模块的多少。第一个表列出了所有功能模块所需要的内存量。对应ARM来讲,内存量的获取是通过使用GNUARM编译器在使用-O1命令下统计得来的。AVR所需要得内存量是通过WINAVR编译器在使用-Os命令下统计得来得。eMBInit//初始化modbus工作模式
eMBEnable//使能modbus协议栈
while(1)
{
eMBPoll//查询、处理modbus事件
}
回调函数
1、读输入寄存器eMBRegInputCB
参数列表:
pucRegBuffer: 寄存器数据缓冲
usAddress: 寄存器首地址
usNRegs: 寄存器个数
返回值
MB_ENOERR: 成功
MB_ENOREG: 非法寄存器地址
2、读/写保持寄存器eMBRegInputCB
参数列表:
pucRegBuffer: 寄存器数据缓冲
usAddress: 寄存器首地址
usNRegs: 寄存器个数
eMode 访问模式:读或写
返回值
MB_ENOERR: 成功
MB_ENOREG: 非法寄存器地址
3、读/写线圈寄存器
eMBRegCoilsCB
参数列表:
pucRegBuffer: 寄存器数据缓冲
usAddress: 第一个线圈地址
usNCoils: 线圈个数
eMode 访问模式:读或写
返回值
MB_ENOERR: 成功
MB_ENOREG: 非法寄存器地址
4、读eMBRegDiscreteCB
参数列表:
pucRegBuffer: 寄存器数据缓冲
usAddress: 离散输入首地址
usNDiscrete: 离散输入个数
返回值
MB_ENOERR: 成功
MB_ENOREG: 非法寄存器地址
位域操作函数
xMBUtilSetBits
xMBUtilGetBits
配置文件mbconfig.h
LINUX:linux系统下的RTU/ASCII模式
使用线程和线程互斥锁调用eMBPo
您可能关注的文档
- business-combination 公司合并课件.ppt
- call_of_the_wild_野性的呼唤_英文_.ppt
- CAN总线技术在ACE智能录井系统中的应用及常见问题分析.doc
- can you run fast PPT课件.ppt
- CAP Reform Results - Vicky Ford:CAP改革的结果-维姬福特.doc
- CAPP系统中工艺设计过程支持的研究.doc
- case_in_point要点.ppt
- CASE工具综述.ppt
- CAS__SSO协议简介.ppt
- CASS土方计算教程.ppt
- 2024年江西省寻乌县九上数学开学复习检测模拟试题【含答案】.doc
- 2024年江西省省宜春市袁州区数学九上开学学业水平测试模拟试题【含答案】.doc
- 《GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语》.pdf
- 中国国家标准 GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语.pdf
- GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- 《GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构》.pdf
- 中国国家标准 GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 中国国家标准 GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 《GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南》.pdf
文档评论(0)