原创 免费的提供源代码的Modbus协议栈的实现-FreeModbus网站中文翻译稿

2008-2-21 17:04 9706 6 11 分类: MCU/ 嵌入式
Freemodbus是一个奥地利人写的modbus协议栈。我把它的网站下载下来,并且翻译成了中文,可以在附件一中找到,目录为  \freemodbus\freemodbus\www.freemodbus.org\index.htm。
对于该协议栈的简单介绍见第二个附件。

在一个项目中,我使用了这个协议栈(针对mega168的移植),感觉非常好用。
该协议栈具有如下的功能:
FreeMODBUS 是针对通用的Modbus协议栈在嵌入式系统中应用的一个实现。Modbus协议是一个在工业制造领域中得到广泛应用的一个网络协议。一个Modbus通信协议栈包括两层:定义了数据结构和功能Modbus应用协议和网络层。在FreeMODBUS的当前版本中,提供了Modbus Application Protocol v1.1a 的实现并且支持在Modbus over serial line specification 1.0中定义的RTU/ASCII传输模式。从0.7版本开始,FreeModbus也支持在TCP defined in Modbus Messaging on TCP/IP Implementation Guide v1.0a中定义的TCP传输。Freemodbus遵循BSD[1] ,这意味着本协议栈的实现代码可以应用于商业用途。目前版本的FreeModbus支持如下的功能码: 
读输入寄存器 (0x04) 
读保持寄存器 (0x03) 
写单个寄存器 (0x06) 
写多个寄存器 (0x10) 
读/写多个寄存器 (0x17) 
读取线圈状态 (0x01) 
写单个线圈 (0x05) 
写多个线圈 (0x0F) 
读输入状态 (0x02) 
报告从机标识 (0x11) 
本实现基于最新的标准并且与标准完全兼容。接收和传输Modbus RTU/ASCII数据帧是通过一个由硬件提取层的调用来驱动状态机来实现的。这就使得该协议非常容易移植到其他的平台之上。当收到一个完整的数据帧后,该数据帧被传入Modbus应用层,数据帧的内容在该层得到解析。为例方便增加新的Modbus功能,Freemodbus在应用层通提供了Hooks。
如果用到了Modbus TCP协议,那么当准备处理一个新数据帧的时候,移植层就必须首先向协议栈发送一个事件标志。然后,协议栈调用一个返回值为接收到的Modbus TCP数据帧的函数,并且开始处理这个数据帧。如果数据有效,则相应的Modbus反馈帧将提供给移植层生成反馈帧。最后,该反馈被发送到客户端。 
rarpdf
PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户377235 2015-6-29 13:05

我有多个sch文件,怎样输出至一个pdF格式的文件?

用户377235 2014-10-24 18:44

没有源代码.广告.大家不要下了

用户1637240 2014-9-28 23:27

挺好,最近也在移植freemodbus,感觉挺好用的。

用户377235 2014-1-15 09:19

坑爹啊

用户1724191 2013-11-21 20:02

多谢博主分享

用户971402 2013-10-6 10:05

多谢博主分享

用户425488 2012-8-16 11:08

我还是没有学会哦?能详细点吗?

用户36743 2010-7-24 16:02

谢谢!

相关推荐阅读
用户1008175 2010-10-19 16:53
差不多一年没有写日志了,再重新拾起来吧
去年9月份到现在都没写过,期间也很少登陆,都不像个做技术的人了。...
用户1008175 2009-09-22 16:22
PCF8563使用不当产生的问题
PCF8563具有中断输出的功能,当设置的定时器减为0的时候,int管脚电平拉低。在一个应用中,我将int管脚连接到MSP430F1611的一个引脚中断上,期望int管脚不断地产生中断。运行起来后发现...
用户1008175 2009-08-25 09:54
74HC04使用不当导致XTR111电压输出产生问题
74HC04应用不当导致XTR111电压输出问题<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office"...
用户1008175 2009-06-17 15:18
4~20mA电流输出(电流环)应用笔记
最近查了一些4~20mA输出的电路。结合自己的实践做了一下总结。大部分内容来自网上(链接见参考部分)。感兴趣的可以下载看看。...
用户1008175 2009-06-11 09:47
ATmega168的SPI发送完寄存器SPIF不置位的问题
利用ATmega168的硬件SPI驱动74HC595来扩展串行接口。把MOSI和SCK设置为输出,然后设置好寄存器。,具体如下:static void vSpi595Init(void){  DDRB...
用户1008175 2009-02-20 23:46
小问题大智慧
1,100/101跟101/102相比,哪个数大?     能快速回答上来吗?口算比较难了,但是,可以根据特点做个大胆推断,分子比分母小1,是不是相当于比较1/2和2/3谁大哪?显然是后者大。我们再用...
我要评论
5
6
关闭 站长推荐上一条 /3 下一条