Sysmac Studio基本使用全攻略:从PLC编程到运动控制调试 1. 工程环境与界面布局先把工作台理顺很多朋友第一次打开Sysmac Studio第一反应是“密密麻麻的工具栏根本不知道从哪里下手”。咱们这篇“基本使用(二)”我不打算重复第一篇里面新建工程那点事而是直接唠清楚那些每天都会碰到、但说明书上写得特别绕的常用操作。把这篇啃下来至少你能自己建工程、配轴、写ST程序、在线监控解决现场一多半“软件怎么用”的问题。面向的是已经跑过简单逻辑、但对整个软件体系还没形成完整认识的工程师。先说界面。Sysmac Studio的默认窗口布局分成左中右三块思路最左边是工程树像Windows的资源管理器一样一层层点开就能看到配置、编程、运动控制等所有东西中间就是编辑器区双击工程树里的某个对象右边就会弹出对应的编辑页面最下面通常是输出窗口和编译结果出错信息都在那儿列着。刚上手的时候不要急着点先把左侧工程树从顶层到底层捋一遍你会有一种“哦原来它把所有东西都放在了树形结构里”的通透感。很多初学者点不到面就是因为没理解这棵树的主干是什么。再说新建工程时的类型选择。入口在“文件—新建”弹出来的对话框第一项是设备型号选择这里能看到NJ、NX、NY这些控制器的型号还分CPU单元型号。选错CPU型号会直接导致后面库版本支持出问题因此新建前务必核对铭牌上的型号编码。第二个选项是梯形图或者ST作为默认程序语言这个可以选ST因为后续我们重点是ST编写第三项是运动控制轴的设置模式有“轴设置”和“轴设置设备”区别这里如果不确定选带设备模式即可后面还能改。这里的几点选择看似小实际上影响你后面能不能快捷添加EtherCAT从站和轴我在现场吃过这个亏后面细说。工程树里最值得关注的是“配置和设置”下面的“CPU”以及“运动控制”—“轴设置”和“程序”这三大块。“CPU设置”里面能改任务周期、中断、串口参数和一些扩展配置注意这里的“动作模式”可以设为“运行”或“程序”日常调试时设为“程序模式”可以防止某些误操作直接触发输出。而“I/O映射”和“全局变量”在工程树中是顶层节点不是挂在CPU下的经常有人找半天找不到标签编辑器其实就在工程树的根目录位置。1.1 主程序周期设定背后的逻辑在“CPU设置”—“任务设置”里默认会有“主任务”和“周期任务”几项。很多同学对主任务的周期设定不敏感直接默认1ms就开干了。实际上你要综合PLC运算量、EtherCAT同步周期、伺服运行速度要求来定。比如你带了一堆直线电机和视觉通讯主任务周期设成1ms但程序里执行了一大堆浮点运算和数组拷贝那极有可能每次周期算不完出现“任务超时”报警。任务周期和EtherCAT通信周期是关联的。当你启用轴时EtherCAT从站刷新周期默认与主任务周期匹配如果你把主任务调成4ms那运动控制的插补周期也会跟着变。这里建议一个常规套路纯逻辑为主且没有高速运动时用2ms或4ms有伺服插补且对轨迹平滑度比较在意时用1ms甚至更短。我是怎么判断的很简单先在2ms跑仿真观察“任务监控”标签页里的任务执行时间如果最大执行时间超过周期的80%就往上调周期或者优化程序否则留给PLC的余量不够现场上的偶发抖动、报警就更难查。1.2 库与程序结构的组织习惯再展开聊聊工程树上“程序”和“库”。程序节点下默认有几个文件夹程序、功能块、功能等。Sysmac Studio的一个工程可以建多个程序每个程序都可选择语言类型。建议你按功能块拆封逻辑控制一个程序运动控制单独一个程序报警处理一个程序。原因很简单将来定位问题的时候你顺着程序分支就能找不用翻一大坨梯形图。而且当程序之间的变量访问通过“全局变量”统一管理后模块化测试非常方便哪段逻辑出问题直接“仅编译当前程序”。库的用法也算基本操作里比较高级的一点。你可以把常用的功能块比如电机使能顺序、设备握手逻辑、模拟量滤波这些封装保存到库文件夹里。这里有一个隐藏技巧Sysmac Studio支持将库文件发布到本地然后在其它工程里导入。注意版本兼容问题库的版本和工程使用的Sysmac Studio版本必须匹配否则导入后可能报错。我的经验是封装库的时候变量命名一定带上项目前缀防止不同库之间的命名冲突这个坑我在多项目复用同一套库时踩过一次。2. 变量与I/O映射让数据在程序内部和外设之间流动刚接触Sysmac Studio那会儿最让我困惑的倒不是写程序而是“变量到底怎么关联到真实PLC地址上”。现代PLC越来越强调符号化编程Sysmac Studio也是这种思路。你在程序里不能直接读写I/O地址得通过“变量”来承载数据然后在“I/O映射”里将变量和物理地址绑定。这中间涉及两个层面一是内部变量如何定义二是变量如何映射到硬件通道。全局变量表的位置在工程树“全局变量”节点。双击打开后能看到表格名称、数据类型、初值、保持属性、注释等。个人习惯是所有和设备状态相关的变量都用N、S等前缀区分比如“N_AutoMode”、“S_AlarmCode”。这里的数据类型是关键选错了后面的运算会非常痛苦。比如你从模拟量模块读一个温度值默认16位有符号整数INT就够但是做温度数据处理时想显示小数点就需将原始工程量用浮点数保存。这里推荐的做法是模拟量原始值保持为INT参与运算或显示时转换为REAL避免SCADA和程序侧精度不一致。开关量输入输出用BOOL但I/O映射时有一个“逻辑取反”选项这个很实用。比如某传感器常闭输出接PLC输入正常有物体时信号为OFF这时你可以在映射表里直接启用取反程序内看到的就成了TRUE有物体。这样做可以避免程序里到处写“线圈取反”或用常闭触点绕来绕去工程维护起来清爽很多。2.1 直接地址映射与结构化映射怎么选I/O映射窗口左侧是节点树展开会看到Built-in IO、EtherCAT从站等设备。选中一个设备节点右侧显示所有可映射的通道。Sysmac里给通道分配标签时有两种常用方式一是双击“地址”列手动输入类似“%Q0.01”这样的绝对地址二是双击“标签”列新建或选择已有全局变量系统会自动匹配到该通道的地址。第一种适合快速直接寻址但项目一旦变量多了容易乱第二种比较推举因为整个工程只需关注标签名称后续修改硬件地址不影响程序逻辑。结构体映射是另一个十分偷懒的方式。假如你有8个气缸每个气缸有正限位、负限位、动作中、注磁等信号把它们放在一个结构体里TYPE ST_Cylinder : STRUCT PositiveLimit : BOOL; NegativeLimit : BOOL; Busy : BOOL; MagnetOn : BOOL; END_STRUCT END_TYPE然后建一个数组变量Cylinder : ARRAY[1..8] OF ST_Cylinder;。在I/O映射里把某个输入单元的16个点按顺序映射到Cylinder[1].PositiveLimit等成员。这样程序里操作Cylinder[2].Busy就非常直观不需要为每个气缸单独建一堆散落的变量。前提是你从站刷下来I/O地址顺序和你的结构体成员顺序一致。结构体映射还要求成员类型和通道位宽一致比如把16位模拟量映射到结构体的INT成员。这个方法在大型气动设备上优势明显强烈建议试试。2.2 模拟量处理中缩放与偏移的惯用套路模拟量映射不像开关量那么简单你读到的原始值是0~32767或0~65535要变成实际的0~10V、4~20mA物理量还需要量程转换。Sysmac Studio里没有像某些传统PLC那样自带的模拟量缩放指令但标准库里有“Scale”功能块也可以自己写个ST函数。常见套路如下// 模拟量原始值 0..32767 对应 4..20mA - 0..100% // 假设 AVRaw 为WORD转的INT型 AI_Percent : (INT_TO_REAL(AVRaw) / 32767.0) * 100.0;注意西门子/三菱里常有“ -32768~32767”带符号模式欧姆龙模拟量模块默认可能配置成0~32767所以不同模块要按模块规格处理。另外数字量滤波建议不要放到映射表里用程序里移动平均滤波或限幅滤波来实现。滤波会增大传感器响应延迟安全回路不要使用滤波比如急停信号就应该瞬时响应只在普通测量信号上做滤波。3. 运动控制轴配置把伺服和软件之间的那点事弄明白到了第二篇运动控制这块绕不开。Sysmac Studio的最大优势之一就是把EtherCAT总线和运动控制紧紧整合到一起。添加伺服轴不需要像传统方式那样写一堆定位指令和脉冲输出指令而是通过配置和运动指令库完成。理解好这个体系你会发现伺服配线对软件层面的依赖大大降低了。先讲添加EtherCAT轴的过程工程树“运动控制”—“轴设置”里右键“添加”选择“轴设置”。此时右侧会弹出轴设置编辑器和“配置和设置”中EtherCAT主站下的从站设备联系。在“EtherCAT”节点下如果你已经添加了伺服驱动器从站可以通过“从站信息自动生成轴”或者手动指定轴号来创建轴。两种方式都要保证轴号和驱动器节点一致否则一启动就会报轴分配错误。添加轴之后重点配置基本参数轴类型线性轴、旋转轴、旋转方向、行程范围、每圈脉冲数、工作台行程和电机每转移动量。这些参数里面最容易出问题的是“每圈脉冲数”和“电机旋转一圈移动量”。伺服驱动器电子齿轮比若设定成1:1则电机编码器分辨率比如24位即16777216脉冲/圈。如果驱动器里有电子齿轮比则需要按传动比折算。我遇到过有同事把编码器分辨率当成每圈脉冲数填进去结果100次定位跑得歪七八扭。正确做法是按伺服说明书设置好脉冲输出模式后把“每圈脉冲数”设为编码器分辨率常见16777216把“旋转一圈移动量”设为丝杠导程这样所有单位都以用户单位mm或deg为准程序里控制位置就是几何单位非常直白。行程限制在“轴设置—限制”里可以设软件正负限位。即使物理限位没接线也建议在软件里定义软限位让运动指令在越界前就被拦截防止机械碰撞。3.1 轴使能与原点复归的配置细节轴不是配置完就能直接动的你得先写使能程序。Sysmac运动库里有MC_Power功能块用它使能轴MC_Power_0( Axis : Axis1, Enable : true, RegulatorOn : true, DriveStart : true, Status PowerStatus, Error PowerError, ErrorID PowerErrID );注意Enable : true只是让功能块激活RegulatorOn和DriveStart才是伺服使能真正生效的开关。实际现场通常用急停链控制RegulatorOn急停断开时此输入为假驱动器掉使能但功能块还在运行。有的人把Enable接急停信号急停一断整个运动指令异常终止会导致许多不必要的复位流程这种接线逻辑不建议。正确思路是驱动器使能常通真正启停由模式、急停链来管理这样回原点、报错恢复都优雅得多。原点复归建议使用MC_Home功能块。Sysmac里的原点方式有1带限位开关原点2原点接近信号Z相3数据设定型原点。最常见的是伺服驱动器上接原点传感器PLC通过EtherCAT读取原点输入信号。配置时选择“原点输入信号”设定方向、原点输入逻辑、回原速度、接近速度等。这里有一个现场高频问题原点接近信号只在低速时才有效高速时接近原点就直接滑过去了所以要设置两级速度——高速去找接近开关遇到后减速到爬行速度再找Z相或原点信号保证重复精度。很多新工程师直接用一个速度冲过去回原点位置每次漂好几个丝原因就在这。3.2 电子齿轮与凸轮表快速配置电子齿轮在Sysmac里可以直接用MC_GearIn功能块也可以在主站配置中做“同步控制”。如果想实现从轴跟随主轴做比例运动比如飞剪、绕线最简单的就是MC_GearIn_0( Master : Axis_Master, Slave : Axis_Slave, RatioNumerator : 2, RatioDenominator : 1, ... );这里Ratio分子分母既可以设为整数也可以设为浮点。注意齿轮关系不是万能的机械传动间隙、负载变化会导致累积误差如果要求长距离高精度同步建议用虚轴主从同步配合电子凸轮更好。凸轮表的配置则是另一个常用场景。Sysmac里凸轮表除了可以用电子凸轮编辑器画曲线也可以导入Excel表格生成。配置步骤在“运动控制”—“凸轮表”—新建凸轮然后右键“从Excel导入”选择凸轮点数据。导入后注意检查凸轮数据的主轴角度范围和从轴位置单位周杰伦《止战之殇》那种旋律我不懂但凸轮表单位配错我是真的现场闻过。凸轮表配置完成后在程序里用MC_CamIn功能块激活。需要特别强调一下凸轮曲线生成时一定要确保起点和终点位置一致且速度一致否则机器在循环连接点会有冲击轻则噪音重则断凸轮随动。软件里会自动提示曲线不光滑新手容易忽略这种警告。4. 编程实现ST与梯形图的配合原则很多从传统PLC转过来的工程师天然喜欢梯形图看到ST就抵触。但Sysmac这款软件你用梯形图写复杂数学运算和数组处理真的会被折磨。我的核心原则很简单逻辑顺序/互锁/故障处理用梯形图数据处理/算法/批量操作用ST。两者在同一个工程里共存甚至同一个程序里可以有不同的POU没有任何问题。核心是让每种语言干自己最擅长的活而不要试图用一套语言解决所有事。梯形图的优势在于电气风格的可读性尤其是当维护人员有电工基础时看梯形图能直接理解电路关系。而ST的优势在于批量赋值、For循环、复杂表达式。例如把10个模拟量通道的滤波状态放到一起初始化梯形图你得写10行输出ST写个FOR循环就完事。看下面的代码FOR i : 1 TO 10 DO AI_Filtered[i] : AI_1[i]; // 先用原始值初始化滤波缓冲区 END_FOR;这段代码换成梯形图那画面太美我不敢看。另一个常见场景是设备状态字打包上传比如把8个BOOL状态组合成一个WORD发给触摸屏梯形图要写8段起保停或用Byte的位移位而ST一行赋值就能搞定StatusWord : 0; IF Condition1 THEN StatusWord : StatusWord OR 16#0001; END_IF; IF Condition2 THEN StatusWord : StatusWord OR 16#0002; END_IF;这种写法直观、不易错、好修改。所以我真心建议所有手上在用Sysmac Studio的朋友至少学会ST的条件语句、赋值语句、FOR循环、CASE结构你后面编程效率会提升一倍。4.1 功能块封装让复用变成一种享受Sysmac里功能块类似PLCopen标准功能块可以自己新建也可以写一个ST POU然后把声明区里的VAR_INPUT、VAR_OUTPUT、VAR_IN_OUT、VAR等定义成你的接口和内部变量。我举一个最简单的电机使能顺序功能块输入有使能命令、急停状态、伺服Ready输出有使能完成、错误码内部用一个CASE实现状态机。写功能块时要注意一个常见错误普通功能块FB必须声明一个实例才可以使用函数FUN则不需要。Sysmac里也有函数功能块默认类是功能块。新手经常把FB当函数用然后编译报错“无实例”。解决办法在全局变量表里或者调用POU的本地变量里声明一个FB类型的实例变量然后再调用。比如FB_MotorEnable_Inst : FB_MotorEnable; // 实例化 FB_MotorEnable_Inst(EnableCmd : btnStart, Ready : SvrReady, Done running);功能块实例名不能和变量冲突这一点IDE里也会做检查。建议所有FB内部状态变量不要放在VAR_IN_OUT里而是放在VAR里这样对外的接口干净也方便监控内部状态。4.2 一个ST例程从编写到赋值全流程我们来手写一个简单但完整的例程三个设备泵组的逻辑实现自动选择运行泵数量。目标根据压力设定值和当前压力调节运行数量最少一台最多三台。流程压力低加泵压力高减泵泵之间需切换轮换。为了不啰嗦我只写核心逻辑// 假设 Pumps : ARRAY[1..3] OF BOOL; // 输出给接触器 // Pressure 当前压力 REALSetPoint 设定压力 REAL // RunningCount 整型 实际运行数量 CASE state OF 0: // 停止状态 RunningCount : 0; FOR i : 1 TO 3 DO Pumps[i] : FALSE; END_FOR; IF bAutoStart THEN state : 1; END_IF; 1: // 运行状态 IF NOT bAutoStart THEN state : 0; ELSIF Pressure SetPoint - 0.5 THEN IF RunningCount 3 THEN // 加一台 RunningCount : RunningCount 1; END_IF; ELSIF Pressure SetPoint 0.5 THEN IF RunningCount 1 THEN // 减一台 RunningCount : RunningCount - 1; END_IF; END_IF; // 根据运行数量把轮换后的泵输出置位 FOR i : 1 TO 3 DO Pumps[i] : (i RunningCount); END_FOR; ELSE state : 0; END_CASE;上面这个例子里我用了一个整数RunningCount代表泵数量没有直接用泵数组来计数好处是加减泵逻辑清晰。轮换算法我没有细写实际上可以加一个RotationIndex变量每次启动时偏移。编译后这个例程可以直接分配给“程序—Program”然后在扫描周期内持续执行。在ST里FOR循环的索引变量i需要在声明区定义为INTSysmac不允许直接在循环里用未声明变量。写完程序编译时可以从输出窗口看到错误行号和信息。Sysmac有个让我很喜欢的功能双击错误信息可以直接跳到出错的代码行甚至能定位到具体变量。修改完重新编译直到输出窗口只有警告没有错误就可以进下一步仿真或在线。5. 在线监控与调试把现场问题摁在萌芽期写程序谁都会但调试才是真正见功夫的地方。Sysmac Studio的在线监控做得很直观。在工程树里右键工程名选择“在线”或点击菜单栏“在线”按钮此时分为两种情况连接真实PLC或启动仿真器。两者界面一致但仿真器不需要硬件特别适合初期验证逻辑和运动曲线。我这节主要讲在线真实设备时的操作。连接成功后工具栏会变成在线状态程序模块前会出现小标记。默认情况下在线状态下程序只能看不能改。如果你改了程序需要“传送”操作把新工程下载到PLC。这里有一个非常关键的细节Sysmac Studio下载程序时如果工程中被修改过数据且PLC正在运行默认会提示“停止运行并传送”或者“传送并运行”。如果直接把PLC切到运行那就可能造成设备突然动作。稳妥做法在“在线”—“操作设置”里勾选“传送后保持停止状态”等确认无误后再手动切到运行模式。对于调试初期我基本都是传送后停在程序模式然后一句一句推进测试。在线监控界面支持多个窗口。最常用的是“数据监视窗口”可以通过菜单“在线—数据监视窗口”打开输入变量名回车实时值和当前值都显示出来。还可以右键变量选择“修改”把当前值强制改成任意值。这一点在调试时非常管用比如你不想用传感器发信号直接给变量置TRUE观察程序响应。但注意如果程序里某一段逻辑每个周期都在赋初值你强制修改会被覆盖看起来“改了没反应”。这个其实不是没反应而是程序随后又把它重新计算了。要排查只能通过断点或修改程序逻辑。5.1 任务扫描模式下监视时序的方法Sysmac Studio支持实现在线调整和断点调试ST程序里可以设置断点。这个功能真的非常好用。你可以打开ST程序在某一行的左边框点击设置断点然后编译下载。当程序执行到该行时会暂停右侧监视窗口会显示当前所有变量的值。这在排查“为什么某条件总不成立”时效率极高。断点调试的缺点是设备正在长时间运行生产时断点会导致轴停在一个不确定位置有安全隐患。因此我建议断点调试只用于单机停机调试。如果你只是想知道某个程序块单次执行了多少次可以在里面加一个计数器变量然后在线监视该计数器而不是直接设断点。更贴现场的技巧大量逻辑用“条件满足即置位一个标志位”的思路监控这个标志位就能判断条件是否在某一个周期出现过。否则断点一停整个扫描周期也被暂停你以为发现了问题其实可能掩盖了时序问题。5.2 强制输入的几种方式与风险在数据监视窗口右键变量可以对BOOL型变量进行“强制TRUE/FALSE”。强制对象分“变量”和“物理触点”。当你强制一个映射到物理输入的变量时实际上强制的是I/O刷新后的变量值。这时候外部输入变化只要程序不覆盖它它就一直是强制值。之后再点“取消强制”或“释放所有强制”恢复。风险在哪里如果你强制了一个安全相关的常闭信号比如把急停输入强制为TRUE然后你忘了释放强制过一会儿你测试安全功能时发现急停根本没用那设备就可能冲出限位。我的习惯是每次强制之前先在变量名后面加一个“//F”注释符号标记在线测试完立马释放。当然更好的办法是不要动物理安全输入测试安全功能应该用硬件本身模拟。强制功能尽量只用于那些非关键的条件、模式选择、工艺使能信号。另外如果PLC重启强制值会被清除不要依赖强制来维持生产。还有一点多个工程师同时在同一台PLC上调试时谁强制了哪个变量是看不见的必须用“在线—分配与强制监视”这个窗口查看所有强制列表能显示当前强制状态。调试完务必全清。5.3 在线修改程序时机的选择在线修改是指不停止PLC而更新程序但Sysmac对在线修改的支持有特定条件只支持某些修改类型比如增加网络段、修改参数、替换部分指令但不支持删除或更改已经分配的数据类型尤其是变量类型。在线修改触发后程序会被部分锁定有的版本会要求“重启任务”。执行在线修改时运动控制轴会有微小停顿风险因此不要在轴跟随时做在线修改。如果涉及轴运动相关的程序变化直接停下来传送再运行别图省事。我在实际调试时尽量把在线修改限制在纯逻辑、报警文本、定时器参数这类改动。凡是和运动控制接口、EtherCAT配置有关的东西一律停机下载。稳比快重要一天出事一次就能让你白加班好久。6. 仿真模式下跑通逻辑避免把现场变成试验场仿真是一个被低估的功能。很多人以为仿真器只能跑逻辑其实Sysmac Studio的仿真器还能模拟运动轴响应、EtherCAT从站的I/O变化甚至能模拟故障。你可以通过仿真先验证手动自动模式的转换、报警复位流程、轴回原点的逻辑顺序然后在现场再直接上传会省很多时间。启动仿真的很简单点工具栏“仿真”按钮或者选择“在线—启动仿真器”。第一次启动时它会提示创建虚拟设备和虚拟轴确定即可。仿真模式下也有“运行”/“停止”按钮等同于PLC背面开关切到运行。仿真时程序会被编译并下载至虚拟PLC环境数据监视窗口照常工作。轴运动控制的MC_Power功能块也可以执行虚拟轴位置会按照当前速度积分。这允许你测试运动逻辑的位置条件不是真的带动机械动但完全能够验证程序分支选择。顺带一提仿真模式默认不会模拟实际输入输出刷新。你需要给输入变量临时赋值或强制然后观察程序输出。在模拟设备显示窗口里你甚至可以看到从站输入点并手动切换状态这样即使没有硬件信号也能完整跑一遍流程。因为我用仿真跑通了大部分逻辑现场上电后只需要做传感器阈值和设备互锁的微调极大地降低了故障概率。6.1 仿真中时间尺度与实时性问题仿真模式下任务周期不一定严格按真实时间走。虽然虚拟PLC尽量1ms一个周期但若电脑性能不足仿真速度可能变慢。尤其是在仿真中加入大量轴和复杂数值计算后你会发现虚拟轴运动速度明显低于设定值。这不是程序逻辑错而是实时性不足。因此仿真不能用来精确评估节拍时间、运动协调性能只能验证功能逻辑。如果需要时间分析还是得靠真机或高级仿真方案。规划仿真时建议把“时间无关”的逻辑先测状态机、报警、联锁、I/O对应关系。凡是涉及时间条件——比如等待一个气缸到位超时5秒在慢速仿真下你会觉得程序卡很久其实实际PLC运行不慢。为了避免这种误导可以把超时时间临时缩短到0.5秒测试。记得测试完恢复原值并且不要用仿真值直接下载到现场。6.2 仿真中模拟故障复位的常见做法故障复位逻辑是很多新工程师头疼的部分。仿真里可以手动将故障代码变量置位比如设置轴故障控制字或在数据监视窗口里直接给某个虚拟输入置真模拟限位开关卡住。然后观察程序中的复位流程是否正确进入“故障状态”。实际过程中我经常模拟三个故障同时发生的场景确认报警优先级和界面显示正确。具体操作先给故障输入置TRUE此时监控到相应报警标志位变化然后尝试启动复位命令看故障是否被清如果清不掉检查复位条件里是否要求“故障源已消失”。比如某个故障代码复位条件包含“输入信号OFF”你在仿真中忘记把故障输入置FALSE复位永远无法成功。这类问题在真实调试中也特别多先通过仿真反复熟悉复位逻辑能有效节省现场时间。7. 常见问题排查实录这几年踩过的坑一次性说透最后这一节我把经常被同行问到的几个问题整理出来以表格加文字的方式分享。这些都是我亲身经历过的或看同事反复掉落过的不是抄说明书。7.1 连接不上PLC时的排查顺序症状可能原因解决动作在线按钮灰色未打开工程或工程类型不匹配确认工程CPU型号与目标PLC一致连接超时IP地址不在同一网段设置电脑网卡IP与PLC同网段如192.168.1.x找不到设备USB驱动未装或EtherNet/IP配置错误用设备管理器检查USB驱动重装Sysmac相关驱动能连上但传输失败CPU处于运行且程序比较不匹配停止PLC或使用“传送并运行”前先备份程序连接后崩溃Sysmac版本与PLC固件版本不一致升级或降级Sysmac版本或升级CPU固件还有一条最容易忽略Sysmac Studio的在线连接需要目标PLC开启“允许在线编辑”或“允许传输”选项有的厂家默认设置是禁止在线传输。直接到PLC“CPU设置”里找到相关选项打开即可。7.2 轴使能后发抖或者堵转轴使能瞬间伺服电机高频抖动或者报堵转排除机械卡死和驱动器参数问题后软件层注意检查“轴设置—位置控制”里的“定位完成宽度”“跟随误差过大阈值”等参数。如果在使能前轴实际位置与指令位置已经偏差很大比如手动盘过电机或者编码器零点丢失使能瞬间驱动器会尝试追脉冲就会出现猛抖。此时先把轴“当前位置设为零”或执行一次原点复归将指令位置与实际位置对齐再使能轴。还有一点轴类型选错也会出现这种现象。线性轴但配置了旋转轴的位置单位导致一圈对应角度和毫米数差别巨大使能后伺服直接跑飞报警。配置轴时一定按机械机构来选滚珠丝杠平台用线性轴转台或者分度盘用旋转轴每圈移动量要对应物理实际。7.3 程序下载后设备不动作的隐形陷阱下载后明明程序已经运行但设备一点反应都没有。大多数时候是因为混淆了“程序模式”和“运行模式”。PLC前面板状态在仿真或在线时看到的模式必须切到“运行”才执行输出。另外检查输出点是否被强制尤其是调试过程中强制过输出忘了释放即使程序逻辑输出了TRUE物理输出也不会变化。这时在线监视变量显示为TRUE但输出模块指示灯不亮十有八九是强制残留或输出点使能条件缺失。另一种情况是PLC内部的安全状态有些CPU型号带有“安全CPU”功能安全功能未解锁时普通输出通道被禁止。排查时先看CPU模块上的“安全”状态指示灯如果没亮说明安全逻辑没有收到“允许输出”信号。这时候到“安全”相关配置里检查运行启动输入。这些故障现象容易误判成程序问题如果你在线看逻辑和变量都对那就往硬件使能和强制列表方向查。7.4 运动控制指令有时不触发的原因我遇到最多的情况是MC_MoveAbsolute指令的输入Execute用的是普通Bool变量该变量在程序里被置TRUE后持续保持没有形成“上升沿”。PLCopen运动控制指令大多要求Execute输入为上升沿触发如果一直为TRUE指令只执行一次后续位置修改不生效。解决办法是用MOVE指令前的“R_TRIG”功能块或者专门写一个上升沿变量。例如RTrig_ABS : R_TRIG; RTrig_ABS(CLK : bRunCommand); IF RTrig_ABS.Q THEN MC_MoveAbsolute_0( Axis : Axis1, Position : TargetPos, Velocity : Vel, Execute : TRUE ); END_IF;实际上MC_MoveAbsolute的Execute也可以直接连bRunCommand但第二次修改TargetPos再置TRUE是不会执行的你在现场经常看到“改个位置数据就是不听使唤”就这样来的。同理很多功能块的Enable和Execute区分必须理解清楚。Enable是功能块长期激活Execute是启动命令的跳动信号。这条如果没搞明白运动控制调试能把人逼疯。7.5 数据丢失与掉电保持的误区Sysmac里掉电保持由变量的“保持属性”决定。在全局变量表里保持属性勾选后该变量会保存在CPU的非易失性区域。但要注意只有变量名、数据类型、初始值和保持属性一致PLC重新上电后才能恢复。你不能指望结构体中某几个成员掉电保存而另一些不保存所有成员都统一继承结构体变量的保持属性。另一个高频误区把计数器变量设为保持属性结果手动重启后计数器应该归零却没归零导致设备误动作。所以保持属性只加在真正需要在掉电后恢复的设备号、配方号、累计产量这类变量上。还有掉电保持区的容量是有限的不要把所有变量都勾保持。一旦容量超限编译时会报“保持区溢出”导致无法下载。如果遇到这种提示检查哪些变量可以被设计为非保持清理掉即可。使用“内存访问权限”和“注释”也能帮助你快速扫描变量表。写在最后的小经验上面这些内容是我在无数个调试夜晚里总结出来的“避坑”实用记录。如果你问我最想提醒新手什么第一变量命名和注释一定写全不然三周后你自己都想不起来这个BOOL控制的是哪个气缸第二仿真一定要用但不要过度依赖现场信号和硬件的本质问题仿真替代不了第三每当你要对PLC做下载或强制操作前先拍照保存当前工程和监控值最好用Sysmac自带的项目比较功能做一次差异对比避免后来回去找不到自己改了什么。Sysmac Studio这套软件表面看功能庞杂但真正日常用到的核心功能不超过20%。把这20%用熟、用透你就能解决80%以上的应用问题。希望这篇“基本使用(二)”能让你少走点弯路后面有时间我还会接着写一些更细化的专题比如功能块库封装技巧、凸轮表曲线规划、以及和上位机通讯的案例。大家在实际使用中遇到什么具体问题也可以带着现象和截图来聊线上说不清楚的按这个思路去排至少能帮你缩小范围。