虽然Modbus是公开协议,但是要想做出稳定的通信控件,还是要下一番功夫的。该控件经过多年现场运用,功能完善可靠,可操作的变量类型有I、Q、AI、V。非注册版本仅能操作变量区前10个,注册版本无个数限制,并且注册一份,不限用户个数,可以任意发布使用(仅授权的公司的用户使用,否则追究相应的责任)。
提供有详细的示例程序,很容易掌握使用。
同类产品还有S7_PPI.ocx,S7_CP243.ocx,S7_MPI.ocx等控件【属性】
bps 波特率
DataBit 数据位
StopBit 停止位
CheckOut 校验方式
FixAddr PLC地址
【方法】
OpenPort 打开串口
ClosePort 关闭串口
ReadData 读PLC数据
WriteData 写PLC数据
InitRegCompany 初始化注册公司名称
【事件】
ErrorMessge 操作状态信息
示例程序界面:

http://www.sky-walker.com.cn/YeFan/ModbusRtu.rar
示例程序代码:
'*************************************************************************
'**模 块 名:frmTest
'**说 明:YFsoft 版权所有2005 - 2006(C)
'**创 建 人:叶帆
'**日 期:2005-08-23 14:45:36
'**修 改 人:
'**日 期:
'**描 述:MbClient 控件示例
'**版 本:V1.0.0
'*************************************************************************
'*************************************************************************
'**函 数 名:chkRun_Click
'**输 入:无
'**输 出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-08-28 11:11:25
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub chkRun_Click()
tmrRead.Enabled = IIf(chkRun.Value = 0, False, True)
End Sub
'*************************************************************************
'**函 数 名:cmbType_Click
'**输 入:无
'**输 出:无
'**功能描述:
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2005-08-29 11:42:33
'**修 改 人:
'**日 期:
'**版 本:V1.0.0
'*************************************************************************
Private Sub cmbType_Click()
If cmbType.ListIndex < 2 Then
cmbLen.ListIndex = 0
Else
cmbLen.ListIndex = 1
End If
End Sub
'*************************************************************************
'**函 数 名: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
分享到:
相关推荐
C#对三菱和西门子,欧姆龙等支持Modbus的服务器进行读写,不需要...3)支持ModBusRtu串口通信读写操作 4)支持ModBusAscii串口通信读写操作 5)支持ModbusRtuOverTcp通信读写操作 6)请放心下载,多个项目已经在使用;
通过深入研究`MFCTest4`的源代码,你可以了解如何将MFC的事件驱动编程模型与Modbus RTU通信协议相结合,实现一个实际的工业控制应用。 总的来说,这个"MFC简单Modbus RTU"项目为学习者提供了一个很好的起点,通过它...
本实例将探讨如何利用组态王实现与多台单片机的MODBUS RTU通信。 首先,理解MODBUS RTU协议至关重要。MODBUS是Modicon公司在1979年推出的开放式通信协议,RTU(Remote Terminal Unit)是其工作模式之一,适用于串行...
总之,通过C# WPF实现MODBUS RTU通信并与数码管显示屏交互,需要理解MODBUS RTU协议的细节,熟悉WPF UI设计,以及掌握串口通信的原理。这不仅可以帮助开发者创建高效、稳定的工业控制系统,也为新手提供了宝贵的实践...
《VB6实现485-Modbus RTU通信详解》 在信息技术领域,尤其是在工业自动化控制中,Modbus协议因其简单、可靠而被广泛应用。本文将深入探讨如何使用VB6(Visual Basic 6)编程语言实现485接口的Modbus RTU通信,通过...
MODBUS RTU是一种基于ASCII或RTU(远程终端单元)数据帧格式的通信协议,适用于串行通信。RTU模式下,数据以二进制形式传输,没有ASCII的字符间隔,因此传输效率更高。协议规定了主站和从站之间的请求/响应机制,...
在本文中,我们将深入探讨如何使用Visual Studio 2013(VS2013)进行MFC(Microsoft Foundation Classes)应用程序开发,并结合Modbus RTU协议实现一个基础的通信功能。Modbus RTU是一种广泛使用的工业通信协议,...
- `SerialPort.cpp`:实现了串口通信功能,这是Modbus RTU通信的基础,负责与主站建立物理连接并传输数据。 - `ModbusRTU_SDLG.cpp`:可能包含用户界面对话框的代码,用于设置或显示Modbus相关的配置。 - `StdAfx...
在本文中,我们将深入探讨基于VB6的MODBUS RTU通信技术,以及如何利用它来实现485通讯,读写RFID,并控制相关设备。VB6(Visual Basic 6)是微软公司推出的可视化编程环境,它允许开发者创建桌面应用程序,而MODBUS ...
3. **编写Modbus RTU通信VI**:利用LabVIEW的串行写操作发送Modbus请求,并通过串行读操作接收PLC的响应。确保正确处理错误,如超时、校验错误等。 4. **数据解析与显示**:接收到PLC的响应后,需要解析Modbus RTU...
Modbus RTU.dll V3.0控件为Delphi开发者提供了直接与支持Modbus RTU协议的设备交互的能力,无需深入理解底层通信细节,极大地简化了开发过程。 Delphi是一款强大的面向对象的 Pascal 编程工具,具有丰富的库支持和...
实现Modbus RTU通信,我们需要了解Modbus协议。Modbus是一种广泛应用的工业通信协议,主要用于PLC(可编程逻辑控制器)和其他设备之间的数据交换。Modbus RTU是其一种变体,使用串行通信,具有高效、简单的特点。在...
delphi7实现的MODBUS RTU 标准协议 485 源码及实例 这是我做的一个现实中的项目,里面有一个生成CRC的例子源码,同时也包括我在项目中用的到案例,通过 spcomm控件定时发送信息后,接收信息并验证数CRC数据是否正确...
Modbus是一种广泛应用于工业自动化领域的通信协议,它允许设备之间进行简单、有效的数据交换。在VB.NET中实现Modbus通信,通常涉及到...通过学习和理解这些代码,可以进一步掌握如何在VB.NET环境下实现Modbus RTU通信。
在标题“delphi\vb实现modbus rtu例子”中,我们可以理解为该压缩包包含了一些使用Delphi或Visual Basic (VB)编程语言实现的Modbus RTU通信的源代码示例。 Modbus RTU协议的基本原理是将数据以二进制格式打包成帧,...
Delphi MODBUS控件是一种专为在Delphi集成开发环境中使用的组件,用于实现MODBUS通信协议,以便于与各种支持MODBUS协议的PLC(可编程逻辑控制器)进行交互。MODBUS是一种广泛应用的工业通信协议,它允许不同设备之间...
在VB中实现Modbus RTU通信,通常需要借助第三方库,如NModbus库,这是一个开源的.NET实现,支持Modbus RTU和TCP协议。通过引用该库,开发者可以方便地调用预定义的函数,进行读写寄存器、线圈等操作。 3. **VB代码...
总结来说,"ModbusRTU_win32.7z"压缩包文件是一个用于Modbus RTU设备调试的工具,包含串口通信配置和MFC界面元素,对于从事相关开发工作的人员而言,它是学习和调试Modbus RTU通信的重要资源。通过深入理解和使用这...
**VB6 ModbusTCP转ModbusRTU样例详解** 在工业自动化领域,Modbus协议是一种广泛应用的通信协议,它允许设备之间进行简单且高效的数据交换。本篇将深入探讨如何利用VB6(Visual Basic 6)实现Modbus TCP到Modbus ...