
简介这份文档面向工控组态与自动化调试人员聚焦昆仑通态TPC7062K触摸屏与组态王MCGS之间通过以太网建立通信的完整配置思路适合需要打通触摸屏与上位机数据交换的初、中级工程师参考。资源包内仅含1个doc文件约309KB以图文步骤形式记录关键配置界面与参数说明便于对照操作。内容围绕嵌入式MCGS软件安装、通用串口父设备与通用TCP/IP父设备添加、串口端口号与浮点数通道设置、UDP/TCP网络类型及本地与远程IP端口配置、MODBUS TCP/IP数据转发、组态王侧莫迪康MODBUS TCP硬件连接等环节展开并提示通信协议一致性与地址冲突等排错要点。目前已有107人学习可帮助读者快速理解触摸屏与组态王以太网通信的配置流程与注意事项。1. 触摸屏与组态王 MCGS 以太网连接从一根网线到数据跑通车间里一台昆仑通态 TPC 触摸屏旁边一台装着组态王的上位机中间只有一根网线。老板说“把屏上的温度显示到电脑上”你打开组态王新建工程发现设备驱动列表里翻不到 MCGS 的以太网选项或者选了 Modbus TCP 却死活读不到数——这个场景几乎每个做小型 SCADA 的工程师都遇到过。触摸屏与组态王 MCGS 以太网连接本质是让上位机组态软件通过以太网协议与运行 MCGS 嵌入版或组态王嵌入版的触摸屏交换数据。它解决的是“屏与屏之间、屏与电脑之间数据孤岛”的问题适合做设备监控、产线数据采集、空压机集中管理等场景的从业者。下面按“先搞懂协议、再动手配置、最后避坑”的路径拆开讲。2. 先搞清楚谁跟谁说话MCGS 触摸屏与组态王的通信角色2.1 触摸屏在以太网里到底是服务端还是客户端很多人第一次配就卡在这里组态王里选“Modbus TCP”驱动填了触摸屏 IP结果连不上。原因是没分清主从关系。昆仑通态触摸屏如 TPC7062Ti、TPC1071Gi在以太网通信中通常作为 Modbus TCP 从站Server它监听 502 端口等待上位机来读寄存器。组态王作为主站Client主动发起连接。但如果你用的是组态王嵌入版跑在触摸屏上那组态王嵌入版本身是运行在屏里的它跟屏的 MCGS 系统之间是内部变量映射不涉及以太网。所以“触摸屏与组态王 MCGS 以太网连接”有两种典型拓扑拓扑 APC 上的组态王通用版 ↔ 网线 ↔ 昆仑通态触摸屏屏内跑 MCGS 嵌入版。此时组态王是主站屏是从站。拓扑 BPC 上的组态王通用版 ↔ 网线 ↔ 另一台 PC 上的组态王或 MCGS 通用版。此时一台做服务端一台做客户端。拓扑 A 最常见也是本文重点。判断方法很简单看谁需要主动去“取”数据。需要取数据的那一端配成主站被取的那一端配成从站。2.2 Modbus TCP 与 MCGS 内部寄存器怎么对应Modbus TCP 的数据模型是四张表线圈0x、离散输入1x、保持寄存器4x、输入寄存器3x。昆仑通态触摸屏在启用 Modbus TCP 从站后会把 MCGS 内部的“数据对象”映射到这些表里。常见做法是MCGS 数据对象类型映射到 Modbus 地址组态王寄存器说明数值型如温度4x 保持寄存器40001 起读写均可开关型如启停0x 线圈00001 起读写均可只读状态3x 输入寄存器30001 起只读报警位1x 离散输入10001 起只读映射关系不是自动的需要在 MCGS 嵌入版的“设备窗口”里手动添加“Modbus TCP 从站”设备然后把数据对象挂到对应的通道上。通道地址填 4x 的偏移量比如温度变量挂在“4x0001”组态王里就读“40001”。这里有个血泪经验MCGS 里填的地址是偏移量从 0 或 1 开始组态王里填的是协议地址40001 这种两者差一个基数配错就全偏。2.3 为什么不用 Modbus RTU 转 TCP 而要直连以太网老设备常用 RS485 转以太网模块但直连以太网有三个好处速度快10/100M 自适应、布线简单一根网线、支持多主站并发Modbus TCP 天然支持多客户端。缺点是触摸屏网口通常只有一个如果还要接 PLC 或相机就得加交换机。我一般会在触摸屏和上位机之间放一个五口工业交换机把 PLC、屏、电脑都挂上去省得来回拔线。注意交换机不要用家用级车间电磁干扰大工业级带屏蔽的才稳。3. 动手配通组态王侧与触摸屏侧的完整步骤3.1 触摸屏侧MCGS 嵌入版启用 Modbus TCP 从站以昆仑通态 TPC 系列为例打开 MCGS 嵌入版组态软件进入“设备窗口”。步骤如下在“设备工具箱”里找到“通用设备” → “Modbus” → “Modbus TCP 从站”。双击添加到设备窗口设置“本地 IP 地址”为触摸屏实际 IP如 192.168.1.10“本地端口”填 502。在“通道连接”里把需要通信的数据对象挂到对应通道。例如温度变量Temp1挂到“4x0001”启停按钮Start1挂到“0x0001”。下载工程到触摸屏重启生效。关键参数说明IP 地址必须和上位机在同一网段子网掩码一致。端口 502 是 Modbus TCP 标准端口如果被占用可以改但组态王侧要同步改。通道地址的“4x”前缀在 MCGS 里通常不写只写偏移量比如 0001 表示保持寄存器第一个。# 在电脑上先 ping 一下触摸屏确认物理链路通 ping 192.168.1.10 # 再用 telnet 测 502 端口是否监听Windows 需先启用 telnet 客户端 telnet 192.168.1.10 502逻辑说明ping 通只代表网络层通telnet 通才代表 Modbus TCP 从站已经启动。如果 ping 通但 telnet 不通说明触摸屏的 Modbus 从站没启用或端口不对。参数上如果车间网络有网关触摸屏的网关要填对否则跨网段访问不了。3.2 组态王侧新建 Modbus TCP 设备并定义变量打开组态王通用版新建工程进入“设备” → “新建”。选择“PLC” → “Modbus” → “Modbus TCP”。弹出设备配置向导设备名称自定义如MCGS_TPC串口/网络选“网络”填触摸屏 IP 和端口 502从站地址填 1与 MCGS 从站地址一致默认 1通信超时建议 1000ms重试次数 3然后在“数据词典”里新建变量变量类型选 I/O 实数或 I/O 离散连接设备选MCGS_TPC寄存器填40001对应 MCGS 的 4x0001数据类型选FLOAT或SHORT。注意字节序Modbus 默认大端如果读上来是乱码在组态王设备属性里勾选“交换寄存器高低字节”或“交换字节顺序”。# 用 Python 快速验证 Modbus TCP 能否读到数据比组态王更直观 from pymodbus.client import ModbusTcpClient client ModbusTcpClient(192.168.1.10, port502) client.connect() # 读保持寄存器 40001 起 2 个寄存器一个浮点数占两个寄存器 result client.read_holding_registers(address0, count2, slave1) print(result.registers) # 输出如 [16968, 0] 表示 25.0 的 IEEE754 编码 client.close()逻辑说明address0对应 4x0001因为 pymodbus 用偏移量。count2读两个寄存器拼一个 32 位浮点数。slave1是从站地址。如果返回ExceptionResponse检查从站地址和寄存器范围。参数上port默认 502slave默认 1但 MCGS 里可以改改了两边要一致。3.3 联调用组态王画面绑定变量并观察数据变量建好后在组态王画面里放一个“文本”控件动画连接选“模拟值输出”变量选刚才建的Temp1。切换到运行模式如果触摸屏上温度是 25.0组态王画面上应该显示 25.0。如果不显示按以下顺序排查看组态王底部状态栏是否有“通信失败”提示。用 Modbus Poll 工具连触摸屏读同一地址确认从站有数据。检查组态王设备属性里的“从站地址”和“寄存器地址”是否与 MCGS 一致。看触摸屏的 Modbus 从站是否设置了“允许外部访问”或防火墙拦截。我一般会先用 Modbus Poll 确认从站数据没问题再回到组态王调。这样能把问题范围缩小到组态王配置本身而不是网络或屏的问题。4. 避坑指南触摸屏与组态王以太网连接最常见的 5 个翻车点4.1 现象组态王提示“创建协议组件失败”原因组态王安装时没有安装 Modbus TCP 驱动或者驱动文件被杀毒软件误删。解决重新运行组态王安装程序选择“修改”勾选“Modbus TCP”驱动。如果还不行去组态王安装目录下的DRIVER文件夹确认有MODBUS_TCP.dll。注意组态王版本不同驱动文件名可能略有差异但核心是驱动缺失。4.2 现象能 ping 通触摸屏但组态王读不到数据原因触摸屏的 Modbus TCP 从站没有启用或者端口不是 502。解决进 MCGS 嵌入版的设备窗口确认 Modbus TCP 从站设备已添加且“启动”勾选。用 telnet 测端口如果不通改端口或重启屏。另外有些触摸屏默认只允许一个客户端连接如果之前有别的软件连着组态王就连不上。关掉其他 Modbus 客户端再试。4.3 现象读上来的数值是乱码或数量级不对原因字节序或寄存器映射错误。Modbus 默认大端但有些设备用小端。解决在组态王设备属性里调整“字节交换”设置。如果是浮点数确认占两个寄存器且高低寄存器顺序正确。MCGS 里浮点数通常占两个连续寄存器组态王里要选 FLOAT 类型并指定寄存器数量为 2。如果读上来是 16968 这种整数说明没按浮点数解析。4.4 现象通信时断时续偶尔超时原因网络干扰或交换机问题。车间里变频器、伺服驱动器会产生电磁干扰普通网线没有屏蔽层。解决换工业级屏蔽网线交换机用带金属外壳的工业交换机。另外组态王的通信超时设太短也会导致误报建议设 1000ms 以上重试次数 3 次。如果还是断在触摸屏和交换机之间加磁环。4.5 现象MCGS 里改了数据对象地址组态王没同步改原因地址映射是手动维护的改了一边忘了另一边。解决养成习惯在 MCGS 里导出通道映射表组态王里按表配置。或者用 Excel 维护一份地址对照表两边都按表来。我一般会在工程文件夹里放一个address_map.xlsx谁改了地址就更新避免后期维护时互相甩锅。5. 进阶技巧用脚本批量验证与地址自动映射5.1 用 Python 脚本批量扫描 Modbus 地址当触摸屏上挂了上百个变量时手动一个个试太慢。写个脚本批量读把有数据的地址打印出来再对照 MCGS 的通道表。from pymodbus.client import ModbusTcpClient import time client ModbusTcpClient(192.168.1.10, port502) client.connect() # 扫描 4x0001 到 4x0100 共 256 个寄存器 for addr in range(0, 256, 2): try: rr client.read_holding_registers(addressaddr, count2, slave1) if not rr.isError(): # 过滤掉全 0 的寄存器只打印有值的 if any(rr.registers): print(f4x{addr1:04d} - {rr.registers}) except Exception as e: print(f4x{addr1:04d} error: {e}) time.sleep(0.05) # 避免请求过快导致从站丢包 client.close()逻辑说明range(0, 256, 2)每次跳两个寄存器因为浮点数占两个。any(rr.registers)过滤全零地址减少干扰。time.sleep(0.05)是给从站留处理时间太快会丢包。参数上slave1要跟 MCGS 从站地址一致count2读浮点数如果读开关量改成read_coils。5.2 在组态王里用命令语言做通信状态监测组态王支持命令语言可以写一段脚本监测通信质量。比如在“应用程序命令语言”的“运行时”里每 5 秒读一次通信状态// 组态王命令语言监测设备通信状态 if (\\本站点\通信失败次数 10) { \\本站点\报警文本 MCGS触摸屏通信异常请检查网线; // 触发报警 \\本站点\报警触发 1; }逻辑说明\\本站点\通信失败次数是组态王内置的通信统计变量每次超时累加。超过阈值就置报警位。参数上阈值 10 可以根据现场网络质量调整网络差就设大一点。这个脚本的好处是能在画面上直接看到通信健康度不用去翻日志。5.3 地址映射表模板与维护习惯最后分享一个我用了多年的地址映射表模板放在工程目录下每次改地址就更新MCGS 数据对象类型Modbus 地址组态王寄存器数据类型备注Temp1数值4x000140001FLOAT1号炉温度Start1开关0x000100001BIT1号炉启停Alarm1报警1x000110001BIT1号炉超温报警维护习惯每次新增变量先在表里加一行再分别去 MCGS 和组态王里配。改地址时先改表再改两边。这样即使项目交接给别人也能快速定位。我吃过亏之前一个项目改了 MCGS 地址没同步组态王排查了一下午才发现是地址偏了 1 位。从那以后地址表就是我的后悔药宁可多花五分钟填表也不愿再翻车。希望帮到你。本文还有配套的精品资源点击获取