Cimplicity界面需求:单对象随300台机器人故障闪烁实现方案咨询
Cimplicity实现全局故障闪烁指示方案
实现思路
- 遍历所有机器人故障指示点,判断是否有任意点位触发故障(值为高)
- 通过全局脚本控制指定界面对象的闪烁状态,故障时开启闪烁,正常时关闭
具体实现步骤
1. 准备全局变量
在Cimplicity的全局变量中创建一个布尔型变量 g_Robot_Fault_Exist,用来标记是否存在机器人故障,减少重复遍历点位的开销。
2. 编写全局扫描脚本
新建一个周期扫描的全局脚本(推荐扫描周期设为1-2秒,兼顾实时性和系统性能),脚本代码如下:
' 默认标记无故障 g_Robot_Fault_Exist = False ' --- 方式1:前缀匹配遍历(推荐,无需硬编码所有后缀)--- Dim objPoint, pointName For Each objPoint In PointList pointName = objPoint.Name ' 替换成你的故障点实际前缀,比如"Robot_Fault_" If Left(pointName, 12) = "Robot_Fault_" Then ' 根据点位类型判断故障:布尔型用=True,数字型用>0,这里以数字型1为故障示例 If objPoint.Value = 1 Then g_Robot_Fault_Exist = True Exit For ' 找到故障就停止遍历,提升效率 End If End If Next ' --- 方式2:硬编码后缀(前缀匹配失效时用)--- ' Dim suffixArr, i ' ' 把300台机器人的后缀按格式填进数组,比如"001","002"... ' suffixArr = Array("001", "002", "003") ' For i = 0 To UBound(suffixArr) ' pointName = "Robot_Fault_" & suffixArr(i) ' If PointExists(pointName) Then ' If PointValue(pointName) = 1 Then ' g_Robot_Fault_Exist = True ' Exit For ' End If ' End If ' Next ' 控制目标闪烁对象 ' 替换成你界面上闪烁对象的实际名称,比如"Global_Fault_Light" If g_Robot_Fault_Exist Then ' 启用闪烁:直接调用Cimplicity内置的闪烁属性 ObjectSetProperty "Global_Fault_Light", "Flash", True Else ObjectSetProperty "Global_Fault_Light", "Flash", False End If
3. 配置界面闪烁对象
- 在你的大型界面上添加需要闪烁的对象(比如红色圆形、警示文本)
- 进入对象属性的动画设置,确保闪烁功能已启用;如果默认闪烁效果不符合要求,也可以改成通过脚本切换对象的颜色或可见性(比如每隔0.5秒切换一次背景色)
4. 调试与优化
- 先拿少量点位(比如前10台)测试脚本逻辑,确认无误后再扩展到300台
- 检查故障点前缀的字符长度是否正确,避免漏判或误判
- 如果系统性能有压力,可适当延长扫描周期,或者优化遍历逻辑(比如只遍历已配置的故障点列表)
内容的提问来源于stack exchange,提问作者user19446458
相关产品推荐
相关产品推荐

