关于西门子 PLC 程序如何映射到触摸屏画面上

西门子PLC → 触摸屏(HMI)画面映射 完整逻辑
一、核心本质(先破误区)
很多人以为"要把PLC程序传到触摸屏上才能显示",这是完全错误的认知:
HMI和PLC是解耦的通讯关系:HMI根本不解析PLC的梯形图/程序逻辑,它只做一件事——按周期读写PLC内存里的指定地址值,把数值显示在画面上,再把屏幕上的操作写回PLC对应地址。

所谓"映射",就是给画面上每个控件指定一个PLC内存地址,控件自动读/写这个地址的值,和PLC内部程序怎么算、怎么触发的完全无关。
不管底层走的是之前讲的DP还是PN通讯,这个映射逻辑100%通用,只是连接时选对应的通讯接口即可。
二、博途(TIA)标准操作步骤(新项目通用流程)
1.基础准备
在同一个博途项目里,项目树同时建立PLC站和HMI站,不要分开两个独立工程做——跨项目连接调试极其麻烦,是新手高频坑。
2.PLC侧:整理好要映射的变量区
不要零散用零散的I/M地址,工程上统一建一个HMI专用DB块(比如DB1_HMI_DATA),把所有需要和触摸屏交互的变量集中放:
file

关键设置:DB块属性里取消勾选"优化的块访问"(新手最稳做法),否则老版本HMI读不到变量;V17以上高版本博途也可以保留优化访问,在HMI连接里开启"访问优化数据块"即可。
3.HMI侧:打通通讯连接
在HMI的「连接」菜单里:
选对应PLC型号(S7-1200/1500/300等)
接口选和PLC一致的通讯通道(PN口填同网段IP,DP口填DP站地址)
点「测试连接」显示成功后再继续
4.变量映射(两种主流方式)
✅ 推荐方式(最省心、不出错):直接从PLC变量表拖拽

打开PLC的变量表/HMI专用DB块,直接把需要映射的变量拖到HMI的变量表里,自动带地址、自动匹配数据类型,完全不会出现地址填错的问题。
手动方式(老项目/拆分工程用):

在HMI变量表里手动新建变量,选对应PLC存储区(I/Q/M/DB)、填正确地址、严格匹配数据类型(比如PLC里是Real浮点数,HMI就建Real,别选成Int整数)。
5.画面控件绑定(就是你看到的触摸屏画面)
从右侧工具箱拖控件到画面画布,在控件的「属性」里绑定对应变量:
file

6.采集周期配置
给不同变量设合理刷新频率,别全拉满:
核心状态/按钮类:100~200ms

趋势曲线类:10~50ms

参数/产量类:1000ms

周期设太短会占满通讯带宽,导致HMI卡顿、PLC负载高;设太长会有操作延迟。
7.下载联调
先下PLC程序到PLC硬件,再下HMI画面到触摸屏,在线观察变量值和PLC实际状态是否一致,操作按钮看PLC对应位是否变化即可。

file

三、常见踩坑点(现场高频问题)
1.数据类型不匹配:PLC里是4字节Real浮点数,HMI里错建成2字节Int整数,读出来全是乱码——Real占4个连续字节,别和Int的地址重叠。
2.地址存储区搞混:MW10(中间存储区)和DB1.DBW10(DB块里的字)是两个完全独立的地址,选地址时必须先选对存储区类型,再填偏移量。
3.DB块开了优化访问:默认新建的DB块是优化访问模式,HMI读不到值,必须在DB属性里取消勾选。
4.地址错位:PLC程序里改了DB块里变量的顺序/偏移,没有同步更新HMI的变量表,会出现"画面显示的温度和实际温度差了好几个"的错位问题。
5.画面过度加载:单页画面绑几百个变量、堆十几个趋势图,直接导致HMI反应慢——参数设置页、状态页分开,主画面只放核心关键信息。
补充:不同场景的简化逻辑
老款S7-200 SMART + SMART LINE触摸屏:直接在HMI变量里关联PLC的V区/M区/I/O点,逻辑完全一致,不需要建DB块。
DP/PN混合网络下:只要HMI和PLC在同一个DP/PN网段,连接配置选对应接口,映射步骤没有任何区别。
智能从站/跨站通讯:HMI只连主站PLC,直接读主站里映射过来的从站数据即可,不需要直接和远程IO设备做映射。

发表评论