骞、l  訇  似 
基于Modbus/TCP协议 台达PLC与上位机 
VB软件之 问的通信 
The com m unication based on M odbus/TC P protocol betw een delta PLC 
and lPC V B Program  
· 
樊新 乾 ,潘 存海 
FAN Xin.qian.PAN Cun—hai 
(天津科技大学 机械工程学院 。天津 300222) 
摘 要 : 在VB(Visual Basic)编程环 境下 ,通过 调用 Windows API函数 ,设计 了整合 串 口通信和 
工 业以太 网通 信的 监控 系统 通信方 案 。并介 绍了ModbuS协 议和 M0dbus/TcP协议 及其 通 
信原 理 ,提 出了应 用于 工业 现场设 备监 控 的设计 方案 ,实现 了上位机 对现 场设 备的 实时 监 
控 。提 高了上 位机 监控 程序 的开发 效率 。实 践证 明 ,本监 控系 统性 能稳定 ,能 够满足 本项 
目监 控系统 的设计 要求 。 
关键 词 : 工业控制系统 ;MOdbUS协议 ;MOdbus/TCP协议 ;Ethernet;PLC;API函数 
中图分类号 :TP277 
文献标识码 :A 
文章编号 :1 009-01 34(2ol 2)1 0(下)一0033—04 
Doi:1 0.3969/J.issn.1 009-01 34.201 2.1 O(下 ).1 0 
0 引言 
在 工 业 控 制 中 ,基 于 PLC控 制 的 工 程 在 上 / 
下 位 机 通 讯 上 普 遍 采 用 RS-232/RS一485串 口或 者 
Ethemet通 信 模 块 进 行 通 讯 。 串 行 通 信 是 工 业 控 
制 领 域 应 用 最 为 广 泛 的 通 信 方 式 , 它 的数 据 和 控 
制信 息 是逐 位 地 传送 出去 ,因此 对于 数 据 量较 大 , 
通 讯 距 离 较 远 ,实 时性 要 求高 的 控 制 系 统 ,很 难 
满足 通讯 需要 J。近 年 来 ,工 业 以太 网得到 了快 速 
网 络 控 件 对 编 程 人 员 的 限 制 。使 得 程 序 开 发人 员 
不 用 过 多 关 注 通 信 控 件 的 属 性 设 计 ,把 更 多 的精 
力 放 到 监 控 界 面 的开 发 上 来 。最 后 ,本 文 以 台达 
DVPEN0l—SL模 块 为 Ethemet通 信 载 体 , 以 及 工 
控机 自带 的 COM 口为 串行通 信载体 ,设计 了 PLC 
与上 位机 串行与 Ethemet整 合通 信 的解决 方案 ,为 
工 业 现 场 用 户 提 供 更 多 的 通 信 选择 方 式 ,简化 了 
上 位 机 监 控 界 面 的编 制 过 程 ,提 高 了 工 业 通 信 的 
发 展 ,越 来越 多 的 受 到 工 业 控 制 用 户 的 青 睐 ,其 
可 靠性 与准 确性 。 
稳 定 性 、 准确 性 和 实 时性 的 特 点 ,广 泛 应 用 于 电 
1  Modbus以及Modbus/TCP协议 
力 、 水 利 、冶 金 、化 工 、机 械 和 制 造 业 等控 制 系 
统 【2J。 由此产 生 了人机 界 面 及 各种 组 态 软 件 产 品 , 
这 些 产 品 的 出现 简 化 了对 PLC的控 制和 操 作 ,使 
PLC的 应 用 更 加 方 便 。 但 也 有其 共 同的 缺 点 ,价 
格 普 遍 偏 高 和 可 二 次 开 发 性 较 差  。基 于 Visual 
Basic (VB)平 台 的上 位 机 监 控 界 面 的设 计 ,克 服 
了 以上 缺 点 , 受 到 越 来 越 多 工 业 用 户 的 关 注 ]。 
ModbUS是 一种 应 用层 报文 传输 协 议 ,ModbUS 
报 文 传 输 服 务 提 供 设 备 之 间 的 客 户 机 /服 务 器 
通 信 ,而 这 些 设 备 联 接 在 一 个 以太 网 上 ,信 息 
传 递 分 4类 报 文 :Modbus请 求 、Modbus证 实 、 
Modbus指 示 和 Modbus响 应 。Modbus请 求 是 
服 务 器 在 网 络 上 发 送 用 来 启 动 事 务 处理 的 报 文 ; 
Modbus指示 是客 户机 接 收 的请求 报文 ;Modbus响 
然 而 利用 Visual Basic (VB)自身 的 串 口通 信 控 件 
应 是 客 户 机 发 送 的 响 应 报文 ;Modbus证 实 是 服 务 
与 网 络 控 件 进 行 上 位 机 监 控 程 序 的 设 计 ,由 于 控 
件 的 局 限 性 ,程 序 开 发 难 度 较 大 。 由此 ,本 文 通 
过 深 入 研 究 Windows API函数 的 结 构 ,通 过 调 用 
M odbus 
服 务器  
Windows API函数 ,设 计 出一 种 可 同时 进 行 串 行 
通 信 与 Ethemet通信 的 解决 方案 ,大 大提 高 了上 位 
机 监 控 软 件 的 开 发 效 率 ,打 破 了 串 行通 信 控 件 与 
请求 
//1 
r、\ 
指示 >  
Modbus 
客 户机  
<  
证 实 
响应 
、\J 
图 1  M odbus报 文 类 型  
收稿 日期:2012—06-05 
作者简介:樊新乾 (1986一),男,河北 邢台人 ,硕士研究生 ,研究方 向为机 电装备集成及 其 自动化 。 
第34卷 第 1O期 2012—10(下)  【33】 
学兔兔 www.xuetutu.com
I  訇  化 
器 接 收的 响应报 文  。如图 1所示 。 
(动 作 )。API函数是 构筑 整个 Windows框 架的基 础 。 
Modbus/TCP协 议 是 ModbUS家 族 中 应 用 于 自 
在 API函数 下 面 是 Windows操 作 系统 核 心 ,而 它 
动 控 制 装 置 上 的开 放 的 通 讯 协 议 ,用 于 实 现 不 同 
的 上 面则 是 华 丽 的 Windows系统 的 操作 界面 和 各 
类 型 的总 线或 网络 连 接 的设 备 之 间 的 c/s(客户 机 
种 应用程 序 。Windows系统 结构 如 图 3所 示 。 
/服 务 器 )通 信 ,通 过 通 用 的 网 络 部 件 在 Intranet/ 
Visual Basic (VB)就 是 Windows平 台上 优 秀 
Internet上 传 输 。物 理层 和数 据 链路 层 是 标 准 的 以 
的 可视 化编 程 应 用程 序 ,其 主要 特 点为 操 作 简单 , 
太 网协 议 ,网 际层 是标 准 的 IP协 议 ,传 输 层 是标 
界 面 友 好 ,所 见 即所 得 。 提 供 了 大量 的 类库 和 控 
准 的 TCP协 议 ,应 用 层 嵌 入 Modbus协 议 。其 网 
件 (这 些 类 库 或 控 件 就 是 对 API函数 封 装 的 结 
络 结构如 图 2所示 。 
M odbus协 议 
应用 层  
jI 
Modbus/TCP协 议 
jf 
TCP 协 议 
传 输 层 
jf 
IP协 议 
网 络 层 
j} 
Ethem et 
物 理 层 
图 2  Modbus/TCP协 议 网 络 结 构 模 型 
2  W indows APl函数 
API函数  (全 称 为 Application Programming 
Interface)也称 为 应用程 序编 程接 口,Windows API 
顾 名 思 义就 是 Windows平 台 下 的 应用 程 序 编 程 接 
口。 它是 操 作 系统 预 留给 应 用 程 序 的 一个 调 用接 
口 ,应 用程序 可通 过调 用操 作 系统提 供的 相关 API 
函数 来 使 操 作 系统 使 用 应用 程 序 区执 行 一 些 命 令 
W indows应 用 程 序 
Windows API函数  
(应用程序接 口) 
Windows操 作 系统  
底 层 
图3  Windows结构  
134]  第 34卷 第 1O期 2012—10(下 ) 
果 ), 例 如 MSComm (Microsoft Communications 
Contro1)控 件 和 Winsock控 件 , 它 们 替 代 了 API 
函数 。 但 是 它们 的应 用 具 有 一 定 的局 限 性 ,编 程 
人 员需 要 花 很 大 精 力 来设 计 控 件 的各 个 属 性 。 因 
此我 们 可 以在 Visual Basic (VB)中调 用 自主 开 发 
的 API函数 的 集 合 ,省 略 掉 上 位 机 监 控 程 序 中通 
信 控 件 的属 性 设 计 ,简 化 成 为 简 单 地 函 数 调 用 过 
程 ,可 大大 提高程 序 开发效 率 ,拓展 更 多的功 能 。 
DMT 函 式 库 就 是 以 Windows Winsock 
API(WSA)为 开 发 基 础 的 API函数 的 集 合 。 用 来 
开 发 支持 以 Modbus格 式 连结 的工 业产 品 ,开发 者 
可 以通 过 汇 入 函式 库 的 方 式 来连 结 串行 口及 工 业 
Ethemet的通 讯 。DMT函式 库 提 供 标 准 C/C++动 
态 及 静 态连 结 方 式 ,并 支 持 Microsoft Visual C++/ 
Visual Basic、Borland C++Builder等软体 开发 环境 。 
其协 议堆 叠 图如 图 4所 示 。 
DM T Library 
W in32 Socket communication API 
图4 协 议 堆 叠 图 
3 通讯模块 以及PLC主机 
本 系 统 所 应 用 的 Ethernet通 信 模 块 为 台 
达 DVPEN01一SL,PLC 主 机 为 DVP32EH—L。 
DVPEN01-SL是 台达 系 列 产 品 Ethernet通 讯 模 块 
[7],支 持 Modbus/TCP通 讯 协 议 ,可 使 用 图 控 软 
件 或 人 机 界 面 ,做 远 程 的 监 控 。DVPEN01一SL也 
可 以 作 为 Modbus/TCP的 主 端 , 可 发 送 Modbus/ 
TCP指令 ,控 制 周边设 备 。 另外 在 MDI/MDI—X 自 
动 检 测 功 能 下 ,在 选 择 网络 线 时 不 需 跳 线 。 通 过 
DVPEN01 SL Ethernet通 讯 模 块 ,可 实 现 上 位 计 
算 机 与 PLC主 机 的通 信 。D 而 串 口通 信 则 可 通 过 
DB9转 8针 圆头 RS一232串 口线 缆 直 接 连 接 PLC 
与上 位 机 。 由于 篇 幅 所 限 ,DVPEN01一SL的 具 体 
学兔兔 www.xuetutu.com
设 置 以及 PLC主 机 的程 序 设 计 在 此 就 不 再 赘 述 。 
STOP。程序 编 写过程 如 下 : 
系统硬 件 连接 方式 如 图 5所示 。 
首先 声 明 WIN32 API函数 
DVPENO1 
DVP—PLC 
Private Declare Function inet
addr Lib”wsock32. 
—
PC  l 薹 睡 l 
目 … 圈 一: 爨嚣:‘ .量 i 
鲁目目吕窖、、  … 
—j{ 
dll”(ByVal S As String)As Long。 
4.1 Modbus串行通信过程 
1)设 定通信 参数 
ComString=”0C30FF00”
0C30为 地 址 , 
FF00为 传 送数 据 
图 5 硬 件 连 接 示 意 图 
conn
— num=Clnt(Mid(ComString,4,Len(ComStri 
4 监控 程序的编 写 
ng)))  取得 串行 口号 ,COM 1 
parity=AscB(”E”、 
我们 通过 VB6.0,编写 上 位机 监控 程序 人机 交 
parity1=AscB(”N”、 
互 界 面 。在 VB6.0中 使 用 DMT2.0函式 库 , 必 须 
com m
_
type  0: 
通 讯类 型 O:串行 通 信 
首先 汇入 模块 (module),步骤 如 下 。 
datalen= 4 
请 求数 据长 度 
1)将 DM bas添 加进 项 目。 
2)开 启 串行通 信 
2)复 制 DMT.dll到项 目目录 下 。如 图 6所 示 。 
Ifmode= 0Then 
Call OpenModbusSerial(conn—ilum,9600,7, 
【叠 暇 墨墨翻—  誓翟曩孵l叠 
翱 
妻雾_  ll  |l  0◆  0 
parity,1,mode+ 1) 
Else 
日. 怠;Pr ojecll但m ple_vb.vbp) 
8 …甓想 Fo雌  
· -  Forml  蹦 唧le-vb.蜥  
白…圆 Mo dtfle巷 
~ 
. 
■髓蕊啊圈睡曙舶 瓣  
…
 
Call OpenModbusSerial(conn—
num ,9600,8, 
padty1,1,mode+ 1) 
3)数据 存取 
Modbus数 据请 求 
Call RequestData(comm_type,conn—hum,slav_
 
addr,func
_ code,sendbuf(0),datalen) 
Modbus数据 回复 
rlen  ResponseData(comm—
type,conn
—
nu m , 
slav
addr
ret,func
_
_
_
code
— ret,recvbuf(0)) 
图 6 模 块 汇 入  
Fori= 0To rlen.1 
在 台达 PLC 中 【8],M 1072为特 殊辅 助寄 存器 , 
M 1072标志 设置 为 0N,可使 主程 序为 RUN 状 态 , 
以 下 按 照 DMT2.0函式 库 使 用 步 骤 ,并 以 此 为 范 
例 ,来 说 明 上 位 机 监 控 界 面 代 码 的 设 计 。如 图 7 
所示 。 
Auto/M anu 开 关 
通 讯 
Call HEX to ASCI(recvbuf(i),ASC) 
RecvString:RecvString& Chr(ASC(O))& 
Chr(ASC(1)) 
N exti 
4)关 闭通讯 Call CloseSerial(conn .hum) 
4.2 Modbus,1-CP通 信 过程 
1)设 定通 信 参数 
conn
_ num O;
PLC站号 为 0 
rem ote
—
addrl= inet
_ addr(”192.168.0.4”) 
图 7 寄 存 器 动 作 示 意 图 
PEN01一SL的 IP地址 设 置为 192.168.0.4 
以 Modbus功 能 码 0x05写 入 单 一 线 圈 M 1072 
为 例 ,其 Modbus起 始 位 址 0C30,设 定 线 圈状 态 
为 FF00,PLC主 程 序 为 RUN ,若 设 定 0000则 为 
2)开 启通 信 
Call OpenM odbusTCPSocket(conn num, 
rem ote
_ addr) 
【下转第45页】 
第34卷 第 1O期 2012—10(下 )  [351 
学兔兔 www.xuetutu.com
、I泣  匐  化 
2)至 下 而 上 的 投 入 系统 ,可 有 利 于 过 程 知 识 
机 集成 制 造 技 术 和 系统 【M】,北 京 :兵 器 工 业 出版 社 ,1991. 
的积 累 ,并可 对专 家知 识库 不 断验 证 。 
3)生 产 工 艺 人 员 尽 早地 参 与 系统 投 运 ,尽 早 
地 做 好现 场 人 员 与 维修 人 员 的 培 训 ,可 使 系统 更 
快 地 被 使 用 者 接 受 , 同时 也 有利 于 对 开 发过 程 中 
出现 的偏 差进 行纠 正 。 
参考文献 : 
l1]Ulrich Rein Bold,Chritian Blume,Ruediger Dillmam,计 算 
【2】张 兵 等 ,时 间最 短 控 制 问 题 求 解 的分 级 优 化 策 略 fJ1,华 
东 理 工 大 学 学 报 ,2007—02(Vo133):100—103. 
[3】 蔡 自兴 ,智 能 控 制一基 础 与 应 用 [M】,北 京 :国 防工 业 出 版 
社 ,1998. 
[4】 朱 晓 青 ,过 程 检 测控 制 技 术 与 应 用 [M】,北 京 :冶 金 工 业 
出 版 社 ,2002. 
[5】蔡 自兴,智能 控制 [MI,北京:电子工业 出版社,1993. 
[6】铅 锌 冶 金 学 编 委 会 ,铅 锌 冶 金 学 [M】,科 学 出版 社 ,2003. 
蠡I  岛‘ {岛●  蠡‘  蠡‘  岛‘  如}  矗‘  盘‘  岛‘ {岛‘  岛‘  出  岛‘  岛‘  出‘ j岛I  矗}  重‘  岛I  蠡●  矗●  岛‘  岛I 
【上接第35页】 
3)数 据存 取 
请求 数据 Call RequestData(idx,conn num,slav_ 
addr
_
s,func
_
code
_ s,sendbuf(O),4) 
应 答数 据 If(ReadSelect(conn_num,1 00))Then 
rlen: ResponseData(idx,conn— 
num ,slava ddrr ,func
_
code
_ r,recvbuf(0)) 
EndIf 
Fori= 0To rlen l 
Call HEX to ASCI(recvbuf(i), 
ASC) 
R ecVString = R ecVString &  
Chr(ASC(O))& Chr(ASC(1)) 
Nexti 
4)关 闭通 信 Call CloseSocket(conn__num) 
5 监控界面简介 
6 结 论 
为 了对 工 业设 备 进 行实 时 有效 的管 理 与监 控 , 
完 善 的兼 容 性 ,可 靠 的稳 定 性 ,对 恶 劣 环 境 的适 
应 性 ,强 大 的 冗余 能 力 和 方便 的 可 管理 性 , 是人 
们 越 来 越 多 地 在 Visual Basic (VB)平 台下 开 发上 
位 机 监控 程 序 的设 计 的 原 因 ,而 这 也 势 必 成 为本 
文 所 述 通 信 方 案 在越 来 越 多 的工 业 控 制 网络 环 境 
里 大 显 身 手 的重 要 契机 。本 方 案 的提 出成 功 的整 
合 了串 口通 信 与 Ethernet通 信 ,使 得 上位机 监 控程 
序 的开 发 更 为 简单 和 方便 ,程 序 员从 繁 杂 的 通 信 
控 件 设 计 编 程 工 作 中 解 放 出 来 ,也 为 工 业 现 场 实 
现 冗余 设 计 以及 应 急通 信 方面 提 供 了 安全 可 靠 的 
方 案 ,应 用 前 景 广 泛 。本 文 所 述 程 序 已成 功 应 用 
于 台达 PLC运动 控 制 系统 的 监控 界 面 部 分 中 ,实 
验 证 明 ,该程 序安 全 可靠 ,运 行正 常稳 定 。 
本 监 控 系统 主 要 包 括 通 信 模 式 选择 ,PLC运 
参考文献 : 
行 指 示 ,x 轴 运 动 监 控 ,Y 轴 运 动 监 控 , 输 入 运 
行 监 控 ,以 及 报 错 信 息 界 面 ,能够 满 足 本 项 目的 
[1】张 辉 ,李 荣 利 ,王 和 平 .Visual Basic串 口通 信 及 编 程 实 例 
IM I.北 京 :化 学 工 业 出 版社 ,201 1. 
基 本调 试运 行 要求 。程 序运 行界 面如 图 8所示 。 
【2】关 学 进 ,刘 娟 .基 于M odbus/TCP工 业 以太 网 的 自动 化 控 
制 系统 [J].电子 测试 ,201l(4):4-8. 
[3】冯 冬芹,金建祥 ,褚健 等.工业 以太 网关键技 术初探 [J】. 
信 息 与控 制 ,2003,32(3):219—224. 
[4】魏 庆 福 .现 场 总 线 技 术 发 展 的新 动 向 [J】.工 业 控 制 计 算 
机 ,2000(1):1 1-12. 
[5】霍 恒 裕 .一 种 M odbus/TCP工 业 以 太 网 协 议 的 结 构 [J】. 
Computer Knowledge And Technology电 脑 知 识 与技 术 , 
2008(4):855—856. 
【61 杨 本 伦 ,等 .Visual Basic开 发 技 术 大 全 IM I.北 京 :清 华 大 
学 出版 社 ,2010. 
【7】 台达 DVPEN01一SL Ethernet通 讯 模 块 操 作 手 册 . 
图 8 监 控 程 序 运 行 界 面 
[81 DVP—PLC应 用 技 术 手 册 . 
第34卷 第1O期 2012—10(下 )  [451 
学兔兔 www.xuetutu.com