卓越信通TSC工业以太网知识百科----MODBUS TCP/IP(二) 点击:463 | 回复:3



工业交换机

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:14帖 | 24回
  • 年度积分:0
  • 历史总积分:72
  • 注册:2008年2月19日
发表于:2008-02-29 11:49:00
楼主
      本内容由 [b]卓越信通TSC工业以太网交换机[/b] 提供 
 


4. 协议结构
                               
    本部分阐述了通过MODBUS/TCP网络携带的MODBUS请求和或响应封装的一般格式。必须注意到请求和响应本体(从功能代码到数据部分的末尾)的结构和其它MODBUS变量具有完全相同的版面格式和含义,如:
                               
MODBUS 串行端口 - ASCII 编码
MODBUS 串行端口 - RTU (二进制) 编码
MODBUS PLUS 网络 – 数据通道
 
    这些其它案例仅在组帧次序,检错模式和地址描述等格式有所不同。
     所有的请求通过TCP从寄存器端口502发出。 请求通常是在给定的连接以半双工的方式发送。也就是说,当单一连接被响应所占用,就不能发送其它的请求。有些装置采用多条TCP连接来维持高的传输速率。 
     然而一些客户端设备尝试“流水线式”的请求。允许服务器以这种方式工作的技术在附录A中阐述。
MODBUS “从站地址”字段被单字节的“单元标识符”替换,从而用于通过网桥和网关等设备的通讯,这些设备用单一IP地址来支持多个独立的终接单元。 
请求和响应带有六个字节的前缀,如下:
      byte 0:     事务处理标识符 –由服务器复制 –通常为 0
      byte 1:     事务处理标识符 –由服务器复制 –通常为 0
      byte 2:     协议标识符= 0
      byte 3:     协议标识符= 0
      byte 4:     长度字段 (上半部分字节) = 0 (所有的消息长度小于256)
      byte 5:     长度字段  (下半部分字节)   = 后面字节的数量
      byte 6:     单元标识符 (原“从站地址”)
      byte 7:     MODBUS 功能代码
      byte 8 on:   所需的数据
 
因而处理示例“以4的偏移从UI 9读1寄存器”返回5的值将是
 
     请求:00  00  00  00  00  06  09  03  00  04  00  01
     响应:00  00  00  00  00  05  09  03  02  00  05
 
一致性等级0-2的功能代码的应用的例子见后续部分
                               
    熟悉MODBUS的设计师将注意到MODBUS/TCP中不需要“CRC-16”或“LRC”检查字段。而是采用TCP/IP和链路层(以太网)校验和机制来校验分组交换的准确性。
 
 
 
5. 一致性等级的协议参考值
                               
    注意到在例子中,请求和响应列在功能代码字节的前面。如前所述,在MODBUS/TCP案例中有一个依赖传输的包含7个字节的前缀。 
ref  ref  00  00  00  len  unit前面两个字节的“ref  ref”在服务器中没有具体的值,只是为方便客户端而从请求和响应中逐字的复制过来。单客户机通常将该值置为0。
                               
    在这个例子中,请求和响应的格式如下(例子是“读寄存器”请求,详述见后面部分)。
    03 00 00 00 01  =>   03 02 12 34
                               



工业交换机

  • 精华:1帖
  • 求助:0帖
  • 帖子:14帖 | 24回
  • 年度积分:0
  • 历史总积分:72
  • 注册:2008年2月19日
发表于:2008-02-29 11:50:00
1楼
6. 异常代码 
     在出问题的时候,有一系列定义过的异常代码被从站送回。注意到主站会“投机地”发送指令,利用接收到的成功或异常代码来确定支配设备的哪一个MODBUS愿意响应以及从站不同可用数据区的大小。 
    所有的异常通过添加0x80 到请求的功能代码来标记,跟随此字节的是一个单一的原因字节如下例所示: 
    03  12  34  00  01  =>  83  02 
    当索引0x1234响应异常类型2-“非法的数据地址”时请求读1寄存器
                               
    异常情况列举如下: 
    01 非法的功能 
    对从站来说,在询问过程中收到的功能代码是不允许的行为。这可能是由于功能代码只适用于新近的控制器,而不能在所选的单元使用。也可推断出从站处于错误的状态而发出这样的一种请求,例如未经配置而被要求返回寄存器值。
                               
 
 
    02 非法的数据地址 
    对从站来说,在询问过程中收到的数据地址不是允许的地址。更明确一点,参考数值和传输长度的结合是无效的。对于一个有100个寄存器的控制器来说,具有偏移96和长度4的请求将能成功,而具有偏移96和长度5的请求将产生异常02。
                               
    03 非法的数据值 
    对从站来说,在询问数据区段所包含的值是不允许的。这推断出在复杂请求余额的结构中的一个错误,例如隐含长度是不正确的。既然MODBUS协议不了解一些 特殊寄存器的特殊值的意义,因此这并不意味着寄存器中被提交用于存储的数据对象有一个应用程序期望值之外的值,
                               
    04非法的响应长度 
    指出加外框的请求将产生一个尺寸超出可用MODBUS数据尺寸的响应。仅用于由功能所产生的多部分响应,如功能20和21。 
05 确认 
       专用于关联程序设计指令。 
06 从站设备忙 
专用于关联程序设计指令。
07 否认
专用于关联程序设计指令。
08 存储器奇偶校验错误
专用于关联功能代码20和21,指出扩展文件区没通过一致性检验。
0A 网关通路不可用
专用于关联Modbus Plus 网关, 指出网关未能分配Modbus Plus路径以处理请求。通常意味着网关配置错误。
0B 网关目标设备响应失败
专用于关联Modbus Plus网关,指出从目标设备未能获得响应。通常意味着设备没有连接到网络上。

学习工业以太网

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 14回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2008年3月03日
发表于:2008-03-04 10:16:00
2楼
不错,学习中

学习工业以太网

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 14回
  • 年度积分:0
  • 历史总积分:14
  • 注册:2008年3月03日
发表于:2008-03-04 10:16:00
3楼

热门招聘