简介:这份资源是 Wonderware Intouch 的 Modbus TCP 通信驱动 DASMBTCP1.1,面向工业自动化领域的 HMI 组态工程师、PLC 调试人员及工控学习者,用于打通 Intouch 可视化软件与支持 Modbus TCP 协议的 PLC、仪表等设备之间的数据交互,解决以太网环境下实时读写寄存器、采集模拟量与数字量的问题。压缩包共 129 个文件,约 10.9MB,以 66 个 dll 动态库和 21 个 exe 可执行程序为核心,辅以 12 个 chm 帮助文档、6 个 pdf 手册、5 个 hlp 及 cnt、msc、msi 等安装与配置文件,涵盖驱动安装、DAServer 管理、日志查看与用户权限等模块。目前已有 2630 人学习下载。借助其中的配置说明与帮助文档,读者可完成数据源创建、IP 与端口设置、数据点映射及断线重连等排错思路,适合需要快速搭建 Intouch 与 Modbus TCP 设备通信环境的工程师参考。
1. 装 DASMBTCP 之前,先把版本和授权这两笔账算清楚
很多人第一次接触 Intouch 的 Modbus 通信,都是被现场逼出来的。PLC 那边数据跑得好好的,上位机 Intouch 就是读不上来,一查发现缺的不是网线也不是 IP,而是中间那个叫 DASMBTCP 的驱动没装对。DASMBTCP 全称是 Modbus TCP/IP DAServer,是 Wonderware(现在归 AVEVA)体系里专门负责 Intouch 与 Modbus TCP 设备之间数据搬运的组件。听起来简单,但版本选错、授权没配、DAServer 起不来,这三件事随便中一个,现场就能耗掉你一整天。这篇笔记面向的是需要在工控环境里把 Intouch 和 Modbus TCP 设备打通的人,不管你是刚接手项目的新手,还是换过好几个现场的老手,下面这套流程和踩坑记录应该都能省你点时间。
2. 环境准备与版本选择:DASMBTCP 1.1 到底该配什么
2.1 先搞清楚 DASMBTCP 1.1 的定位和依赖关系
DASMBTCP 1.1 不是一个独立运行的软件,它是挂在 ArchestrA 架构下面的一个 DAServer 实例。你可以把它理解成 Intouch 和 Modbus 设备之间的翻译官:Intouch 通过 SuiteLink 或 OPC 跟 DAServer 说话,DAServer 再把请求翻译成 Modbus TCP 帧发给 PLC 或仪表。所以装之前必须确认三件事:Intouch 版本、DAServer 框架版本、以及操作系统位数。
我一般会先确认 Intouch 的版本号。DASMBTCP 1.1 通常配套的是 Intouch 10.0 到 2014 R2 这个区间的版本,如果你用的是更新的系统比如 Intouch 2020 或 AVEVA 的 OMI,那 DASMBTCP 可能已经被整合进新的通信驱动体系里了,不一定还叫这个名字。这一点在动手之前一定要跟项目里实际用的 Intouch 版本对齐,否则装完了发现 Intouch 根本不认这个 DAServer,白忙一场。
操作系统方面,DASMBTCP 1.1 是 32 位时代的产物,在 64 位 Windows 上跑是没问题的,但它依赖的一些组件比如 DA Server Toolkit 和 Wonderware 的 Common Components 需要按 32 位兼容模式安装。我遇到过在 Windows Server 2016 上装完 DAServer 管理器打不开的情况,后来发现是 .NET Framework 3.5 没启用,这个在后面避坑章节会细说。
2.2 安装前的环境清单和检查步骤
在正式跑安装程序之前,我习惯先把下面这张清单过一遍。这不是官方文档里的标准流程,是我自己踩过几次坑之后固定下来的动作:
| 检查项 | 要求 | 怎么确认 |
|---|---|---|
| Intouch 版本 | 10.0 / 2012 R2 / 2014 R2 等 | 打开 Intouch 关于对话框看版本号 |
| 操作系统 | Windows 7 SP1 / Server 2008 R2 及以上 | winver 命令 |
| .NET Framework | 3.5 SP1 已启用 | 控制面板→程序→启用或关闭 Windows 功能 |
| 管理员权限 | 当前账户有本地管理员组权限 | whoami /groups |
| 磁盘空间 | 至少 2GB 可用 | 资源管理器看 C 盘 |
| 防火墙 | 后续需要放行 502 端口 | 先记着,装完再配 |
确认完这些之后,还有一步容易被忽略:把 Wonderware 相关的服务先停掉。如果机器上已经装过其他 DAServer 或者 Intouch 本身在跑,安装程序可能会因为文件占用而报错。我一般会打开服务管理器,把以 “Wonderware” 开头的服务全部停掉,装完再启动。
# 以管理员身份打开 cmd,批量停止 Wonderware 相关服务 net stop "Wonderware SuiteLink" net stop "Wonderware DAServer Manager" net stop "ArchestrA Service"这几条命令的作用是把可能占用文件的服务的停掉。注意服务名可能因版本略有差异,如果提示服务名无效,去服务管理器里看实际显示名称。停完之后不要急着重启,等安装完成再统一启动。
2.3 DASMBTCP 1.1 安装包的结构和安装顺序
DASMBTCP 1.1 的安装包通常是一个自解压的 exe,或者是一个包含 setup.exe 的文件夹。解压之后你会看到类似这样的结构:
DASMBTCP_1.1/ ├── setup.exe ├── DA Server Toolkit/ ├── DASMBTCP/ └── readme.txt安装顺序很重要:先装 DA Server Toolkit,再装 DASMBTCP 本体。DA Server Toolkit 提供了 DAServer 运行所需的底层框架和配置工具,如果跳过这一步直接装 DASMBTCP,安装程序可能会提示缺少依赖,或者装完了 DAServer Manager 里根本看不到 Modbus TCP 的节点。
# 进入解压目录,先安装 DA Server Toolkit cd D:\Install\DASMBTCP_1.1\DA Server Toolkit setup.exe /s /v"/qn" # 再安装 DASMBTCP 本体 cd D:\Install\DASMBTCP_1.1\DASMBTCP setup.exe /s /v"/qn"上面的/s /v"/qn"是静默安装参数,适合批量部署或者不想一路点下一步的场景。如果是第一次装,我建议还是用图形界面跑一遍,能看到每一步装了什么,出错了也容易定位。静默安装的好处是快,坏处是出错了没有任何提示,只会在事件查看器里留记录。
装完之后需要重启一次机器,这不是可选项。DAServer 的某些组件需要注册到系统里,重启之后才能正常加载。重启完打开 DAServer Manager,应该能在左侧树里看到 “ModbusTCP” 或者类似的节点,这就说明框架和驱动都装上了。
3. 配置 DASMBTCP:从 DAServer Manager 到 Intouch 访问名
3.1 在 DAServer Manager 里创建 Modbus TCP 端口和设备
装好之后第一件事是打开 DAServer Manager。这个工具一般在开始菜单的 Wonderware 文件夹里,或者直接运行DAServerManager.exe。打开之后左侧是一棵树,根节点是 “ArchestrA”,展开之后应该能看到你刚装的 DASMBTCP 实例。
右键点击 DASMBTCP 节点,选择 “Add Port”,这里要填的是 Modbus TCP 的端口号。标准 Modbus TCP 用的是 502,但有些设备厂商会改成别的端口,比如 503 或 1502。这个端口号必须跟 PLC 或仪表那边设置的完全一致,差一个数字都通不了。
<!-- DASMBTCP 端口配置示例,实际在 GUI 里填 --> <Port> <Name>PLC_Port</Name> <PortNumber>502</PortNumber> <Protocol>TCP</Protocol> <Timeout>3000</Timeout> <RetryCount>3</RetryCount> </Port>上面这段 XML 只是帮你理解配置项的结构,实际在 DAServer Manager 里是通过对话框填的。几个关键参数的含义:PortNumber 就是 Modbus TCP 端口,Timeout 是单次请求的超时时间,单位毫秒,3000 表示 3 秒;RetryCount 是失败重试次数,一般设 2 到 3 次,设太多会导致通信卡顿。
端口建好之后,在端口下面 “Add Device”,这里要填设备的 IP 地址和从站号。Modbus TCP 虽然走的是以太网,但协议里仍然保留了单元标识符(Unit ID),有些设备要求填 1,有些填 0 或 255,这个必须查设备手册。我遇到过填错 Unit ID 导致读不到数据的情况,现象是 DAServer 日志里显示连接成功但所有点位都是坏值,查了半天才发现是单元标识符不对。
3.2 配置数据项和 Intouch 访问名
设备建好之后,下一步是定义要读写的 Modbus 寄存器地址。DASMBTCP 里叫 “Item”,每个 Item 对应一个 Modbus 地址。Modbus 地址的格式通常是五位或六位,比如 40001 表示保持寄存器第一个字,10001 表示输入状态第一个位。在 DASMBTCP 里填的时候要注意去掉前面的功能码前缀,只填偏移量,或者按驱动要求的格式填。
我一般会先在 DAServer Manager 里建几个测试 Item,确认能读到数据之后再去 Intouch 里批量建点。测试 Item 的地址选一个你知道肯定有值的,比如 PLC 里的系统时钟寄存器或者一个固定的模拟量。
# 用 Modbus 调试工具先确认设备能通,再配 DAServer # 比如 modbus_cli 或 Modbus Poll 之类的工具 modbus_cli --ip 192.168.1.10 --port 502 --unit 1 --read-holding 0 --count 10上面这条命令是用第三方工具先验证设备本身的 Modbus TCP 接口是通的。这一步很关键,如果设备本身就不响应,那 DASMBTCP 怎么配都没用。确认设备通了之后,再回到 DAServer Manager 里配 Item,这样能把问题范围缩小。
Item 配好之后,打开 Intouch 的 WindowMaker,在 “访问名” 里新建一个访问名。访问名类型选 “DAServer”,然后填 DAServer 的节点名和要访问的 Item 名。节点名就是你在 DAServer Manager 里看到的那个 DASMBTCP 实例名,Item 名就是刚才建的 Item。配好之后在 Intouch 里建一个内存消息或直接绑到画面上的数值显示,看能不能读到值。
3.3 用 DAServer 日志验证通信状态
DAServer Manager 自带日志功能,在工具菜单里可以打开 “Log Viewer” 或者 “Diagnostics”。我习惯在调试阶段把日志级别调到 Debug,这样能看到每一次请求和响应的细节。日志里会显示类似这样的内容:
[ModbusTCP] Connect to 192.168.1.10:502 success [ModbusTCP] Read Holding Register addr=0 count=10 -> OK [ModbusTCP] Item PLC_Clock value=1234如果看到 “Connect failed” 或者 “Timeout”,那就说明网络层或者设备层有问题,跟 Intouch 本身没关系。如果连接成功但 Item 值是坏的,那就要检查地址格式和数据类型。DASMBTCP 支持的数据类型包括 Short、Long、Float、String 等,选错了类型读出来的值就是乱的。比如一个 32 位浮点数,你按 Short 读,只能读到一半,值肯定不对。
4. 避坑与排查:DASMBTCP 装完连不上的五种典型情况
4.1 现象:DAServer Manager 里看不到 ModbusTCP 节点
原因:DA Server Toolkit 没装或者装失败了。DASMBTCP 本体安装的时候如果检测不到 Toolkit,可能会跳过节点注册这一步,装完了管理器里就是空的。
解决:先确认 DA Server Toolkit 是否在已安装程序列表里。如果没有,单独跑一遍 Toolkit 的安装程序,装完重启,再重新安装 DASMBTCP 本体。如果 Toolkit 装了但还是看不到节点,检查一下安装日志,通常在C:\Program Files (x86)\Common Files\ArchestrA\下面有个 install.log,里面会记录注册失败的原因。
4.2 现象:DAServer 服务启动后自动停止
原因:最常见的是授权问题。DASMBTCP 1.1 需要 Wonderware 的 DAServer 授权,如果授权文件没导入或者授权过期,服务启动几秒后就会自动停掉。
解决:打开 Wonderware 的 License Manager,查看 DAServer 相关的授权项是否存在。如果没有,需要导入对应的授权文件。授权文件一般是 .lic 格式,导入之后重启 DAServer 服务。如果授权没问题但服务还是停,去看 Windows 事件查看器里的应用程序日志,通常会有具体的错误代码。
4.3 现象:Intouch 里访问名配好了但读不到值
原因:访问名里的节点名或 Item 名跟 DAServer Manager 里不一致。Intouch 对大小写和空格是敏感的,多一个空格都会导致找不到。
解决:把 DAServer Manager 里的节点名和 Item 名复制出来,粘贴到 Intouch 的访问名配置里,不要手动敲。另外确认 Intouch 的访问名类型选的是 “DAServer” 而不是 “OPC” 或其他。如果还是不行,在 Intouch 的 SMC(System Management Console)里看一下 DAServer 的状态是不是 Running。
4.4 现象:能读到部分点位,但某些地址一直显示坏值
原因:Modbus 地址格式或数据类型不对。DASMBTCP 对地址的解析方式跟设备手册里的描述可能有差异,比如设备手册写的是 40001,但驱动里要填 0 或者 1。
解决:先用 Modbus 调试工具读同一个地址,确认设备本身有数据。然后在 DAServer Manager 里逐个调整地址偏移量和数据类型,每改一次用日志看请求内容。我一般会建一个只有几个点的测试设备,把地址和类型试对了再批量复制。
4.5 现象:通信时断时续,日志里大量 Timeout
原因:网络质量差或者 Timeout 设得太短。工控现场的网络环境往往不如办公室,交换机负载高、线缆老化都会导致丢包。
解决:先把 Timeout 从默认的 1000ms 调到 3000ms 或 5000ms,RetryCount 调到 3。如果还是断,用 ping 命令看丢包率,丢包严重的话就要查网络硬件了。另外确认 DAServer 所在机器的网卡没有开启节能模式,有些工控机的网卡节能设置会导致间歇性断连。
5. 装完之后怎么确认真的跑通了
装完 DASMBTCP 并配好之后,不要急着把画面全部做完。我一般会用一个最小验证流程来确认整套链路是通的,这个流程走完,后面批量建点就放心了。
第一步,在 DAServer Manager 里建一个测试设备,IP 指向你要连的 PLC,端口 502,Unit ID 按设备手册填。在这个设备下建三个 Item:一个读保持寄存器 0,类型 Short;一个读保持寄存器 1,类型 Short;一个读输入寄存器 0,类型 Short。这三个 Item 覆盖了最常用的两种寄存器类型。
第二步,打开 DAServer 的日志窗口,把级别调到 Debug,然后观察日志。如果看到连接成功并且三个 Item 都有返回值,说明 DAServer 到设备这一段是通的。如果某个 Item 报错,根据错误信息调整地址或类型。
第三步,打开 Intouch WindowMaker,新建一个访问名,类型选 DAServer,节点名填 DASMBTCP 实例名,Item 名填刚才建的测试 Item。然后在画面上放三个文本对象,分别绑到这三个 Item 上。切换到运行模式,看数值是否跟 PLC 里的一致。
第四步,做一个写入测试。在画面上放一个按钮,脚本里用WriteValue或直接绑一个输入框,往保持寄存器 0 写一个值,然后在 PLC 侧确认值变了。这一步能验证双向通信是完整的,很多问题只读不写是发现不了的。
# 验证完成后,用 netstat 确认 DAServer 跟设备的连接是 ESTABLISHED netstat -ano | findstr 502上面这条命令能看到 DAServer 进程跟设备 IP 之间的 TCP 连接状态。如果是 ESTABLISHED,说明长连接保持正常;如果是 TIME_WAIT 或 CLOSE_WAIT,说明连接在反复重建,需要查网络或 Timeout 设置。
这套验证流程走下来大概十分钟,但能帮你把问题范围从“Intouch 读不到数据”缩小到具体是 DAServer 配置、网络、还是 Intouch 访问名的问题。从那以后我每次装完 DASMBTCP,不管现场多急,都强制走一遍这个最小验证,确认三个 Item 读写都正常了再开始批量建点。希望帮到你。
本文还有配套的精品资源,点击获取