首页 > 编程知识 正文

modbus通讯协议地址,modbus通讯不上的原因

时间:2023-05-05 07:21:48 阅读:57899 作者:2046

Modbus是一种公开协议,但要建立稳定的通信控件,需要花点心思。 该控件经过多年的现场运用,功能齐全可靠,可操作的变量类型为I、q、AI、v。 非注册版本只能操作变量区域的前10个。 注册版本没有个数限制。 另外,注册一份,用户数没有限制,可以自由分发使用(仅限授权公司的用户使用)。 否则,我会追究相应的责任)。

提供了详细的示例程序,很容易使用。

同类产品还有S7_PPI.ocx、S7_CP243.ocx、S7_MPI.ocx等控件【属性】

bps波特率

数据位

停止位停止

检查输出检查方式

FixAddr PLC地址

【方法】

打开打开端口串行端口

关闭关闭端口串行端口

ReadData读取PLC数据

WriteData写PLC数据

InitRegCompany初始化注册公司名称

【事件】

错误消息操作状态信息

示例程序接口:

33558 www.sky-walker.com.cn/ye fan/Modbus RTU.rar

示例程序代码:

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

' **模块名称: frmTest

' **说明: YFsoft版权所有2005-2006(c ) )。

' **创始人:叶帆

' **日期: 2005-08-23 14:45:36

' **修正者:

' **日期:

' **说明: MB客户端控制示例

' **版本: V1.0.0

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

' **函数名称: chkRun_Click

' **输入:无

' **输出:无

' **功能说明:

' **全局变量:

“**调用模块:

' **作者:叶帆

' **日期: 2005-08-28 11:11:25

' **修正者:

' **日期:

' **版本: V1.0.0

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

私有sub chkrun _ click (

TMR read.enabled=IIF (chkrun.value=0,False,True ) )。

最终辅

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

' **函数名称: cmbType_Click

' **输入:无

' **输出:无

' **功能说明:

' **全局变量:

“**调用模块:

' **作者:叶帆

' **日期: 2005-08-29 11:42:33

' **修正者:

' **日期:

' **版本: V1.0.0

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

私有sub CMB type _ click (

If cmbType.ListIndex 2 Then

cmbLen.ListIndex=0

Else

cmbLen.ListIndex=1

End If

最终辅

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

' **函数名称: cmdAbout_Click

' **输入:无

' **输出:无

' **功能说明:

' **全局变量:

“**调用模块:

' **作者:叶帆

' **日期: 2005-11-19 23:48:27

' **修正者:

' **日期:

' **版本: V1.0.0

' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

****
Private Sub cmdAbout_Click()
    ModbusRtu1.About
End Sub

'*************************************************************************
'**函 数 名:cmdClose_Click
'**输    入:无
'**输    出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2005-11-19 23:48:12
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub cmdClose_Click()
    Unload Me
End Sub

'*************************************************************************
'**函 数 名:cmdLogin_Click
'**输    入:无
'**输    出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2005-07-26 20:39:33
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub cmdLogin_Click()
    Dim lngData() As Long
    Dim lngRet As Long
   
    ModbusRtu1.FixAddr = cmbNo.ListIndex + 1
    lngRet = ModbusRtu1.ReadData(Val(txtAddr), lngData(), , , Modbus_V)
    If lngRet = 0 Then
        picFlag.BackColor = RGB(0, 255, 0)
    Else
        picFlag.BackColor = RGB(255, 0, 0)
    End If
End Sub
'*************************************************************************
'**函 数 名:cmdSendData_Click
'**输    入:无
'**输    出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2005-08-27 23:59:32
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub cmdReadData_Click()
    On Error GoTo ToExit '打开错误陷阱
    '------------------------------------------------
   Dim i As Long
   Dim bytType As Byte
   Dim lngData() As Long

   Select Case cmbType.ListIndex
     Case 0: bytType = Modbus_I
     Case 1: bytType = Modbus_Q
     Case 2: bytType = Modbus_AI
     Case 3: bytType = Modbus_V
    End Select
  
   ModbusRtu1.FixAddr = cmbNo.ListIndex + 1
   If ModbusRtu1.ReadData(Val(txtAddr), lngData(), Val(cmbNum.Text), Val(cmbLen.ListIndex), Val(bytType)) = 0 Then
      txtData = ""
      For i = 1 To Val(cmbNum.Text)
        txtData = txtData & Format(lngData(i - 1), "0") & " "
      Next
   Else
     txtData = "Error"
   End If
    '------------------------------------------------
    Exit Sub
    '----------------
ToExit:
   MsgBox Err.Description
End Sub


'*************************************************************************
'**函 数 名:cmdWriteData_Click
'**输    入:无
'**输    出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2005-08-28 11:43:08
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub cmdWriteData_Click()
    On Error GoTo ToExit '打开错误陷阱
    '------------------------------------------------
    Dim bytType As Byte
    Dim strData() As String
    Dim lngData() As Long
    Dim i As Long

   Select Case cmbType.ListIndex
     Case 0: bytType = Modbus_I
     Case 1: bytType = Modbus_Q
     Case 2: bytType = Modbus_AI
     Case 3: bytType = Modbus_V
    End Select

    If Len(txtData) > 0 Then
        strData = Split(txtData, " ")
        ReDim lngData(UBound(strData))
        For i = 0 To UBound(strData)
          lngData(i) = Val(strData(i))
        Next
        If ModbusRtu1.WriteData(Val(txtAddr), lngData, UBound(strData) + 1, Val(cmbLen.ListIndex), Val(bytType), cmbNo.ListIndex + 1) = 0 Then
            '
        Else
            txtData = "Error"
        End If
    End If
    '------------------------------------------------
    Exit Sub
    '----------------
ToExit:
    MsgBox Err.Description
End Sub

'*************************************************************************
'**函 数 名:Form_Load
'**输    入:无
'**输    出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2005-08-28 19:07:04
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub Form_Load()
   Dim i As Long
   For i = 1 To 222
     cmbNo.AddItem Format(i, "0")
   Next
   For i = 1 To 100
     cmbNum.AddItem Format(i, "0")
   Next
   cmbNum.ListIndex = 0
   cmbNo.ListIndex = 0
   cmbType.ListIndex = 3
  
   ModbusRtu1.OpenPort 1
End Sub

'*************************************************************************
'**函 数 名:Form_Unload
'**输    入:Cancel(Integer) -
'**输    出:无
'**功能描述:关闭串口
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2005-08-23 14:40:05
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub Form_Unload(Cancel As Integer)
   ModbusRtu1.ClosePort
   End
End Sub


'*************************************************************************
'**函 数 名:tmrRead_Timer
'**输    入:无
'**输    出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作    者:叶帆
'**日    期:2005-08-28 11:10:58
'**修 改 人:
'**日    期:
'**版    本:V1.0.0
'*************************************************************************
Private Sub tmrRead_Timer()
   cmdReadData_Click
End Sub

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。