骞、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