发表于:2019/9/25 19:34:17
#0楼
从Modbus开始说现场总线(六)
前面介绍了Modbus和Modbus Plus,继续介绍和Modbus相关的TCP-Modbus。这三种总线的应用层协议都是Modbus,但通过不同的传输与机制和介质的升级,一直使Modbus的字样活跃在工业现场。
TCP-Modbus是运行在TCP/IP上的Modbus 报文传输协议。通过此协议,控制器相互之间通过网络(例如以太网)和其它设备之间可以通信。和Modbus的关系如下图。
熟不熟悉? 惊不惊喜?前面出现过类似的图了。
IANA(Internet Assigned Numbers Authority,互联网编号分配管理机构)给Modbus协议赋予TCP端口号为502,这在网关和防火墙设置时是必备参数。
TCP-Modbus也属于开放协议,所以市面上的网关也很便宜,可以很容易的实现不同网络的互联,尤其是和Modbus,基本上“脱了马甲”(去掉TCP包头)加上校验码就可以了。帧格式如下图。
(第一篇中已经出现过了,复习一下。)
ModbusTCP数据帧:
事务处理标识:一般每次通信之后就要加1以区别不同的通信数据报文。
协议标识符:00 00表示TCP-Modbus协议。
长度:表示接下来的数据长度,单位为字节。
单元标识符:设备地址(在很多软件设置中叫Unit ID)。
ModbusTCP通信过程如下图:
1.connect 建立TCP连接
2.准备modbus报文
3.使用send命令发送报文
4.在同一连接下等待应答
5.使用recv命令读取报文,完成一次数据交换
6.通信任务结束时,关闭TCP连接
完整的TCP-Modbus通信过程是客户机建立一个连接,向服务器发送3 个MODBUS请求,而不等待第一个请求的应答到来。在收到所有的应答后,客户机正常地关闭连接。
TCP-Modbus的优点是:用户可免费获得协议及样板程序;
网络实施价格低廉,可全部使用通用网络部件;易于集成不同的设备,几乎可以找到任何现场总线连接到Modbus-TCP的网关 ;
网络的传输能力强大,100M以太网的传输结果为:每秒4000个Modbus TCP报文,而每个报文可传输125个字(16bit),故相当于4000×125=500000个模拟量数据(8000000开关量!);
缺点呢,就和Modbus一样,传输的是寄存器的值,没有定义数据的语义,所以读来的大量数据需要一个一个和发送方核实处理,这在现代的控制系统里会带来很大的工作量,设置也都是手工设置,不是面向对象的嵌入技术,限制了其在大型系统中的使用效率。
前面介绍了Modbus和Modbus Plus,继续介绍和Modbus相关的TCP-Modbus。这三种总线的应用层协议都是Modbus,但通过不同的传输与机制和介质的升级,一直使Modbus的字样活跃在工业现场。
TCP-Modbus是运行在TCP/IP上的Modbus 报文传输协议。通过此协议,控制器相互之间通过网络(例如以太网)和其它设备之间可以通信。和Modbus的关系如下图。
熟不熟悉? 惊不惊喜?前面出现过类似的图了。
IANA(Internet Assigned Numbers Authority,互联网编号分配管理机构)给Modbus协议赋予TCP端口号为502,这在网关和防火墙设置时是必备参数。
TCP-Modbus也属于开放协议,所以市面上的网关也很便宜,可以很容易的实现不同网络的互联,尤其是和Modbus,基本上“脱了马甲”(去掉TCP包头)加上校验码就可以了。帧格式如下图。
(第一篇中已经出现过了,复习一下。)
ModbusTCP数据帧:
事务处理标识:一般每次通信之后就要加1以区别不同的通信数据报文。
协议标识符:00 00表示TCP-Modbus协议。
长度:表示接下来的数据长度,单位为字节。
单元标识符:设备地址(在很多软件设置中叫Unit ID)。
ModbusTCP通信过程如下图:
1.connect 建立TCP连接
2.准备modbus报文
3.使用send命令发送报文
4.在同一连接下等待应答
5.使用recv命令读取报文,完成一次数据交换
6.通信任务结束时,关闭TCP连接
完整的TCP-Modbus通信过程是客户机建立一个连接,向服务器发送3 个MODBUS请求,而不等待第一个请求的应答到来。在收到所有的应答后,客户机正常地关闭连接。
TCP-Modbus的优点是:用户可免费获得协议及样板程序;
网络实施价格低廉,可全部使用通用网络部件;易于集成不同的设备,几乎可以找到任何现场总线连接到Modbus-TCP的网关 ;
网络的传输能力强大,100M以太网的传输结果为:每秒4000个Modbus TCP报文,而每个报文可传输125个字(16bit),故相当于4000×125=500000个模拟量数据(8000000开关量!);
缺点呢,就和Modbus一样,传输的是寄存器的值,没有定义数据的语义,所以读来的大量数据需要一个一个和发送方核实处理,这在现代的控制系统里会带来很大的工作量,设置也都是手工设置,不是面向对象的嵌入技术,限制了其在大型系统中的使用效率。