PLC问答
> S7-1500与WinCC通过S7通信读取DB块数据,连接建立但数据不刷新,如何检查?
S7-1500与WinCC通过S7通信读取DB块数据,连接建立但数据不刷新,如何检查?
上位WinCC 7.5 SP2通过S7通信(TCP/IP)连接S7-1500 CPU 1513-1 PN,在WinCC中建立连接后,部分变量能读,但DB100中的数组变量始终显示旧值。已在PLC中确认DB100数值在变化,WinCC变量管理里地址写为DB100.DBD0。CPU属性中“允许来自远程对象的PUT/GET通信访问”已勾选。请问为什么数据不刷新?
4 个回答
✓ 最佳回答
西门子口诀:先组态后程序,在线诊断看故障缓冲区;FB/FC要实例DB,别混用全局DB;密码记牢防锁死,固件版本须匹配。工艺对象做定位,省心又可靠。
✓ 最佳回答
1. 检查DB块属性:在TIA Portal中右键DB100,选择“属性>常规”,确认“优化的块访问”未被勾选。若勾选,绝对地址DB100.DBD0无效,必须取消优化,或改用符号访问。
2. 在WinCC变量管理中,确认变量地址格式为“DB100,DBD0”或“DB100.DBD0”,不同版本WinCC格式略有差异,建议用“DB100,DBD0”。
3. 检查数据长度:若读取的是数组,需为每个元素建独立变量,或使用“原始数据类型”配合脚本读取,WinCC不能直接读整个数组到单个变量。
4. 在WinCC中打开“通道诊断”,查看是否报“访问错误”或“超时”。若超时,将连接属性中的“CPU槽号”设为1(对于1513),机架号0。
5. 在PLC中新建一个DB,只放一个DINT测试,确认能刷新,再逐步替换为实际DB,定位是否为优化块或地址越界。
S7-1200/S7-1500的坑集中在三处:一,密码和访问保护——设了读写保护但忘了密码,比功能故障还绝望,慎用、记牢;二,程序卡和存储卡——程序卡写保护置位后下载不了,卡松了程序直接丢了;三,固件版本——模块固件和博途版本不匹配会下载报错,固件版本在TIA里能升级。还有S7-1500的工艺对象(TO)比S7-1200强很多,做定位优先用工艺对象而不用自己写脉冲程序。
西门子PLC问题,先分清硬件组态和程序两块。硬件组态不对(模块型号/版本/订货号不匹配、IO地址分配冲突)连下载都过不去;程序问题先看OB100(启动组织块)和循环OB1的调用结构,FB/FC的调用顺序不对逻辑就全乱。在线诊断:博途里打开“在线诊断”看故障缓冲区,里面每条都带时间戳和详细描述,比看灯准得多。DB块数据不刷新常见原因:多处调用同一个FB时背景DB搞混、没有用实例DB而是直接用了全局DB、数据一致性(读写同时发生)没处理。