rthan008 2015-06-26 08:13 采纳率: 20%
浏览 913

使用MODBUS再TCPIP上通信的问题

Public Sub WriteQW16(ByVal Address As Short, ByVal value As Short)
Dim buffer As Byte()
If Me.Connected = False Then
'Information.Err().Raise(0x215, "", "not connected", null, null);
Throw New Exception("not connected!")
End If

    Dim buffer3(14) As Byte
    Dim num As Integer = 0

    Dim bytes As Byte()
    bytes = BitConverter.GetBytes(value)

    Dim nsStream As NetworkStream = Me.nsStream
    SyncLock nsStream
        'Address = (short) Math.Round((double) (((double) Address) / 2.0));
        'Dim bytes As Byte()
        'bytes = BitConverter.GetBytes(Address)

        Dim buffer4 As Byte()
        buffer4 = BitConverter.GetBytes(Address)

        buffer3(0) = 0
        buffer3(1) = 0
        buffer3(2) = 0
        buffer3(3) = 0
        buffer3(4) = 0
        buffer3(5) = 9

        buffer3(6) = 255 '0xff
        buffer3(7) = 16 '0x10;
        buffer3(8) = buffer4(1)
        buffer3(9) = buffer4(0)
        buffer3(10) = 0
        buffer3(11) = 1
        buffer3(12) = 2
        buffer3(13) = bytes(1)
        buffer3(14) = bytes(0)


        Me.nsStream.Write(buffer3, 0, 15)
        Me.nsStream.Flush()

        Do
            Thread.Sleep(1)
            num = num + 1
            If num > 200 Then
                Throw New Exception("超时!")
            End If
        Loop While (Me.t1Client.Client.Available < 12)
        ReDim buffer(Me.t1Client.Client.Available - 1 + 1)
        Me.nsStream.Read(buffer, 0, Me.t1Client.Client.Available)
        Dim ii As Integer
        ii = 0


    End SyncLock



End Sub


    以上是写的过程,发送单个任务,不明白数组是根据MODBUS哪个功能码,对方是如何识别数组当中的数据的,麻烦大神解释一下,看完MODBUS协议,不知道这个是如何进行通信的,为什么数组长度偏偏是15个?
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥50 永磁型步进电机PID算法
    • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
    • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
    • ¥15 如何处理复杂数据表格的除法运算
    • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
    • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
    • ¥200 uniapp长期运行卡死问题解决
    • ¥15 latex怎么处理论文引理引用参考文献
    • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
    • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?