SEARCH
Tastek Information
了解更多塔石的讯息
首页 / 新闻资讯 / 技术交流
News

Modbus TCP功能代码和Modbus TCP网络简介

2019-11-22

Modbus TCP/IP寻址,功能代码和Modbus TCP/IP网络简介

1.概述

MODBUS TCP / IP是MODBUS系列简单,供应商中立通信协议的变体,用于监控和控制自动化设备。具体而言,它涵盖了使用TCP / IP协议在“Intranet”或“Internet”环境中使用MODBUS消息传递。此时协议的最常见用途是将PLC,I / O模块和“网关”的以太网连接到其他简单的现场总线或I / O网络。

MODBUS TCP / IP协议作为(“事实上的”)自动化标准发布。由于MODBUS已经广为人知,因此本文件中应该没有其他地方无法获得的信息。然而,已经尝试澄清MODBUS中的哪些功能对于通用自动化设备的互操作性具有价值,以及哪些部件是替代使用MODBUS作为PLC的编程协议的“行李”。

这是通过将支持的消息类型分组为“一致性类”来完成的,这些类别区分了普遍实现的消息和可选的消息,特别是那些特定于PLC等设备的消息。

1.1面向连接

在MODBUS中,数据事务传统上是无状态的,这使得它们对噪声中断具有很强的抵抗力,并且需要在任一端维持最少的恢复信息。

另一方面,编程操作期望采用面向连接的方法。这是通过独有的“登录”令牌在更简单的变体上实现的,并且通过明确的“程序路径”功能在MODBUS Plus变体上实现,该功能维持双工关联直到明确分解。

MODBUS / TCP / IP处理这两种情况。在协议级别可以轻松识别连接,并且单个连接可以承载多个独立事务。此外,TCP / IP允许非常大量的并发连接,因此在大多数情况下,无论是根据需要重新连接还是重新使用长期连接,都可以选择启动器。

熟悉MODBUS的开发人员可能想知道为什么使用面向连接的TCP / IP协议而不是面向数据报的UDP。主要原因是通过将其封闭在可以识别,监督和取消的连接中来保持对个人“交易”的控制,而无需客户端和服务器应用程序的特定操作。这使机制对网络性能变化具有广泛的容忍度,并允许轻松添加防火墙和代理等安全功能。当万维网的原始开发人员选择在众所周知的端口80上使用TCP / IP实现最小的Web查询作为单个事务时,使用了类似的推理。

1.2数据编码

MODBUS对地址和数据项使用“big-endian”表示。这意味着当发送大于单个字节的数字量时,首先发送MOST有效字节。例如:

16位    为0x1234    将会    0×12    0x34    

32位    0x12345678L    将会    0×12    0x34    0x56储存    0x78    

1.3参考编号的解释

MODBUS将其数据模型基于一系列具有显着特征的表格。四个主要表是

输入分立    由I / O系统提供的单个位,只读    

输出分立    单个位,可由应用程序改变,可读写    

输入寄存器    由I / O系统提供的16位数量,只读    

输出寄存器    16位数量,可由应用程序改变,可读写    

输入和输出之间以及位可寻址和可单词寻址数据项之间的区别并不意味着任何应用程序行为。如果这是对目标机器的最自然的解释,那么将所有四个表格视为彼此重叠是完全可接受的,并且非常普遍。

对于每个主表,协议允许单独选择65536个数据项,并且这些项的读或写操作被设计为跨越多个连续数据项,直到数据大小限制,这取决于事务功能代码。

没有假设数据项表示真正连续的数据数组,尽管这是大多数简单PLC使用的解释

“读写通用引用”功能代码定义为携带32位参考号,可用于允许直接访问非常大的空间内的数据项。今天没有可以利用它的PLC设备。

一个潜在的混淆源是MODBUS函数中使用的参考号与Modicon PLC中使用的“寄存器号”之间的关系。由于历史原因,用户引用号表示为十进制数,起始偏移量为1.然而,MODBUS使用从零开始的无符号整数索引的更自然的软件解释。

因此,请求在偏移0处读取寄存器的MODBUS消息将返回应用程序编程人员已知的值,如寄存器4:00001中所示(存储器类型4 =输出寄存器,参考00001)

1.4隐含长度哲学

所有MODBUS请求和响应都以接收者可以验证消息是否完整的方式设计。对于请求和响应具有固定长度的功能代码,仅功能代码就足够了。对于在请求或响应中携带可变数据量的功能代码,数据部分将在字节计数之前。

当通过TCP / IP承载MODBUS时,在前缀中携带附加长度信息以允许接收者识别消息边界,即使该消息必须被分成多个分组以进行传输。显式和隐式长度规则的存在以及CRC-32错误校验码(在以太网上)的使用导致对请求或响应消息的未检测到的损坏的极小可能性。

2.一致性类摘要

从头开始定义新协议时,可以强制编号和解释的一致性。MODBUS本质上已经在很多地方实现,必须避免对现有实现的破坏。

因此,现有的一组事务类型已被分类为一致性类,其中级别0表示普遍实现且完全一致的函数,级别2表示有用的函数但具有一些特性。还识别了不适合互操作性的本组的那些功能。

必须注意的是,该标准的未来扩展可以定义附加功能代码,以处理现有事实标准不足的情况。但是,在本文件中出现此类拟议延期的细节会产生误导。始终可以通过“推测性地”发送它来确定特定目标设备是否支持特定功能代码,并检查异常响应的类型(如果有的话),这种方法将保证当前MODBUS设备的继续互操作性与引入任何此类扩展。实际上,这是导致当前功能代码分类的哲学。