Modbus RTU通信应用

这篇具有很好参考价值的文章主要介绍了Modbus RTU通信应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、功能概述

1.1 概述

        Modbus串行通信协议是Modicon公司在1970年开发的。

        Modbus串行通信协议有Modbus ASCII和Modbus RTU两种模式,Modbus RTU协议通信效率较高,应用更加广泛。

        Modbus RTU协议是基于RS232和RS485串行通信的一种协议,数据通信采用主从方式进行传送,主站发出具有从站地址的数据报文,从站接收到报文后发送相应报文到主站进行应答。

        Modbus RTU协议网络上只能存在一个主站,主站在Modbus RTU网络上没有地址。每次从站必须有唯一的地址,从站地址为0-247,其中0为广播地址。

1.2 报文结构

        Modbus RTU协议报文结构:

Modbus RTU通信应用,通信与交互,服务器,网络,运维

        一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。(CRC校验L和CRC校验H属于错误校验码,占2个字节)

        报文举例:

从站地址码 功能码 数据地址 数据区 错误校验码
01 06 00 01 00 17 98 04

        这一串数据的作用是把数据H0017(十进制数为23)写入01号从站的地址H0001中。

1.3 功能码及数据地址 

        Modbus 设备之间的数据交换是通过功能码实现的,功能码有按位操作的,也有按字操作的。

        在S7-1200 PLC的Modbus RTU协议通信中,不同的Modbus RTU协议数据地址区对应不同的S7-1200 PLC数据区。

功能码 描述 /字操作 Modbus数据地址 S7-1200PLC数据地址区
01 读取输出位 00 001-09 999 Q0.0-Q1023.7
02 读取输入位 10 001-19 999 I0.0-I1023.7
03 读取保持寄存器 40 001-49 999 DB数据块、M位存储区
04 读取输入字 30 001-39 999 IW0-IW1022
05 写一个输出位 00 001-09 999 Q0.0-Q1023.7
06 写一个保持寄存器 40 001-49 999 DB数据块、M位存储区
15 写多个输出位 00 001-09 999 Q0.0-Q1023.7
16 写多个保持寄存器 40 001-49 999 DB数据块、M位存储区

二、指令说明 

        在“指令”窗格中依次选择“通信”→“通信处理器”→“MODBUS(RTU)”选项,出现MODBUS RTU指令列表。

Modbus RTU通信应用,通信与交互,服务器,网络,运维

         Modbus RTU指令主要包括3个指令:“Modbus_Comm_Load”(通信参数装载)指令、“Modbus_Master”(主站通信)指令和“Modbus_Slave”(从站通信)指令。

        早期版本的Modbus RTU指令( MODBUS (V2.2))仅可通过CM1241通信模块或CB1241通信板进行Modbus RTU通信。

        新版本的 Modbus RTU指令(MODBUS(RTU) V3.0)扩展了Modbus RTU的功能,该指令除了支持CM1241通信模块、CB1241通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。

Modbus RTU通信应用,通信与交互,服务器,网络,运维

2.1 Modbus_Comm_Load 指令

        该指令用于组态RS232和RS485通信模块端口的通信参数,以便进行Modbus RTU协议通信。每个Modbus RTU通信的端口,都必须执行一次“Modbus_Comm_Load”指令来组态。各引脚含义如下:

Modbus RTU通信应用,通信与交互,服务器,网络,运维

Modbus RTU通信应用,通信与交互,服务器,网络,运维Modbus RTU通信应用,通信与交互,服务器,网络,运维

         ①在进行Modbus RTU通信前,必须执行该指令组态模块端口通信,然后才能使用通信指令进行Modbus RTU通信。在启动OB中调用该指令或者在OB1中使用“FirstScan”调用执行一次。

        ②当“Modbus_Master”(主站通信)和“Modbus_Slave”(从站通信)指令被拖拽到用户程序时,将为其分配背景数据块,“Modbus_Comm_Load”指令的MB_DB参数将引用该背景数据块。

2.2 Modbus_Master 指令

        “Modbus_Master”指令可通过由“Modbus_Comm_Load”指令组态的端口作为Modbus RTU主站进行通信。

Modbus RTU通信应用,通信与交互,服务器,网络,运维

         ①同一串行通信接口只能作为Modbus RTU主站或从站。

        ②当同一串行通信接口使用多个“Modbus_Master”指令时,“Modbus_Master”指令必须使用同一个背景数据块,用户程序必须使用轮询方式执行指令。文章来源地址https://www.toymoban.com/news/detail-606375.html

到了这里,关于Modbus RTU通信应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 树莓派4B与智能插排通过RS485(modbus RTU协议)通信

    目标:使用树莓派4B与CANHAT扩展板读取智能插排测量的各项数据(RS485+modbus RTU),获取的数据上传到Hyperledger Fabric框架。 之前学习过了modbus RTU协议,在智能涡轮流量计的实验中应用过一次,这次用这个带485模块的智能插座再复习一次~ 实验材料: 树莓派4B/8G:  CANHAT扩展板:

    2024年02月01日
    浏览(74)
  • OPC通信从入门到精通_2_OPC通信详解和C#客户端编程(OPC基础概念;OPC通信仿真(KepServer作为OPC服务器;使用Modbus Slave和另外软件仿真2个PLC设备);C#程序)

    OPC诞生缘由:OPC诞生之前,软件工程师是不了解硬件和协议的 OPC解决的是软件和硬件之间的问题,让软件工程师无需了解协议及底层硬件,例如串口协议等 OPC起到了桥梁的作用:软件工程师对接OPC,OPC对接硬件 OPC是一种通讯方式,落到实处就是一个软件,就需要开发相应的

    2024年02月05日
    浏览(70)
  • EthernetIP 转MODBUS RTU协议网关连接FANUC机器人作为EthernetIP通信从站

    远创智控YC-EIPM-RTU网关产品是一款高效的数据采集工具,它可以通过各种数据接口与工业领域的仪表、PLC、计量设备等产品连接,实时采集这些设备中的运行数据、状态数据等信息。采集到的数据经过整合和运算等操作后,可以被传输到其他设备或者云平台。网关可采集设备

    2024年02月08日
    浏览(55)
  • 【云服务器】关于UDP/TCP跨平台网络通信服务器无响应的情况及解决办法

    本篇文章仅为了记录我在跨平台进行udp通信的时候遇到的问题及解决办法 进行udp网络通信的时候,我用腾讯云服务器作服务端,windows本机作客户端,在进行连接的时候,当我在客户端向服务端发送消息的时候,服务器端接收不到消息(安全组已经配置) 当执行上述命令出现

    2024年02月10日
    浏览(43)
  • LoRaWAN网关与网络服务器(NS)的通信CUPS 协议介绍

    LoRa Basics™ Station 定期查询 CUPS 服务器以获取更新。该协议是 HTTP/REST,使用Credentials中描述的客户端/服务器身份验证方法。对于每个查询,工作站都会提供有关其当前状态的信息,并接收包含其 LNS 和 CUPS 凭证更新的二进制 blob,以及具有任意更新的通用数据段。 通用数据段

    2024年02月13日
    浏览(40)
  • Linux下TCP网络服务器与客户端通信程序入门

    实现客户端连接服务器,通过终端窗口发送信息给服务器端,服务器接收到信息后对信息数据进行回传,客户端读取回传信息并返回。 服务器当前IP地址要知道 建立socket 绑定本地IP地址并设置端口号 知道服务器的IP地址和端口号 然后进行连接

    2024年02月14日
    浏览(58)
  • Socket网络编程(TCP/IP)实现服务器/客户端通信。

    一.前言 回顾之前进程间通信(无名管道,有名管道,消息队列,共享内存,信号,信号量),都是在同一主机由内核来完成的通信。 那不同主机间该怎么通信呢? 可以使用Socket编程来实现。 Socket编程可以通过网络来实现实现不同主机之间的通讯。 二.Socket编程的网络模型如

    2024年02月08日
    浏览(83)
  • Flask服务器与客户端基本通信【Unity网络编程(三)】

    这里先演示基于Python的客户端和服务器的登录实现。 1.Flask服务器端(GET和POST请求接收实现) 1.GET和POST区别:(简单理解) 1.GET因为是读取,就可以对GET请求的数据 做缓存 (浏览器)。不能随意多次执行。POST不能缓存(所以如果重新执行POST请求,浏览器会弹框提示你可能对丢

    2023年04月09日
    浏览(51)
  • Linux网络编程:Socket服务器和客户端实现双方通信

    目录 一,什么是网络编程 二,为什么使用端口号 三,TCP协议与UDP协议 ①TCP(传输控制协议) ②UDP(用户数据报协议,User Data Protocol) ③总结归纳 四,Socket服务器和客户端的开发流程 五,服务器和客户端相关API说明 ①socket()函数 ②bind()函数 ③listen()函数 ④accept()函数 ⑤客户端

    2024年02月11日
    浏览(67)
  • 【网络原理】使用Java基于UDP实现简单客户端与服务器通信

    我们用Java实现UDP数据报套接字编程,需要借用以下API来实现 网络编程, 本质上是要操作网卡. 但是网卡不方便直接操作. 在操作系统内核中, 使用了一种特殊的叫做 “socket” 这样的文件来抽象表示网卡. 因此进行网络通信, 势必需要先有一个 socket 对象. DatagramSocket 是UDP Socket,

    2024年03月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包