ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

GX Works2从入门到实战:语句表转梯形图与启动报错排查

GX Works2从入门到实战:语句表转梯形图与启动报错排查 做三菱系PLC的设备维护和程序开发GX Works2这名字基本绕不开。它是三菱MELSOFT家族里承上启下的一款编程软件从当年的GX Developer换代而来目前还在大量用于Q系列、L系列和FX系列的调试与维护工作。这篇文章我就结合自己这几年跑现场、改程序、处理软件故障的实际经验把GX Works2是什么、语句表怎么快速转梯形图以及启动时报“存储器空间或桌面堆栈不足”怎么办这几个大家问得最多的问题一次性说清楚。不管你是刚入行的电气工程师还是被老设备困住的项目老兵这篇内容对你应该都有参考价值。1. 先弄明白GX Works2到底解决什么问题1.1 GX Works2在MELSOFT家族里是什么位置三菱PLC的编程软件叫MELSOFT系列早些年大家用得最多的是GX Developer。GX Developer功能不差但界面老、工程管理方式也比较落后用起来总有点“上个时代”的感觉。GX Works2就是三菱在GX Developer基础上重新设计的新一代集成开发环境保留了老用户熟悉的操作习惯同时把工程结构、程序类型、在线调试这些底层逻辑都重构了一遍。GX Works2支持的程序语言很全包括梯形图LD、语句表IL、结构文本ST、顺序功能图SFC等。它同时支持“简单工程”和“结构化工程”两种工程模式。简单工程适合大多数传统PLC程序写起来跟GX Developer差不多结构化工程更适合大型项目可以用ST、FB功能块、多任务结构来组织代码逻辑更清晰复用性也强。简单说GX Works2就是三菱PLC从FX系列到Q/L系列都能通吃的通用工具也是目前很多设备维护场景里绕不开的标准软件。我自己的使用体会是GX Works2最舒服的一点是“向下兼容”做得足够好。很多现场还在用十几年前的FX2N、Q02H CPUGX Developer时代的程序可以直接拿过来打开、在线监控、修改下载。对于做设备维护的人来说不用为了一个新工具把老程序推倒重来这是最大的价值。1.2 和GX Works3相比什么时候该用哪个很多刚接触三菱PLC的朋友会被GX Works2和GX Works3搞晕这里我直接给结论。GX Works3是三菱新一代的编程软件界面更现代结构化编程能力更强但它支持的PLC型号是iQ-R系列、iQ-F系列比如FX5U以及部分运动控制器。换句话说如果你用的是FX3U、FX3G、Q系列、L系列这些“老将”GX Works3根本不认必须用GX Works2。反过来如果你新项目选的是FX5U或者R系列那么建议直接用GX Works3因为它针对这些新CPU做了专门优化。所以选择很简单新项目用新一代CPU就上GX Works3老设备维护、FX3U以下或Q/L系列项目就用GX Works2。这里我多说一句很多设备供应商还在用GX Works2是因为现场设备数量庞大改造成本高没必要全换。这也是GX Works2到现在还是高频搜索词的根本原因。另外GX Works2和GX Works3的工程文件互不通用打开不同软件工程的程序要特别注意别在GX Works3里直接双击GX Works2的文件容易打不开然后误以为是文件损坏。正确的做法是先用对应软件打开再用导入功能转换。2. 语句表快速转梯形图实操路线全记录2.1 为什么会有“语句表转梯形图”的需求语句表又叫指令表本质上是一行一行的指令比如LD X0、OUT Y0、MOV D0 D10这种格式。它和梯形图描述的是同一个逻辑只是表现形式不同。梯形图直观、好排故语句表紧凑、适合快速输入两者在GX Works2里是可以互相转换的。但为什么会有不少人专门搜“怎么把语句表快速转为梯形图”我接触过的场景大概有三类。第一类从别的工程师那里拿到一段指令表程序可能是旧程序导出来的文本也可能是从PDF或者截图里复制出来的你想把它放到梯形图里继续改。第二类自己习惯用语句表输入逻辑但到了排故阶段梯形图更直观希望把已有逻辑切回梯形图显示。第三类从别的软件比如某些国产PLC工具迁移程序拿到的素材只有指令文本。不管是哪类GX Works2都支持转换只是方式要选对。这里我先提醒一个最容易翻车的点GX Works2里“简单工程”的梯形图和语句表是同一个程序的不同视图你可以随时切换但它不是把梯形图“变成”语句表文件而是切换显示方式。理解这一点后面操作就不会乱。2.2 同一工程内直接切换显示最快但有限制如果你在GX Works2里打开了一个工程程序是用梯形图写的你想看看对应的语句表长什么样最简单的方法是直接在编辑器里切换显示方式。操作路径是这样的在程序编辑画面中点击菜单栏的“视图”-“梯形图/语句表显示”不同版本菜单位置略有差异或者直接看工具栏一般会有一个梯形图/语句表切换的图标。点击后当前的梯形图画面就会变成语句表形式每一行从LD、AND、OUT这样排列出来。再点一次又切回梯形图。这个方法快但它解决的问题有限它只能在同一个逻辑片段上做视图切换不能把一段单独的文本指令批量“翻译”成完整的梯形图程序。如果你手里的素材是文本文件里的一段指令直接在梯形图程序里粘贴是粘不进去的必须先新建一个语句表程序粘贴进去再转换。也就是下面要讲的第二种方法。2.3 复制粘贴加变换最通用的批量转换法这是处理外部语句表文本最实用的方法整个流程大概三分钟我拆成步骤说。第一步新建一个“简单工程”。PLC系列和CPU类型先按目标设备选好比如FX3U就选FXCPUQ系列就选QCPU程序语言选“语句表”也就是指令表。这个选择很关键如果程序语言选成梯形图后面粘贴文本时GX Works2不会把它识别成指令。第二步进入程序编辑画面把文本形式的指令表内容粘贴进去。粘贴前注意格式每行只能有一条指令指令和软元件之间用空格或Tab隔开比如“LD X0”“OUT Y0”“MOV D0 D10”。如果是从Excel或者PDF里复制的通常格式是每行一条可以直接用。粘贴完成后看起来是文本列表这就是语句表程序的原始形态。第三步按F4进行“变换”也就是编译。GX Works2会把粘贴进来的指令编译成PLC可执行代码。如果指令格式有错误底部输出窗口会提示具体行号和错误信息按提示改掉再按F4直到没有错误。第四步新建一个“梯形图程序”。在工程树的“程序”节点上右键选择新建数据程序语言选“梯形图”。然后切到刚才写好的语句表程序全选复制再切到梯形图程序粘贴按F4变换。这时候GX Works2就会自动把语句表内容翻译成梯形图显示。我实测下来这个流程对FX系列和Q系列都有效而且基本能保持逻辑完整。不过要注意如果语句表里有某些特殊指令比如变址操作、指针跳转转换到梯形图后可能会以特殊形式显示甚至出现空白块。遇到这种别慌先看编译输出有没有警告再对照原指令逐条核查。2.4 转换后必须做的检查避免带病上机转换完成后我最常做的是三件事。第一查双线圈。语句表里同一个Y输出在多个地方有OUT指令光看文本不明显但转成梯形图后在“查找”菜单里用“软元件使用一览”查一下该输出被多少处使用比人眼看着准得多。双线圈在PLC运行时是后扫描到的覆盖先扫描到的逻辑容易出问题这个检查不能省。第二核对跳转。如果程序里有CJ、CALL这类跳转指令语句表转梯形图后跳转目标步号一般不会变但显示方式可能不一样。我会把跳转指令附近的逻辑完整看一遍确认跳转目标没有错位。第三整体编译一次。转换完成后用ShiftF4做全量编译确保整个工程没有语法错误再考虑下载到PLC。我见过有人粘贴完没按F4变换直接在线写入结果PLC里还是旧程序还以为下载失败了其实就是忘了编译这一步。关于语句表转梯形图还有一个操作习惯值得说如果是别人给的PLC程序文件而不是文本指令直接在GX Works2里打开原始工程再用2.2里的视图切换就能看到梯形图完全不用费劲做转换。只有当你手里只有文本指令时才需要走2.3的流程。别把简单问题复杂化。3. GX Works2日常使用中必须吃透的几件事3.1 新建工程的四个关键参数很多新手卡在第一步“新建工程”上其实GX Works2的新工程向导只要抓住四个参数就行PLC系列、CPU类型、工程类型、程序语言。PLC系列选不对后面全白搭。比如FX3U要选“FXCPU”选成QCPU的话连通信设置都不一样。CPU类型也要精确比如Q系列里Q02H、Q06H、Q03UDV这些型号选错了程序可能编译能过但下载时型号不匹配会直接报错。我建议新建工程前先到PLC本体或者机架上拍一张CPU型号的照片照着填别凭记忆。工程类型选“简单工程”还是“结构化工程”取决于项目复杂度。如果是单台设备、程序量不大简单工程最省事。如果是大型产线、程序要分多个任务或者大量使用FB功能块那就用结构化工程。不过对大多数维护场景来说简单工程完全够用。程序语言就看个人习惯了。习惯梯形图就选梯形图习惯语句表就选语句表。有一点要注意简单工程里即使选了梯形图也可以通过2.2的方式切换到语句表显示两种语言本来就是一个逻辑的两种表达不矛盾。3.2 写程序、编译、下载监控的日常操作流程GX Works2的日常使用可以总结成一条固定流程写程序-变换编译-下载写入-在线监控-调试修改。写程序就是编辑逻辑这个不用多说。关键在于“变换”这一步在GX Works2里叫“变换”本质是把当前编辑画面里的程序编译成PLC可执行代码。按F4就可以完成当前窗口的变换。如果程序有错误输出窗口会给出提示。我习惯在写完一段逻辑后立刻按F4不要攒一大堆再编译不然错误定位起来非常痛苦。下载写入的路径是菜单栏“在线”-“写入PLC”。如果是FX系列需要USB或者串口线连接第一次连接还要装驱动如果是Q系列通过以太网连接要先在“连接目标设置”里配置IP地址和网络参数。很多连接失败的问题都是这里没设置对比如IP不在同一网段或者CPU的IP忘记写了。在线监控是维护工况最常用的功能。菜单栏“在线”-“监视模式”或者直接点工具栏的监视按钮就可以实时看到程序里各触点的通断状态梯形图上会高亮显示导通路径。这个功能在排查故障时价值极大设备不动作先看输入信号有没有到再看输出条件满不满足顺着梯形图亮灭状态就能定位到卡在哪一步。调试修改时要注意“在线修改”和“写入PLC”的区别。在线修改是运行状态下直接修改PLC里的程序一般针对局部小改动写入PLC则是把整个程序覆盖下载PLC可能会停止运行。现场设备正常生产时不要随便做整程序写入除非你想让产线停下来。3.3 那些容易在软元件上翻车的地方GX Works2里软元件的编号规则是新人最容易踩坑的地方。FX系列PLC的输入输出是八进制编号X0到X7、X10到X17这样循环没有X8和X9。如果你写程序时用了X8GX Works2会直接报错或者把它当成别的软元件。我以前带过一个新人写了个X8计数程序编译一直报错查了半天才发现是八进制的问题。这个问题在Q系列上不一样Q系列是十六进制编号X0到XF、X10到X1F没有XG这种编号。不同系列别混着记。M中间继电器、D数据寄存器、T定时器、C计数器这些软元件不同CPU类型有不同范围。比如FX3U的D寄存器范围是D0到D7999超出范围就会编译报错。这个没什么好办法只能在写程序前翻一翻对应CPU的硬件手册或者让GX Works2的“软元件一览”功能帮你查范围。还有一个点是调试时的“强制输出”功能。强制Y输出可以让一个输出点在没有满足条件的情况下直接导通这个功能做单点测试非常好用但强制完一定要记得取消。我有次在现场排故强制了一个Y1输出测试电磁阀测试完忘了取消强制结果下一班次开机时设备直接动作差点出安全事故。从那以后我养成一个习惯所有强制输出操作都用专门的记录本记下来调试完逐条核对取消绝对不会凭记忆。4. 启动崩溃“存储器空间或桌面堆栈不足”排查实录4.1 这个报错到底是内存不够还是系统资源问题很多人第一次看到“存储器空间或桌面堆栈不足因此无法起动GX Works2”这个提示时第一反应是电脑内存不够。这个方向其实不太对。这个报错里说的“存储器空间”不是普通的内存条空间而是Windows系统的“桌面堆”Desktop Heap。桌面堆是什么简单说Windows给每个窗口站分配了一块固定大小的内存区域用来存放窗口、菜单、按钮、图标这些图形界面元素。GX Works2是一个典型的32位GUI密集型程序启动时要创建大量窗口控件如果这块桌面堆被占满操作系统就没法给新窗口分配空间于是程序启动失败并报这个错误。桌面堆不足和物理内存不足的区别在于物理内存不足可以通过加内存条解决但桌面堆是系统启动时就分配好的固定空间和内存大小没有直接关系。这也能解释为什么很多配置很高的电脑依然会出现这个报错——它的问题不在硬件而在系统资源分配机制上。哪些场景最容易触发我总结下来有三种系统长时间不关机桌面堆被碎片化占用开启了大量GUI程序比如浏览器开了几十个标签页、Office、CAD等同时运行频繁使用远程桌面连接开发机因为远程会话会单独消耗桌面堆。特别是远程桌面很多PLC工程师习惯于远程连接办公室电脑改程序每次连接都会消耗一块桌面堆断开后资源不一定马上释放累积多了就会报这个错。4.2 从轻到重处理五步搞定启动失败遇到这个报错如果乱试一通很容易浪费时间。我按从简单到复杂的顺序理了一遍照着做基本都能解决。第一步重启电脑或者注销当前用户。这一步最简单但也是最有效的。桌面堆是系统启动时分配的重启后相当于重新初始化所有被占用的资源全部释放。如果重启后能正常打开GX Works2那问题就是资源被占满不是软件坏了。我建议先做这一步再往下看。第二步关闭不必要的程序清理系统临时文件。检查一下任务管理器里内存占用高的进程尤其是浏览器、Office、CAD这些GUI大户先关掉。然后清理一下C盘的临时目录。GX Works2启动时需要往临时目录写文件如果临时目录空间不足或被清理工具误删了路径也会导致启动异常。顺便检查一下环境变量里的TEMP路径是不是有效我有次碰到过TEMP指向了一个不存在的目录导致软件无法创建临时文件报的错误提示和这个非常像。第三步右键GX Works2图标属性-兼容性勾选“以管理员身份运行”兼容模式选择Windows 7。这一步能解决相当一部分Win10系统下的启动失败问题。GX Works2毕竟是老软件对新系统的权限管控和进程隔离机制有时候不适应管理员身份运行可以绕开不少限制。如果这一步有效就不用继续折腾了。第四步修改注册表扩大桌面堆。如果前三步都没解决就需要动注册表了。这里给出具体操作但请务必先备份注册表或者导出该键值。按WinR输入regedit打开注册表编辑器找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems在右侧找到名为Windows的多字符串值双击打开里面有一行类似这样的内容 %SystemRoot%\system32\csrss.exe ObjectDirectory\Windows SharedSection1024,20480,768 其中SharedSection后面的三个数字第一个是全局堆大小第二个是交互式窗口站也就是你当前桌面所在窗口站的桌面堆大小第三个是非交互式窗口站的桌面堆大小。问题通常出在第二个数字太小或者第三个数字太小。我的处理习惯是把SharedSection1024,20480,768改为SharedSection1024,20480,2048也就是把第三个数字从768提高到2048。如果系统同时跑很多GUI程序也可以尝试把第二个数字从20480提高到30720。修改完成后保存重启电脑生效。要注意Desktop Heap是系统全局资源改得过大可能影响其他服务运行所以建议一次只调一个档位重启后测试有效就行不要贪心。第五步重新安装GX Works2或者升级版本。如果以上都试过还不行可能是软件本身文件损坏或者版本太老与系统不兼容。建议卸载后在官网下载最新稳定版本重新安装。这里有个细节卸载后要检查安装目录和注册表里的MELSOFT相关残留清理干净再重装不然残留的旧配置还可能带着问题回来。装完后把系统更新补丁打上再按第三步设置兼容性一般就能正常启动了。4.3 日常防复发经验解决了启动问题之后更重要的还是别让它复发。这里分享几个我平时在维护机上养成的习惯。开发机尽量使用64位Windows系统并且不要长时间不关机。我现在给自己定了一个规则开发机每天下班关机至少每周重启一次。这个习惯不仅对GX Works2有用对其他工控软件的稳定性都有帮助。很多工控软件都有“运行时间越久越容易出怪问题”的特点定期重启是成本最低的保养方式。如果在现场需要远程连接办公电脑改程序用完远程桌面后最好注销一下会话不要直接关窗口。远程桌面连接会创建一个独立的桌面堆直接断开连接的话系统里这个会话不会立刻完全释放。我试过频繁远程连接一整天下来开发机就变成“连什么都慢”的状态。注销会话能把这个堆释放给其他程序用。另外杀毒软件的问题也值得提一句。GX Works2启动时要读取大量文件如果杀毒软件对这些文件实时扫描不仅启动速度会变慢偶尔还会因为文件被锁定导致启动失败。把GX Works2的安装目录、工程文件目录和临时目录加入杀毒软件白名单可以省掉不少莫名其妙的问题。最后再分享一个个人习惯所有工控软件我都单独用一台电脑不装乱七八糟的软件系统也关闭自动更新。不是专业洁癖而是工控软件对环境的稳定性要求非常高。现场设备停机几分钟可能就是几十万的损失与其在故障时手忙脚乱不如平时把环境维护简单干净一点。GX Works2本身是成熟的工具只要给它的运行环境做点减法它的稳定性绝对能对得起你的信任。
返回列表