首页 > 全部分类 > 技术问答 > 帖子内容

求助:基恩士 VT5 系列触摸屏,连 KV-8000 PLC。 做了一个大配方功能,里面包含大约 200 个浮点数和字符串。 正常生产切换配方没事。但只要在‘设备正在运行(PLC 正在高速通讯)’的时

联系人:15619598932255

电话/手机:联系客服

发布时间:2026-06-02 18:32

浏览:148次

求助:基恩士 VT5 系列触摸屏,连 KV-8000 PLC。 做了一个大配方功能,里面包含大约 200 个浮点数和字符串。 正常生产切换配方没事。但只要在‘设备正在运行(PLC 正在高速通讯)’的时候点击切换配方,触摸屏就会弹出一个进度条,然后死死卡在‘99%’不动。 此时屏幕上的其他按钮全部失效,但是 PLC 后面其实已经收到了新配方,也能继续跑。 必须把屏断电重启,画面才能恢复正常。 通信周期已经调慢了,没效果。为什么每次都卡在 99%?这到底是在等哪一个 handshake(握手)信号?
明扬工控技术客服2026-06-02 18:34:14
答复内容:亲,这个 99% 基本不是在等 PLC 把 200 个数据“接收完”。
因为你已经看到:

PLC 其实已经收到新配方,也能继续跑。

所以真正卡住的不是“写入 PLC 数据区”,而是 VT5 在最后一步没有释放自己的配方进度窗口/操作线程。

我会这样判断:

99% 多半表示:配方数据主体已经写完,VT5 正在等待最后的完成确认、读回校验、文件状态更新、画面刷新恢复,或者某个完成位复位。

KEYENCE 官方 VT5 手册页也说明,VT5 用户手册包含功能、连接、错误码等内容,连接手册按设备分类;但公开网页里我没有找到“99%卡住”这个具体异常的公开说明,所以这里主要按 HMI 配方传输机制和现场现象推断。

最像的真实原因

你这个现象最像下面这一类:

生产运行中
PLC 和 HMI 正在高速通讯、画面刷新、数据采集

操作员点“切换配方”

VT5 开始批量写入 200 个浮点数 + 字符串

PLC 已经收到配方数据

VT5 最后一步要读回确认 / 等完成位 / 刷新配方状态

但是这一步被运行中的通讯刷新、PLC 写回、脚本状态位、配方区被占用卡住

进度条停在 99%,HMI 操作线程被锁住

所以它不是普通通讯慢,也不是 PLC 没收到,而是 HMI 的配方操作没有“正常收尾”。

一、为什么偏偏是 99%?

很多 HMI 的进度条不是精确表示每个字写了多少,而是大概分成:

0%~90%:写入配方数据
90%~99%:写入字符串/剩余数据/更新内部状态
99%~100%:等待完成确认、读回校验、关闭窗口、释放操作锁

所以卡在 99%,通常说明:

主体数据已经传输完成
但最后一个确认动作没有结束

常见就是:

完成位没回来
Busy 位没复位
读回校验不一致
某个字符串区写入后校验失败
HMI 的配方窗口还在等脚本返回
通信任务被周期刷新占满
二、最可疑:HMI 在“读回校验”,但 PLC 正在改同一片配方区

你说 PLC 后面已经收到新配方,还能继续跑,这里有一个大坑:

PLC 一收到新配方,马上把这些数据用于运行、修正、限幅、写回,结果 VT5 最后读回时发现和它写下去的不一样。

比如:

HMI 写入:
速度 = 123.456

PLC 程序运行中处理:
速度限制到 120.000
或者换算成内部单位
或者字符串补空格/清零

这时 HMI 最后一步可能在做:

写入完成 → 读回确认 → 数据一致 → 进度 100%

但 PLC 已经把值改了,VT5 就一直等不到“完全一致”的状态,于是卡 99%。

尤其你这里有 浮点数 + 字符串,更容易出问题:

浮点数:PLC 可能做限幅、四舍五入、单位换算
字符串:PLC 可能清尾、补零、移动、覆盖
三、第二个大坑:配方区和运行区混用了

很多项目直接这样做:

HMI 配方写入地址 = PLC 实际运行参数地址

这样正常停机切换没问题。
但设备运行中切换,就会出现争用:

HMI 正在写配方
PLC 正在读这些参数
PLC 还可能正在写这些参数
画面也在刷新这些参数
报警/趋势也在读这些参数

结果就是:

PLC 收到了
设备也跑了
但 HMI 配方功能自己的最后确认卡死

更稳的结构应该是:

HMI 配方下载区

PLC 校验区

PLC 确认允许后

复制到运行参数区

不要让 HMI 直接写正在运行的参数区。

四、第三个大坑:完成握手位被 PLC 太快复位

如果你做了类似握手:

HMI 写配方完成

HMI 置位 Recipe_Request

PLC 收到后置位 Recipe_Done

HMI 看到 Done 后结束

但 PLC 程序里如果这样写:

Recipe_Done 只亮一个扫描周期

HMI 可能刚好没读到。

尤其设备运行时通讯负载大,HMI 轮询周期变慢,PLC 的 Done 位一闪就没了。
于是 PLC 觉得“我已经处理完了”,HMI 却一直等 Done。

正确做法应该是:

HMI:Recipe_Request = 1
PLC:收到后处理
PLC:Recipe_Done = 1 并保持
HMI:看到 Done 后置位 Recipe_Ack = 1
PLC:看到 Ack 后清 Recipe_Done 和 Recipe_Request
HMI:清 Ack

也就是完整握手,不要用一拍脉冲。

五、第四个大坑:运行时画面对象还在疯狂刷新同一批地址

你说“PLC 正在高速通讯”,这个也很关键。

VT5 正在做大配方下载时,如果同一个画面上还有大量对象在刷新:

实时数值
报警
趋势
状态灯
按钮状态
字符串显示
配方当前值

而这些又和配方地址重叠,HMI 内部通讯任务可能出现:

批量写配方
周期读画面
脚本读写
报警读取
趋势记录

同时抢同一个连接。

通信周期调慢没效果,说明问题不一定是“周期太快”,而可能是 配方传输没有被做成独占操作。

六、建议你这样改,最稳
1. 禁止运行中直接切换配方

最简单、最安全:

设备运行中:
切换配方按钮灰掉

设备停止 / 暂停 / 安全位置:
允许切换配方

非标设备里,大配方不建议在运动或生产状态中直接切。

2. 配方先写入“下载缓冲区”

不要直接写运行参数。

结构改成:

HMI 配方区

PLC DB_RecipeDownload 下载缓冲区

PLC 校验

PLC 一次性复制到 DB_RunParameter 运行参数区

这样 HMI 写配方时,PLC 不要改 DB_RecipeDownload。

3. 做完整握手

建议做 4 个位:

Recipe_Request      HMI → PLC
Recipe_Busy         PLC → HMI
Recipe_Done         PLC → HMI
Recipe_Ack          HMI → PLC
Recipe_Error        PLC → HMI

流程:

1. HMI 写入配方到下载区
2. HMI 置位 Recipe_Request
3. PLC 置位 Recipe_Busy
4. PLC 校验数据
5. PLC 复制到运行区
6. PLC 复位 Busy,置位 Done
7. HMI 看到 Done 后关闭进度/提示完成,并置位 Ack
8. PLC 看到 Ack 后清 Done 和 Request
9. HMI 清 Ack

关键是:

Done 必须保持到 HMI 确认
不能只给一个扫描周期
4. 配方传输期间,屏蔽画面刷新和重复点击

点“切换配方”后立即:

禁用切换按钮
禁用保存按钮
禁用返回按钮
禁用再次加载
显示“配方下载中”

直到:

Recipe_Done = 1
或者 Recipe_Error = 1
或者超时

不要让操作员连续点两次,也不要让脚本重入。

5. 增加超时机制

HMI 和 PLC 都要有超时。

例如:

HMI 等待 PLC Done 超过 5 秒:
提示“配方确认超时,请停止设备后重试”
释放画面锁

PLC Busy 超过 5 秒:
清 Busy
置 Error
不更新运行参数

现在你最糟糕的问题不是配方失败,而是 HMI 画面锁死,只能断电。一定要加超时释放。

七、现场快速验证方法

你可以马上做 4 个测试。

测试 1:运行中切配方,但 PLC 不复制到运行区

临时让 PLC 只接收,不处理、不写回、不限幅。

如果 99% 不再卡:

PLC 后处理改写了配方区,导致 HMI 最后校验/确认过不去
测试 2:把配方写入一块完全没人用的新 DB

新建一块空闲区,只让 VT5 写,不让 PLC 运行逻辑读写。

如果不卡:

原配方区和运行逻辑/画面刷新冲突
测试 3:关闭当前画面上大量实时刷新对象

切到一个空白维护画面,只留一个“切换配方”按钮。

如果不卡:

画面周期刷新和配方批量写入抢通讯资源
测试 4:把 PLC 的 Done 位保持住,不要一拍复位

如果改成保持型 Done 后不卡:

HMI 卡在等待完成握手,原来 Done 位太短
八、最可能的答案

亲,这个问题我会优先判断为:

不是 KV-8000 没收到配方
不是 VT5 没把数据写完
也不是单纯通讯周期太快

而是:
VT5 在配方传输最后一步,需要完成确认、读回校验或释放配方窗口;
运行状态下 PLC/画面/脚本对同一片配方地址有读写竞争,
或者 PLC 的完成位太短,导致 VT5 最后一步等不到正确收尾信号。

一句话:

99% 等的不是“数据”,而是“收尾条件”。PLC 已经拿到配方,但 VT5 没拿到它想要的最后确认,所以屏幕被进度窗口锁住了。

最稳的整改是:

运行中禁止直接切换大配方
配方先写下载缓冲区
PLC 校验后再复制到运行区
Done 位保持到 HMI Ack
配方传输必须有超时释放

这样改完,就不会再出现“PLC 已经跑新配方,屏却卡死在 99%”这种尴尬问题。
对不起,请登录后再发表评论!

触屏端
扫一扫手机也能发信息
明扬工控商城-工控网-工控自动化真品,一站式专业服务!