FreeMODBUS - A Modbus ASCII/RTU and TCP implementation


latest release v1.5 - 6 June 2010
 

关于

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反馈帧将提供给移植层生成反馈帧。最后,该反馈被发送到客户端。

[1]:示例程序除外(这些程序可能遵循其它协议)。

新闻

  • Monday, September 5, 2007:Embedded Solutions网站现在提供商业支持. 用户可以直接通过Email(cwalter at embedded-solutions dot at )联系 Embedded Solutions 。用户还可以访问我们的网站:http://www.embedded-solutions.at.
  • Wednesday, September, 2007: 可以提供 FreeMODBUS支持,并且提供一个商用的MODBUS协议栈。 如果您有任何问题或者对此感兴趣请通过如下地址联系我们: cwalter at embedded-solutions dot at
  • Tuesday, August 21, 2007: 可以提供一个商用的 MODBUS  从结点协议栈。该从结点协议栈使用ANSI C编写,并且支持多个变量。该商业协议栈授权免版税,一套源码授权和相关的技术支持起价为500$。如果您感兴趣可以联系:cwalter at freemodbus dot org.
  • Monday, August 6, 2007: 一套商用版本的 MODBUS  主协议栈已经可以提供给用户。该主协议栈使用ANSI C编写,并且支持多个主变量。该商业协议栈授权免版税,一套源码授权和相关的技术支持起价为500$。针对AVR, ARM7 and Linux 的 RTU/ASCII 移植已经完成,目前正在进行TCP的移植。如果感兴趣可以联系: cwalter at freemodbus dot org.


FreeMODBUS library and web page maintained by Christian Walter [wolti at sil dot at]
BerliOS Logo
FreeMODBUS is sponsored and provided by embedded solutions embedded solutions
Low on development resources? Try freelancer and find new skilled people for your projects. IT Projekte und Freelancer

Valid HTML 4.01 Strict