恭喜,你发布的帖子
发布于 2022-03-21 10:07:30
3楼
感谢回复,我查看了手册和链接1里面的说明,80026是OpenAllLogs的正常输出事件。
CloseAllLogs:函数成功执行完成,将产生编号为80019的系统报警
ArchiveLogFile:函数成功执行完成,将产生编号为80048的系统报警
OpenAllLogs: 函数成功执行完成,将产生编号为80026的系统报警
所以哪个函数可以输出80028这个记录初始化开始事件了?或者说有初始化函数么?
本意是想使用初始化函数来判断U盘是否正常,找了好几天没有找到相关的函数。
最近用了一个笨方法来解决,触摸屏每次启动与PLC连接成功会产生编号140000事件,在这个事件到达里面添加CloseAllLogs,如果U盘正常则会产生80019事件;如果U盘不正常会产生80015事件报警,在80015事件到达里面添加一个变量来用于报错。
同时这里我需要间隔性的拔掉U盘去归档,我参考了二代精简HMI数据记录U盘如何插拔,才能保证数据记录的延续性,在触摸屏上放置了Start和Stop两个按钮。
Stop功能简单只需依次执行StopLogging和CloseAllLogs函数即可。
Start相对复杂点,因为涉及U盘检测,需要在StartAllLogs和StartLogging中间判断U是否正常。正常来说OpenAllLogs函数成功执行完成,将产生编号为80026的系统报警,所以在这个事件到达下面添加变量置位和StartLogging。如果执行成功则开始记录,如果未成功则变量未置位,利用这个变量去报警。变量报警的同时需要CloseAllLogs,这样下次Start才能正常执行StartAllLogs。
大概路线已经明确,但是实际执行时,发现StartAllLogs这个函数执行速度较慢,没有执行完就CloseAllLogs了。本来用脚本做个延迟,等待若干秒后判断变量是否置位,这里借鉴在 WinCC flexible 中如何使用 VBS 脚本实现等待功能(延时)。但是在网页提示中写道,注意只要脚本在延时循环中所有组态的脚本都会被中断。在屏幕运行中,StartAllLogs函数被中断了,做了个寂寞。最后只能借道PLC延迟来实现,StartAllLogs运行若干秒后,判断变量是否置位来确认U盘。
耗费好几天,实现了触摸屏的数据记录启动停止和U盘检测功能,抛砖引玉,看看大家有没有别的思路来实现。(PS:触摸屏做数采真的拉)
请填写推广理由:
分享
只看
楼主