#Include "MSB6XX" Ramclear Dim RxByte As Byte Dim _Txb(80) As Byte Dim MBdata(32) As Integer Dim _Crcres As Integer On Recv3 Gosub GETMODBUS ' Data Receive Interrupt routine Set Ladder On Do MBreadReg 3, 1, 28682, 1 Wait 1000 Loop GETMODBUS: Debug "Response: " Do While Blen(3,0) > 0 ' While buffer is not empty then RxByte = Get(3, 1) ' Get byte from RX Buffer Debug Hex RxByte, " " ' Print byte to debug console Loop Debug Cr 'New Line Return End Sub MBReadCoil(_MBch As Byte, _MBslave As Byte,_MBadr As Integer,_MBlen As Integer) _Txb(0) = _MBslave _Txb(1) = 1 _Txb(2) = _MBadr.Byte1 _Txb(3) = _MBadr.Byte0 _Txb(4) = _MBlen.Byte1 _Txb(5) = _MBlen.Byte0 Getcrc _Crcres,_Txb,6 _Txb(6) = _Crcres.Byte1 _Txb(7) = _Crcres.Byte0 Puta _MBch,_Txb,8 End Sub Sub MBreadReg(_MBch As Byte, _MBslave As Byte,_MBadr As Integer,_MBlen As Integer) _Txb(0) = _MBslave _Txb(1) = 3 _Txb(2) = _MBadr.Byte1 _Txb(3) = _MBadr.Byte0 _Txb(4) = _MBlen.Byte1 _Txb(5) = _MBlen.Byte0 Getcrc _Crcres,_Txb,6 _Txb(6) = _Crcres.Byte1 _Txb(7) = _Crcres.Byte0 Puta _MBch,_Txb,8 End Sub Sub MBWriteSingleReg(_MBch As Byte, _MBslave As Byte,_MBadr As Integer,_MBdata As Integer) _Txb(0) = _MBslave _Txb(1) = 6 _Txb(2) = _MBadr.Byte1 _Txb(3) = _MBadr.Byte0 _Txb(4) = _MBdata.Byte1 _Txb(5) = _MBdata.Byte0 Getcrc _Crcres,_Txb, 6 _Txb(6) = _Crcres.Byte1 _Txb(7) = _Crcres.Byte0 Puta _MBch,_Txb,8 End Sub Sub MBWriteSingleCoil(_MBch As Byte, _MBslave As Byte,_MBadr As Integer,_MBdata As Integer) _Txb(0) = _MBslave _Txb(1) = 5 _Txb(2) = _MBadr.Byte1 _Txb(3) = _MBadr.Byte0 If _MBdata <> 0 Then _MBdata = &hff00 _Txb(4) = _MBdata.Byte1 _Txb(5) = _MBdata.Byte0 Getcrc _Crcres,_Txb,6 _Txb(6) = _Crcres.Byte1 _Txb(7) = _Crcres.Byte0 Puta _MBch,_Txb,8 End Sub Sub MBWriteMulReg(_MBch As Byte, _MBslave As Byte,_MBadr As Integer,_MBlen As Integer) Dim _mbi As Integer,_mbj As Integer If _MBlen > 32 Then _MBlen = 32 _Txb(0) = _MBslave _Txb(1) = 16 _Txb(2) = _MBadr.Byte1 _Txb(3) = _MBadr.Byte0 _Txb(4) = _MBlen.Byte1 _Txb(5) = _MBlen.Byte0 _Txb(6) = _MBlen << 1 _mbj = 7 For _mbi = 0 To _MBlen _Txb(_mbj) = MBdata(_mbi).Byte1 Incr _mbj _Txb(_mbj) = MBdata(_mbi).Byte0 Incr _mbj Next Getcrc _Crcres,_Txb,_mbj _Txb(_mbj) = _Crcres.Byte1 Incr _mbj _Txb(_mbj) = _Crcres.Byte0 Incr _mbj Puta _MBch,_Txb,_mbj End Sub