VB编写的Modbus RTU协议通讯源程序-PLC技术网(www.plcjs.com)-可编程控制器技术门户


VB编写的Modbus RTU协议通讯源程序

 (点击题目可以在互联网中搜索该题目的相关内容)
日期:2006-7-18 23:27:50     来源:   作者: 点击:
点击【 大  中  小 】, 可 以 选 择 字 体的大小,以便 你 阅读.

   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, btHiCRC 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,则与多项式码进行异或

本新闻共8页,当前在第11 2  3  4  5  6  7  8  

上一篇: 施耐德TWIDOW PLC和ATV31,ATV71变频器通讯
下一: Modbus的功能代码