数据类型 | 西门子 PLC | 三菱 PLC | 说明 |
数字量输入 | I 区(输入寄存器) | X(输入继电器) | 传感器信号、按钮状态等 |
数字量输出 | Q 区(输出寄存器) | Y(输出继电器) | 控制电磁阀、继电器等 |
数值/参数 | DB 块(数据寄存器) | D(数据寄存器) | 温度、压力、速度等模拟量 |
② 配置通讯参数——和上位机"对暗号"
以太网连接:IP 地址、子网掩码、端口号
串口连接:站号、波特率、数据位、校验位、停止位
️ 踩坑提醒:通讯参数必须两端完全一致,差一位校验位都连不上。配置完先做个 ping 测试或以太口诊断,确认链路通了再继续。
第二步:上位机侧配置
① 新建通讯驱动——告诉组态软件"跟谁聊、用什么语言"
在 WinCC / 组态王 / 力控 / 自研上位机中:
新建通讯驱动
选择协议(如 Modbus TCP、S7 协议、MC 协议)
填入 PLC 的 IP 地址 / 站号
测试连接,确认通讯状态变为"已连接"
② 数据地址映射——把界面变量和 PLC 寄存器绑死
上位机变量 | 功能 | 西门子地址 | 三菱地址 |
电机速度 | 只读(从PLC读数值) | DB3.DBD10 | D300 |
启停按钮 | 读写(下发控制指令) | Q0.3 | Y1 |
温度显示 | 只读 | DB5.DBD0 | D500 |
一句话理解:地址映射就是"给每个监控画面上的元素贴一个标签,标签上写着PLC里对应的地址编号"。贴错了,数据显示就是错的。
第三步:选择数据交互方式
交互方式 | 工作原理 | 实时性 | 适用场景 |
| 轮询方式 (常用) | 上位机按固定周期主动问 PLC 要数据 | 取决于轮询周期(通常100ms~1s) | 绝大多数常规监控场景 |
| 中断方式 | PLC 数据变化时主动向上位机推送 | 极高(毫秒级) | 故障报警、急停信号等对实时性要求极高的场景 |
选型建议:90% 的场景用轮询就够了,周期根据需求设。只有报警、急停这类"慢一秒就出事"的信号才需要用中断推送。两者可以组合使用——常规数据轮询,关键报警信号走中断。
用一个完整案例串一遍全流程。
场景: 上位机监控电机转速 + 下发停机指令
上行链路(PLC → 上位机):读数据
下行链路(上位机 → PLC):写指令
完整流程拆解:
步骤 | 方向 | 动作 | 地址/协议 | 结果 |
① | 传感器→PLC | 采集电机转速 | D40(数据寄存器) | PLC 拿到实时转速值 |
② | 上位机→PLC | 每200ms发读取请求 | Modbus RTU 读D40 | PLC 收到"请给我D40的值" |
③ | PLC→上位机 | 打包返回D40数据 | Modbus RTU 应答帧 | 上位机拿到转速原始值 |
④ | 上位机 | 解析数据,刷新界面 | 仪表盘绑定D40 | 操作员看到实时转速 |
⑤ | 上位机→PLC | 操作员点"停机" | Modbus RTU 写Y2=OFF | PLC 收到停机指令 |
⑥ | PLC | 执行停机逻辑 | Y2断开→电机停转 | 电机停止 |
⑦ | PLC→上位机 | 上传电机状态 | X2="停止" | 上位机界面显示"已停机" |
关键观察:这个案例完整展示了双向通信的闭环——上行读数据(轮询200ms)、下行写指令(操作员触发)、状态反馈(X2回传确认)。每一步对应哪个地址、走什么协议、产生什么结果,全部可追溯。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!