当前位置:中国高校自动化网 >> 现场总线 >> 浏览文章

用VB实现Modbus串行通讯

文章来源:不详 作者:佚名 访问次数:


该文章讲述了用VB实现Modbus串行通讯的电路原理和应用

Modbus协议是上位机监控程序类应用中首选的通讯协议,使用VB可以实现;Modbus协议以其简单易用,在工业领域里已广泛的为其他第三方设备所支持。这里对VB和Twido PLC间的通讯进行说明。
  对于大部分应用,Twido PLC作为从站,它不需要编制通讯程序,只要把通讯口的参数设置好即可,

例如下图表示此Twido通过编程口和上位机连接,其站号地址为2;波特率、数据位、校验、停止位和上位机设置保持一致。
  

点击浏览下一页


VB程序通过利用MSComm控件很容易就能够实现Modbus串行通讯。 

 

  1. Modbus通讯口初始化:
   MSComm1.Settings = "9600,n,8,1"
   MSComm1.CommPort = 1
   MSComm1.SThreshold = 0
   If Not MSComm1.PortOpen Then MSComm1.PortOpen = True
  
  2. ModbusCRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring指向的字符串的CRC校验码。
  Function crc16_1(ByRef cmdstring() As Byte, ByVal j As Integer)
   Dim data As Integer
   Dim i As Integer
  
  
   Addressreg_crc = &HFFFF
   For i = 0 To j
   Addressreg_crc = Addressreg_crc Xor cmdstring(i)
   For j = 0 To 7
   data = Addressreg_crc And &H1
   If data Then
   Addressreg_crc = Int(Addressreg_crc / 2)
   Addressreg_crc = Addressreg_crc And &H7FFF
   Addressreg_crc = Addressreg_crc Xor &HA001
   Else
   Addressreg_crc = Addressreg_crc / 2
   Addressreg_crc = Addressreg_crc And &H7FFF
   End If
   Next j
   Next i
  
   If Addressreg_crc < 0 Then
   Addressreg_crc = Addressreg_crc - &HFFFF0000
   End If
  
   HiByte = Addressreg_crc And &HFF
   LoByte = (Addressreg_crc And &HFF00) / &H100
  End Function
  
  3. 读多个字的命令(本例是从2号站读%MW10起始的4个字):
   Dim SendStr(7) As Byte
   Dim RcvStr() As Byte
   SendStr(0) = 2 ,从站号是2
   SendStr(1) = &H3 ,读多个字的命令代码
   SendStr(2) = 0 ,起始地址高字节
   SendStr(3) = 10,起始地址低字节
   SendStr(4) = &H0,数据长度高字节
   SendStr(5) = 4 ,数据长度低字节
  
   Call crc16(SendStr(), 5) ,CRC计算
   SendStr

相关文章:
  • 用VB实现Modbus串行通讯
  • 什么是GPRS_GPRS技术特点
  • MODBUS-RTU CRC校验码计算 VB源程
  • 上一篇:modbus与plc通讯 vb程序
    下一篇:什么是GPRS_GPRS技术特点
    最近更新