您的位置:控制工程论坛网论坛 » 工业以太网 » Modbus 通讯协议编程(1)

zhiy66

zhiy66   |   当前状态:在线

总积分:6528  2025年可用积分:0

注册时间: 2007-12-18

最后登录时间: 2012-01-11

空间 发短消息加为好友

Modbus 通讯协议编程(1)

zhiy66  发表于 2008/9/22 13:53:18      1004 查看 0 回复  [上一主题]  [下一主题]

手机阅读

Modbus 通讯协议编程
本人最近为了实现电脑与Delta VFD-M变频器通讯,特意用VB6.0编了一个Modbus协议通讯软件,不过这只是一个测试版,但Modbus的ASCii协议和RTU协议都已经实现。现在将源程序上贴,希望可以帮助到有需要的朋友,谢谢!(我发现图片贴不上去)
    另外,假如你觉得有更好的想法,欢迎E-mail指教。
附:VB6源程序

Option Explicit
Private Text1text As String
Private RTUCRC As String
'串口选择
Private Sub Combo1_Click()
              MSComm1.CommPort = Combo1.ListIndex + 1
End Sub
'数据位改变
Private Sub Combo2_Click()
        Call setting
End Sub
'波特率改变
Private Sub Combo3_Click()
        Call setting
End Sub
'奇偶校验改变
Private Sub Combo4_Click()
        Call setting
End Sub
'停止位改变
Private Sub Combo5_Click()
        Call setting
End Sub
Private Sub setting()
         MSComm1.Settings = CStr(Combo3.Text) & "," & CStr(Combo4.Text) & "," & CStr(Combo2.Text) _
                                          & "," & CStr(Combo5.Text)
End Sub
'打开关闭串口
Private Sub Command1_Click()
        On Error Resume Next
        If MSComm1.PortOpen = False Then
            MSComm1.PortOpen = True
        Else
               MSComm1.PortOpen = False
        End If
        
        If MSComm1.PortOpen Then                                '打开关闭按钮显示文字及combo1使能
             Command1.Caption = "关闭串口"
             Combo1.Enabled = False
        Else
              Command1.Caption = "打开串口"
              Combo1.Enabled = True
        End If
        
          If Err Then                                                          '打开串口失败,则显示出错信息
               MsgBox Error$, 48, "错误信息"
                Exit Sub
           End If
End Sub
'10转16进制
Private Sub Command2_Click(Index As Integer)
     On Error Resume Next
         Text4.Text = Hex(Text3.Text)
           If Err Then                                                          ''则显示出错信息
               MsgBox Error$, 48, "错误信息"
                Exit Sub
           End If
End Sub
'16转10进制
Private Sub Command3_Click()
         Dim a As Long
         a = Val("&H" & CStr(Text4.Text))
         Text3.Text = a
End Sub
'手动串口发送
Private Sub Command4_Click()
         If MSComm1.PortOpen = False Then
                  MsgBox "请先打开串口", , "错误信息"
                  Exit Sub
          End If
          Call sentsub
End Sub
'清除接收窗
Private Sub Command5_Click()
          Text2.Text = ""
End Sub
Private Sub Command6_Click()
        Unload Me
End Sub
Private Sub Command7_Click()
        On Error Resume Next
          Dim STP As String
           STP = CStr(Chr(2)) & "010001" & CStr(Chr(3)) & "25"
           MSComm1.Settings = "9600,N,7,2"
           MSComm1.PortOpen = True
           MSComm1.Output = STP
           MSComm1.PortOpen = False
           If Err Then                                                          '打开串口失败,则显示出错信息
               MsgBox Error$, 48, "错误信息"
                Exit Sub
           End If
End Sub
Private Sub Command8_Click()
        On Error Resume Next
        Dim FWD As String
           FWD = CStr(Chr(2)) & "010101" & CStr(Chr(3)) & "26"
           MSComm1.Settings = "9600,N,7,2"
           MSComm1.PortOpen = True
           MSComm1.Output = FWD
           MSComm1.PortOpen = False
           If Err Then                                                          '打开串口失败,则显示出错信息
               MsgBox Error$, 48, "错误信息"
                Exit Sub
           End If
End Sub
Private Sub Command9_Click()
        On Error Resume Next
           Dim REV As String
           REV = CStr(Chr(2)) & "010201" & CStr(Chr(3)) & "27"
           MSComm1.Settings = "9600,N,7,2"
           MSComm1.PortOpen = True
           MSComm1.Output = REV
           MSComm1.PortOpen = False
           If Err Then                                                          '打开串口失败,则显示出错信息
               MsgBox Error$, 48, "错误信息"
                Exit Sub
           End If
End Sub
1楼 0 0 回复