首页 > 其他分享 >Modbus协议ASCII模式下数据的LRC校验

Modbus协议ASCII模式下数据的LRC校验

时间:2024-06-21 11:33:22浏览次数:24  
标签:LRC 字节 ASCII 校验 Modbus 数据

       Modbus协议ASCII模式下数据的LRC校验,计算校验时不包括开头的冒号字符,从第2个字符开始。计算LRC时先将原始的ASCII码格式的数据转换为HEX(ASCII码格式数据‘F’转换为0x0F);在将转换后的HEX数据按照高半字节在前低半字节在后的顺序(如a[1] = 0x0F, a[2] = 0x0A,合并后的数据=0xFA),将前后两字节合并成一字节;将上一步得到的数据累加求和(求和的结果放到一个unsigned int变量里面),对求和后的结果进行256求余,用256减去求余结果得到LRC值。基于以上流程的代码计算出来的LRC能够与Modbus Poll工具的校准值对的上,Modbus Poll软件给出的LRC示例代码有问题。

#define HEX2ASC(x) (((x)<=9)?((x)+0x30):((x)+0x37))
#define ASC2HEX(x) (((x)<='9')?((x)-'0'):((x)-'A'+10))

unsigned short CheckLRC(unsigned char *nData, unsigned short wLength)
{
    unsigned char nLRC = 0 ; // LRC char initialized
    unsigned char *ptr;
    unsigned short Len,i;
    unsigned char Data;
    unsigned int sum = 0;

    if(wLength <= 1)
    return 0;

    ptr = nData+1;
    Len = wLength - 1;

    if(Len % 2)
    return 1;

    for (i = 0; i < Len; i+=2){
    Data = ASC2HEX(*(ptr+i)) * 16;
    Data += ASC2HEX(*(ptr+i+1));
    sum += Data;
    }

    nLRC = (unsigned char)(256 - (sum%256));

    return (HEX2ASC(nLRC>>4)*256+HEX2ASC(nLRC&0x0F));
}

 

标签:LRC,字节,ASCII,校验,Modbus,数据
From: https://www.cnblogs.com/csjl2010/p/18260191

相关文章

  • 300PLC连接Modbus转Profibus网关与阀岛modbusRTU通讯
    一、概况300PLC作为常见的控制器设备,在与阀岛ModbusRTU通讯时,通常需要借助Modbus转Profibus网关(XD-MDPB100)来实现连接和数据交换。PLC通过Modbus转Profibus网关(XD-MDPB100)与阀岛ModbusRTU通讯是比较快捷有效的方法。本文将详细介绍300PLC利用Modbus协议转Profibus协议模块与阀......
  • FQC外检机使用Profibus转Modbus网关提升工作效率
    FQC外检机使用Profibus转Modbus网关提升工作效率一、简介控制器通过Profibus转Modbus网关(XD-MDPB100)与视觉传感器实现通讯,在FQC外检机的应用为生产流程的自动化和优化提供了重要支持。在工业自动化领域,PLC常被用作控制器,通过采用在PLC与执行设备中间添加Profibus转Modbus网关,可省......
  • 如何快速实现MODBUS TCP转Profinet---泗博网关EPN-330
    泗博网关EPN-330可作为PROFINET从站,支持与西门子S7-200SMART/300/400/1200/1500全系列PLC以及具有PROFINET主站的系统无缝对接,而ModbusTCP端,可以与ModbusTCP从站设备、主站PLC、DCS系统以及组态软件等进行数据交互。通过EPN-330,可以快速实现MODBUSTCP转Profinet,轻松地将多个M......
  • 请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ASCII码降序排列
    请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ASCII码降序排列#include<stdio.h>#include<string.h>voidsortDescending(charstr[]){intlen=strlen(str);if(len!=7) {printf("字符串长度不为7,无法进行排序。\n");......
  • Profibus转Modbus网关帮助PLC实现智能激光设备通讯
    一、前言Profibus协议转Modbus协议网关模块(XD-MDPB100)是一种工业通信协议转换设备,用于实现Profibus协议与Modbus协议之间的转换。Profibus转Modbus网关在工业自动化系统中具有广泛的应用,它解决了不同协议设备之间的通信问题。本文将深入探讨PLC通过Profibus转Modbus网关与激光设......
  • Lightroom Classic for mac/win (Lrc2021) 10.3中文直装版
    LightroomClassic是Adobe公司开发的一款专业的照片处理和管理软件,旨在帮助摄影师对其作品进行全方位的后期处理,包括调整画面的明暗、色彩、对比度等,以及进行修图、拼接和摄影作品的管理整理等功能。它是摄影师和摄影爱好者常用的后期处理软件之一,可以在室内外的各种场景中进行......
  • 八路DI八路DO开关量输入输出 远程IO模块 Modbus TCP数据采集模块 YL90
    特点:●八路开关量输入,八路开关量输出● DI状态变化自动发送状态数据,可以捕获脉冲● 采用Socket自由协议编程简单、轻松应用● 开关量毫秒级响应速度适应多种场合● 内置网页功能,可以通过网页查询与控制● 同时也支持ModbusTCP通讯协议● 宽电源供电范围:8~32......
  • Modbus转Profibus网关接热传感器配置攻略
    一、前言在工业自动化控制领域,Modbus协议和Profibus协议是两种常见的通讯协议,它们在设备之间传输数据起着至关重要的作用。而Modbus转Profibus网关(XD-MDPB100)设备,则扮演着连接不同通讯协议的桥梁角色。本文将介绍如何通过Modbus转Profibus网关来接入热传感器,实现数据采集和监控的......
  • modbus TCP 操作寄存器,控制气密性测试仪
    #include"modbus.h"#include<iostream>#pragmacomment(lib,"modbus.lib")usingnamespacestd;intmain(){  modbus_t*ctx;  constchar*ipAddress="192.168.1.2";//ModbusTCP从机的IP地址  constintport=8000;//......
  • Modbus转Profibus网关接变频器:实现工业自动化无缝连接
    一、背景在工业自动化领域,Modbus和Profibus是两种常见的通讯协议,而变频器作为控制电机转速的重要设备。为了实现不同设备之间的无缝连接和数据传输,现场大多数采用Modbus转Profibus网关(XD-MDPB100)来解决Modbus设备和Profibus设备通讯问题。本文将介绍Modbus转Profibus网关(XD-MDPB1......