C#与西门子PLC1500的ModbusTcp服务器通信2--ModbusTcp协议

钜形不锈钢水箱  金牌会员 | 2024-6-21 20:50:53 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 895|帖子 895|积分 2685

Modbus TCP是近年来越来越流行的工业控制体系通信协议之一,与其他通信协议相比,Modbus TCP通信速率快、可靠性高、兼容性强、实用于模拟或数字量信号的传输,阅读本文前你必须比较熟悉Modbus协议,了解tcp网络。
一、什么是Modbus TCP?

Modbus TCP是一种以太网协议,它将Modbus通信协议封装在TCP/IP包内举行数据传输。它通常用于工业控制体系中,比如PLC,传感器等设备之间的数据通信。Modbus协议中,数据是通过寄存器集合的方式举行通信的。这些寄存器可以是输入寄存器、输出寄存器、保持寄存器和线圈寄存器,它们各自用于不同的功能,通信时涉及到两个角色:服务器和客户端,通常情况下是客户端主动连接服务器。
二、Modbus TCP服务器和客户端

1. Modbus TCP服务器

Modbus TCP服务器是一个在网络中等待连接的设备,它侦听端口502,等待客户端连接,并提供Modbus协议服务。服务器可以实现读取和写入数据,服务器提供的几个重要的函数码,也就是功能码:
1)读输入寄存器:该功能码用于读取被称为输入寄存器的Modbus寄存器。
2)读保持寄存器:该功能码用于读取保持寄存器的值。
3)写单个保持寄存器:该功能码用于写入单个保持寄存器的值。
4)写多个保持寄存器:该功能码用于写入多个保持寄存器的值。
常见的Modbus TCP服务器设备包括PLC(可编程逻辑控制器)、Raspberry Pi和树莓派等。假设我们有一个PLC设备作为Modbus TCP服务器,它有一个输入寄存器和一个保持寄存器,我们可以使用Modbus TCP协议来读取和写入这些寄存器,本项目是将西门子PLC1500作为服务器
2. Modbus TCP客户端

Modbus TCP客户端是一个主动连接到Modbus TCP服务器的设备,并提供只读或读写服务。一旦创建了连接,客户端可以向服务器发送数据哀求,读取或写入Modbus寄存器的值,客户端提供的几个重要的函数码:
1)读输入寄存器:该功能码用于读取输入寄存器的值。
2)读保持寄存器:该功能码用于读取保持寄存器的值。
3)写单个保持寄存器:该功能码用于向服务器写入单个保持寄存器的值。
4)写多个保持寄存器:该功能码用于向服务器写入多个保持寄存器的值。 
常见的Modbus TCP客户端可以是PLC设备,C#Winform程序,JAVA程序,Python程序,工具软件等都可以,本项目是C#Winform程序
对于Modbus TCP客户端来说,自己并不会产生数据,它的数据均是从服务器获取,为了得到数据就必须向服务器发起数据哀求。在Modbus TCP协议中,服务器一样平常也不会主动向外发送数据,服务器需要根据客户端的数据哀求来决定是否发送数据、发送哪些数据。这一过程如下图所示:

 上图我们不难看出,首先客户端要主动发起数据哀求,客户端发起的数据哀求需要告诉服务器它哀求的数据有哪些。服务器收到这个数据哀求后,服务器解析客户端的哀求并按照客户端的哀求返回数据。客户端收到数据响应后解析数据,如许就完成了客户端与服务器之间的一次数据通讯。
在Modbus TCP协议栈中实现了0x01、0x02、0x03、0x04、0x05、0x06、0x0F以及0x10等功能码。

 三、TCP服务器端和客户端

1. TCP服务器

TCP服务器是一个等待客户端连接的程序或设备。一旦客户端连接,它就会创建一个新的套接字socket,用于维护与客户端的通信连接。通常情况下,服务器会侦听一个固定的IP地址和端口号。
TCP服务器提供的几个重要函数:
1)侦听(listen):该函数用于监听网络上的端口,以等待客户端的连接哀求,该侦听是无限循环的,除非人为关闭或异常终止。
2)接收(accept):该函数用于担当客户端连接的哀求,接收到的数据全部放在缓冲区中,数据都是字节数组的情势,当接收到数据后需要转换成ascii或utf-8的格式。
3)发送(send):该函数用于将数据发送到客户端,发送数据也必须是以字节数组byte[]情势发送,可以是ascii编码,UTF-8编码。
2. TCP客户端

TCP客户端是一个主动创建连接并发送数据哀求的设备或程序。客户端通常用于向服务器发送哀求以读取或写入数据。客户端可以与多个服务器创建连接,并且可以使用不同的端口号
TCP客户端提供的几个重要函数:
1)创建套接字(socket):该函数用于创建一个新的套接字,以供客户端使用。
2)连接(connect):该函数用于连接到一个服务器。
3)发送(send):该函数用于将数据发送到服务器。
4)接收(recv):该函数用于从服务器接收数据
四、两者比较

总体来说,Modbus TCP服务器和客户端以及TCP客户端和服务器端的工作原理根本类似,都需要使用Socket套接字来举行通信。不同的是Modbus TCP协议提供了更加专业的Modbus数据的读取和写入协议,便于在工业控制体系中数据的传输。从这可以看出,Modbustcp通信是创建在tcp通信的底子上实现modbus协议的传输,所以传统的tcp通信是底子。
1.协议结构

Modbus TCP是基于Modbus协议的扩展,它采用了TCP/IP协议举行通信。
Modbus协议是一种串行通信协议,而Modbus TCP是一种基于TCP/IP协议的应用层协议。它的协议结构简单明白,包括了应用层、传输层和网络层。
而TCP/IP协议则是一种四层协议结构,包括了应用层、传输层、网络层和数据链路层。
2.通信速率

Modbus TCP通信速率相对较慢,主要是因为它使用了较长的帧结构和数据格式,需要举行较多的数据解析和处置惩罚。
而TCP/IP协议则具有更高的通信速率,主要是因为它的数据传输格式更加简洁明白,可以快速举行数据互换和传输。
3.网络拓扑

Modbus TCP采用基于以太网的星型网络拓扑结构,可以支持多个设备同时举行通信。
而TCP/IP协议则支持多种网络拓扑结构,包括星型、环形、树状等多种结构,更加灵活和可扩展。
4.数据传输方式

Modbus TCP通信采用的是半双工模式,即同一时间只能举行一方的数据传输。
而TCP/IP协议则采用全双工模式,即两边可以同时举行数据传输和接收,进步了通佩服从。
5.应用场景

Modbus TCP协议主要应用于工业自动化控制体系和机器设备等领域,支持广泛的设备和体系集成。
而TCP/IP协议则广泛应用于互联网、局域网和广域网等领域,支持各种范例的数据传输和通信需求。
五、小结

modbus tcp协议

Modbus TCP是一种基于TCP/IP协议的应用层协议,它是Modbus协议的扩展。Modbus协议是一种串行通信协议,最初是由Modicon公司在1979年开辟的,用于工业自动化控制体系中设备之间的通信。Modbus TCP则是将Modbus协议转换为基于以太网的TCP/IP协议,以支持更广泛的设备和体系集成。Modbus TCP协议使用TCP/IP协议栈的传输层和网络层,以实现设备之间的数据通信。
Modbus TCP协议具有简单、可靠和广泛应用等长处。它不但可以支持设备之间的通信,还可以通过互联网举行远程访问和控制。Modbus TCP协议具有广泛的应用场景,包括工业自动化控制体系、能源管理、情况监测、楼宇自控等领域。同时,Modbus TCP协议也是一种开放的协议,可以方便地与其他通信协议举行集成。
tcp/ip协议是什么

TCP/IP协议是互联网上最常用的协议之一,它是Internet协议族的焦点协议。TCP/IP协议是由美国国防部高级研究操持署(ARPA)在20世纪70年代初期开辟的一套互联网通信协议,旨在为全球的盘算机网络提供标准化的通信协议。TCP/IP协议提供了一种可靠、灵活、通用的数据传输方式,使得互联网上不同的盘算机和网络之间可以互相通信和互换信息。
TCP/IP协议由两个主要部分组成:传输控制协议(TCP)和Internet协议(IP)。其中,IP协议主要负责数据包在网络中的传输,包括数据包的路由、分片、拼装等功能。TCP协议则是创建在IP协议之上的传输层协议,主要负责在通信的两端创建可靠的连接,并对数据举行分段、组装、查验等操纵。TCP/IP协议还包括许多其他的协议,如用户数据报协议(UDP)、网络时间协议(NTP)、域名体系协议(DNS)等。
TCP/IP协议是一个开放的标准协议,它具有广泛的应用场景,包括互联网、局域网、广域网等各种网络情况。TCP/IP协议提供了一种通用的通信标准,使得不同范例的盘算机和设备可以互相通信和互换信息。同时,TCP/IP协议也是一种可扩展的协议,可以方便地与其他通信协议举行集成,从而实现更加复杂的通信和数据处置惩罚功能。

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表