热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

js实现modbus_Modbus协议概念最详细介绍

一文认识Modbus协议;1什么是Modbus?2主从模式3协议的分类3.1ModbusASCII3.2ModbusRTU3.3ModbusTCP3.4

一文认识Modbus协议;

  • 1 什么是Modbus?

  • 2 主从模式

  • 3 协议的分类

    • 3.1 Modbus ASCII

    • 3.2 Modbus RTU

    • 3.3 Modbus TCP

    • 3.4 Modbus Plus

  • 4 libmodbus

  • 5 freemodbus

  • 6 总结

1 什么是Modbus?

ModbusModicon(施耐德)公司于1979年开发的串行通信协议。它最初设计用于公司的可编程逻辑控制器(PLC)。Modbus是一种开放式协议,支持使用RS232/RS485/RS422协议的串行设备,同时还支持调制解调器。它的简单性以及制造商可以免费将其纳入其产品的事实使其成为连接工业电子设备的最流行的方法。Modbus比其他通信协议使用的更广泛的主要原因有以下几点:

  • 公开发表并且无著作权要求;
  • 易于部署和维护;
  • 对供应商来说,修改移动本地的比特或字节没有很多限制;

Modbus通过设备之间的串行线进行数据传输。最简单的设置是使用一根串行电缆连接两个设备(主设备和从设备)上的串行端口。数据以称为比特10的序列发送。每个位都作为电压发送。0被发送为正电压,1被发送为负电压。如下图所示;

4ce3c274b22e34e9fa0a99e882c092cd.png
在这里插入图片描述

2 主从模式

Modbus解决了通过串行线路在电子设备之间发送信息的问题。该协议在遵循该协议的体系结构中实现主/从模型。Modbus主站(Master)负责从其他设备(Slave)请求信息。标准Modbus网络中有一个Modbus主站。具体如下图所示;

4bbd4734b2236eed0404c24158e54036.png

主设备向从设备请求信息,最多大约可达到240个 . 每个从设备都有自己唯一的从设备地址标识(Slave Address)。除了从从设备请求信息之外,主设备还可以写入从设备的内部寄存器

3 协议的分类

Modbus的应用十分广泛,特别是在工业控制领域,具体如下图所示;

3f0a40a7ba868e6f5738d31170106efe.png

我们可以看到最常用Modbus协议总共有以下四种:Modbus ASCII, Modbus RTU, Modbus Plus,Modbus TCP;

具体如下图所示;b115d456349b33c112a956e683e75d8f.png

3.1 Modbus ASCII

当设备设置为使用ASCII(美国信息交换标准代码)模式在MODBUS串行线上进行通信时,消息中的每个8位字节将作为两个ASCII 4位字符发送。当物理通信链路或设备的功能不允许符合RTU计时器管理要求时,使用此模式。所以此模式的效率不如RTU,因为每个字节需要两个字符。示例:字节0x7D编码为两个字符:0x350x42(在ASCII表中为0x37 ='7',而0x44 ='D')。

3.2 Modbus RTU

Modbus RTU是一种紧凑的,采用二进制表示数据的方式;因为使用二进制编码和CRC错误检查的结合使得Modbus RTU适用于工业应用,因为它比ASCII字符的替代方案更有效地传输。在Modbus RTU与ASCII之间进行选择时,如果考虑性能,则RTU是首选。

3.3 Modbus TCP

Modbus TCP 是在TCP/IP网络上运行的Modbus的实现,旨在允许Modbus ASCII / RTU协议在基于TCP / IP的网络上传输。Modbus / TCP将Modbus消息嵌入TCP / IP帧内。尽管实现起来非常简单,但是与网络相关的特性增加了一些挑战。例如,由于Modbus主机期望并要求在一定时间范围内对其轮询做出响应,因此必须考虑TCP / IP网络的不确定性(和其他方面)。Modbus ASCII和Modbus TCP之间的主要区别在于,Modbus ASCII所需的LRC错误检查由IP层执行。

对于以上TCP/RTU/ASCII的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

3.4 Modbus Plus

Modbus有一个扩展版本Modbus Plus(Modbus+或者MB+),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离设备,是一种采用转换/边缘触发而不是电压/水平触发的设备。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。[^1]

4 libmodbus

libmodbus是一个多平台的modbus开源库,适用于Linux,Mac OS X,FreeBSD,QNX和Win32等操作系统;可以根据Modbus协议发送和接收数据。支持RTU(串行)和TCP(以太网)通信。官网:libmodbus.orgGithub:github.com/stephane/libmodbus/

5 freemodbus

FreeModbus是嵌入式系统的Modbus ASCII / RTU和Modbus TCP实现。它提供了Modbus应用协议v1.1a的实现,   并支持Modbus over Serial Line Specification 1.0中定义的RTU / ASCII传输模式  。从版本0.7开始,FreeModbus也支持Modbus / TCP。0.9版为使用lwIP  TCP / IP堆栈的嵌入式系统添加了第一个Modbus / TCP端口  。官网:https://www.embedded-experts.atGithub:https://github.com/cwalter-at/freemodbus

FreeModbus是一款开源的Modbus协议栈,但是只有从机开源,主机源码是需要收费的。同时网上也没有发现比较好的开源的Modbus主机协议栈,所以才开发这款支持主机模式的FreeModbus协议栈。本版FreeModbus版本号更改为V1.6,特性如下:

  • 新增加的主机源码与原有从机的风格及接口保持一致;
  • 支持主机与从机在同一协议栈运行;
  • 支持实时操作系统及裸机移植;
  • 为应用提供多种请求模式,用户可以选择阻塞还是非阻塞模式,自定义超时时间等,方便应用层灵活调用;
  • 支持所有常用的Modbus方法。

Github:https://github.com/armink/FreeModbus_Slave-Master-RTT-STM32

6 总结

本文简单介绍了modbus协议,以及modbus的种类以及相互之间的区别,目前没有深入到各个协议的细节,只做了一个概览。笔者能力和水平有限,文中难免存在错误和纰漏,请大佬不吝赐教。

往期推荐

1、39张传感器工作原理GIF图汇总

2、智能手持测温枪开发实践

3、JMeter压测MQTT服务性能实战

4、IoT物联网平台日志服务详解

5、自建MQTT集群迁移阿里云IoT实践

6、工业Modbus电力104规约接入IoT平台

7、设备免烧录三元组,即时注册解决方案

8、IoT+TSDB+Quick BI 搭建楼宇环境监控

9、JS全栈开发,构建智能家居小程序

7d19a34a000ca8ea701466a0735dce5a.gif




推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 在2022年,随着信息化时代的发展,手机市场上出现了越来越多的机型选择。如何挑选一部适合自己的手机成为了许多人的困扰。本文提供了一些配置及性价比较高的手机推荐,并总结了选择手机时需要考虑的因素,如性能、屏幕素质、拍照水平、充电续航、颜值质感等。不同人的需求不同,因此在预算范围内找到适合自己的手机才是最重要的。通过本文的指南和技巧,希望能够帮助读者节省选购手机的时间。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 本文讲述了CodeForces1016C题目的解法。文章首先介绍了一种错误的理解,然后给出了正确的解法。其中,当位于一个角上时,有两种选择,一种是先一直走一行再返回来走,另一种是走到这一列的另一行上然后再往右走一列。作者给出了两种解法,一种是直接计算,一种是动态规划。最后,取两种解法的最优解作为答案。文章附上了源代码。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
author-avatar
用户89e44snpn5
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有