最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

VB编写的ModbusRTU协议通讯源程序

IT圈 admin 32浏览 0评论

2024年4月14日发(作者:东悦欣)

modbus rtu协议可以算是一种事实上的工业标准协

议,为许多仪表、PLC等所支持。以前有几个用户问如

何使用VB编程来与我们的KND-K3系列PLC通讯,于是

整了一个demo 程序。这次把这个demo共享,希望能给

大家一点帮助。

1)模块文件:modCRC,其中包含了CRC校验的函数。

'data 待校验的数组名称

'no 数组中元素个数

'btLoCRC 算出的CRC高字节

'btHiCRC 算出的CRC低字节

Public Function CalCRC16Fast(data() As Byte, no As Integer, btLoCRC

As Byte, btHiCR C As Byte) As String

Dim CL As Byte, CH As Byte '多项式码&HA001

Dim SaveHi As Byte, SaveLo As Byte

Dim i As Integer

Dim Flag As Integer

btHiCRC = &HFF

btLoCRC = &HFF

CL = &H1

CH = &HA0

For i = 0 To (no - 1)

btHiCRC = btHiCRC Xor data(i) '每一个数据与CRC寄存器进行异或

For Flag = 0 To 7

SaveHi = btLoCRC

SaveLo = btHiCRC

btLoCRC = btLoCRC 2 '高位右移一位

btHiCRC = btHiCRC 2 '低位右移一位

If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1

btHiCRC = btHiCRC Or &H80 '则低位字节右移后前面补1

End If '否则自动补0

If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或

btLoCRC = btLoCRC Xor CH

btHiCRC = btHiCRC Xor CL

End If

Next Flag

Next i

2024年4月14日发(作者:东悦欣)

modbus rtu协议可以算是一种事实上的工业标准协

议,为许多仪表、PLC等所支持。以前有几个用户问如

何使用VB编程来与我们的KND-K3系列PLC通讯,于是

整了一个demo 程序。这次把这个demo共享,希望能给

大家一点帮助。

1)模块文件:modCRC,其中包含了CRC校验的函数。

'data 待校验的数组名称

'no 数组中元素个数

'btLoCRC 算出的CRC高字节

'btHiCRC 算出的CRC低字节

Public Function CalCRC16Fast(data() As Byte, no As Integer, btLoCRC

As Byte, btHiCR C As Byte) As String

Dim CL As Byte, CH As Byte '多项式码&HA001

Dim SaveHi As Byte, SaveLo As Byte

Dim i As Integer

Dim Flag As Integer

btHiCRC = &HFF

btLoCRC = &HFF

CL = &H1

CH = &HA0

For i = 0 To (no - 1)

btHiCRC = btHiCRC Xor data(i) '每一个数据与CRC寄存器进行异或

For Flag = 0 To 7

SaveHi = btLoCRC

SaveLo = btHiCRC

btLoCRC = btLoCRC 2 '高位右移一位

btHiCRC = btHiCRC 2 '低位右移一位

If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1

btHiCRC = btHiCRC Or &H80 '则低位字节右移后前面补1

End If '否则自动补0

If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或

btLoCRC = btLoCRC Xor CH

btHiCRC = btHiCRC Xor CL

End If

Next Flag

Next i

发布评论

评论列表 (0)

  1. 暂无评论