Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。

当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

modbus字符串的结束符

接收到一串字符,总要知道在那个地方结束吧,这就是结束符的作用,接收方不管以后还会收到多少个字符。当接收到结束符时,以后再接收的字符就算是下一轮的东西了,从起始符到结束符之间的字符就是它要分析的字符! MODBUS的ASCII方式结束符是--- Chr$(13) + Chr$(10)

现在的组合是“:02030A000004FB“+ Chr$(13) + Chr$(10)

至此,ASCII方式的发送就完成了,控制器接收到此串字符后,根据MODBUS协议定义的通讯规范分析此串字符的作用,然后返回相应的字符!

注意:发送的字符都是以十六进制数表示!

RTU方式发送时的规范定义如下:

至少3.5个字符传输时间的停顿间隔时间标定消息的开始 设备地址 + 功能代码+ 数据 + 校验 + 至少3.5个字符传输时间的停顿间隔时间标定了消息的结束

其他的就不用说了,与ASCII方式一样的作用,唯独这3.5个字符的时间搞晕了很多人,实际我也不敢太解释,大致说一下吧,您就当听着玩,比如通讯格式是9600,E,8,1 波特率是做什么的?一秒传输多少个位(比如一秒传送9600个位),一个字符是多少个位呢?通讯格式已经标定了(7个位或是8个位),那3.5个字符的传送时间就好算了吧:

3.5*11(或10)=39个位(35个位),传3.5个字符需要的时间是:39/9600=4毫秒。

不是说八位嘛,怎么乘11,记住了,还有一个起始位,奇或偶的校验位(无奇偶校验,则没有此位),停止位(两个停止位就是2了。)

如9600,N,8,2为11个位, 9600,N,7,1.为9个位

就是说,您得保证发送字符串的连续性,中间停顿时间超过4毫秒,接收方就认为您已经发送完了这组消息,开始处理了。这就是至少3.5个字符传输时间的停顿间隔时间标定了消息的结束的含义

如果您发送的太连续,下一组消息与上一组消息之间的间隔时间没超过4毫秒,接收方就认为这些字符是一组消息,按一组消息去处理。所以,您发送结束一组命令后,必须间隔4毫秒才能发送下一组命令。 这就是至少3.5个字符传输时间的停顿间隔时间标定消息的开始的含义

modbus字符串的结束符介绍的更多相关文章

  1. Python中str字符串的功能介绍

    Str字符串的功能介绍 1. 字符串的操作 字符串的连接操作 符号: + 格式:str1 + str2 例如:str1 = 'I Love' str2 = 'You!' print(str1 + st ...

  2. Levenshtein字符串距离算法介绍

    Levenshtein字符串距离算法介绍 文/开发部 Dimmacro KMP完全匹配算法和 Levenshtein相似度匹配算法是模糊查找匹配字符串中最经典的算法,配合近期技术栏目关于算法的探讨,上 ...

  3. Modbus RTU新版本指令介绍

    Modbus RTU新版本指令介绍 TIA V13 SP1版本软件中提供了2个版本的Modbus RTU指令: 图1. 两个版本Modbus RTU指令 早期版本的Modbus RTU指令(图1. 中 ...

  4. C# 高效字符串连接 StringBuilder介绍

    在介绍StringBuilder之前,必须要先了解string的特性. string在.NET中属于基本数据类型,也是基本数据类型中唯一的引用类型.字符串可以声明为常量,但它却放在了堆中. 一:不可改 ...

  5. C语言中的字符串处理库函数介绍与实现

    一.介绍 本文将主要介绍字符串处理库函数中的strlen.strcpy.strcat.strcmp.atoi等,主要由<string.h>头文件提供. 二.strlen函数:求字符串的长度 ...

  6. 字符串str功能介绍

    1.name.__contains__ 包含 name1='eric'result = name.__contains__(er)   #name是否包含er,包含返回true,不包含返回fals p ...

  7. MySQL中字符串函数详细介绍

    MySQL字符串函数对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str)返回字符串str的 最左面字符的ASCII代码值.如果str是空字符串, 返回0.如果str是NULL,返回N ...

  8. Python——str(字符串)内部功能介绍

    str内部功能详解: class str(object): """ str(object='') -> str str(bytes_or_buffer[, enco ...

  9. Python基础之字符串拼接简单介绍

    字符串拼接: %s表示可以传任意类型的值,%d表示只能传数字 test = "my name is %s,age %d" %("xyp",19) print(t ...

随机推荐

  1. Mysql 千万数据快速导入

    最近碰到个项目,需要 千万条数据入库的问题,有原本的 类 csv 文件导入, 统计了下  数据行大概有 1400W 行之多 二话不说, 建表,直接 load LOAD DATA LOCAL INFIL ...

  2. 016 Android 图片选择器(在选中和未选中的过程中,切换展示图片)

    1.目标效果 在选中和未选中的过程中,切换展示图片 2.实现方法 (1)在app--->res--->drawable 右击drawable文件夹右键,new ---->drawab ...

  3. 【转帖】【PCI-E通道是个什么东西?他是干啥的?】

    [PCI-E通道是个什么东西?他是干啥的?] https://zhuanlan.zhihu.com/p/62426408 前言: 经常接触台式机的同学肯定绕不开PCI-E这个名词,因为这是台式机里最重 ...

  4. AVR单片机教程——开发环境配置

    今天去交大密院参观了设计展,无外乎两个主题:Arduino.Python. 关于Python,我印象最深的是一位Python程序员的话:你要硬核的话,可以去那边看Java. 拜托,都9102年了,Ja ...

  5. 小贴士--java篇

    1. java:  “.”和“|”都是转义字符,必须得加"\\" 2.java :如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu = ...

  6. 最简容器动手小实践——FC坦克大战游戏容器化

    FC 经典力作相信大家一点也不陌生.童年时期最频繁的操作莫过于跳关,在 果断跳到最后一关之后,一般都是以惨败告终,所以还是一关一关的过原始积累才能笑到最后.这款游戏的经典就在于双人配合,守家吃装备.也 ...

  7. ubuntu下tftp的安装、配置、使用

    1. 安装 sudo apt-get install tftp-hpa tftpd-hpa -y 2. 配置 sudo vi /etc/default/tftpd-hpa #/etc/default/ ...

  8. Spring依赖配置详解

    <properties> <junit.version>4.12</junit.version> <spring.version>4.3.9.RELEA ...

  9. linux安装imagemagick,centos安装imagemagick方法

    1.安装文件格式支持库 yum install tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype- ...

  10. .Dot NET Cored简介

    一.诞生原因 1..Net平台封闭. 2.不支持跨平台. 3.受限于Windows平台性能,无法解决高性能场景. 二.优势 1.支持跨平台.开源.系统建设成本低. 2.效率和性能较好. 三.缺点 1. ...