现在的位置: 首页 > 综合 > 正文

LabView在MODBUS规约CRC实现以及通讯技术

2013年10月10日 ⁄ 综合 ⁄ 共 1713字 ⁄ 字号 评论关闭

LabViewMODBUS规约CRC实现以及通讯技术

 

Modbus通讯协议分为RTU协议和ASCII协议。对于它的介绍可以参阅《MODBUS通讯协议及编程》。

 

LabView的介绍在我的BLOG已经够多的了,其优势不言而喻的。在此也不多介绍,可以参阅本BLOG关于它的串口通讯,三菱PLC通讯以及应用通讯等等。

 

 

对于CRC的介绍,那就太多了,也不做多于的介绍,下面就介绍它在VBLabView中的实现方面的。

 labviewcrc1.JPG

VB中,下面的例子我们可以通过输入的16进制数据得到它的CRC校验以及根据一串数据判断它的CRC是否正确!


实现的程序如下:

Public Function CRC(Brr() As Byte) As Long

'CRC校验核,全部数据进行校验

   Dim i As Integer, j As Integer

   Dim TempVal As Long

   Dim YWval As Long

   Dim LSB As Integer

  

   TempVal = &HFFFF&

  

   For i = 0 To UBound(Brr())

       TempVal = TempVal Xor Brr(i)

       For j = 1 To 8

           YWval = Int(TempVal / 2)

           LSB = TempVal Mod 2

           If LSB = 1 Then

              YWval = YWval Xor &HA001&

           End If

           TempVal = YWval

       Next j

   Next i

   CRC = TempVal Mod 65536

     

End Function

 

按下计算后

    Dim Cmd() As Byte

Dim Jyh0 As Byte

     Dim Jyh1 As Byte

     Dim ValCRC As Long

‘Cmd()得到Text1控件中所有数据的十六进制数据:

‘01 03 00 00 00 02

Text2是得到CRC校验位的

 

  ValCRC = CRC(Cmd)

  Jyh0 = ValCRC Mod 256

  Jyh1 = Int(ValCRC / 256)

 

  Text2.Text = Right("0" + Hex(Jyh0), 2) + Right("0" + Hex(Jyh1), 2)

    

判断就是将最后C4 B0取出放置一个变量中,将01 03 00 00 00 02取出得到它的CRC(具体实现上面也有说明的)判断是否相等,等提示:

下面介绍LabView中的实现了,有了以上的代码,那么实现起来只是一个转换了,如果有兴趣的朋友可以不用看下面的实现,自己根据VB的代码进行转换即可。相信更有成就感的。

界面

由于是把它做成一个模块调用的,所以做的比较粗糙,但是可以看得出来的,在DATA下面输入16进制数据0103 0000 0002CRC的结果为BC4。得到LOWER CRC BYTE C4,得到UPPER CRC BYTEB,连接起来为C40B,直接转成16进制为String 2为:  4334 3024.进行处理转换为16进制为C40B。全部连接起来得到String4 0103 0000 0002 C40B

这样,与VB预算得到相同的结果。

 

  图表示为:

 

由于一幅图剪切不下来,特做两幅图处理。

总结

本文以单独的视角来实现ModBUS协议中的CRCVBLABVIEW中的实现方式,对于CRC的介绍本BLOG做过大量的介绍,在此就是简单的提出以下,可以参阅本BLOG也可以参阅其他的资料。在此就略去。

 

后记

对于LabVIEW这几年在虚拟仪器中的发展情况上看,相信有着更大的作为。本人也一直致力于这方面的研究。由于其博大精深,算起来只是掌握冰山上的一角!写下这些心得,希望能在自己总结的同时也分享这些所谓的略微成果!希望与各位共同进步。如果觉得该文章能够给访问者有着启示,本人也深感欣慰,同时也希望各位留下建议和意见,一方面本人也能根据你们的信息反馈改进自己的不足,提高自己。另一方面也希望结识更多致力于自动测控等方面研究的朋友,这样对于本人来说是莫大的荣幸!

 

 

参考资料

     www.cpubbs.com中的论坛,本人经常去的地方,里面许多问题可以请教到高手。

 

抱歉!评论已关闭.