半透明的玻璃瓶在传送带上排着队前进,机械臂精准地抓住瓶颈悬停在灌装口上方。这套看起来真实感十足的饮料生产线,其实是我用MCGS7.7在电脑里搭的虚拟沙盘
·
饮料灌装模拟仿真生产线昆仑通泰嵌入版MCGS7.7模拟仿真带运行效果视频
![仿真界面截图:传送带与灌装机联动]
(此处可插入仿真运行截图)

先给设备穿个"数字外套"。在设备组态里新建了个"灌装阀"对象,顺手绑定了流量计和压力传感器变量。重点是这个灌装速度控制算法:
Sub 灌装速度控制()
Dim 当前液位 As Integer
当前液位 = GetTagValue("液位传感器")
If 当前液位 < 800 Then
SetTagValue("变频器", 50) '低速模式
Else
SetTagValue("变频器", 20) '防止溢出
End If
If GetTagBit("急停开关") Then
SetTagValue("变频器", 0)
End If
End Sub
这段脚本藏着两个小心思:当液位接近满量程时自动降速,遇到急停信号直接掐断动力源。实际调试时发现不加这个降速缓冲,模拟液位会像坐过山车一样上下震荡。
动画连接才是仿真系统的灵魂。把传送带电机转速变量绑到直线移动构件上,看着那些小瓶子真的开始平移时,突然有种在玩高级版《工厂模拟器》的错觉。给灌装头加了个旋转动画,参数设置里玩了个障眼法:
[动画旋转]
对象ID=GZ_03
关联变量=灌装阀开度
换算系数=0.36
最大角度=90
换算系数0.36是试出来的魔法数字——灌装阀从全闭到全开刚好转四分之一圈,和现实中的气动阀门动作神同步。
说到故障模拟,在用户窗口里埋了几个彩蛋。当流量计数值持续5秒不变化,就会弹出个抖动的报警图标:
Sub 流量异常检测()
Static 上次流量 As Integer = 0
Static 计数器 As Integer = 0
If GetTagValue("瞬时流量") = 上次流量 Then
计数器 = 计数器 + 1
If 计数器 > 500 Then '5秒*100ms周期
SetTagBit("流量异常", True)
弹出报警窗口()
End If
Else
计数器 = 0
上次流量 = GetTagValue("瞬时流量")
End If
End Sub
这个静态变量用得有点骚,省去了额外定义全局变量的麻烦。调试时故意卡住流量计数据,看着报警窗像打地鼠一样弹出来,莫名解压。

(文末可附运行效果视频链接,展示启停、灌装、报警等动态效果)
更多推荐
所有评论(0)