当前位置:首页 >> 农林牧渔 >>

Modbus ActiveX控件2.00手册


Modbus ActiveX 控件使用说明

版本 V2.00

上海英硕自动化科技有限公司
Tel: Fax: Web: Email: 021-64416768, 021-64411698 021- 64416769 http://www.EnsureTek.net mail@EnsureTek.net

1

/8

1. 概述: ............................................................................................................................................2 2. 支持的性能:..............................................................................................................................2 3. 控件在 VISUAL BASIC 中的使用方法说明............................................................................2 4. 事件的说明..................................................................................................................................5 5.状态诊断说明.............................................................................................................................6 6.控件的注册授权.........................................................................................................................7

1. 概述:
Modbus ActiveX Control.ocx 为 Modbus Master 通信控件, 他可以方便的作为 Master 向 Modbus 的 Slave 发送 Query(请求) ,并接收和处理从 Slave 发送回来的报文。 与 Modbus ActiveX Control V1.00 相比,V2.00 增加了下列功能的支持: 1) 可在 COM1~COM64 上定义 Modbus 协议。 2) 可在运行时动态更改所使用的 COM 号,以及波特率、停止位和校验位参数。

2. 支持的性能:
a) 串口:COM1~COM64, RS232/422/485. b) 波特率:110,300,600,1200,2400,4800,9600,14400,19200,28800,38400, 56000,128000,2560000。 c) 数据位:7,8 位。 d) 停止位:1,2 位。 e) 字符校验:奇,偶,无。 f)工作模式:半双工,及无论在 RS232 还是在 RS422/RS485 上,都必须逐个 Modbus 对 话执行,即必须等到上一次 Modbus 对话完成后,才能作下一个请求。 目前支持的 Function Code: 1,2,3,4,5,6,F,10,16。

3. 控件在 Visual Basic 中的使用方法说明
在中文版 Visual Basic 6.0 中使用本控件的方法如下: 1)将 Modbus ActiveX Control.ocx 文件复制到 Windos 系统目录(Windows\System)下。
2/8

2)打开 Visual Basic 工程,点击“工程”菜单栏下的“部件…” 。 3)点击对话框中的“浏览…”按钮。 4)选择已复制到系统目录下的 Modbus ActiveX Control.ocx 文件。 5)选中该控件,如下图所示:

6)点击“确定”按钮,则控件可被加载至 Vusual Basic 工程中。 7)主要属性的设置: a) BaudRate: 枚举型,可设置,选择相应的通信波特率。 b) CommError: 只读型,用于诊断串口的异常通信出错。 c) CommPort: 枚举型,可设置,选择相应的通信串口 d) CommStatus: 只读型,用于诊断 Modbus 通信对话(Transaction)的状态 e) DataBit: 枚举型,可设置,选择相应的通信每字节的数据位 f) Parity: 枚举型,可设置,选择相应的通信每字节的校验位形式 g) RespondTimeOut: 超时定义, 此时间为一个 Modbus 的 Query 发出后, 等待 Slave 回应的最大时间,如超出此时限后,仍未收到 Slave 的回应,则本控件报告超时错误 (CommStatus: 2010) h) StopBit: 枚举型,可设置,选择相应的通信每字节的停止位数。 当 BaudRate、CommPort、DataBit、Parity 以及 RespondTimeOut 属性设置完成后,在 Modbus 控件正式收发数据之前,应该采用 OpenPort 方法打开串口。 当控件在一个串口已经打开收发数据的情况下,如用户希望更改所使用的串口号及相应的 BaudRate 等工作参数时,应该首先 i) 调用 ClosePort 方法关闭当前的串口。 ii) 设置新的 BaudRate、CommPort、DataBit、Parity 以及 RespondTimeOut 属性值 iii) 调用 OpenPort 方法打开串口,开始收发数据。

3/8

采用以下方法(函数)1)--9),可以方便地生成各个 Modbus Function 的 Query, 并从相应的 串口发送到 Slave。 1) FC01_ReadCoilStatus_0X(ByVal SlaveAddress As Byte, ByVal StartAddress As Integer, ByVal CoilCount As Integer) As Long 2) FC02_ReadInputStatus_1X(ByVal SlaveAddress As Byte, ByVal StartAddress As Integer, ByVal InputCount As Integer) As Long 3) FC03_ReadHoldingRegister_4X(ByVal SlaveAddress As Byte, ByVal StartAddress As Integer, ByVal RegisterCount As Integer) As Long 4) FC04_ReadInputRegister_3X(ByVal SlaveAddress As Byte, ByVal StartAddress As Integer, ByVal RegisterCount As Integer) As Long 5) FC05_ForceSingleCoil_0X(ByVal SlaveAddress As Byte, ByVal CoilAddress As Integer, ByVal OnOff As Boolean) As Long 6) FC06_PresetSingleRegister_4X(ByVal SlaveAddress As Byte, ByVal RegisterAddress As Integer, ByVal PresetData As Integer) As Long 7) FC0F_ForceMultiCoils_0X(ByVal SlaveAddress As Byte, ByVal StartAddress As Integer, ByVal CoilCount As Integer, ByRef CoilsOnOff() As Boolean) As Long 8) FC10_PresetMultiRegisters_4X(ByVal SlaveAddress As Byte, ByVal StartAddress As Integer, ByVal RegisterCount As Integer, ByRef RegistersData() As Integer) As Long 9) Function FC16_MaskWriteRegister_4X(ByVal SlaveAddress As Byte, ByVal RegisterAddress As Integer, ByVal AND_Mask As Integer, ByVal OR_Mask As Integer) As Long 此外,本控件还提供如下方法,向串口发送任意数据 10) DirectSendData(ByRef OutputData() As Byte) As Long 这可以用以发送 Modbus 协议以外的任何报文(二进制/ASCII) ,这种功能是为了便于诸如 对 Modem 的 AT 命令发送一类要求而设计的。 以上方法(函数)如运行成功,则返回一个唯一的 Transaction ID,用以控制标识对应的 Respond 报文。 如运行失败,则返回 0,表明 Query 并未成功的发往 Slave。

4/8

4. 事件的说明
作为以上各个方法(函数)运行的结果是 Modbus 的 Query 成功的发送到了 Slave, 通 常收到报文后, 对报文作出分析与处理, 都会向 Master 发送回 Response 报文,在 Master 收 到这些 Response 报文后, 本控件为调用用户生成如下事件(Event)响应,以通知用户对从 Slave Respond 回来的报文作出相应处理。 1) FC01ReadCoilStatusRespond0X ( ByVal TransactionID As Long, ByVal CommStatus As Integer, ByVal CommError As Integer, ByRef CoilsOnOff() As Boolean, ByVal CoilsCount As Integer) 2) FC02ReadInputStatusRespond1X(ByVal TransactionID As Long, ByVal CommStatus As Integer, ByVal CommError As Integer, ByRef InputData() As Boolean, ByVal InputsCount As Integer) 3) FC03ReadHoldingRegisterRespond4X(ByVal TransactionID As Long, ByVal CommStatus As Integer, ByVal CommError As Integer, ByRef RegisterData() As Integer, ByVal RegistersCount As Integer) 4) FC04ReadInputRegisterRespond3X(ByVal TransactionID As Long, ByVal CommStatus As Integer, ByVal CommError As Integer, ByRef RegisterData() As Integer, ByVal RegistersCount As Integer) 5) FC05ForceSingleCoilRespond0X(ByVal TransactionID As Long, ByVal CommStatus As Integer, ByVal CommError As Integer) 6) FC06PresetSingleRegisterRespond4X(ByVal TransactionID CommStatus As Integer, ByVal CommError As Integer) As Long, ByVal

7) FC0FForceMultiCoilsRespond0X(ByVal TransactionID As Long, ByVal CommStatus As Integer, ByVal CommError As Integer) 8) FC10PresetMultiRegistersRespond4X(ByVal TransactionID CommStatus As Integer, ByVal CommError As Integer) 9) FC16MaskWriteRegisterRespond4X(ByVal TransactionID CommStatus As Integer, ByVal CommError As Integer) As Long, ByVal

As

Long,

ByVal

10) DirectSendDataRespond(ByVal TransactionID As Long, ByVal CommStatus As Integer, ByVal CommError As Integer, ByRef InputData() As Byte, ByVal InputByteCount As Integer) 此外,当串口发生任何接收错误时,都发生如下事件(Event): CommPortEventError(ByVal TransactionID, ByVal CommStatus As Integer, ByVal
5/8

CommError As Integer) 以上各个事件发生时, Slave 返回的数据与相应的通信状态码分别从相应的参数中返回结 从 果。 以上各个事件中, TransactionID 为返回相应的方法 (函数) 调用时所生成的 Transaction ID, 这是一个用以对每一次 Modbus Master 和 Slave 之间对话所定义的唯一性的标识。当 Modbus Master 重复使用同一个 Function Code 访问不同的数据时,TransactionID 为用户 提供一种方便的 Query->Respond 的标识控制。在大多数情况下,用户对运用本控件与 Modbus Slave 进行数据通信,TransactionID 是可以忽略的。

5.状态诊断说明
CommStatus 说明如下: Public Const mbIdle = 0: 表示串口处于空闲状态 Public Const mbComError = 1000: 表示串口发生错误 Public Const mbServiceOK = 2000: 表示 Modbus 对话正常,Query 发出后被 Slave 正确接受处理,并发回了正确的 Respond. Public Const mbServiceAct = 200: 表示 Modbus 通信(对话)忙,即当一个 Query 发出后,Modbus Master 正在等待 Slave 的 Respond。 Public Const mbServiceRetry = 2002: 表示 Modbus 通信 (对话) 正在重试上一个 Query, Modbus Master 可能由于收到数据的 CRC 校验错误,正与 Slave 重试上次的 Query,控件 内部定义最大重试次数为 5 次。 Public Const mbCRCError = 2003: 表示 Modbus 通信(对话)出现 CRC 错误。对话 经过多次重试之后,由于发生 CRC 校验错误而被 Modbus Master 放弃。 Public Const mbTimeOut = 2010: 表示 Modbus 通信(对话)出现超时错误,即 Modbus Master 发送出 Query 之后在定义的超时等待时间内未收到来自 Slave 的 Respond, 对话被 Modbus Master 放弃。 CommError 说明如下: 0: 无错误 comEventBreak 1001: 接收到一个中断信号。 comEventCTSTO 1002: Clear To Send 超时。在系统规定时间内传输一个字符时, Clear To Send 线为低电平。 comEventDSRTO 1003: Data Set Ready 超时。在系统规定时间内传输一个字符 时,Data Set Ready 线为低电平。 ComEventFrame 1004: 帧错误。硬件检测到一帧错误。 ComEventOverrun 1006: 端口超速。没有在下一个字符到达之前从硬件读取字符, 该字符丢失。 ComEventCDTO 1007: 载波检测超时。 在系统规定时间内传输一个字符时, Carrier Detect 线为低电平。Carrier Detect 也称为 Receive Line Signal Detect (RLSD)。 ComEventRxOver 1008: 接受缓冲区溢出。接收缓冲区没有空间。 ComEventRxParity 1009: 奇偶校验。硬件检测到奇偶校验错误 ComEventTxFull 1010: 传输缓冲区已满。传输字符时传输缓冲区已满
6/8

ComEventDCB

1011:

检索端口的设备控制块 (DCB) 时的意外错误

ComEvSend 1: 在传输缓冲区中有比 Sthreshold 数少的字符。 ComEvReceive 2: 收到 Rthreshold 个字符。该事件将持续产生直到用 Input 属性从接收缓冲区中删除数据。 ComEvCTS 3: Clear To Send 线的状态发生变化。 ComEvDSR 4: Data Set Ready 线的状态发生变化。该事件只在 DST 从 1 变到 0 时才发生。 ComEvCD 5: Carrier Detect 线的状态发生变化。 ComEvRing 6: 检测到振铃信号。一些 UART(通用异步接收— 传输)可 能不支持该事件。 ComEvEOF 7: 收到文件结束(ASCII 字符为 26)字符。

6.控件的注册授权
感谢网友的长久支持,自本控件的 V1.00 版本以免费软件的形式在网上发布以来,本 人陆续收到了许多网友下载后的技术问询, 许多朋友对控件的接口功能还提出了宝贵的改进 意见,为促进该控件的后续改进,功能不断完善,同时对使用者提供更有保障的技术支持, 本人计划陆续推出该控件的后续版本, 并从 V2.00 开始, 对该控件的下载使用启动注册收费 机制。 在控件下载到用户计算机中初次使用时, 控件的 RegInsCode 属性会自动生成一个通常 为 10 位数的控件安装标识代码,如下图所示:

此时如运控件,控件为未经注册状态,仅允许用户实例试用运行约 5 分钟,运行之前, 控件会自动弹出信息框“控件未注册,运行限时”的提示,并在随后的“Abou”窗口中显 示控件的“关于信息”和“注册信息” 。当控件运行时间至 5 分钟时限时,在用户调用控件 的方法时,有“控件未注册,运行限时到! ”提示信息自动弹出,并随后自动关闭当前控件 所打开的串口,用户此后将无法再次对该串口数据进行读写操作。要想再度试用该控件,必 须推出该应用程序并再次启动,此时,再度开始又一轮 5 分钟的限时试用。
7/8

为获得对该控件无限制的使用, 用户必须付费对该控件进行注册, 注册的方法很简单, 用户只需记下上述 RegInsCode 中的控件安装标识码,并至电我公司 021-64416768, 64411698,将 RegInsCode 提交后,可获得注册后的钥匙码(RegKeyCode) ,如下图所示:

用户在将 RegKeyCode 正确无误地输入到控件的属性窗体之后,运行该控件,即可获 得注册授权,无限制地使用该控件。 当控件在 RegKeyCode 空白缺失,或是录入不正确的情况下运行时,均为未注册限时 试用状态。

8/8


相关文章:
Modbus协议手册
Modbus协议手册_信息与通信_工程科技_专业资料。Modbus协议手册第一章 Modbus 协议...数据区的内容数据区有 2 个 16 进制的数据位,数据范围为 00-FF(16 进制),...
7200JA MODBUS 应用手册 v02
7200JA MODBUS 应用手册 v02_信息与通信_工程科技_专业资料。teco?...科隆流量计modbus通讯手... 10页 免费 Modbus ActiveX控件2.00... 8页 免费...
MODBUS手册-中文版_VER_D
{ 0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,...24页 2下载券 modbus用户手册 39页 7下载券喜欢此文档的还喜欢 ...
modbus poll 测试手册
modbus poll 测试手册_信息与通信_工程科技_专业资料。modbus poll 测试手册 第一步: 设置 IP 地址和端口号。 第 2 步: 设置显示数据对应的 modbus 地址: 第...
三相并网逆变器用户手册v2.00
三相并网逆变器用户手册v2.00_电子/电路_工程科技_专业资料。三相逆变器 用户指南...7 通信协议三相逆变器采用 MODBUS 通信协议,数据解析按照研旭自主定义方式。 串...
西门子s7-200编程手册
使用Modbus协议库 12 使用配方13 使用数据归档14 PID自整定和PID整定控制面板...I接口主站手册(英文) 6GK7 243--2AX00--8BA0 SIMATIC NET CP 243--1工业...
ADAM-4117模块使用手册
(例如波特率、 数据位等) Step 2 一般情况下,无需更改弹出窗口的 Starting ...更加详细的 MODBUS 地址对照表参见 ADAM-4100 系列的英文手册Modbus 协议读...
东元7200MA MODBUS 应用手册
1/2 相关文档推荐 7200MA MODBUS通讯手册_... 29页 1下载券 东元7200MA...00H 00H B8H 44H CRC-16 回應訊息 (錯誤) Slave 位址 80H+功能碼 錯誤...
MODBUS_IO扩展模块使用手册
MODBUS_IO扩展模块使用手册_计算机硬件及网络_IT/....打开软件 GACS VER V0.2 1.COM 口设置 ...此时方能够修改配置信息) 连接后完成配置控件可用。 ...
MODBUS与高速指令说明手册
MODBUS与高速指令说明手册_电子/电路_工程科技_专业资料。MODBUSMODBUS...6D00H~6DFFH 6F00H~6FFFH Modbus 地址(16 进制) 1000H~2F3FH 3000H~3...
更多相关标签:
activex控件 | activex控件下载 | activex控件官方下载 | ie阻止activex控件 | activex控件下载安装 | activex控件被阻止 | ie activex控件 设置 | 安装activex控件 |