modbus协议

Modbus

流过昼夜 提交于 2020-03-11 12:12:35
Modbus协议简介 Modbus(RTU / ASCII / TCP)是一种串行通信协议,是Modicon(莫迪康)公司于1979年,为使用可编程逻辑控制器(PLC)而发表的 Modbus协议的详细规格是公开的,只定义了通讯协议而没有规定物理层如通讯介质 Modbus是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的通讯方式 Modbus比其他通信协议使用的更广泛的主要原因有: 【1】公开发表并且无版税要求 【2】相对容易的工业网络部署 【3】对供应商来说,修改移动原生的位元或字节没有很多限制 Modbus功能码简介 代码 功能 寄存器PLC地址 位操作/字操作 操作数量 01H 读线圈状态 00001-09999 位操作 单个或多个 02H 读离散输入状态 10001-19999 位操作 单个或多个 03H 读保持寄存器 40001-49999 字操作 单个或多个 04H 读输入寄存器 30001-39999 字操作 单个或多个 05H 写单个线圈 00001-09999 位操作 单个 06H 写单个保持寄存器 40001-49999 字操作 单个 0FH 写多个线圈 00001-09999 位操作 多个 10H 写多个保持寄存器 40001-49999 字操作 多个 功能码可以分为位操作和字操作两类。位操作的最小单位为BIT,字操作的最小单位为两个字节

Jamod 实现Modbus 协议的细节

▼魔方 西西 提交于 2020-03-05 00:11:47
本文根据Jamod 的官网介绍进行修改完成的代码http://jamod.sourceforge.net/kb/serial_master_howto.html 原文是英文的,选择重要的部分进行了翻译 1. What is a Slave   In terms of the Client-Server network computing paradigm, the Slave application is a Server. It has a Listener for receiving an incoming Request from the Master application (which indeed is a Client) and sends a corresponding Response.   就客户机-服务器这种网络计算模式而言,Slave(从)应用就是服务端,他有一个监听器接受来自主应用(实际上就是一个客户端)的请求并且发送一个响应的回应。   As described in Understanding the Protocol , each cycle of Request and Response is called a Transaction.Figure 1 shows a simple graphical representation of such

C# MODBUS协议上位机程序

核能气质少年 提交于 2020-03-03 17:25:10
C#写了一款上位机监控软件,基于MODBUS_RTU协议。 软件的基本结构: 采用定时器(Timer控件)为时间片。 串口采用serialPort1_DataReceived中断接收,并进行MODBUS格式判断。 把正确接收的数据取出,转换为有特定的结构体中。 数据通过时间片实时刷新。 MODBUS协议(这里不介绍了,网上有很多的权威资料)。   串口接收问题 这里采用的是MODBUS_RTU协议,是没有回车等明显的结束符的哈。所以在C#也不可以用serialPort1.ReadLine来读取。我用的是serialPort1.BytesToRead先读缓冲区中的数据个数,再通过个数据读数据。这样在用串口软件测试的时候确实很有用,再随之问题又出现了。下位机传上来的数据长度高出8个,就会分断接收。即接收到的两次的长度,第一次是8个,然后再接收到后面的。 原因是因为软件没有接收完一整帧数据后就进行了中断。解决方法:在中断中加入线程阻塞方法,然后再读取串口中的数据。   发送读数据和发送写数据的结构 写了多个MODBUS协议的上位机后,总结了些经验,并将这部分程序封装在一个类中。 使用时只需对其接口函数调用即可,有很强的移植性。在写软件时不用再在协议这部分花太多的时间。 基本的使用方法在注释中。程序总体感觉 可能过于臃肿,希望各位大神批评指点。 以下是源代码: 1 /* 2 *

Modbus TCP的研究学习(一)

主宰稳场 提交于 2020-02-19 18:11:47
引言:项目中经常要进行设备对接,之前一直用的是OPC协议,OPC-DA不能跨平台,所以最近开始研究学习Modbus协议和OPC-UA,这次先总结下Modbus TCP的学习掌握情况,供日后参考。 工具:Modbus Poll,Modbus Slave,C#开发的Modbus客户端。 先了解一些名词: 1. 主站,从站 :Modbus​是​使用​主从关系​实现​的​请求 - 响应​协议。 在​主从关系​中,​通信​总是​成​对​发生 —— 一个​设备​必须​发起​请求,​然后​等待​响应,并且​发起​设备​(主​设备)​负责​发起​每次​交互。 通常,​主​设备​是​人​机​界面​(HMI)​或​监​控​和​数据​采集​(SCADA)​系统,​从​设备​是​传感器、​可​编​程​逻辑​控制器​(PLC)​或可​编​程​自动​化​控制器​(PAC)。 网上看到一个通俗容易帮助理解的解释: 主站就是个大帅哥,从站就是一堆的痴情女子。 帅哥可以随便读写从站,想来就来,想走就走, 痴情女子们能做的唯一的一件事就只能被动的等待帅哥的电话,接到帅哥电话了才能向帅哥倾诉一下,如果帅哥不打电话给她就只能干等着,直到地老天荒, 帅哥只能电话给这些女子,不能电话给另外一个帅哥搞基, 帅哥同一时间只能打出一个电话,问候下各位美女,这叫做 “ 轮询 ” 。 主站和从站是一对多的关系, Modbus Poll

MODBUS协议整理——功能码简述

那年仲夏 提交于 2020-02-12 05:46:28
1.Modbus简介——来自维基百科 Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。Modbus是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方式。Modbus比其他通信协议使用的更广泛的主要原因有: 【1】公开发表并且无版税要求 【2】相对容易的工业网络部署 【3】对供应商来说,修改移动原生的位元或字节没有很多限制 图1 modbus结构示意图—— 来自 2.协议整理链接 【 功能码简述 】 【 读线圈寄存器01H、读离散输入寄存器02H 】 【 读保持寄存器03H、读输入寄存器04H 】 【 写单个线圈寄存器05H、写单个保持寄存器06H 】 【 写多个线圈寄存器0FH,写多个保持寄存器10H 】 3.相关博文 【 freemodbus modbus TCP 学习笔记 】——freemodbus+uIP 【 树莓派学习笔记——实现modbus RTU从机 】——raspberry+python modbus-tk 【 EasyARM i.mx28学习笔记——通过modbus tcp控制GPIO 】——i.mx287+freemodbus modbus tcp 【 MODBUS学习笔记——modbus tk modbus TCP主机实现 】 1.MODBUS功能码简述

Modbus协议技术总结

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-27 08:23:16
1 概念 Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。 Modbus比其他通信协议使用的更广泛的主要原因有: 公开发表并且无版权要求; 易于部署和维护; 对供应商来说,修改移动本地的比特或字节没有很多限制; Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和远程终端控制系统(RTU)。 2 协议 2.1 协议介绍 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。 Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。Modbus有国际标准,也有国家标准,内容是完全一样的。在标准钟支持2种物理链路:一是基于RS485(RS232)的串行链路;二是基于以太网的TCP/IP链路。事实上,Modbus协议作为一种应用层协议对物理键子并没有特别的要求,光纤

HslCommunication组件库使用说明

╄→尐↘猪︶ㄣ 提交于 2020-01-08 08:16:54
一个由个人开发的组件库,携带了一些众多的功能,包含了数据网络通信,文件上传下载,日志组件,PLC访问类,还有一些其他的基础类库。 nuget地址: https://www.nuget.org/packages/HslCommunication/ github地址: https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持。 API文档的网址: http://api.hslcommunication.cn/ 如果打不开,请通过QQ群,联系作者。 组件官网: http://www.hslcommunication.cn 论坛(暂时已经关闭): http://bbs.hslcommunication.cn/ 创作不易,感谢打赏 联系作者及加群方式(激活码在群里发放): http://www.hslcommunication.cn/Cooperation 本库支持C#版本和java版本,java版本为阉割版,具体参照源代码,或是加群了解。 NuGet地址: https://www.nuget.org/packages/HslCommunication/ 安装本组件的NuGet指令为: Install-Package HslCommunication 也可以在Nuget管理器的界面进行图形化安装

modbus仿真工具的使用学习笔记

…衆ロ難τιáo~ 提交于 2020-01-07 16:01:15
一、基础知识点:   1、概念:    Slave: 工业自动化用语;响应请求;    Master:工业自动化用语;发送请求;    Server:IT用语;响应请求;    Client:IT用语;发送请求;    (Slave == Server Master == Client)    Modbus协议是一个master/slave架构的协议, 有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点 .  2、工业使用习惯和TCP Modbus习惯的区别:   (主要的区别是在主动请求的角度不一样,工业上是“节点少的”(master)向“节点多的”(slave)发出请求,tcp modbus是“节点多的”(client )向 “节点少的”(server)发出请求)    二、仿真工具:   modbus 常用的仿真工具有:modbus poll 和 modbus slave,其中modbus poll 作为主机使用,在设置addr 和value后 工具会按照设置的查询周期进行请求;   1、modbus poll使用:   和从机建立连接 2、查看报文的收发情况 报文查看界面    来源: https://www.cnblogs.com/woodyzhu/p/12160544.html

Modbus 协议

♀尐吖头ヾ 提交于 2019-12-16 22:38:57
转载:https://www.cnblogs.com/DreamRecorder/p/9081127.html 一、Modbus 协议简介   Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。   当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。 1、在Modbus网络上转输   标准的Modbus口是使用一RS-232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。   控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备

C#使用TCP/IP与ModBus进行通讯

僤鯓⒐⒋嵵緔 提交于 2019-12-16 18:19:20
1. ModBus的 Client/Server模型 2. 数据包格式及MBAP header (MODBUS Application Protocol header) 3. 大小端转换 4. 事务标识和缓冲清理 5. 示例代码 0. MODBUS MESSAGING ON TCP/IP IMPLEMENTATION GUIDE 下载地址: http://www.modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf 1. ModBus的 Client/Server模型 Client与Server之间有两种通讯方式:一种是TCP/IP,另一种是通过串口(Serial Port),本文重点介绍第一种通讯方式。第二种方式留了接口,暂时还没有实现。 2. 数据包格式及MBAP header (MODBUS Application Protocol header) 2.1 数据包格式 数据交换过程中,数据包的格式由三部分组成:协议头 + 功能码 + 数据(请求或接受的数据)。 这里主要用到下列两个功能码(十进制): 3: 读取寄存器中的值(Read Multiple Register) 16: 往寄存器中写值(Write Multiple Register) 2.2 MBAP header 协议头具体包括下列4个字段: