基于LabVIEW的Modbus协议两种校验码的实现方法
介绍基于LabVIEW的Modbus协议两种校验码的实现方法,该方法可在基于PC机的测控系统中加以实际运用。
关键词:Modbus协议;LabVIEW;CRC校验;LRC校验
下面仅讨论与本文有关的Modbus协议的内容。
1.1Modbus协议的数据传输方式
Modbus协议定义了两种数据传输方式,即ASCII模式和RTU模式(表1、表2)。控制器可以设置为两种传输方式(ASCII或RTU)中的任何一种,在标准的Modbus网络中进行通信。用户可选择想要的模式,包括串口通信参数(波特率、检验方式等);在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。
1.1Modbus协议的数据传输方式
Modbus协议定义了两种数据传输方式,即ASCII模式和RTU模式(表1、表2)。控制器可以设置为两种传输方式(ASCII或RTU)中的任何一种,在标准的Modbus网络中进行通信。用户可选择想要的模式,包括串口通信参数(波特率、检验方式等);在配置每个控制器的时候,在一个Modbus网络上的所有设备都必须选择相同的传输模式和串口参数。
?
1.2.1ASCII帧
使用ASCII模式,消息以冒号(:)字符(ASCII码3AH)开始,以回车换行符结束(ASCII码0DH,0AH)。
其他域可以使用的传输字符是十六进制的0…9,A…F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己。
消息中字符间发送的时间间隔最长不能超过1s,否则接收的设备将认为传输错误。一个典型消息帧如表3所示。
使用ASCII模式,消息以冒号(:)字符(ASCII码3AH)开始,以回车换行符结束(ASCII码0DH,0AH)。
其他域可以使用的传输字符是十六进制的0…9,A…F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己。
消息中字符间发送的时间间隔最长不能超过1s,否则接收的设备将认为传输错误。一个典型消息帧如表3所示。
?
?
选用ASCII模式作字符帧,错误检测域包含两个ASCII字符。这是使用LRC(纵向冗余检测)方法对消息内容计算得出的,不包括开始的冒号符及回车换行符。LRC字符附加在回车换行符前面。?
1.3.2RTU模式
选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗余检测得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC高字节是发送消息的最后一个字节。
1.4Modbus的数据校验方式
1.4.1CRC-16(循环冗余错误校验)
冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。
在进行CRC码计算时只用8位数据位。起始位、停止位、奇偶校验位都不参与CRC码计算。
计算CRC码的步骤为:
① 预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器。
② 把第一个8位数据与16位CRC寄存器的低位相异或运算,把结果放于CRC寄存器。
③ 把寄存器的内容右移一位,用0填补最高位,检查最低位。
④ 如果最低位为0:重复第3步,再次右移一位;如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或运算。
⑤ 重复步骤③和④,直到右移8次,这样整个8位数据全部进行了处理。
⑥ 重复步骤②到⑤,进行下个8位数据的处理。
⑦ 最后得到的CRC寄存器的值即为CRC码。
⑧ 将CRC码分成高8位和低8位,按低位在先,高位在后,将它们加到传送数据之后。
1.4.2LRC(纵向冗余错误校验)
LRC错误校验用于ASCII模式。这个错误校验码是一个8位二进制数,可作为2个ASCII十六进制字节传送。计算LRC码时,仅设备地址、功能代码、数据块字节参加运算,而冒号(:)、回车符号(CR)、换行字符(LF)不参加运算。具体计算LRC码的步骤为:
① 需运算的所有字节相加,所得之和丢弃进位。
② 将上步计算出的8位字节取反或由FFH减去该8位字节。
③ 将取反后的值加1即为LRC码。
接收端判断接收到的信息是否正确的简单方法是:将除冒号(:)、回车符号(CR)、换行字符(LF)以外的所有字节,包括LRC码相加并丢弃进位,若结果为0,则表明信息传送正确,否则出错。?
1.3.2RTU模式
选用RTU模式作字符帧,错误检测域包含一16Bits值(用两个8位的字符来实现)。错误检测域的内容是通过对消息内容进行循环冗余检测得出的。CRC域附加在消息的最后,添加时先是低字节然后是高字节。故CRC高字节是发送消息的最后一个字节。
1.4Modbus的数据校验方式
1.4.1CRC-16(循环冗余错误校验)
冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。
在进行CRC码计算时只用8位数据位。起始位、停止位、奇偶校验位都不参与CRC码计算。
计算CRC码的步骤为:
① 预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器。
② 把第一个8位数据与16位CRC寄存器的低位相异或运算,把结果放于CRC寄存器。
③ 把寄存器的内容右移一位,用0填补最高位,检查最低位。
④ 如果最低位为0:重复第3步,再次右移一位;如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或运算。
⑤ 重复步骤③和④,直到右移8次,这样整个8位数据全部进行了处理。
⑥ 重复步骤②到⑤,进行下个8位数据的处理。
⑦ 最后得到的CRC寄存器的值即为CRC码。
⑧ 将CRC码分成高8位和低8位,按低位在先,高位在后,将它们加到传送数据之后。
1.4.2LRC(纵向冗余错误校验)
LRC错误校验用于ASCII模式。这个错误校验码是一个8位二进制数,可作为2个ASCII十六进制字节传送。计算LRC码时,仅设备地址、功能代码、数据块字节参加运算,而冒号(:)、回车符号(CR)、换行字符(LF)不参加运算。具体计算LRC码的步骤为:
① 需运算的所有字节相加,所得之和丢弃进位。
② 将上步计算出的8位字节取反或由FFH减去该8位字节。
③ 将取反后的值加1即为LRC码。
接收端判断接收到的信息是否正确的简单方法是:将除冒号(:)、回车符号(CR)、换行字符(LF)以外的所有字节,包括LRC码相加并丢弃进位,若结果为0,则表明信息传送正确,否则出错。?
遵照1.4.1节中计算CRC码的步骤进行软件设计如图1所示。
相关推荐
LabVIEW实现modbus CRC校验码生成
最近在用LabVIEW编写一个上位机界面,要求要用modbus通讯协议与下位机进行通信,现在根据材料编写了一个crc校验的子vi,试过能用了,有需要的可以直接下载去用。
2015-04-22 09:39:10
LabVIEW编程LabVIEW开发Modbus协议讲解
LabVIEW编程LabVIEW开发Modbus协议讲解Modbus是一种工业协议,于1979年开发,旨在实现自动化设备之间的通信。 Modbus最初是作为通过串行层传输数据的应用级协议实现的,现已
2022-01-25 20:23:07
MODBUS-RTU CR16校验码自动计算.VI。可自动添加至字符串末尾。
自动添加上校验码。MODBUS协议是通用的定制串口协议,能兼容国际上很多标准设备,用处还是很大滴~~~ps:串口数据记得用“字节数组至字符串”函数生成哦~
2014-07-15 18:51:43
MODBUS协议和RS485硬件电路两者之间的联系
文章目录前言一、RS4851.介绍2.两者之间的联系二、通信格式1.MODBUS协议2.通信代码总结前言Modbus 是属于工业上常用的通讯协议,包括RTU、ASCII、TCP,其中
2021-11-30 07:41:24
ModBus CRC16校验码学习笔记(附手稿)精选资料分享
ModBus CRC16校验码学习笔记(附手稿)学习背景最近在玩轮毂电机的驱动控制,该电机配套的驱动器可以使用485或者CAN总线协议。该电机的485通信协议的报文中最后两个字节按照某宝卖家
2021-08-30 06:28:27
Modbus库开发笔记之十一:关于Modbus协议栈开发的说明
:Modbus协议在串行链路上的实现指南》GB/T 19582.3-2008 《基于Modbus协议的工业自动化网络规范 第1部分:Modbus协议在TCP/IP上的实现指南》最后,欢迎大家使用这个协议栈,但我
2017-08-27 20:32:49
Modbus通讯协议的几种实现方式
Modbus通讯的方式
针对Modbus的串口和TCP两种不同的方式,在LabVIEW中通常可以通过以下几种方法实现Modbus通讯。其中一些实现方式需要安装LabVIEW 数据记录与监控(DSC
2023-05-05 16:19:56
Modbus协议Modbus M16程序及Modbus协议文档几篇
,在帧收完了计算有点浪费且不好控制。Modbus协议英文Modbus协议中文Modbus协议介绍含流程图,上面crc16程序中高低位反了,有点问题
2011-11-11 10:12:37
Modbus协议中文版
MODBUS标准分为三部分。第一部分(“Modbus协议规范”)描述了MODBUS 事物处理。第二部分(“MODBUS报文传输在TCP/IP上的实现指南”)提供了一个有助于开发者实现TCP/IP 上
2018-07-09 07:16:07
Modbus协议中文版(总共127页pdf下载)
MODBUS标准分为三部分。第一部分(“Modbus协议规范”)描述了MODBUS 事物处理。第二部分(“MODBUS报文传输在TCP/IP上的实现指南”)提供了一个有助于开发者实现TCP/IP 上
2018-07-03 01:10:00
Modbus协议的理解
校验码(8位),校验码的范围为由地址码开始到数据区结束,不包含起始码。
停止码:数据格式的帧尾,用 “CR”(0DH),“LF”(0AH)表示(8位)
控制器在MODBUS网络上以ASCII码
2023-05-05 16:47:03
Modbus协议的相关资料推荐
一、基本概念Modbus协议是全球最早用于工业现场的总线规约,许多工业设备,包括PLC,DCS,智能仪表等都在使用此协议作为他们之间的通信标准。Modbus协议是一个请求/应答协议,发起请求的为
2021-11-29 06:58:41
Modbus协议相关资料推荐
,自带原生接口和采集引擎 (gitee.com)目录前言驱动目的适用范围使用示例驱动代码驱动解析前言Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络例如以太网)和其它设备之间可以通信。它已经成为一...
2021-11-16 06:50:44
Modbus协议说明及VC代码
来说,其中TCP和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus
2017-08-03 15:14:37
labview Modbus协议,将4个字节转换为浮点;IEEE754;
的支持,自动CRC校验,可以很方便的实现Modbus通信,支持串口和TCP两种传输方式。如1图所示。图1 Modbus Master 选板如果是简单的Modbus通信,没有必要使用DSC工具。NI公司
2015-11-27 17:13:25
labview 与s7-200 串口通信 modbus协议
,PLC串口通信接线图如下4. 使用串口调试助手,发送功能码,实现通过modbus协议与PLC通信.例如 发送帧 01 05 00 00 FF 00 8C 3A.功能说明 置位 Q0.0.发送帧 01
2016-04-14 15:15:34
labview 中MODBUS校验码计算方法字符串
字符串互联后通过MODBUS校验码校验程序,发出的数据不正确,但是我把需要校验的数据直接填在MODBUS校验码校验程序内部,数据是正确的,原因在哪呢?
2020-05-20 19:16:14
labview与rs485通信的modbus协议
labview与rs485通信的modbus协议编程怎么用,知道有mdbus模块,但是网上例程少而且特别简单所以,想看看大家是怎么利用这个modbus协议的
2017-05-18 08:54:45
modbus三种通讯方式的字符介绍
Modbus协议分为三种通信方式:Modbus RTU、Modbus ASCII以及Modbus TCP。首先,Modbus TCP的通信格式和Modbus RTU非常相似,唯一的差别
2019-04-27 06:00:00
modbus协议笔记
1 Modbus协议概要 Modbus通信协议由Modicon公司(现在的施耐德电气Schneider Electric)于1979年为可编程逻辑控制(即PLC)通信而发表。目前,Modbus
2021-07-02 07:17:37
校验码码距是如何去定义的
嵌入式系统设计师学习笔记⑨:校验码码距的定义:一个编码系统的码距就是整个编码系统中任意(所有)两个码字(合法编码)的最小距离。例如:要对A,B两个字母进行编码若用1位长度的二进制编码,若A=1,B
2021-12-22 07:21:56
PIC单片机与触摸屏串行通信的MODBUS协议实现
介绍一种在PIC单片机与触摸屏之间采用MODBUS协议实现异步串行通信的方法.简单介绍了MODBUS通信协议,给出了硬件电路连接图程序流程图以及用PIC单片机C语言编写的部分通信程序.实际使用证明该方法数据传输稳定可靠并提供了良好的人机交互环境.
2011-03-07 12:52:57
RS485和Modbus通信协议让工业自动化更高效
00 00 00 01是Modbus RTU协议的通信格式,后面两位C4和0B即为CRC校验码。
接收端接收到的数据包:01 03 02 00 01 39 3E
该数据包中,前6位01 03
2023-05-05 16:25:31
RT-Thread freemodbus协议的移植实现
。modbus功能码:0x10使用modbus slave,模拟modbus从机运行:mb_master_samlpefreemodbus主机,功能验证正常。使用现有的modbus协议,熟悉modbus协议的实现、移植。熟悉基于uart的 freemodbus主机的移植。原作者:张世争
2022-04-29 14:40:29
dfplayer mini播放模块校验码怎么计算
产品说明如下:链接根据官方说明,可以用串口发送命令来控制模块的工作,串口指令需要两位的校验码,琢磨好久,都算不对,后来发现是文档标识错误。按图片所写,即可算出校验码。
2022-01-07 07:16:34
【原创】白话文讲解ModBus协议
串行传输还有两种模式,RTU模式和ASCII模式。我们先来了解一下RTU模式:对于报文格式就是上面这样的,子节点收到信息先解析是否是自己节点,然后对校验做出比对处理。然后就是上层的功能码和数据的处理
2021-08-03 11:04:20
一文读懂Modbus协议
1、Modbus是什么? Modbus协议,从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,和I2C、SPI类似,总线就意味着有主机,有从机,这些设备在同一条总线
2022-10-28 14:23:43
什么是Modbus协议?如何写稳定的Modbus代码?
什么是Modbus协议?Modbus协议有哪些分类?使用Modbus时有哪些注意事项?如何写稳定的Modbus代码?
2021-07-02 06:54:34
台达PLC通信支持modbus协议的4号功能码吗?
使用modbus协议的4号功能码采集PH值,系统部署如下图:本来这是个很简单的项目,可是在PLC的通讯编程中出现了问题,DW-MC1无线监控器采样modbus协议的4号功能码(读输入寄存器)来采集远程的4~20mA信号
2014-05-22 11:18:03
哪位大神能给个labview利用modbus协议进行串口通讯的例程啊?
本帖最后由 tianbowen1234 于 2016-6-13 15:13 编辑
我现在要实现的,仅仅是通过RS232串口利用modbus协议传输数据,不是控制PLC。 之前无论是从论坛还是
2016-06-13 15:10:50
基于modbus协议的空间分布式温湿度测控系统设计
讨论通过基于Modbus协议的485网络来实现温湿度的采集与控制的具体方法。文章根据项目中的具体操作,给出了系统硬件、嵌入式软件、PC机软件等各个环节的具体实现方法,以便于设计者在开发应用中作为
2018-11-14 15:04:04
实用资料——CRC校验码生成算法
按上述步骤计算完成后,最后得到的CRC寄存器的内容即为CRC校验码,将其附着在原通讯信息帧后进行传输即可。如果用于Modbus协议设备则还需交换高低8位,非Modbus协议设备可以不必交换。接收方依
2012-01-11 21:10:42
实用资料——CRC校验码生成算法
按上述步骤计算完成后,最后得到的CRC寄存器的内容即为CRC校验码,将其附着在原通讯信息帧后进行传输即可。如果用于Modbus协议设备则还需交换高低8位,非Modbus协议设备可以不必交换。接收方依
2012-02-14 19:45:06
怎么看这款单片机的校验码是多少呢
很久以前写的程序,由于程序有很多版本,所以想看一下最终版的程序校验码来确定最终的程序。请问如何用烧录器来看校验码呢我开始是直接用CSWrite来read chip看看单片机的校验码但是最后发现每一个的校验码都是FFFF,就很奇怪,想问一下怎么看校验码
2020-07-01 16:16:01
浅析ModBus通信协议的相关知识
端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验
2023-05-05 15:51:17
利用Modbus 协议实现无线通信
本文介绍了Modbus 的控制网络及协议特点,着重分析Modbus ACSII 模式的消息帧组成、校验码的计算及主要的功能。并对利用Modbus 协议实现远程无线通信的有关要点作了说明。
2009-06-11 09:42:5411
电话网远程通信中CRC校验码的设计及实现
本文介绍了基于电话网远距离分布式测控系统的通信方法,重点介绍了传输协议中CRC 循环校验码校验原理,CRC 码的生成、检测方法及其在Dephi 环境中的实现,并给出了实例。
2009-08-12 10:24:2118
奇偶校验码,奇偶校验码原理是什么?
奇偶校验码,奇偶校验码原理是什么?
奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它是由n-1位信息元和1位校验元组成,可
2010-03-17 17:39:1261481
一种MODBUS协议实现方法
针对无损探伤试验仪中变频器通信问题,依据MODBUS协议规定,利用RealView MDK开发了基于ARM Cortex-M3微控制器的嵌入式软件,实现了与变频器的MODBUS通信,完成变频调速的运动控制功能。
2011-07-19 10:16:294796
Modbus协议在永磁同步电动机伺服系统中的应用
摸屏常常用作永磁同步伺服系统中的控制器,通过 Modbus通信协议 与驱动器进行数据交换。文章针对触摸屏的主要功能,详细介绍了Modbus协议中常见功能的实现、CRC一16校验码的生成,然
2011-08-15 14:17:5242
基于LabVIEW的Modbus协议两种校验码的实现方法
2012-05-14 23:08:3418
Modbus协议的介绍和应用及错误检查方法的资料说明
本文档的主要内容详细介绍的是Modbus协议的介绍和应用及错误检查方法的资料说明包括了:1.介绍 Modbus 协议介绍 2. 两种串行传输模式 3. 信息帧 4. 错误检查方法
2019-05-10 08:00:002
采用LabVIEW实现Modbus通讯协议的方式
针对Modbus的串口和TCP两种不同的方式,在LabVIEW中通常可以通过以下几种方法实现Modbus通讯。其中一些实现方式需要安装LabVIEW 数据记录与监控(DSC)模块.
2020-01-16 17:22:0016063
基于Modbus协议通讯的DEMO称重程序
EMERSONEV1000/EV2000变频器与MITSUBISHFX2PLC基于Modbus协议通讯的DEMO程序一、硬件连接二、通讯方式Modbus协议,ASCII格式,LRC校验;主从方式
2022-02-14 10:05:01831
EtherCAT协议和Modbus协议在风电领域
Modbus协议还可以与其他工业自动化协议进行集成,例如Ethernet/IP、Profinet等,以实现更高效和可靠的数据传输和控制。在风电领域,EtherCAT协议和Modbus协议都有其独特
2023-12-22 15:03:07155
modbus协议与485协议区别
Modbus协议与485协议是工业通信领域中常用的两种协议,它们在不同的层面上具有不同的功能和设计理念。本文将对Modbus协议与485协议在协议层面、物理层面、数据传输方式、使用场景等方面的区别
2024-01-11 11:06:031634
modbus协议功能码分类 modbus协议功能码是什么,有什么作用
Modbus协议是一种用于工业领域常见的通信协议,它基于主从结构,用于在不同设备之间实现数据交换。Modbus协议的功能码是决定数据交换类型和操作的重要部分。下面将详细介绍Modbus协议功能
2024-01-31 14:47:14749
评论
查看更多