news 2026/4/17 17:50:02

手把手教你用MCGS撸一个立体车库控制系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用MCGS撸一个立体车库控制系统

No4.00 基于MCGS 2×3升降横移式立体车库模拟仿真设计 程序有全部注释。 编程软件:MCGS 嵌入版7.7以上版本 把最好的技术分享给大家,欢迎光临本小店 实现功能: (1)有紧急停止功能。 (2)具有检测空车位并指示功能; (3)通过按键存放到相应的空车位; (4)通过按键取相应的存放车位的车; (5)程序通过脚本程序编写,具有学习意义;

最近在搞一个2×3升降横移式立体车库的仿真项目,用MCGS嵌入版折腾了挺久。今天把核心代码和实现思路扒出来,给想玩工业组态的朋友打个样。

先看整体框架:六车位分两层,下层平移载车板,上层升降。核心脚本全写在循环策略里,上电就开始跑逻辑。先定义个全局变量组:

'//----全局变量定义---- Dim EmergencyStop As Boolean '急停标志位 Dim CarPos(6) As Boolean '1-6号车位状态(True=有车) Dim CurrentFloor As Integer '当前操作楼层 Dim TargetPos As Integer '目标车位编号 Dim MovingFlag As Boolean '设备运行中标志

急停功能的实现最简单粗暴。在画面里放个红色蘑菇头按钮,脚本写成:

Sub EmergencyBtn_Click() EmergencyStop = Not EmergencyStop '切换急停状态 If EmergencyStop Then !SetDevice(升降机, 停止) '强制停止设备 !SetDevice(横移电机, 停止) MovingFlag = False End If End Sub

重点是这个SetDevice函数,直接操作设备对象的状态。实测发现急停后必须手动复位,避免误操作。

空车位检测用了个骚操作——在画面隐藏区域摆了六个透明矩形,每个对应车位的检测传感器。用循环定时扫描:

For i = 1 To 6 CarPos(i) = GetObject("Sensor" & i).Value '读取传感器状态 If CarPos(i) Then !SetFillColor("车位灯" & i, 红色) Else !SetFillColor("车位灯" & i, 绿色) End If Next

这里用颜色变化做可视化提示,比单纯用文本显示更符合工业习惯。注意MCGS的控件命名规则,别把"sensor1"写成"sensor_1"这种带下划线的,脚本会找不到对象。

存车逻辑是重头戏。当用户点击存车按钮时:

Sub 存车按钮_Click() If MovingFlag Or EmergencyStop Then Exit Sub '防呆设计 For i = 1 To 6 '找最低可用车位 If Not CarPos(i) Then TargetPos = i Exit For End If Next CurrentFloor = IIF(TargetPos<=3, 1, 2) '判断楼层 If CurrentFloor = 2 Then !SetDevice(升降机, 下降) '上层需要降下 Do While !GetDeviceState(升降机) <> "到位" Delay 100 Loop End If !SetAnimPosition("载车板", 目标坐标) '横移动画 MovingFlag = True End Sub

这里有个坑:MCGS的动画控件坐标是相对父容器的,得先用!GetProperty拿到父容器尺寸再换算位移量。取车逻辑类似,但要反过来处理升降顺序。

最后给小白们提个醒:MCGS的脚本引擎对循环特别敏感,死循环直接卡死整个运行时。建议在循环体内加DoEvents或者Delay,像这样:

While !GetDeviceState(电机) <> "停止" Delay 50 '释放CPU时间片 If EmergencyStop Then Exit While Wend

完整工程里还加了声光报警、操作记录查询这些锦上添花的功能。需要源码的兄弟可以私信,注释写得比毕业论文还详细(笑)。下次有机会再聊聊怎么用MCGS做Modbus通讯,那才是真·掉头发系列。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:38:50

树形动态规划

文章目录前言一、树形动态规划是什么&#xff1f;二、对树形动态规划的分析1.分析具体实例2.树的构建过程以及最终的代码前言 上期文章&#xff0c;我们讲了区间动态规划的内容&#xff0c;如果对区间动态规划的内容还有疑问的话&#xff0c;可以参考我的上期内容&#xff0c;…

作者头像 李华
网站建设 2026/4/18 5:27:56

Spring Bean自动装配(Autowiring)模式详解

Spring Bean自动装配&#xff08;Autowiring&#xff09;模式详解一、核心概念&#xff1a;自动装配 vs 手动装配装配方式核心区别配置方式&#xff08;XML示例&#xff09;手动装配开发者显式指定每个依赖项的引用。使用 <property> 标签的 ref 或 value 属性。自动装配…

作者头像 李华
网站建设 2026/4/18 7:04:31

基于AI智能名片链动2+1模式S2B2C商城小程序的商户端微商平台构建研究

摘要&#xff1a;在数字化商业浪潮下&#xff0c;商户端微商面临激烈竞争&#xff0c;需构建全面且高效的平台体系。本文聚焦AI智能名片链动21模式S2B2C商城小程序在商户端微商平台构建中的应用&#xff0c;从技术、宣传、资源三个平台维度展开研究。通过分析该模式在各平台的作…

作者头像 李华
网站建设 2026/4/18 8:20:45

专注充电桩投资,招募城市合伙人 - 慧知开源充电桩平台

专注充电桩投资&#xff0c;招募城市合伙人 - 慧知开源充电桩平台 我们提供资本与战略&#xff0c;您负责落地与执行。本团队的核心业务是 投资建设充电桩&#xff0c;并作为您的投资人兼战略顾问&#xff1a;投入全部资金&#xff0c;并在选址、技术、资源等关键环节提供支持&…

作者头像 李华
网站建设 2026/4/18 6:24:01

Java毕设选题推荐:基于vue+协同过滤算法的动漫推荐系统热门动漫浏览、文章专栏阅读【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华