西门子工业支持中心,以专业共创价值!
西门子工业支持中心,以专业共创价值!
找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问
题。
悬赏:10西币
对过期问题进行处理,可以获得系统返还的1分
产品版区:SIMATIC WinCC
提问时间:2023-03-25 11:50
ellavox
提问者:
ellavox
- 学长  第2级
目的:点击一个按钮实现写入起始时间(起始时间为点击按钮的时间),点击另一个按钮吸入结束时间(也是点击按钮的时间),谢谢大家!
1、单击一个按钮A,将当前时间写入到online table数据查询的开始时间里。
2、单击一个按钮B,将当前时间写入到online table数据查询的结束时间里。
目的是查询通过单击按钮A到按钮B这一时间段内的归档数据。
问题补充:感谢小豆芽,我也试过了,没问题。
如果我想要把两个按钮A和B换成两个bool量,
tag1由0→1时,触发和按钮A一样的功能;
tag2由0→1时,触发和按钮B一样的功能。
该怎么写呢?
Sub OnClick(ByVal Item)
Dim tbl1
Dim tnow,time_start,time_formate,trigger_start
trigger_start = HMIRuntime.Tags("a")
If trigger_start = 1 Then
tnow=Now()
Set tbl1 =ScreenItems("tbl1")
time_start = CStr(Year(tnow))&"年"& CStr(Month(tnow))&"月"& CStr(Day(tnow))&"日"& "" & CStr(Hour(tnow))&"时"& CStr(Minute(tnow))&"分"& CStr(Minute(tnow))&"秒"
time_formate = FormatDatetime(time_start)
tbl1.TimeColumnBeginTime = time_formate
'msgbox time_formate
Msgbox("start")
Else
time_start = Now
End if
End Sub
上边是我写的,没报错,但运行不起来
之前发的那个帖子没解决你的问题吗?我亲自测试了的。
/////////////////////////////////////////////////////////////////////////////////////////
1.首先你应该将脚本写在全局脚本里面。2.你应该使用上升沿来判断,而不是if trigger_start = 1 then 。
您可以使用 VBScript 脚本来实现将按钮单击事件中的时间写入在线表作为开始时间和结束时间。以下是一个简单的示例:
添加一个开始时间按钮和一个结束时间按钮到 WinCC 图形中。
双击开始时间按钮,打开事件脚本编辑器,编写以下脚本:
Sub btnStart_Click()
SetValue "OnlineDB.TagName.StartTime", Now
End Sub
双击结束时间按钮,打开事件脚本编辑器,编写以下脚本:
Sub btnEnd_Click()
SetValue "OnlineDB.TagName.EndTime", Now
End Sub
在这个示例中,OnlineDB.TagName.StartTime 和 OnlineDB.TagName.EndTime 是在线表中的两个标签,在 OnlineView 面板中创建时应该已经包含了这两个标签。SetValue 函数用于将当前时间写入到这两个标签中。
注意:在实际使用中,您需要将脚本中的 OnlineDB.TagName.StartTime 和 OnlineDB.TagName.EndTime 替换为实际使用的在线表中的标签名称。
这样,当您单击开始时间按钮时,当前时间将被写入到起始时间标签中;当您单击结束时间按钮时,当前时间将被写入到结束时间标签中。这些标签现在可以用于查询在线表中指定时间段内的数据。