FreeMODBUS

A Modbus ASCII/RTU and TCP implementation

关于

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.
© SILA Embedded Solutions