原创 最基本的工业控制总线MODBUS(转帖)

2008-6-12 00:39 6408 6 7 分类: 通信

Modbus目前在自动化领域使用非常广泛,原因之一是它纯粹是一个"软"协议,不依赖于任何通讯介质和通讯设备.

MODBUS最早是由莫迪康(MODICON)公司研究开发的,该公司是世界知名的PLC生产厂家,因此它开发的协议自然与工业控制密切相关,目前该公司已经被施耐德集团收购,这必将进一步推动MODBUS的发展.

之所以说它是工业控制总线,是因为它不是为计算机和计算机通讯而设计的,它更适用与控制器和控制器之间的通讯.

目前,MODBUS和TCP/IP结合,充分利用了MODBUS和TCP/IP的特点,使计算机通过以太网控制工业分布设备成为一种流行趋势,自动化设备已经成为网络的一部分.

与MODBUS相反的是串口通讯仅仅定义的硬件的通讯规范,而没有具体的软件通讯协议,通常称之为自由协议,因此,大量的串口设备都借助于MODBUS实现了串口的协议通讯,我前文提到的XMT系列仪表就是采用这种方式.

MODBUS是典型的主从方式通讯模式,也就是说对话是由主控制器发出的,从控制器被动地返回主控制要求的信息或者执行主控制器要求的命令.

主控制器即可以单独和网络中的任何一个从控制器单独通讯也可以采用广播的方式,如果是单独通讯,则从设备返回信息,如果是广播方式,从设备不返回信息.


点击看大图



MODBUS定义了一个与硬件通讯层无关的简单协议通讯单元(PROTOCAL DATA UNIT),类似于祯结构,加上附加域构成了基本的应用数据单元.

点击看大图

1.地址域:

指向需要通讯控制器的逻辑地址(一个字节),是由控制器本身规定的逻辑地址,用来区分需要通讯的控制器,对于一个符合MODBUS通讯协议的控制器,自身回提供地址设定功能,可能是由地址开关或者软件设置决定相应的地址.


2.功能码:

长度一个字节,每一个功能码代表不同的命令,要求被通讯的控制器执行相应的动作.

3.数据区域:

向控制传递数据或者接收数据.

4.CRC16校验.

MODBUS通讯是主从关系,也可以看成是客户机和服务器的关系,客户机是主控制器,服务器是从控制器,由客户机发起请求,由服务器作出应答.

应答分成两种,一种是正常应答,另一种是错误应答(从控制器捕捉到错误,比如CRC16校验错误)

点击看大图






点击看大图




可见,MODBUS的通讯ADU非常小,特别适用与控制之间的实时通讯,其中最重要的两部分是功能码和数据两部分.

功能码由一个字节组成,因此最多可能是255个命令(实际规定的没有这么多)

数据部分根据功能码的不同有不同的含义,它支持下表的数据类型.
点击看大图


可以看出,它支持的数据类型非常特别,和一般通讯的数据类型不同.如果用过PLC的朋友就非常容易理解它的含义,毕竟MODBUS是工业控制总线,所以它的数据类型定义完全是针对设备控制的.

1,离散量输入,访问类型只读,长度一个位:

针对的是设备的开关量(数字量输入),比如设备包括许多外部开关,而外部开关的状态完全取决与外部,设备本身无法控制,对设备来说是只读的,因此对与设备通讯的主控制器(客户机)来说,也是只读的

2,线圈,访问类型是读写,长度是位:

PLC编程也有线圈的概念,可以理解成数字量输出,比如设备控制一些继电器,对设备来说,它是位输出(数据采集中称做数字量或者开关量输出),它当然是可写的,因为我们必须能够控制继电器的通断状态,同时,也应该是可读的,因为有时我们必须知道当前线圈(继电器)是通状态还是断状态.

在单片机的RAM中,一般都有位操作区,按字节分布,但字节中的每一位都是可以控制的,对应开关量,PLC中也是如此,我们既可以一次操作一个位,也可以一次操作一个字节(8位)或者一个字(2个字节一,16位),因此,离散量输入和线圈的概念实际就是数据采集中的数字量输入和数字量输出.

3.输入寄存器只读,字,两个字节,无符号最大可以表示65535)

只读表示设备(从控制器)中寄存器的数据是不可以改写的,比如设备读取外部传感器,并把采集的结果存入到设备中的寄存器中,这样的数据当然不允许设备直接更改,完全取决于外部传感器返回的值.

4.保持寄存器(字,两个字节,最大可以表示65535,可读写)

比如PLC中有一个模拟量输出,模拟量输出的值肯定是设备写入的,因此比如是可写的,同时,我们也需要知道当前写入的值是什么,因此也必须是可读的.

以功能代码01(0X01)为例看以下功能代码和数据的组织格式,网络上有详细协议.

一次可以读取1到2000(0X7D00)个线圈的状态

点击看大图

点击看大图



NI的网站上免费提供了MODBUS库,使用非常方便,只需要填写必要的信息,就可以自动完成ADU的格式,包括CRC16校验,代码完全公开,可以结合协议仔细分析,有助于理解MODBUS.



PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1228605 2008-8-6 15:28

您好,NI网站上的Modbus库的连接您有吗?我上网站上没找到。
相关推荐阅读
雁塔菜农 2012-04-05 17:51
2012年度新唐Cortex-M0助学开发套件有约束条件赠送申报贴
2012年度新唐Cortex-M0助学套件从4月起每月有约束条件发放16套。 申报人必须是21ic或 EDNC 会员 并具备1月的会龄。 申报时必须注明“遵守约束条件,缴纳250元订金,上...
雁塔菜农 2012-04-05 17:04
2012年度Cortex-M0助学园地推广框图
...
雁塔菜农 2012-04-01 17:59
2012年度Cortex-M0助学园地奖励计划细则
抢楼请点击:菜地公告:即日起创建《菜农Cortex-M0助学园地》(盖楼入口) 每月10号和25号的下午2:50进行2次抢楼,规则同去年12月的疯狂抢楼活动。 奖品由21IC、北航、广州迪圣...
雁塔菜农 2012-02-03 08:19
菜农谋略:搞定牛人宋俊德,对女牛人孙昌旭说:“记住,俺是雁塔菜农~~~ ”
http://www.baidu.com/s?wd=%B2%CB%C5%A9%D0%A6%CC%B8%A1%B6%D0%C2%C0%CB%C3%FB%C8%CB%D0%A7%D3%A6%A1%B7...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条