资讯详情

资讯详情

三菱FX3G+GS2110+JE伺服组合的结构化编程实战指南

1. 这套三菱组合到底能在实际设备里干什么看到标题里三菱FX3GGS2110屏JE伺服这一串估计不少刚入门的朋友第一反应是三个名字都听过但合在一起能做什么、为什么要这么搭心里其实没底。我先把这个组合的定位讲清楚后面再展开程序怎么写。FX3G是三菱小微型PLC里性价比很高的一个型号几十个点数的设备基本都够用GS2110是GS系列人机界面里很常见的型号十来寸的屏画面对话框清晰价格友好JE伺服是三菱经济型伺服用在一些定位精度要求不是极端、但也要靠脉冲控制走位置的场合。这三样组合在一起常见的落地场景就是小型自动化设备送料机构、分料定位台、小型装配机、皮带传送加定位挡停、裁切机的长度控制等等。速度不快但胜在整套电气方案都是同一家的通信协议、软元件接口、调试工具链全部贯通对于刚接触工业控制的初学者来说这是最容易把PLC程序、触摸屏画面、伺服参数三者串起来的一套配置。很多人问为什么不用别家的PLC配别家的伺服再配别家的屏便宜不少这话没错但初学者阶段最怕的不是便宜而是出问题了不知道问题出在哪个环节。全用同一家触摸屏和PLC之间的通信协议不用自己折腾伺服和PLC之间的接线定义、指令体系也是成体系的软件上GX Works2写梯形图、GT Designer3做画面、MR Configurator2调伺服三个软件各管一段文档互相印证。真出了毛病排查路径清晰得多。硬件上怎么连也值得先说一句。FX3G的晶体管输出型PLCY0和Y1可以输出脉冲接到JE伺服驱动器的脉冲指令输入端方向信号一般也用Y2这样的高速输出口给出。GS2110触摸屏则通过串口和FX3G的编程口通信或者通过扩展通信模块走以太网。伺服驱动器的报警输出、使能信号这些再回到PLC的输入点上。整条信息流是触摸屏下发命令给PLCPLC按程序逻辑运算发脉冲给伺服驱动器伺服带着电机走到位定位完成信号反馈回PLCPLC再把状态刷新到触摸屏上。写程序前把这条链路在脑子里过一遍后面每条指令都不容易糊涂。这套工程还有一个特点就是结构化的写法特别适合当范例。很多初学者第一版程序都是一把梭式的梯形图想到哪写到哪结果几十个线圈互相缠绕改一个定时器恨不得把整个程序都翻一遍。标题里特意强调结构化工程编写其实就是告诉你代码的组织方式比代码本身更值得先学。2. 初学者写程序为什么总是一坨乱麻结构化到底在结构化什么先说说最常见的乱象。我见过不少初学者拿过来的程序打开GX Works2的工程梯形图从头到尾一个主程序块全写完中间没有FEND没有子程序调用几百步全部平铺在一起。启动按钮、报警、手动自动、伺服定位、气缸动作全部混在一屏一屏的梯形图里。表面上看程序也能跑但有个致命问题改任何一个功能都可能影响别的地方。比如你本来只想调一下气缸延时结果一改发现伺服定位的步序也乱了因为二者的线圈、中间继电器、定时器编号全都交叉使用没有任何隔离。结构化做的事情说白了就是两个字分块。三菱FX3G这种小型PLC虽然没有大中型PLC那种独立任务管理但通过主程序子程序CALL调用步进梯形图STL完全可以实现清晰的分工。我自己的习惯是把所有逻辑分成这么几大块初始化、公共处理、手动模式、自动模式、伺服控制、报警处理、输出刷新。每一块都在梯形图里加上块头注释说明这个区块解决什么问题、修改日期、负责修改的人是谁。听起来很简单但真能执行下去程序的可读性会有质的提升。分块只是第一步更关键的是软元件规划。初学者最容易犯的错就是软元件随便用M0到M100一路用过去D0到D20随手就存数据完全不考虑这个寄存器是干什么的、断电保持属性是什么。结构化工程一般会提前做一张软元件分配表M100到M199固定放手动相关标志M200到M299放自动流程标志M8000到M8000这样的特殊继电器留给系统D100到D199放参数设定值D200到D299放设备状态值。这样写出来的程序看到M210就知道它大概率是自动流程里的某一步看到D150就知道是某个速度参数。排查问题时效率完全不一样。另外GX Works2里还有一个很有用的功能标签编程。意思是你先给软元件起个名字比如把M200命名为自动启动中程序里全部写自动启动中这个标签名而不是写裸地址M200。编译时软件自动分配地址。这样做的好处有两个一是程序的可读性大幅提高看梯形图时满屏都是有意义的名字不是一堆干巴巴的M和D二是以后项目复制修改换个名字重新编译就行不需要把所有地址从头捋一遍。有些老工程师不爱用标签觉得不如直接写地址直观但对于初学者来说标签编程是培养结构化思维的好工具。这里还要特别提一下FX3G的寄存器断电保持问题。很多初学者会在程序里直接用D0、D10这种普通寄存器存计数值、存当前步号结果设备断电再上电发现数据全清零了位置参数、配方参数全部要重新输入。更可怕的是反过来有些数据本来不该保存的比如某个临时状态标志结果因为选用了断电保持区域上电后设备莫名其妙接着上一次的流程继续跑。结构化工程在初始化程序里要明确地把非保持区清零一遍把该恢复的保持区参数从掉电存储区读取出来这个动作必须放在所有逻辑最前面。我在第3节给出的骨架里会把这一步的写法一起带上。3. 一个能直接抄的工程骨架以自动定位分料台为例理论说再多不如给一个具体的骨架。下面这个例子我经常拿给初学者当模板是个很典型的传送带送料伺服定位分料的小设备。需求很简单按启动按钮传送带运行把料送到位到位传感器感应到后伺服电机带动分料机构定位到三个不同工位定位完成后气缸动作推料推完自动回到起点等待下一次循环。按停止当前循环结束后才允许停机。急停按下所有输出立即切断。先说主程序的整体排版。FX3G允许我们用FEND指令划分主程序和子程序区整个程序的逻辑结构可以这样组织程序开始 初始化子程序M8002初始脉冲触发一次 公共处理段急停检测、模式选择、运行状态指示 手动/自动切换判断 手动模式子程序CALL 自动模式子程序CALL 伺服控制子程序CALL 报警处理子程序CALL FEND 初始化子程序区 手动模式子程序区 自动模式子程序区 伺服控制子程序区 报警处理子程序区 END这种写法的第一个好处是任何人拿到程序先看主程序的这个目录就大概知道整个工程的流程了。第二个好处是手动和自动的逻辑可以物理隔离不会互相干扰。切换判断放在公共处理段里用一个模式标志M比如M110.0为ON表示手动OFF表示自动。手动的子程序里做一些点动操作自动的子程序里走完整流程。自动流程是结构化的重头戏我强烈建议初学者用步号寄存器D0步号判断的方式来设计而不是靠一堆辅助继电器的自锁互锁来串流程。什么意思呢流程共分几步就定义一个数据寄存器D0存当前步号。比如第0步等待启动传送带停伺服回原点状态等待 第1步启动传送带开始送料 第2步等待到位传感器X3为ON说明料到了 第3步伺服定位到工位1 第4步气缸动作推料 第5步气缸退回计数加1 第6步判断计数值是否到设定值没到就跳回第3步去工位2 第7步全部完成回原点D0清零在程序里怎么表达当前在第几步呢就是两条指令的事LD D0 K3 如果当前步号等于3 SET M200 说明现在正在做伺服定位这个动作每次要切换步号就写MOV Kx到D0。不要去搞一大堆置位复位的辅助继电器那样程序越长越乱。用步号寄存器以后你想知道设备现在卡在哪一步直接监控D0的数值就知道了。这个思路是结构化工程里非常核心的套路我给了两个学生用这个方式写他们说第一次觉得自动流程清醒了。初始化程序里除了前面说的对应保持区清零还要做一件事把所有输出强制关闭。记住PLC上电的一瞬间如果程序刷出来之前输出点保持的是上一次的状态设备可能会乱动。标准做法是在初始化里先把Y全部复位再执行其他逻辑。此外还要把D0步号清零或恢复到设备断电前的位置具体看设备安全要求。如果设备中途断电直接把D0清零让设备回原点比较安全。主程序框架里伺服控制子程序通常是独立出来的。主流程只负责告诉伺服现在要去哪个位置真正发脉冲的指令全部集中在伺服子程序里。这样做的好处是整台设备所有用到伺服定位的地方都只有这一个出口不会出现在十几个位置乱发定位指令的情况。后面专门用一节讲这个子程序怎么写。4. 伺服控制在结构化工程里的落地电子齿轮、定位指令和回原点JE伺服是三菱的经济型伺服控制方式常见的是脉冲指令控制。FX3G脉冲输出型PLC的Y0口发脉冲串Y方向信号走Y2伺服驱动器的使能SON信号接到PLC的输出点由程序控制伺服什么时候得电。初学者一上来最容易犯的错是以为接好线、VFD那边参数随便设一下PLC就能直接发脉冲让它转。实际上伺服驱动器这边必须先设好一组基础参数比如脉冲输入模式是脉冲方向还是CW/CCW脉冲输入电子齿轮分子分母指令倍率是否接入正负限位等等。JE伺服调试软件MR Configurator2只是调整手段参数本身是存在驱动器里面的。第一次调试先在软件里用试运行功能把伺服电机动起来确认方向、转速、编码器反馈都正常再回到PLC这边发脉冲联动。这一步省掉的话后面出了故障你根本分不清是伺服没调好还是PLC程序写错了。电子齿轮比是绕不开的坎。简单说伺服电机转一圈编码器反馈给驱动器的脉冲数通常是固定的而PLC发的脉冲数不一定和电机转一圈需要的脉冲数一致中间就需要电子齿轮把两者匹配起来。举个例子假设伺服转一圈需要131072个脉冲编码器分辨率你希望PLC每发10000个脉冲伺服就走一圈那电子齿轮比就要设成10000131072或者反过来。而这个一圈对应多少机械行程取决于电机带的丝杠导程和减速比。假如丝杠导程是10mm减速比是11那么PLC发10000个脉冲机械部分走10mm也就是1mm对应1000个脉冲。要定位到20mm程序里就是20000个脉冲。我建议初学者把这些换算关系全部写到工程注释里或者做成一张表格贴在屏旁边别直接在梯形图里填死一个很大的数字不然过两个月你自己都看不懂那个481520是怎么来的。在程序里用D寄存器存目标位置在触摸屏上设定机械距离再用PLC内部做一次脉冲数换算这种做法维护起来最方便。定位指令在三菱FX3G里常用的有PLSY、DRVI、DRVA。PLSY是连续发脉冲不发位置控制那种DRVI是相对位置定位以当前位置为原点向前向后走多少DRVA是绝对位置定位以回原点后的机械原点为基准走到某个绝对坐标。结构化工程里自动流程基本只和DRVA打交道。要定位到哪个位置就把这个位置的绝对坐标值已经换算成脉冲数传给伺服子程序然后置一个启动标志M。伺服子程序等到M置ON执行一次DRVA定位完成后M8029这个特殊继电器会置ON程序里把它转成定位完成标志M再切到流程下一步。注意DRVA是一发送完脉冲就完成的但伺服真正到位要等定位完成信号。好一点的做法是不仅看M8029发脉冲完成还要看伺服驱动器反馈的到位信号不过经济型方案里先靠M8029加一个延时去读取位置接近结果也是可以的。回原点在JE伺服工程里单独写一个子程序不要混在自动流程里。物理结构上通常有近点狗DOG和Z相脉冲。三菱FX3G支持DSZR指令做带DOG的Z相回零PLC在DOG传感器ON之后开始找Z相机械上能保证每次停在同一个物理位置。初学者容易忽略的是回原点必须在自动流程之前完成而且回原点的模式要单独用输入点或者触摸屏按钮触发不能让自动程序一启动就开始回原点。原点是整个绝对定位坐标系的前提原点都没找回来谈坐标等于零。伺服报警处理也要写进程序。JE伺服的ALM报警输出通常接到PLC的一个输入点程序里要做报警锁存一旦ALM为ON置一个报警标志并切断所有运动输出除非操作员按下复位按钮否则报警标志不复位。这里还有一个坑有些初学者把伺服报警直接接到PLC的输入点但忘了在程序里锁存结果伺服报警闪了一下又恢复设备已经乱走了。报警锁存这个逻辑哪怕程序别的地方不写也必须写。把伺服相关的所有控制集中在一个子程序里还有一个附带的好处伺服的主控标志M201、目标位置寄存器D231、当前位置读取D240这些软元件全都在这个子程序区域内命名清晰不会跑到其他功能里被复用。说到复用正是下一节要重点聊的触摸屏地址问题。5. GS2110触摸屏不是画画就行画面背后全是地址规划GS2110做画面使用的是GT Designer3。很多初学者拿到这套软件第一反应是拖几个按钮、放几个指示灯画面画出来了然后发现屏上按钮按了半天PLC没反应。原因是触摸屏上的每一个按钮、指示灯、数值显示框背后必须绑定一个PLC的软元件地址。画面画得再漂亮地址没绑对或者绑冲突了一切都是白搭。我在这个组合的项目里通常会先做一张触摸屏地址规划表然后再去开GT Designer3。表的格式大概是这样的软元件区域 用途 对应画面的功能 M100.0 手动模式启动 手动页启动按钮置位模式 M100.1 手动模式停止 手动页停止按钮瞬时模式 M101.0 设备急停中标志 所有页面报警灯显示 D150 自动流程目标工位号 自动页当前工位显示 D160 伺服目标位置脉冲数 参数页设定值输入 D170 伺服实际位置脉冲数 自动页当前位置显示 M110.0 手动/自动模式切换 主页面模式切换按钮这张表的价值在于一台设备的PLC程序和触摸屏画面做地址对接时永远有据可查不会出现画面里放了10个按钮其中5个都绑定同一个M地址的情况。有些初学者是在GT Designer3里随手拖一个按钮出来忘记改地址两个按钮同时绑定M0结果按任意一个都会触发同一个功能折腾半天找不出原因查地址表立刻就能发现。画面上具体元件也要注意绑定模式。启动按钮一般用置位位模式按下时M置ON松开保持停止按钮用瞬时模式按下瞬间给一个ON信号程序内部靠它去切断流程如果画面里用了交替模式做启动停止很容易出现PLC里的状态和屏上按钮显示的状态对不上初学者尽量别用。指示灯绑定的是PLC输出状态或者运行标志不要让它直接绑定到按钮地址本身不然按钮和灯一荣俱荣看不出真实设备状态。通信连接上FX3G本身没有网口GS2110连PLC最常见的方式是通过编程口串口用专用连接电缆接好GT Designer3里新建工程时选择对应的PLC型号FX3G连接方式选直接连接/串口站号设成PLC通信参数里约定好的值。如果你的项目需要用触摸屏的网口做远程监控那就要在FX3G上加通信扩展板或者选用带网络口的FX3U系列硬件上要提前规划别等到现场布线完了才发现少了一个口。还有一个安全层面的重要提醒急停按钮必须在触摸屏画面上放一个醒目的但物理安全回路绝不能只靠触摸屏。急停开关要硬接在PLC输入回路上同时串进伺服使能的继电器回路里确保急停按下时伺服驱动器直接断电或者停止使能。触摸屏按钮触发的是PLC内部逻辑走的是软件路径软件出问题或者屏死机的时候硬件安全回路才是最后一道防线。这一点在结构化工程里属于公共处理段必须优先执行的逻辑不是画面上好看而已。画面结构的规划同样建议按功能分页手动页面、自动页面、参数页面、报警页面、原点页面。每个页面只放该页面负责的内容手动页面绝不能混入自动流程的启动按钮。报警页面上用报警列表显示PLC里的报警标志比如伺服报警、缺料报警、气压不足报警PLC里每产生一个报警就置位一个M同时把这个M绑定到画面报警列表的报警器地址上屏上就能按时间顺序显示了。6. 新手照着模板抄最容易踩中的五个深坑框架搭好了真正动手写的时候还会碰到一堆看似没问题但设备就是不动的情况。下面这五个坑我不敢说百分之百的人都会踩但至少我见过不止一次而且基本都是初学者项目中重新翻车频率最高的。第一个坑输出线圈重复使用。做结构化分工以后容易出现的场景是手动子程序里为了测试方便写了一个OUT Y3自动子程序里又有一个OUT Y3。梯形图编译的时候不一定报错但PLC扫描是顺序执行的后面执行的输出会覆盖前面的输出于是设备表现出手动时输出正常切到自动就乱来的诡异现象。排查时顺着程序看两个线圈看起来都没问题实际上后执行的那个把先执行的冲掉了。标准解法所有输出线圈集中到一个输出刷新区域逻辑程序里只操作中间继电器M最后由输出刷新区统一把M映射到Y上。逻辑里用M输出锁定Y这就是很多人说的远离双线圈的实用做法。第二个坑初始化忘了清场。上一节讲初始化时再三提了软元件清零。实际操作中经常忘掉的是那些断电保持型的D和M。比如设备跑到步号D06突然断电再上电时如果初始化没有把D0处理掉自动流程继续执行第6步甚至直接跳回第3步去工位2人员和设备安全都成问题。我的建议是初始化程序里连续清一排区域先清输出Y再清中间继电器M常用区再清D常用数据区最后把D0设成起始等待步。哪些要清哪些要保留依据就是软元件分配表上断电保持那一栏的标注这个标注必须在设计阶段就敲定。第三个坑定位指令的完成标志没用对。用DRVA做伺服定位时启动条件和完成条件必须成对出现。很多初学者写着SET M201启动定位然后定位完成M8029为ON以后忘记把它转存成一个独立标志结果下一次循环时M201还保持着ON状态定位指令被二次触发伺服直接报错或者乱跑。正确写法是每次用M201启动定位定位完成信号M8029置ON时先把M201复位再让流程进入下一步。记住启动条件一定要和完成标志互锁这是所有运动控制程序的铁律。第四个坑触摸屏地址冲突和密码锁死。前面说地址规划表就是防这个的。我在实际项目里还碰到过一种情况画面中一个数值输入框绑定D160然后又有一个配方功能把一组D地址全都写入结果配方的写入覆盖了运行中的D160设备定位坐标突然变成几千零几。这类问题在结构化工序里可以在PLC程序加一道画面参数写入校验比如参数页设定了一个D100PLC主循环里总是把它读出来判断范围是不是太离谱超范围就给报警而不是直接用。画面做修改时也要注意软件自带的注释同步功能防止地址和注释错位。第五个坑程序版本混乱。这个不是技术上写代码时踩的坑但初学者最容易被坑。GX Works2的工程文件随便改几下不加注释不存版本过一个星期打开都不知道哪一版是对的。我的习惯是工程文件夹按日期命名每次大改动前先拷贝一份存档改完以后导出一份PDF格式的梯形图放在同目录下文件名带上日期和版本说明比如v20250115_增加二次定位功能。没养成这个习惯前我也吃过亏现场调试到一半发现程序不是最新版忙了一晚上结果方向全反了。这五个坑如果都能绕开基本上就已经超过大多数初学者的水平了。接下来就是真正上电调试的顺序问题。7. 现场调试时的动手顺序以及一个月后你会感激自己的几个习惯结构化程序的调试一定要按先PLC逻辑再伺服再整机联调的顺序来别一上来就把所有机械都接电。我自己调试这种设备的标准顺序是第一步断开伺服和气缸的动力电只给PLC和触摸屏供电。在GX Works2的监视模式下用强制功能模拟输入信号把自动流程的每一步走一遍看D0步号有没有按预期跳看M标志有没有按预期置位复位看输出刷新区的Y有没有对应动作。这一步能查出百分之七十的逻辑错误。第二步只给伺服系统的控制电在手动页面点动伺服确认方向正确然后做一次回原点确认原点位置和坐标显示都对。第三步把伺服接入自动流程里但气缸先不接气走到气缸动作那一步时观察程序状态变化。第四步全部动力接上从单步循环测试开始最后才跑连续自动。调试过程中有一个几乎每天都会用到的工具就是GX Works2的软元件/内存监视窗口。把D0当前步号、M200系列流程标志、M8029定位完成、D170伺服实际位置这几个关键值全部选中放进监视画面设备走到哪一步卡在哪一步一目了然。触摸屏这边如果有条件可以在GT Designer3里用模拟模式先跑一遍画面验证按钮属性、地址绑定、页面切换都对得上再下载到真实的GS2110里能省很多现场来回刷机的时间。最后说两个和程序无关但和工程息息相关的小习惯。第一在梯形图每一大块程序的开头都用注释写清楚这一段的功能、修改日期、修改人。打个比方自动流程—伺服定位段2025-01-15修改增加等待伺服到位延时这种注释写的时候多花半分钟一年后你回来看这个工程会真心感谢当时的自己。第二把触摸屏地址规划表、伺服电子齿轮参数计算表、软元件分配表三张表放在工程文件夹里作为项目文档的一部分。程序会更新参数会调但表格跟住版本走整个项目的可维护性就是另外一个量级。当初我第一版写课题里那种三菱全家桶程序时也是从一坨蜘蛛网式的梯形图开始的改一次报警逻辑差点把整个设备流程全部搞崩。后来痛定思痛把程序推倒重来按现在这套分块思路重新组织才发现大部分疑难杂症其实都是程序结构混乱带来的。FX3G这样的PLC虽然只是小微型控制器但把它当作一个结构化工程的练习平台来用收获的东西放到以后学任何PLC上都通用。上面这套骨架和避坑清单你拿去参考也好直接抄作业也好先把一个小设备完整跑通一次比看十篇教程都管用。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →