news 2026/9/30 7:30:14

手把手教你用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/9/28 22:23:26

【电动汽车响应率】考虑的是针对电动汽车充放电调度问题,由于放电奖励不同导致部分车主不愿参与放电,设计出响应率计算方法附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/9/27 18:14:35

从数据瓶颈到ROAS飙升21%!Skygo牵手热力引擎,按下游戏增长快进键

在游戏行业全球化竞争日趋激烈的市场环境下&#xff0c;如何依托高效的移动营销合作伙伴&#xff08;MMP&#xff09;破解数据短板、优化广告投放效能&#xff0c;不仅是必修课&#xff0c;更是游戏厂商实现规模化增长的破局关键。越南游戏开发与发行公司 Skygo&#xff0c;凭借…

作者头像 李华
网站建设 2026/9/27 12:09:41

需求接口人与研发接口人的职责分别是什么

需求接口人与研发接口人是连接“业务价值”与“技术实现”的两个核心枢纽。需求接口人&#xff08;通常是产品经理或业务分析师&#xff09;的核心职责是“定义”&#xff0c;即明确“做什么”和“为什么做”&#xff0c;他们对业务价值、需求优先级和用户体验负责。研发接口人…

作者头像 李华
网站建设 2026/9/27 14:01:59

基于大数据的短视频用户兴趣分析的设计与实现(程序+文档+讲解)

课题介绍在短视频平台精细化运营、个性化推荐需求下&#xff0c;传统用户兴趣分析存在 “维度单一、实时性差、精准度不足” 的痛点&#xff0c;基于大数据技术构建的短视频用户兴趣分析体系&#xff0c;整合用户行为数据、内容交互数据、环境数据等多源信息&#xff0c;实现用…

作者头像 李华
网站建设 2026/9/27 14:46:58

【最新2023】各省地区生产总值GDP 人均生产总值(人均GDP) 地区生产总值指数的 省级省份

【最新2023】各省地区生产总值GDP 人均生产总值(人均GDP) 地区生产总值指数的 省级省份 时间范围1999-2023年 人均生产总值指数(人均GDP指数) 包括一下: 人均生产总值(人均GDP) 各省地区生产总值GDP 人均生产总值指数(人均GDP指数) 地区生产总值指数 见图 说明:人均生产总值指…

作者头像 李华
网站建设 2026/9/27 8:07:55

医疗自动标注漏医生隐写症状 后来补NLP规则引擎才救回诊断准确率

&#x1f4dd; 博客主页&#xff1a;jaxzheng的CSDN主页 目录医疗数据科学&#xff1a;当Excel遇上心电图&#xff0c;我差点把医院整崩溃了 一、为什么说我是"数据界的急诊科医生" 二、那些年我在医疗数据里踩过的坑 三、那些让人拍案叫绝的医疗数据应用 四、给想入…

作者头像 李华