MCGS触摸屏
学习内容A1模板建立课程概述本课为 MCGS Pro 触摸屏组态基础入门内容从零完成工程搭建实现开机动画封面 进度条自动跳转 多画面切换的完整基础框架包含封面窗口、欢迎画面、监控画面三个窗口涉及数据组态、画面组态、脚本逻辑三大核心基础操作。一、工程创建与初始保存打开 MCGS Pro 组态软件点击新建工程无需关注软件默认自带的内容点击顶部菜单栏「文件」→「工程另存为」选择保存路径为桌面点击确认完成工程保存二、窗口创建与命名窗口颜色说明黄色窗口启动窗口触摸屏上电运行后会优先自动打开该窗口绿色窗口普通用户窗口需通过跳转操作打开操作步骤在用户窗口界面点击「新建窗口」补充创建至共 3 个用户窗口右键默认的黄色启动窗口 → 选择「属性」窗口名称修改为封面点击确认右键「窗口 1」 → 选择「属性」窗口名称修改为欢迎画面点击确认右键第三个新建窗口 → 选择「属性」窗口名称修改为监控画面点击确认三、实时数据库新建数据对象切换到「实时数据库」界面点击「新增对象」创建数据对象名称设置为进度条类型建议选择浮点数后续适配滑杆控件更方便使用整数类型也可实现本案例效果四、封面窗口制作开机动画 自动跳转1. 调出控件工具箱点击界面上的工具箱按钮小锤子图标调出完整控件工具箱所有图形、按钮、输入控件均在此选择。2. 窗口背景与装饰图片窗口背景可右键空白处设置背景色推荐设置为浅色背景风格更简洁清晰插入图片在工具箱选择「图片」控件放入窗口右键图片 → 「装载位图」选择本地电脑中的图片文件示例为国旗图片需自行准备软件安装后不自带该素材调整图片至合适大小与摆放位置3. 进度条控件配置在工具箱中选择「滚动条」控件放入窗口按CtrlC复制一份备用双击进度条控件打开属性面板进行配置填充颜色设置为绿色动画效果选择「大小变化」移动方向设置为向右移动最大百分比设为 100表达式对应值设为 100点击表达式旁的问号按钮关联实时数据库中的「进度条」数据对象点击确认完成配置4. 进度百分比数值显示添加一个标签控件设置填充颜色为「无填充」边线颜色为「无边线」字符颜色黑色字体大小设为一号切换到「显示输出」选项卡选择「数值量输出」关联「进度条」数据对象单位填写%点击确认完成配置5. 循环脚本实现进度条自增与自动跳转打开运行策略中的循环策略将循环执行时间设置为100 毫秒打开脚本程序编辑器输入以下逻辑plaintext进度条 进度条 1 IF 进度条 100 THEN 进度条 0 用户窗口.欢迎画面.Open() ENDIF保存脚本并确认配置6. 跳过开机动画功能双击封面中的国旗图片添加按钮动作属性操作属性设置为「打开用户窗口」目标窗口选择「欢迎画面」实现效果运行时点击该图片可直接跳过进度条动画提前进入欢迎画面五、欢迎画面制作1. 顶部标题栏区域绘制矩形横条填充颜色设置为天蓝色作为页面顶部标题栏放入图片控件右键装载位图导入西门子 logo 图片调整大小与位置添加标签控件输入文本「基础训练项目」设置字体大小为小三号填充颜色「无填充」边线颜色「无边线」调整至标题栏合适位置2. 系统日期时间显示添加两个标签控件分别配置显示输出功能第一个标签选择「字符串输出」关联系统变量$Date用于显示当前运行日期第二个标签选择「字符串输出」关联系统变量$Time用于显示当前运行时间3. 画面切换按钮添加按钮控件属性配置取消背景图填充颜色选择浅蓝色 / 绿色文本颜色白色边线黑色字体大小设为三号按钮文本输入「欢迎画面」操作属性选择「打开用户窗口」目标窗口选择「欢迎画面」选中该按钮按CtrlC复制修改副本的文本为「监控画面」操作属性的目标窗口改为「监控画面」框选两个按钮使用对齐工具设置左对齐调整至窗口合适位置4. 当前窗口状态指示绘制一个矩形框填充颜色设置为红色放置在「欢迎画面」按钮旁作为当前所在窗口的状态标识。六、监控画面制作框选欢迎画面中的顶部标题栏、日期时间、切换按钮等全部元素按CtrlC复制切换到监控画面粘贴所有元素保持整体布局一致修改窗口背景色选择浅蓝、浅粉等与欢迎画面不同的浅色区分两个窗口视觉效果将红色状态指示框移动到「监控画面」按钮旁标识当前窗口可将顶部标题栏元素同步复制到封面窗口保持工程整体风格统一七、工程下载与运行测试点击「工程下载」将组态工程下载到触摸屏点击「启动运行」验证最终效果开机自动进入封面窗口进度条从 0% 逐步递增到 100%满值后自动跳转至欢迎画面点击画面切换按钮可在欢迎画面与监控画面之间自由切换点击封面的国旗图片可跳过开机动画直接进入欢迎画面A2官方用户管理本课基于基础工程框架移除无实用工程价值的开机动画与滑动解锁搭建工业场景标准的用户权限登录系统实现账号密码登录、操作权限管控、当前登录用户显示、锁屏退出登录等核心功能讲解用户组权限分级的工程应用逻辑。一、清理工程无用内容移除前序课程中无实际意义的滑动解锁、开机动画相关内容保留基础窗口框架删除封面窗口中的进度条控件、进度百分比文本删除循环策略中进度条自增与自动跳转的循环脚本取消封面中国旗图片的按钮跳转属性仅保留图片作为装饰保留封面、欢迎画面、监控画面三个基础窗口二、用户权限管理基础配置1. 进入配置界面点击顶部菜单栏「工具」→「用户权限管理」打开用户权限配置窗口。2. 新建管理员用户系统默认自带管理员账号可直接替换为自定义用户点击「新增用户」填写用户信息用户名称自定义示例为讲师名称用户描述厂家用户密码2023确认密码2023隶属用户组勾选「管理员组」点击确认完成创建退出配置界面三、封面窗口登录功能搭建1. 「进入操作系统」权限按钮在封面窗口添加标准按钮按钮文本改为「进入操作系统」调整按钮大小与样式双击按钮打开属性切换到「操作属性」设置功能为「打开用户窗口」目标窗口选择「欢迎画面」切换到「权限」选项卡勾选「管理员组」仅管理员组用户可点击触发操作勾选「权限不匹配时弹出提示框」点击确认保存配置2. 通用功能按钮用户登录 / 用户退出添加两个无权限限制的通用按钮所有用户均可操作用户登录按钮按钮文本用户登录双击打开属性 → 「脚本程序」→ 选择「按下脚本」非抬起脚本打开脚本编辑器插入系统函数!LogOn()用户权限操作类函数作用是弹出登录窗口权限设置不限制任何用户组所有人可点击用户退出按钮按钮文本用户退出按下脚本中插入系统函数!LogOff()作用是弹出登出确认窗口退出当前登录账号权限设置不限制任何用户组所有人可点击3. 基础功能测试下载工程并运行验证未登录状态点击「进入操作系统」弹出「权限不符合无法执行操作」提示点击「用户登录」输入账号密码示例2023登录成功后即可正常点击进入系统点击「用户退出」确认后账号登出再次失去操作权限四、当前登录用户名显示功能1. 新建数据对象进入「实时数据库」点击新增对象对象名称用户名对象类型字符串点击确认保存2. 循环脚本读取用户名打开循环策略的脚本编辑器添加语句plaintext用户名 !GetCurrentUserName()函数说明!GetCurrentUserName()为系统内置函数作用是读取当前登录的用户名称将结果赋值给字符串变量「用户名」。该函数可通过软件帮助文档搜索关键词「用户名」检索获取用法。3. 界面显示配置添加静态标签文本输入「当前登录用户」设置字体大小为小二号无填充、无边线添加带填充色和边线的文本框设置「显示输出」→「字符串输出」关联数据对象「用户名」可选美化添加圆角矩形底色设置为橙色 / 黄色置于底层作为登录区域背景添加标题文本「登录界面」五、锁屏功能逻辑优化原问题在欢迎画面、监控画面添加「锁屏」按钮仅写入!LogOff()脚本时执行后只会退出登录但不会自动跳转回封面窗口停留在当前页面会导致操作逻辑异常。优化方案利用封面窗口的「启动脚本」实现自动登出配合窗口跳转完成闭环逻辑删除各画面锁屏按钮中原有的登出脚本将锁屏按钮的操作属性改为「打开用户窗口」目标窗口设置为「封面」双击封面窗口空白处打开窗口属性 → 「启动脚本」添加语句plaintext!LogOff()实现效果每次跳转回到封面窗口时自动执行用户退出登录强制登出当前账号最终效果点击任意画面的「锁屏」按钮自动跳转回封面窗口同时触发封面的启动脚本自动退出登录弹出登出确认提示确认后回到未登录状态。六、多用户与分组权限拓展1. 新增测试用户再次进入「用户权限管理」新建第二个用户验证功能用户名称操作员孔乙己用户密码1010确认密码1010隶属用户组管理员组下载工程测试登录该账号后「当前登录用户」会同步显示对应账号名且拥有同等操作权限2. 用户组权限分级说明实际工程中建议拆分多个用户组不同组分配不同操作权限厂家组拥有全部权限可修改核心参数、上传下载工程、管理用户账号操作员组仅可进行常规画面切换、手动设备操作无法修改核心参数访客组仅可查看监控画面无任何操作权限 配置方式新建对应用户组给不同组勾选对应系统权限再将用户归入对应组关键参数按钮、厂家设置窗口单独绑定高权限用户组即可。课程核心总结MCGS 权限管控以「用户组」为核心权限分配给组用户归属于组支持一人多组、权限累加核心系统函数!LogOn()调出登录框!LogOff()退出登录!GetCurrentUserName()获取当前用户名窗口启动脚本可实现 “打开窗口即执行” 的逻辑适合做初始化、自动登出这类操作工业项目中必须配置权限分级避免无关人员误操作核心设备参数B1 点动 正反转 起保停 可视化MCGS Pro 组态课程监控画面电机控制与双模式互锁 完整操作整理课程概述本课为工业组态必备实操内容在监控画面中完成点动控制、长动起保停、正反转双模式互锁、电机旋转可视化仿真四大核心功能完整覆盖按钮组态、指示灯组态、后台策略脚本编写、逻辑互锁、动画仿真的全流程操作。一、前期准备实时数据库与窗口设置1. 新建全部数据对象所有变量均为整数类型进入实时数据库点击「新增对象」依次创建以下变量表格分类变量名称作用说明点动控制点动按钮接收点动按钮的输入信号点动控制点动输出控制点动状态指示灯长动控制长动启动长动启动按钮输入长动控制长动停止长动停止按钮输入长动控制长动输出控制长动状态指示灯正反转控制正转启动正转启动按钮输入正反转控制反转启动反转启动按钮输入正反转控制正反转停止正反转公共停止按钮输入正反转控制正转输出正转状态输出与指示灯正反转控制反转输出反转状态输出与指示灯模式控制模式选择切换输出互锁 / 输入互锁模式仿真动画可视仿真控制旋转动画帧的可见度切换仿真动画时间数值动画分频调速降低刷新速度2. 调试优化设置为提升讲课与调试效率右键「监控画面」→ 设置为启动窗口工程运行后直接进入监控界面跳过封面与欢迎画面。二、点动控制功能实现1. 界面控件组态点动按钮添加标准按钮取消背景图设置绿色填充、黑色边线文本为「点动按钮」字体设为小三号操作属性选择「按 1 松 0」按下置 1、松开置 0关联数据对象「点动按钮」状态指示灯绘制圆形控件作为指示灯设置状态颜色值为 0 时灰色值为 1 时黄色关联数据对象「点动输出」2. 后台策略脚本进入「运行策略」→ 双击「后台任务」将循环执行时间设为100 毫秒循环周期过长会导致指示灯刷新延迟、不亮右键点击「新增策略行」表达式设置为1恒为真全时运行双击策略行的脚本程序命名为「点动程序」写入逻辑plaintext点动输出 点动按钮3. 运行效果按下点动按钮指示灯点亮松开按钮指示灯熄灭实现标准点动控制。三、长动控制起保停功能实现1. 界面控件组态复制点动按钮修改两个按钮文本分别为「长动启动」「长动停止」停止按钮可设置为红色填充、白色文本框选两个按钮使用「左对齐」工具排版整齐两个按钮操作属性均设为「按 1 松 0」分别关联「长动启动」「长动停止」变量复制指示灯控件关联数据对象「长动输出」作为长动状态指示2. 后台策略脚本新增策略行表达式仍为 1全时运行脚本命名为「长动程序 / 起保停程序」写入逻辑plaintextIF 长动启动 1 THEN 长动输出 1 ENDIF IF 长动停止 1 THEN 长动输出 0 ENDIF3. 运行效果按下长动启动按钮后松开指示灯保持常亮按下停止按钮指示灯熄灭实现自锁保持功能。四、正反转双模式互锁控制1. 模式切换开关组态实现「输出互锁」与「输入互锁」两种模式切换默认模式选择 0 为输出互锁模式模式选择 1 为输入互锁模式。模式切换按钮复制按钮设置紫色填充、白色文本文本为「进入输入互锁」操作属性按下时执行「置 1」目标变量为「模式选择」再添加一个对应按钮文本为「进入输出互锁」按下时执行「清零」目标变量为「模式选择」方向指示箭头素材制作技巧可通过 WPS/PPT 快速绘制插入圆形设置等宽高如 100×100 三角形箭头组合后旋转不同角度右键「另存为图片」导出多帧素材MCGS 内组态插入位图控件装载向右箭头图片设置可见度条件模式选择 1时可见复制控件水平镜像为向左箭头设置可见度条件模式选择 0时可见选中两个箭头设置「等高宽、同心」对齐叠加放置2. 正反转操作界面组态创建三个按钮正转启动、反转启动、正反转停止停止按钮设为红色样式操作属性均为「按 1 松 0」分别关联「正转启动」「反转启动」「正反转停止」全选按钮执行左对齐排版创建两个指示灯分别关联「正转输出」「反转输出」失电灰色、得电设置为对应区分色3. 双模式互锁核心脚本新增策略行表达式 1全时运行脚本命名为「正反转双模式控制」分两段逻辑编写plaintext 模式0输出互锁 IF 模式选择 0 THEN 正转启动反转未运行时才可启动 IF 正转启动 1 AND 反转输出 0 THEN 正转输出 1 ENDIF 反转启动正转未运行时才可启动 IF 反转启动 1 AND 正转输出 0 THEN 反转输出 1 ENDIF 公共停止 IF 正反转停止 1 THEN 正转输出 0 反转输出 0 ENDIF ENDIF 模式1输入互锁 IF 模式选择 1 THEN 正转启动按下直接切换为正转 IF 正转启动 1 THEN 正转输出 1 反转输出 0 ENDIF 反转启动按下直接切换为反转 IF 反转启动 1 THEN 反转输出 1 正转输出 0 ENDIF 公共停止 IF 正反转停止 1 THEN 正转输出 0 反转输出 0 ENDIF ENDIF4. 两种模式效果区别输出互锁一个方向运行时另一个方向按钮按下无效必须先停止才能切换安全性更高输入互锁按下另一个方向按钮可直接切换运行方向操作更便捷无需先按停止五、电机旋转可视化仿真通过多帧图片轮播实现电机旋转动画效果支持正反转方向与调速。1. 素材准备用 PPT 绘制电机标识图形圆形 箭头 / 十字标记每次旋转固定角度后导出为图片共导出 4 张不同角度的图片角度越多动画越流畅保存到桌面。2. 界面组态插入 4 个位图控件分别装载 4 张不同角度的图片4 张图片全部设置「等高宽、同心」叠加放置分别设置可见度图片 1可视仿真 0时可见图片 2可视仿真 1时可见图片 3可视仿真 2时可见图片 4可视仿真 3时可见3. 动画核心脚本在正反转控制脚本中补充动画逻辑利用变量自增 / 自减切换图片帧plaintext 正转运行帧序号自增顺时针切换 IF 正转输出 1 THEN 可视仿真 可视仿真 1 IF 可视仿真 4 THEN 可视仿真 0 ENDIF ENDIF 反转运行帧序号自减逆时针切换 IF 反转输出 1 THEN 可视仿真 可视仿真 - 1 IF 可视仿真 -1 THEN 可视仿真 3 ENDIF ENDIF4. 动画调速分频降速默认 100 毫秒循环刷新速度过快动画效果不明显通过时间计数器实现 4 分频降速plaintext 时间计数器自增 时间数值 时间数值 1 IF 时间数值 4 THEN 时间数值 0 ENDIF 仅当时间数值1时才执行动画帧切换 IF 时间数值 1 THEN 将上述正反转动画切换逻辑放入此处 IF 正转输出 1 THEN 可视仿真 可视仿真 1 IF 可视仿真 4 THEN 可视仿真 0 ENDIF ENDIF IF 反转输出 1 THEN 可视仿真 可视仿真 - 1 IF 可视仿真 -1 THEN 可视仿真 3 ENDIF ENDIF ENDIF调速后动画刷新速度降低为原来的 1/4旋转视觉效果更清晰自然。课程核心总结按钮「按 1 松 0」是点动、启停输入的标准属性后台任务循环周期建议设为 100 毫秒保证响应流畅表达式为1的策略行代表程序全周期扫描运行是控制逻辑的通用载体输出互锁靠 “对方输出状态” 限制启动安全性高输入互锁按下直接切换操作便捷工程中按需选择多帧图片 可见度切换是 MCGS 实现动画仿真的通用思路配合时间分频可灵活控制动画速度PPT / 绘图软件自制组态素材是实用工程技巧无需依赖外部素材资源B-1MCGS 小车水平运动控制 组态操作步骤整理一、新建工程与窗口基础设置双击打开 MCGS 组态软件点击【新建】创建空白工程。工程默认自带 1 个用户窗口直接双击进入编辑界面保持默认窗口名称不修改。设置窗口背景颜色为浅粉红色。二、绘制轨道与小车图形绘制轨道使用绘图工具在窗口内绘制轨道图形将轨道颜色设置为红色。绘制小车使用圆形工具绘制基础图形通过复制、组合拼出小车外形将小车填充颜色设置为绿色。组合图元选中小车的所有组成图形右键依次点击【排列】→【构成图符】将小车合并为一个整体图元。三、创建实时数据库变量打开实时数据库面板点击【新增对象】依次创建 3 个数据对象车辆位置类型为整数用于映射小车的水平位置取值范围 0~100左行整数型开关量作为左行控制信号右行整数型开关量作为右行控制信号四、配置小车水平移动动画确认小车位置参数小车置于轨道最左端时X 坐标修改为 40Y 坐标保持 114 不变拖动小车到轨道最右端X 坐标为 670水平总移动行程670 - 40 630像素。选中小车图元打开动画连接属性选择【水平移动】表达式点击问号关联数据对象「车辆位置」表达式对应值设为 100即变量为 0 时小车在最左变量为 100 时小车在最右。五、编写后台运动控制脚本进入【运行策略】双击打开【后台任务】设置执行周期为100 毫秒点击确认。在后台任务中新增策略行条件表达式设为1永久执行策略功能选择【脚本程序】。在脚本编辑器中写入带边界保护的运动逻辑plaintextIF 左行 1 AND 车辆位置 0 THEN 车辆位置 车辆位置 - 1 ENDIF IF 右行 1 AND 车辆位置 100 THEN 车辆位置 车辆位置 1 ENDIF关闭脚本编辑器并保存设置。六、制作显示控件与控制按钮位置显示添加文本框输入文字 “实时位置”设置字体大小为小二复制文本框设置属性为【显示输出】→【数值量输出】关联「车辆位置」单位标注为 “米”。控制按钮添加按钮设置【操作属性】为 “按 1 松 0”关联数据对象「左行」复制该按钮修改关联数据对象为「右行」。七、下载运行与测试点击【工程下载】将组态工程下载到运行环境。点击【启动运行】按住左行 / 右行按钮小车沿轨道左右移动到达轨道两端边界后自动停止不会超出范围。B2模式选择这是昆仑通态 MCGS 组态软件中实现小车 4 种运行模式手动 / 随动 / 自动 / 寸动切换的完整组态操作。下面将口语化的操作整理为标准、可直接复用的组态步骤一、实时数据库创建核心变量先在实时数据库中新建所有数据对象类型均为整数型4 个模式触发变量手动模式、随动模式、自动模式、寸动模式用于接收按钮按下的触发信号1 个模式状态变量模式数值统一标记当前运行模式约定1 手动2 随动3 自动4 寸动二、用户窗口制作模式切换按钮制作 4 个样式统一的模式切换按钮采用「点动触发」逻辑。单个按钮基础配置新增 1 个标准按钮按钮文本修改为「手动模式」基本属性背景色设为绿色文本颜色设为黑色勾选「黑色边线」做出按钮立体感操作属性选择按 1 松 0按下时变量置 1松开时变量置 0点动触发型关联数据对象手动模式批量复制与对齐排版选中手动模式按钮通过CtrlC/CtrlV复制出另外 3 个按钮全选 4 个按钮使用工具栏「上对齐」保证水平高度一致再通过「左对齐 / 右对齐 / 等间距」调整整齐排列分别修改按钮文本为「随动模式」「自动模式」「寸动模式」依次修改每个按钮的操作属性分别关联随动模式、自动模式、寸动模式变量三、制作模式状态指示图标WPS 绘图 导入位图用 WPS 绘制 4 个方向的箭头图标作为不同模式的可视化状态指示不同模式显示对应方向的箭头。打开 WPS 演示新建空白页面设置纯色白色背景插入圆形尺寸 10×10作为底座填充白色再插入向上的三角形填充绿色将两个图形组合成「上箭头」图标选中组合图形右键「另存为图片」保存到桌面命名为图片 1将图形顺时针旋转 90°另存为图片 2右箭头再旋转 90° 另存为图片 3下箭头再旋转 90° 另存为图片 4左箭头回到 MCGS 用户窗口点击「导入位图 - 装载位图」依次导入 4 张图片统一调整尺寸为 100×100叠放在同一位置四、可见度配置模式数值控制图标显示通过可见度属性实现「模式数值为对应值时对应箭头显示」的效果。选中第 1 张图片上箭头对应手动模式打开「可见度属性」表达式填写模式数值 1勾选「表达式为真时可见」依次配置另外 3 张图片的可见度图片 2右箭头随动模式模式数值 2时可见图片 3下箭头自动模式模式数值 3时可见图片 4左箭头寸动模式模式数值 4时可见全选 4 张图片设置「中心对齐」让 4 张图完全重叠五、运行策略编写模式切换脚本通过后台策略脚本实现「按下对应按钮模式数值自动更新并保持」的核心逻辑。进入「运行策略 - 后台任务」点击「新增策略行」触发表达式设为1后台循环执行双击脚本程序块命名为「模式选择」编写如下脚本plaintextIF 手动模式 1 THEN 模式数值 1 ENDIF IF 随动模式 1 THEN 模式数值 2 ENDIF IF 自动模式 1 THEN 模式数值 3 ENDIF IF 寸动模式 1 THEN 模式数值 4 ENDIF逻辑原理按钮是「按 1 松 0」的点动型按下瞬间触发脚本把模式数值改成对应数字松开后按钮变量变回 0但模式数值会保持当前值实现状态锁存。保存脚本与策略配置六、初始值设置与工程运行回到实时数据库打开模式数值的属性将对象初值设为 1保证工程启动后默认进入手动模式点击「工程下载」将组态工程下载到触摸屏 / 模拟运行环境点击「启动运行」即可实现默认显示手动模式指示按下对应按钮即可切换 4 种模式状态箭头同步切换后续如果要给每种模式添加对应的小车动作逻辑直接在脚本中通过模式数值 几作为判断条件即可。B3模式子窗口一、窗口创建与命名在「用户窗口」栏点击「新建窗口」依次创建以下窗口主窗口作为工程运行的底层主画面是工程默认的启动窗口4 个功能子窗口分别命名为「手动窗口」「随动窗口」「自动窗口」「寸动窗口」可选优化给每个子窗口设置不同背景色手动 - 绿色、随动 - 黄色、自动 - 浅绿、寸动 - 蓝色方便运行时快速区分边界二、子窗口统一属性配置核心必设项所有子窗口都需要完成以下配置否则会出现运行卡死、无法关闭等问题选中对应子窗口 → 右键打开「属性」勾选「作为子窗口使用」设置窗口尺寸宽度 420高度 250默认在右下角弹出窗口类型选择菜单式窗口⚠️ 关键避坑禁止选「模态式窗口」。模态窗口打开后会锁定所有后台操作只能操作窗口内部点击外部无反应看似 “工程卡死”菜单式窗口点击子窗口外的区域即可自动关闭是子窗口的常用选型。三、启动自动打开默认子窗口目标工程启动后自动弹出默认的「手动窗口」。错误方案实操验证不生效在「运行策略 - 启动策略」中新增脚本调用窗口打开函数。失效原因启动策略执行时用户窗口资源还未完成初始化调用.Open()会失效表现为 “脚本写了但没反应”。正确稳定方案将脚本写在主窗口的启动脚本中主窗口加载完成后自动执行打开「主窗口」属性 → 切换到「脚本程序」标签页选择「启动脚本」画面打开时仅执行 1 次写入脚本语句plaintext手动窗口.Open()确认保存即可四、主窗口模式切换配置在主窗口上添加模式切换按钮实现点击按钮弹出对应子窗口在主画面添加按钮构件按钮文本分别设为手动模式、随动模式、自动模式、寸动模式选中按钮 → 「操作属性」 → 选择「打开用户窗口」 → 绑定对应名称的子窗口可选优化添加文本标签做界面标注提升交互辨识度五、运行测试点击「工程下载」MCGS 下载前会自动保存工程点击「启动运行」验证效果工程启动后自动弹出手动子窗口点击不同模式按钮切换弹出对应子窗口点击子窗口外部区域子窗口自动关闭实操常见问题汇总打开子窗口后画面 “卡死”检查所有子窗口是否都设为了「菜单式窗口」模态窗口会锁定全部后台操作启动后子窗口不自动弹出不要用启动策略写脚本改用主窗口的启动脚本实现子窗口边界不明显调整子窗口背景色选择与主窗口对比度高的颜色B4手动模式一、先创建对应数据对象核心避坑命名禁止重名先在实时数据库中建立 3 类变量严格区分按钮输入和输出执行避免重名导致逻辑混乱模式切换变量模式数值数值型约定值为1时代表手动模式按钮输入变量布尔型左行按钮、右行按钮专门对应窗口按钮的操作状态输出执行变量布尔型左行、右行最终关联 PLC 或设备的实际输出点二、手动子窗口的按钮配置按钮必须做在手动子窗口内不要放在主窗口 —— 这样切换到非手动模式时按钮会随子窗口一起隐藏避免误操作。打开手动窗口添加两个按钮构件文本分别标注为「左行」「右行」双击按钮进入属性 → 切换到「操作属性」选择按 1 松 0按下置 1、松开置 0即点动控制按住才运行松开立即停止符合手动调试的安全逻辑点击变量选择按钮问号分别绑定对应变量左行按钮 → 关联左行按钮变量右行按钮 → 关联右行按钮变量三、后台策略编写手动模式核心逻辑逻辑规则只有处于手动模式模式数值 1时才把按钮状态同步给输出非手动模式下该段逻辑不执行。进入「运行策略」→ 打开「后台任务」循环扫描执行的策略用于实时响应操作右键新增策略行设置触发条件表达式plaintext模式数值 1在该策略行下新增「脚本程序」命名为「手动程序」脚本内容plaintext左行 左行按钮 右行 右行按钮逻辑原理后台任务循环扫描只要满足手动模式条件就实时把按钮的通断状态赋值给输出变量实现点动控制。四、运行测试验证点击工程下载 → 启动运行进入手动模式弹出手动窗口按住左行 / 右行按钮对应输出接通松开按钮输出立即断开点击子窗口外区域可关闭窗口再次点击手动模式可重新呼出五、实操常见避坑点变量重名按钮变量和输出变量必须分开命名不能都叫 “左行”否则会出现赋值自循环、按钮失效按钮放错窗口放在主窗口会导致所有模式下都能操作按钮存在误触发的安全隐患策略放错位置不能写在启动策略里必须放在后台任务中。启动策略仅工程启动时执行 1 次无法实时响应按钮状态变化按钮属性选错不要选成 “切换开关” 模式否则点一下持续导通再点才关闭不符合手动点动的常规操作习惯B5随动模式一、前置准备新建数据对象先在实时数据库中补充所需变量注意变量类型的匹配要求已有复用变量模式数值数值型约定 2 随动模式、左行右行布尔型输出新增变量目标数值浮点数类型核心注意MCGS 滑动输入器控件仅支持浮点数绑定整数会直接报「对象类型不匹配」车辆位置浮点数类型设备当前实时位置一般对接 PLC 编码器反馈模拟调试也可先自建变量二、随动子窗口界面搭建所有操作控件都放在「随动窗口」内和手动窗口逻辑一致切换模式时随窗口隐藏避免误操作。滑动输入器滑杆调整控件尺寸适配子窗口大小「操作属性」中设置量程范围0 ~ 100关联变量目标数值浮点数数值显示构件新增两个显示输出分别标注「当前位置」「目标位置」分别关联车辆位置和目标数值可补充单位「米」选中两个控件执行对齐排版保证界面整洁三、基础随动控制逻辑后台任务逻辑规则仅当模式数值 2随动模式时才执行位置自动控制逻辑与手动模式的策略行互斥不会同时生效。进入「运行策略」→「后台任务」新增策略行设置策略行触发条件plaintext模式数值 2新增脚本程序命名为「随动程序」基础逻辑如下plaintext 基础版纯位置比较控制 IF 车辆位置 目标数值 THEN 左行 0 右行 1 ELIF 车辆位置 目标数值 THEN 左行 1 右行 0 ELSE 位置相等时停止 左行 0 右行 0 ENDIF基础版的固有问题位置抖动因为变量是浮点数精度很高比如目标值 53.8462实时位置几乎不可能和目标值完全相等会导致设备在目标值附近频繁启停、来回换向也就是俗称的 “抖动”既不稳定也会损伤执行机构。四、消抖优化增加死区容差核心改进这是工控里非常通用的死区控制思路给目标值设置一个允许的误差范围只要当前位置进入「目标值 ± 容差」的区间就认为已经到位直接停止输出避免反复微调。以 ±1 米容差为例优化后的脚本plaintext 消抖优化版增加±1死区范围 IF 车辆位置 (目标数值 - 1) THEN 距离目标较远右行前进 左行 0 右行 1 ELIF 车辆位置 (目标数值 1) THEN 超出目标位置左行后退 左行 1 右行 0 ELSE 进入目标±1区间判定到位停止输出 左行 0 右行 0 ENDIF补充说明公式里的「1」是容差值可以根据实际精度需求灵活调整 —— 要求精度高就改小如 0.5允许误差大就改大如 2。五、运行测试与效果工程下载后启动运行切换到随动模式拖动滑杆修改目标数值设备会自动向目标位置移动位置进入 ±1 容差区间后自动停止不会出现来回抖动切换回手动模式左右行点动功能依然正常可用两套模式逻辑互斥不冲突关键避坑点汇总滑动输入器必须绑浮点数绑定整数变量会直接报类型不匹配这是 MCGS 新手高频踩坑点模式逻辑必须互斥手动、随动逻辑分别放在不同条件的策略行中避免多套逻辑同时执行导致输出打架禁止用纯等于判断浮点数场景下「完全相等」几乎不会触发必然导致抖动必须加容差死区控件放在对应子窗口操作控件放在对应模式的子窗口内非该模式时随窗口隐藏降低误操作风险B6自动模式一、自动模式程序完整梳理状态机思路你这套自动程序用的是步进状态机的工控标准写法用整数变量自动状态做步号按顺序执行动作逻辑框架是完全正确的。下面先把完整规范的脚本整理出来同时修正你写法里的隐藏隐患。1. 用到的变量清单表格变量名类型作用模式数值整数3 自动模式自动启动、自动停止布尔按钮点动信号按 1 松 0自动状态整数状态步号0 待机 / 1 复位 / 2 去中间 / 3 回原点 / 4 去终点 / 5 回原点车辆位置 2浮点数当前位置实时反馈左行、右行布尔电机方向输出2. 自动程序规范脚本后台任务模式数值 3 时执行这里先修正一个核心隐患和随动模式一样浮点数位置不能用严格等于判断否则很容易出现 “到了位置不跳转、一直跑过头” 的问题必须加容差。plaintext 自动模式步进状态机控制 1. 停止逻辑优先级最高任何状态下都可触发 IF 自动停止 1 THEN 自动状态 0 左行 0 右行 0 ENDIF 2. 启动逻辑仅待机状态可启动防止运行中重复按按钮导致逻辑混乱 IF 自动启动 1 AND 自动状态 0 THEN 自动状态 1 进入复位步 ENDIF 3. 状态机步进逻辑 SELECT CASE 自动状态 CASE 1 步1复位回原点 左行 1 右行 0 位置≤0.5即判定到原点加容差避免浮点数精度问题 IF 车辆位置2 0.5 THEN 左行 0 右行 0 自动状态 2 ENDIF CASE 2 步2前往中间位置50 左行 0 右行 1 IF 车辆位置2 49.5 THEN 容差±0.5 左行 0 右行 0 自动状态 3 ENDIF CASE 3 步3从中间返回原点 左行 1 右行 0 IF 车辆位置2 0.5 THEN 左行 0 右行 0 自动状态 4 ENDIF CASE 4 步4前往最右端100 左行 0 右行 1 IF 车辆位置2 99.5 THEN 左行 0 右行 0 自动状态 5 ENDIF CASE 5 步5从终点返回原点循环结束回到待机 左行 1 右行 0 IF 车辆位置2 0.5 THEN 左行 0 右行 0 自动状态 0 回到待机状态 ENDIF CASE ELSE 异常状态兜底清零输出 左行 0 右行 0 END SELECT说明用SELECT CASE比多层 IF 嵌套更清晰后续加减速、加延时、改行程都方便修改是多步自动流程的通用标准写法。二、核心问题模式切换为什么会乱套你发现的「一切换模式系统就全乱」是多模式组态程序的经典坑根本原因有两个输出变量全局残留MCGS 里的输出变量是全局的策略行只是「满足条件就执行赋值不满足就什么都不做」。比如自动模式正在右行你直接切到手动模式右行变量会一直保持 1 的状态新的模式逻辑还没接管设备就会不受控地一直跑。状态变量残留比如自动模式跑到自动状态3的时候切走再切回来的时候自动状态还是 3会直接从第三步接着跑不会从头执行复位逻辑完全错位。简单总结模式切换时上一个模式的 “现场” 不会自动清理会直接污染下一个模式。三、协调程序模式切换初始化必加这就是你最后提到的「协调程序」也是多模式系统的核心闸门。作用是每次切换模式的瞬间先把所有输出、所有模式的状态变量全部清零复位保证新模式从干净的初始状态开始运行。实现步骤新增 1 个辅助变量模式数值_旧数值型用来记录上一个扫描周期的模式值专门用来判断 “模式有没有发生切换”。编写协调初始化脚本在后台任务里新增一个优先级最高的策略行放在所有模式策略行的最上面不设模式条件每个扫描周期都先执行这段plaintext 模式切换协调程序优先级最高 IF 模式数值 模式数值_旧 THEN 检测到模式发生变化统一复位所有资源 1. 清零所有动力输出 左行 0 右行 0 2. 复位所有模式的状态变量 自动状态 0 后续新增其他模式的状态变量都在这里一起清零 3. 关闭所有子窗口可选切模式自动关掉旧窗口 手动窗口.Close() 随动窗口.Close() 自动窗口.Close() 4. 更新旧模式标记等待下一次切换 模式数值_旧 模式数值 ENDIF工作原理每个扫描周期都会对比「当前模式」和「上一次的模式」两个值不一样 → 说明刚切了模式立刻执行全套复位输出全停、状态全清、窗口全关执行完一次后把旧值更新成当前值同模式正常运行时不会重复触发加了这段之后不管你从自动切手动、手动切随动还是随意切换切过去的瞬间所有输出都会归零状态全部重置彻底杜绝逻辑打架、设备乱跑的问题。四、补充优化建议全局停止保护可以把急停 / 停止逻辑放到协调程序里不管当前在什么模式按下停止都能立刻清零输出安全性更高。子窗口自动弹出在协调程序里补充对应模式的窗口打开语句切模式自动弹出对应子窗口不用手动点按钮plaintextIF 模式数值 1 THEN 手动窗口.Open() IF 模式数值 2 THEN 随动窗口.Open() IF 模式数值 3 THEN 自动窗口.Open()输出硬互锁在协调程序最后加一道互锁闸门无论上层逻辑怎么出错都不允许左右行同时导通避免硬件短路plaintext 输出互锁兜底保护 IF 左行 1 AND 右行 1 THEN 左行 0 右行 0 ENDIF