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

modbus与plc通讯 vb程序

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


该文章讲述了modbus与plc通讯 vb程序的原理和应用

该程序可以实现实时数据采集显示,以及能对寄存器进行设置。

程序很简单,想用的可以完善,现在只能实时采集显示一个地址的数据,只要修改一下,就可以实时采集多个地址的数据。现在也只能一次对一个寄存器进行设置,也可以更加完善。

         下面是运行界面,采集的模块的地址为75,是一个温湿度采集模块。有3个寄存器,显示的数据上是温度,湿度,露点温度。

         点击浏览下一页
modbus

 

Private Sub Command1_Click() '设置按钮
        Dim bisend() As Byte
        Dim crc
        Dim btLoCRC As Byte, btHiCRC As Byte
        Dim Data As Integer
    If MSComm1.PortOpen = True Then
       If Combo5.ListIndex = 0 Then
         ReDim bisend(7) '重新定义数组长度
         bisend(0) = "&h" + Hex(Val(Text1.Text))   '地址码
         bisend(1) = "&h" + Hex(3)  '功能码   读寄存器
         bisend(2) = "&h" + Hex(0) '起始地址高位
         bisend(3) = "&h" + Hex(0)  '起始地址低位
         bisend(4) = "&h" + Hex(0)  '寄存器个数高位
         bisend(5) = "&h" + Hex(Combo6.ListIndex + 1) '寄存器个数低位
         crc = CRC16(bisend, 6, btLoCRC, btHiCRC)
         bisend(6) = "&h" + Hex(btLoCRC)  'CRC高位
         bisend(7) = "&h" + Hex(btHiCRC) 'CRC低位
         '发送数据
         MSComm1.Output = bisend
       Else
        ReDim bisend(10) '一次只能写一个寄存器
        bisend(0) = "&h" + Hex(Val(Text1.Text))   '地址码
        bisend(1) = "&h" + Hex(16)  '功能码  写寄存器
        bisend(2) = "&h" + Hex(0)  '起始地址高位
        bisend(3) = "&h" + Hex(0) '起始地址低位
        bisend(4) = "&h" + Hex(0)     '寄存器个数高位
        bisend(5) = "&h" + Hex(1)     '寄存器个数低位
        bisend(6) = "&h" + Hex(2)    '字节数
        Data = Val(Trim(Text3.Text))
        bisend(7) = "&h" + Hex(Data \ 256) '要写入寄存器的值的高字节
        bisend(8) = "&h" + Hex(Data Mod 256) '要写入寄存器的值的低字节
        crc = CRC16(bisend, 9, btLoCRC, btHiCRC)
        bisend(9) = "&h" + Hex(btLoCRC) 'CRC高位
        bisend(10) = "&h" + Hex(btHiCRC) 'CRC低位
        MSComm1.Output = bisend
       End If
   Else
     MsgBox "串口没有打开"
  End If
End Sub

P

关键词:modbus,plc,通讯,程序
上一篇:MODBUS-RTU CRC校验码计算 VB源程序
下一篇:没有了
最近更新