恭喜,你发布的帖子
发布于 2026-02-06 12:23:08
23楼
1500 是基于时间片通信
就是说 HMI 可能在你触发翻页后的“任意时刻”向 PLC 写入值
从 PLC 的角度上看,刚检测完 startIndex 范围,并调整在 [0, 390] 后,就有可能被 HMI 改写
因此像外部写入的变量,PLC 中不要多处读写
以本例为例,新建个局部变量 index,在开始时
index := "Datadedupcontrol".CarLinq.HMI.Program.StartIndex;
if index < 0 then... // 限制 index 范围在 [0, 390]
"Datadedupcontrol".CarLinq.HMI.Program.StartIndex := index; // 调整后回写
// 后续的操作都用 index, 而不是 startIndex
for temp_i := 0 to 9 do
No[temp_i] := index + temp_i;
end_for
...
嗯,认可你这个思路。
对于这个问题,我采用了在HMI写脚本完成数据检查,以避免异常值写入PLC。当然,也可以采取你这个思路来处理,对输入数据进行合规检查后固定正确数据,后面只使用合规检查过的正确数据进行数据处理。
感谢~
请填写推广理由:
分享
只看
楼主