`
gwbasic
  • 浏览: 56110 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Delphi Modbus RTU CRC16校验码

 
阅读更多
function CheckCrc16(const ABuf; ALen: Integer): Boolean;
var
  uwTemp: WORD;
  i, j: BYTE;
  P: PByte;
begin
  Result := False;

  P := PByte(@ABuf);

  uwTemp := $FFFF;
  for i := 1 to ALen do
  begin
    uwTemp := uwTemp xor P^;
    for j := 1 to 8 do
    begin
      if (uwTemp and 1) = 1 then
        uwTemp := (uwTemp shr 1) xor $A001
      else
        uwTemp := uwTemp shr 1
    end;
    Inc(P);
  end;

  if P^ = BYTE(uwTemp) then
  begin
    Inc(P);
    if P^ = BYTE(uwTemp shr 8) then
    begin
      Result := True;
    end
  end
end;

分享到:
评论

相关推荐

    用Delphi写的 Modbus 协议的CRC校验源码

    Delphi的CRC校验源码可能还会包含对不同Modbus CRC标准的支持,如CRC-16或CRC-CCITT,这需要根据实际的Modbus协议规范调整多项式和初始值。同时,为了提高效率,高级实现可能会使用位操作或查表法来加速CRC计算。 ...

    Delphi带ModbusRTU协议解释串口工具

    接着,计算CRC校验码并添加到消息末尾,最后通过TSerialPort对象的Write方法将消息发送出去。 收到响应时,首先检查校验码是否正确,然后根据功能码解析响应数据。例如,对于读保持寄存器的响应,数据部分包含读取...

    Modbus-RTU串口传输时CRC校验工具-Delphi10.3源码

    在Modbus-RTU协议中,CRC-16算法被用来生成校验码,该算法生成一个16位的校验值附加到消息末尾。 Delphi是一款强大的对象 Pascal 编程语言集成开发环境,常用于开发桌面应用。在这个特定的项目中,`Unit2.dfm`和`...

    MODBUS CRC DELPHI CODE

    根据给定文件的信息,本文将围绕“MODBUS CRC DELPHI CODE”展开,详细解析Modbus协议中的CRC校验码生成方法以及Delphi语言实现。 ### Modbus协议简介 Modbus是一种广泛应用于工业自动化领域的串行通信协议,由...

    wxhModbus RTU CRC检验方法

    【描述】"Modbus RTU CRC检验方法"意味着在Modbus RTU通信协议的帧结构中,包含了CRC校验码,用于在主设备和从设备间的数据交换过程中检测潜在的传输错误。CRC校验通过对数据进行特定的数学运算,生成一个简短的校验...

    MODBUS_MASTER_RTU_ASCII_Communication.rar_ModBus Delphi RTU_RTU

    接着,你需要构造MODBUS RTU帧,该帧包括设备地址、功能码、数据和CRC校验。在ASCII模式下,这些二进制数据会被转换为可打印的ASCII字符。 在"MODBUS MASTER RTU ASCII 工控通迅"这个压缩包中,可能包含了以下内容...

    ModeBus RTU crc自动生成工具

    CRC校验码的生成通常需要一定的编程技巧,但这个“Modbus RTU CRC自动生成工具”则简化了这一过程,使得非专业人员也能快速且准确地计算出CRC值。 这个工具的核心功能包括: 1. **CRC计算**:用户只需提供需要校验...

    Modbus_RTU串口通信封装包带VB、delphi实例

    本资源提供了一个针对VB(Visual Basic)和Delphi编程语言的Modbus_RTU串口通信的封装包,并附带了实际测试的示例代码,使得开发者能够快速地在自己的项目中实现Modbus_RTU通信功能。 首先,我们来理解一下Modbus...

    CRC16原理及算法附带两种程序

    CRC16是一种特定的CRC实现方式,它通过生成一个16位的校验码来确保数据传输的准确性。 #### 1.1 生成CRC16码的基本原理 CRC16码基于多项式的运算。生成CRC16码时通常会使用特定的多项式,这些多项式被设计成能够...

    delphi实现的MODBUS SLAVE源代码

    - 在Delphi中,开发者需要处理MODBUS协议的帧结构,包括起始/结束符、地址、功能码、数据和校验码等。 - 对接收到的MODBUS请求进行解析,验证其合法性,然后执行相应的功能码操作。 - 实现RTU模式,需要注意校验...

    MODBUS通信数据解析和测试步骤讲解

    MODBUS RTU使用**CRC校验**来确保数据传输的准确性。 - **通信参数**: - **设备站号**: 设备在网络中的唯一标识符,通常是一个介于1到247之间的数字。本例中,**设备站号设为1**。 - **波特率**: 指数据传输速率,...

    Delphi_MODBUS轮寻报文.zip

    - **错误处理**:如何处理MODBUS通信中的错误,如超时、CRC校验错误、非法数据等。 - **多线程**:为了实现并行轮询,可能需要利用多线程技术来提高效率。 总的来说,这个Delphi_MODBUS轮寻报文项目提供了开发和...

    MODBUS-TCP.rar_TCP通信标准_modbus TCP_modbus 标准_modbus-tcp_modbus标准

    3. **错误检测**:MODBUS-TCP使用CRC(循环冗余校验)来检测数据传输过程中的错误。TCP协议本身也提供了错误检测和重传机制,进一步增强了数据传输的可靠性。 4. **连接管理**:TCP的三次握手建立连接,四次挥手...

    modbus 接口的delphi 源码

    3. **错误处理**:识别并处理Modbus通信中的各种错误,如超时、CRC校验错误或非法地址。 4. **数据解析**:将接收到的Modbus报文解析为有意义的数据,同时将要发送的数据转换为Modbus格式的报文。 5. **异步通信**...

    Modbus-Develop

    4. **报文格式**:不论是 RTU 还是 TCP 模式,Modbus 报文都包含地址、功能码、数据和校验码。RTU 模式使用奇偶校验,TCP 模式则采用更复杂的校验机制,如 CRC。 **二、Delphi 与 Modbus 开发** 1. **Delphi 简介*...

    MODBUS SLAVE源代码

    2. **错误检查**:校验接收到的数据,如CRC校验或LRC校验,确保数据传输无误。 3. **功能码处理**:根据接收到的功能码执行相应操作,如0x03读取寄存器、0x06写单个寄存器、0x0F读多个线圈等。 4. **模拟数据**:在...

Global site tag (gtag.js) - Google Analytics