发表于:2005-11-17 15:18:00
楼主
1-2通讯功能
在功能码1到6, 15和16的讯息文会指出在MODBUS上的那一个地址会被寻址到,例如功能码1 ,5及15会参考到COIL (0XXXX),功能3, 6及16参考到保留缓存器(HOLDING REGISTER) (4XXXX)。所有的参考地址都是以相对于零来做参考点,例如COIL 00127是以0126来被参考到的(0126 decimal)=007E(hex),在MODBUS的格式里所有的数字都是以十六进制的方式来表示的。
在本章中所举的例子会显示协议(PROTOCOL)与使用RTU或ASCII的模式是互相独立的,使用此软件程序的程序者可以利用以下的方法来订定他们特殊应用时所须的协议。
以下所示的例子是”读输出缓存器” 40108!~40110 (M-BUS SLAVE接口单元的地址是06),他们的信息文以RTU或ASC II MODE来表示的话,将会如下图所显示:
询问:
信息文 RTU ASC II
表头 无 引号
地址 0000 0110 0 6
功能 0000 0011 0 3
开始之缓存器:高次序 0000 0000 0 0
低次序 0110 1011 6 B
缓存器之数目:高次序 0000 0000 0 0
低次序 0000 0011 0 3
错误侦测 0111 0101 8 9
尾部 1010 0000
无 回车 跳行
共8字节 共17字节
响应:
信 息 文 RTU ASC II
表头 无 引号 ( : )
地址 0000 0110 0 6
功能 0000 0011 0 3
开始之缓存器: 0000 0110 0 6
高次序 0000 0010 0 2
低次序 0110 1011 2 B
资 料:高次序 0000 0000 0 0
低次序 0110 0011 6 3
高次序 0000 0000 0 0
低次序 0110 0011 6 3
高次序 0000 0000 0 0
低次序 0110 0011 6 3
错误侦测 回转余数法 纵式余数法
尾部 无 回车 跳行
共13字节 共27字节
1-2-1读取输出状态(功能码01)-READ OUTPUT 0XXXX STATUS
1.询问
此功能允许使用者从被寻址到的SLAVE所控制的断续性输出得到逻辑线圈(LOGIC COIL)开开/关的状态 广播模式并不支持此项功能码。每个询问的要求将可寻址到最大1024个线圈,不过,特定的SLAVE装置可能会被限制在此最大量以下。
特别注意的一点就是线圈的起始号码与实际的对应,因为线圈(COIL)是从零开始,所以第1号COIL是0,第2号COIL是1,依此类推 图1-2-1是此功能的例子,读取的是17号SLAVE上的COIL 00020到00056的状态: