ARTICLE DETAIL

资讯详情

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

西门子1200与V90、步科MD60第三方伺服PROFINET通讯调试

西门子1200与V90、步科MD60第三方伺服PROFINET通讯调试 去年年底接了一台六轴包装机的电控改造客户预算卡得极紧主轴加两轴用西门子V90剩下三轴想用国产伺服压成本。PLC是现成的西门子1200具体型号1215C DC/DC/DC。方案讨论到最后屏幕上就剩下一个绕不开的问题西门子1200能不能在同一条PN通讯总线上把V90和步科MD60这样的第三方伺服一起挂上去而且还得让它们互不干扰、诊断干净、程序好写答案是可以而且这条路我走通了但中间踩的坑比想象中多。这篇就按我实际调试的顺序把西门子1200与V90、步科MD60第三方伺服做PN通讯这件事从头到尾拆一遍从选型思路、GSDML导入、报文映射到设备名分配、控制字时序、故障排查能给的参数和地址我都给到适合已经摸过博途但第一次混挂第三方伺服的朋友也适合想从脉冲控制切到总线控制的老电工。1. 混挂方案的整体思路与前期规划1.1 为什么要在一条总线上同时挂V90和第三方伺服先说清楚这件事的动机不然容易被人说成是没事找事。在一条PROFINET总线上混用西门子自家伺服和第三方伺服本质上是被成本和货期逼出来的折中方案而不是技术洁癖。V90这种驱动器优势在于跟西门子生态咬得死博途里有现成的目录条目、V-ASSISTANT一键优化、能直接挂工艺对象做位置控制动态响应和调试效率都高。但它的单轴成本摆在那一台设备上如果六七个轴全上V90光伺服就吃掉大半预算。反过来步科MD60这类第三方PN伺服单轴价格能压下来一大截做定速输送、简单定位、张力辅助这些负载不复杂但数量多的轴完全够用。那为什么不干脆各走各的比如V90走PN第三方伺服走脉冲。我一开始也想过这条路很快就否掉了。脉冲控制一根轴至少要三根线脉冲、方向、使能六轴就是一堆线柜内走线乱、抗干扰差而且脉冲口没有回读、没有诊断出了问题只能拿示波器去量。模拟量控制更别提零漂和标定能耗掉一整天。全部走PN之后一根网线级联下去组态在一个工程里诊断在一个界面里看换站的时候改个设备名就行后期维护的账算下来远比省下的那点驱动器差价划算。还有个现实原因西门子1200本体的PN口只有一个网段如果混挂的话所有设备在同一个网段里PLC只需要一份硬件组态、一套I/O地址表、一段控制逻辑程序结构反而更清晰。真正麻烦的地方不在能不能挂而在于第三方伺服的报文定义、控制字位定义、参考转速标定和西门子不完全一致这才是需要花心思的地方。1.2 网络拓扑形态与控制方式的定型拓扑上我选的是线性级联没有额外加交换机。原因很简单V90 PN是双网口的步科MD60我这台也是双网口两个口内部是交换机结构完全可以首尾串起来。PLC的PN口接第一个设备第一个设备的第二个口接下一个最后形成一个链。这样做的好处是省一台交换机、省线、柜内走线干净代价是中间任何一个设备断电后面的设备就全掉线所以供电必须保证稳定不能有设备被单独断电的操作习惯。如果你手上的第三方伺服是单网口的那就必须加交换机。交换机选型上我不建议图便宜用非管理型的杂牌PROFINET虽然跑在标准以太网上但对广播风暴、组播流量比较敏感一个劣质交换机会让你在调试阶段怀疑人生。预算够就上西门子SCALANCE预算紧就用知名品牌的工业级管理型交换机把组播抑制打开。实时等级这块要提前定性V90和MD60都支持PROFINET RT实时但等时同步IRT这种需要硬件支持的高级特性第三方伺服基本不参与。所以整个网络就按RT来设计更新周期我设的是4ms这个值后面还会细说因为它直接关系到看门狗超时报警。控制方式上V90我留了一个轴走工艺对象做位置控制其余走速度控制MD60三台全部走速度控制由PLC给速度和启停位置由机械限位和传感器兜底。这个分工是根据负载特性定的不是拍脑袋。1.3 硬件清单与选型核对动手之前先把手上的家伙什核对一遍。这一步看着琐碎但漏一个后面就要返工。名称型号/规格数量备注PLC西门子S7-1200 1215C DC/DC/DC1自带PN口本体I/O够用西门子伺服SINAMICS V90 PN 版本2必须确认是PN版不是脉冲版第三方伺服步科MD60支持PN3确认固件版本网线工业级PROFINET网线绿皮6别用普通超五类跳线电源24V/10A开关电源2控制电源与动力分开交换机工业级管理型备用1单网口设备时使用有两个坑我先点出来。第一V90有脉冲版和PN版之分订货型号里带PN才是总线版拿错型号的话后面全白费。第二步科MD60要确认固件支持PROFINET从站老固件可能只支持Modbus或者CANopen这个必须找供应商书面确认。网线这块我吃过亏用普通办公跳线跑PROFINET短距离看着没事设备一多、线一长就开始丢包诊断里全是站故障换成工业级PROFINET网线之后一次都没出现过。注意所有PN设备的供电尽量走同一路24V避免某个设备先上电、某个后上电导致启动时网络反复重连博途里会刷一堆站故障记录排查起来很费神。2. 博途组态前的准备工作2.1 GSDML文件的获取与版本核对西门子1200要认识第三方设备靠的就是GSDML文件你可以把它理解成设备的身份证说明书里面定义了这台设备叫什么、支持哪些报文、I/O数据怎么排布、参数怎么配。V90在博途的硬件目录里通常自带路径一般在其他现场设备 → PROFINET IO → Drives → SIEMENS AG → SINAMICS下面目录里能搜到V90 PN。如果博途版本比较老目录里没有就去西门子官网按V90的固件版本下载对应的GSDML。步科MD60的GSDML就得去步科官网的资源下载区找按型号加固件版本精确下载文件名一般是类似GSDML-V2.3x-Kinco-MD60-xxxxxxxx.xml这种格式。这里有两个关键点必须核对清楚我列出来GSDML版本要和博途版本兼容。博途每个大版本对GSDML的版本上限是有要求的太新的GSDML导进老博途会直接报错或者导入后设备显示异常。原则是GSDML版本不要超过博途支持的上限宁可降一档。GSDML要匹配实际固件。同一型号不同批次的驱动器固件升级后报文定义可能微调。我建议先读一下驱动器面板上显示的固件版本再去下载对应GSDML不要图省事直接下最新版。导入的路径是博途菜单选项 → 管理通用站描述文件(GSD) → 源路径选到xml所在文件夹 → 勾选 → 安装。安装完重启一下硬件目录在其他现场设备下就能搜到步科的设备了。这一步如果报错最常见的两个原因是文件本身损坏重新下载和博途没关干净关掉所有博途进程再重开。2.2 设备名称与IP地址的规划原则PROFINET里每个设备都有两个身份一个叫设备名称PROFINET Device Name一个叫IP地址。很多人以为IP设对了就能通其实设备名称才是PROFINET识别设备的唯一依据IP是组态下发时跟着名称一起写进去的。所以现场调试的第一件事永远是分配设备名称而不是纠结IP。设备名称有一套命名规则必须遵守否则博途不让你保存只能用小写字母、数字和连字符不能以连字符开头或结尾不能有两个连续的连字符总长度不超过63个字符。我见过有人用下划线命名结果分配时一直失败改掉就好了。我的规划习惯是这样的按功能分区命名一眼能看出是哪台设备设备名称IP地址说明S7-1200plc-1215c192.168.0.1主站V90 主轴v90-spindle192.168.0.11工艺对象位置控制V90 送料轴v90-feed192.168.0.12速度控制MD60 轴1md60-axis1192.168.0.21速度控制MD60 轴2md60-axis2192.168.0.22速度控制MD60 轴3md60-axis3192.168.0.23速度控制用功能名而不是dev1、dev2这种好处是若干个月后回来维护看名字就知道是哪根轴不用翻图纸。IP地址我习惯从11开始给驱动器避开前面几位方便以后加触摸屏或者远程模块。还有一个习惯在博途组态I/O地址的时候把自动分配地址的勾去掉手动填固定地址比如V90主轴从I68.0开始送料轴从I72.0开始每台设备留够地址空间。这样以后换站、换型号只要地址还在这个区间程序基本不用改。2.3 固件版本、博途版本与GSDML的三方对应这三个东西必须对得上才算具备开工条件。我遇到过一次特别坑的情况博途是V16步科的GSDML下的是最新版导入之后设备能认出来但组态报文的时候目录里只显示标准报文1没有报文3而我的方案是要用报文3。折腾了半天才发现是GSDML版本和博途不完全匹配换了一个稍旧版本的GSDML就正常了。所以我的建议是建立一张对应表把每个设备的固件版本、下载的GSDML版本、当前博途版本记下来存档。以后升级博途或者换设备翻出来一看就知道该配什么。这个习惯在多人协作的项目里尤其重要不然你调好了别人一动就乱。V90那边也一样博途自带目录条目对应的固件版本和实际驱动器固件差太多时可能出现组态下载后设备红灯常亮、不进入数据交换的情况下载前先在驱动器面板上核对一下固件。实操心得我一般会在电脑上建一个项目文件夹里面分GSDML截图程序备份诊断记录四个子目录所有安装过的GSDML原文件都留一份换电脑或者重装博途的时候直接导入不用满网络找。3. 西门子1200与V90 PN的组态与调试3.1 报文选择与PDU长度核算报文Telegram这事儿是PROFINET伺服控制的核心概念值得说透。你可以把报文想象成PLC和驱动器之间约定好的一个数据信封信封里装几个字PZD过程数据字每个字代表什么含义、什么顺序都是报文定义好的。PLC往里写控制字和设定值驱动器往里回状态字和实际值。选错了报文就像双方说不同的语言数据对不上设备要么不动要么乱动。V90 PN常用的报文有这么几种我把它们的特点整理成表报文PZD结构典型用途控制精度标准报文12字出/2字入简单速度控制一般标准报文32字出/2字入配合TO_SpeedAxis较高标准报文1024字出/4字入配合TO_PositioningAxis高位置类报文含位置设定值EPOS内置定位取决于驱动器标准报文1的内容是输出方向两个控制字控制字STW1和转速设定值NSOLL_B输入方向两个状态字状态字ZSW1和实际转速NIST_B。结构最简单适合我这种只让轴转起来、由PLC做逻辑的场合。标准报文3结构看着和报文1一样区别在于控制字位定义的处理方式它更适合搭配S7-1200的TO_SpeedAxis工艺对象让PLC的工艺对象去管加减速曲线。标准报文102是我做位置控制时用的4个字出去STW1、NSOLL_B、STW2、保留4个字回来ZSW1、NIST_B、ZSW2、保留。它专门为西门子的工艺对象设计挂了TO_PositioningAxis之后博途会自动按报文102的格式去读写。第三方伺服基本见不到这个报文这就是混挂时结构上不对称的地方后面第五节讲。再说PDU长度。每个设备的输入输出数据加起来占用一定字节数这个字节数决定PROFINET帧的长度。挂的设备越多、报文越长一帧里塞的数据越多网络刷新一遍的时间就越长。4个轴的报文1其实占不了多少字节问题不大如果你挂了一堆长报文的设备更新周期就不能设得太激进。博途里更新周期设好之后看门狗时间默认是更新周期的3倍这个值是可以调的我后面讲排查的时候会用到。3.2 工艺对象还是报文直接控制V90到底要不要挂工艺对象这个问题我纠结过挺久。两条路的区别用生活化的比喻报文直接控制相当于你亲自开车油门刹车全靠你踩程序里自己写加减速逻辑、自己处理限位工艺对象相当于请了个代驾你只告诉它去这个位置加减速曲线、位置环、限位监控它全帮你管了。挂工艺对象的好处是省事、安全、功能全TO_PositioningAxis自带回零、软限位、动态参数限制、故障处理调试的时候还能用在线调试面板手动点动看实际位置曲线。代价是占用PLC的资源1215C挂两三个工艺对象还行挂多了扫描周期明显变长。而且工艺对象对报文有要求位置控制一般得用报文102。不挂工艺对象、直接用报文控制的好处是轻量、灵活、可预测PLC该干逻辑干逻辑位置控制交给驱动器自己做V90的EPOS内置定位或者干脆就做速度控制。缺点是加减速、保护这些都得自己在程序里实现写不好容易出机械冲击。我的最终方案是这样分工的主轴精度要求高、要做位置同步挂TO_PositioningAxis用报文102送料轴就是定速送料用报文1做速度控制PLC给个启动位加一个转速值完事。这个思路的核心判断标准是负载要不要严格的位置闭环要就上工艺对象不要就用报文硬控简单可靠。注意事项工艺对象的机械参数每转增量、每转负载位移、减速比必须和实际机械完全对上错一位都可能出现位置飞车或者定位偏差。这些参数不是拍脑袋填的编码器分辨率查手册减速比查机械图纸负载位移用尺子量。3.3 控制字/状态字时序与使能流程报文选好了接下来就是把控制字STW1的位定义搞清楚这是让伺服按预期动作的关键。STW1是个16位字每一位含义不同我列几个最常用的位0 ON/OFF1置1是运行置0是斜坡停车位1 OFF2低有效置0是自由停车惯性停车位2 OFF3低有效置0是快速停车位3 脉冲使能置1才允许输出脉冲位4 斜坡函数发生器使能置1才允许加减速位6 转速设定值使能置1才接收转速设定位7 故障复位上升沿复位故障位10 由PLC控制置1表示控制权在PLC标准启动流程是这样的先给一个 16#047E位1到6置1位0为0让驱动器进入就绪状态确认状态字ZSW1位0接通就绪为1后再把控制字改成 16#047F位0也置1这时候伺服才真正启动。停止的时候反过来先写回 16#047E等电机停下再断开。我用SCL写一段速度控制的核心逻辑思路是把启动、停止、故障复位封装成一个功能块// 标准报文1 速度控制核心逻辑 // 输入: Enable(启动) SpeedSet(转速百分比 -100~100) Reset(复位) // 输出: CtrlWord(控制字) SpeedOut(转速设定值) IF #Reset THEN #CtrlWord : 16#04FE; // 位7置1触发复位其余保持 END_IF; IF #Enable THEN #CtrlWord : 16#047F; // 正常运行 // 转速设定: 100% 对应 16#4000(16384) #SpeedOut : REAL_TO_INT(#SpeedSet * 163.84); ELSE #CtrlWord : 16#047E; // 斜坡停车 #SpeedOut : 0; END_IF;这里最关键的一点很多人第一次做会栽报文里的转速设定值不是转速本身而是一个按参考转速标定的百分比值16#4000十进制16384对应100%的参考转速。V90的参考转速是参数P2000默认是电机额定转速你在PLC里给16384驱动器就按100%额定转速跑。如果你期望的转速和额定转速不一致得自己换算。这个换算逻辑我写成乘163.84的表达式就是为了把-100到100的百分比转成16位整数的标定值MATLAB式地推一遍100%对应16384那1%对应163.84所以百分比乘以163.84就对了。同样的道理第三方伺服的参考转速参数如果和V90不一样哪怕两边给的是同一个16384实际转速也不一样。这个问题后面在MD60那节会重点说。4. 步科MD60第三方伺服的集成方法4.1 导入GSDML并加入设备视图步科MD60的集成前半段和V90不太一样。GSDML装完之后在设备与网络视图里从右侧硬件目录找到步科的设备条目把它拖到网络视图上然后用鼠标从PLC的PN口拖一根绿线连到MD60的PN口上。连线成功之后下面会自动生成一个子网说明这两个设备在同一个PROFINET网络里了。拖进来之后第一件事是改设备名称。GSDML里自带的名称一般是厂家预设的比如md60或者kinco-md60必须改成你在规划表里定的名字比如md60-axis1。改的地方在设备属性里的PROFINET接口 → 以太网地址 → 设备名称同时把IP地址也改好。这里有个细节设备名称改完之后博途会提示设备名称与GSDML中的不同这是正常的因为你就是在改它确认即可。第二件事是选报文。双击MD60设备进入设备视图在报文插槽里会有下拉菜单列出这个GSDML支持的所有报文。我手上这台MD60提供的是标准报文1和标准报文3我就按速度控制选了报文1。选中之后下面的I/O地址就自动分配出来了输出方向是控制字和转速设定值输入方向是状态字和实际转速地址起始一般从68.0之类的排下去。第三件事也是容易忽略的把自动分配地址勾掉手动把地址固定成你规划的值。自动分配会随着设备顺序变化而变化今天加了台设备地址全乱了程序里的IO点位全得改非常痛苦。手动固定之后即使以后插入新设备已分配设备的地址也不动。4.2 报文映射差异与I/O地址分配报文选好之后I/O地址的映射关系一定要现场核对不能想当然。原因在于第三方GSDML里报文的PZD顺序虽然理论上遵循标准但实际实现和西门子可能有细微差别。比如同一份标准报文1西门子的定义是 PZD1 STW1控制字PZD2 NSOLL_B转速设定但某些第三方厂家的GSDML里可能把PZD顺序反过来或者把状态字和实际值的位置对调。你不核对就是典型的通讯通了但数据全反了伺服要么不动要么乱转。核对的笨办法很有效在博途的设备视图里展开报文插槽看看每一路I/O的起止地址和对应的变量名博途会标明每个字是控制字还是设定值。然后对照步科手册里的报文定义表逐字比对。如果不一致就得在程序里做映射转换把PLC写的地址和驱动器期望的顺序对齐。我的具体地址分配是这样的以MD60轴1为例方向起始地址长度含义输出Q68.02字节控制字STW1输出Q70.02字节转速设定值输入I68.02字节状态字ZSW1输入I70.02字节实际转速配好之后程序里读IW68状态字、写QW68控制字非常直观。地址固定下来之后写一个通用的速度控制功能块用多重背景或者数组来管多台MD60逻辑只需要复制。三台MD60共用同一个块只是传入不同的IO地址和参数程序结构一下就清爽了。还有一个实用技巧在博途里给这些I/O地址定义PLC变量标签比如MD60_A1_STW1、MD60_A1_ZSW1不要直接用QW68这种裸地址写程序。标签化之后以后地址变了只要改标签对应的地址程序逻辑一个字都不用动。这个习惯能让你的程序可维护性上一个台阶。4.3 MD60侧的关键参数设置驱动器侧的参数设置是混挂方案里最容易被忽略、又最容易出问题的一环。PLC和博途那边配得再完美驱动器自己没切到通讯控制模式照样不动。第一控制模式要切到PROFINET或者通讯控制。步科MD60一般通过面板或者上位机软件比如Kinco的调试软件设置参数名可能是控制源指令来源之类把它设成通讯或PROFINET而不是本地或者模拟量。这个参数没设的话PLC发的控制字驱动器的控制环根本不理会状态字可能还是正常的特别具有迷惑性。第二参考转速要对齐。前面说过报文里的转速设定值是标定值16384对应100%参考转速。V90的参考转速是P2000MD60也有类似参数我一般把两边都设成电机的额定转速这样同样的16384在两边代表同样的实际转速。如果两边不一致虽然各自都能跑但当你做多轴同步的时候比例就对不上了。第三报文类型要和博途里选的一致。GSDML里选的是标准报文1驱动器参数里也要设成标准报文1。有些驱动器支持自动识别有些必须手动设设错了通讯能建立但数据交换会报错表现为BF红灯闪或者驱动器报通讯故障。第四位置数据和速度数据的单位。如果MD60只做速度控制这步可以跳过如果要做位置就得在驱动器里设置电子齿轮比、每转脉冲数这些参数并和PLC侧保持一致。避坑提醒第三方伺服的参数分布在面板菜单和上位机软件里可能不一样别只看面板。我遇到过一次面板上设了半天没反应后来用上位机软件一看实际生效的是软件里的参数面板改的没写进去白白折腾两小时。调试第三方设备上位机软件一定要装、要用。5. 联调与常见问题排查实录5.1 设备名分配失败与DCP排查组态编译下载之前有个前置动作必须完成给每个设备分配设备名称。这个操作在在线 → 分配设备名称里做博途会通过DCP协议扫描网段里所有还没分配名称或者名称不对的设备。扫描不到或者分配失败是调试阶段的高频问题我把排查顺序整理出来按这个顺序走基本都能解决网卡选对没有。博途的分配对话框里要选你实际用来连设备的那块有线网卡别选到无线网卡或者虚拟网卡。VMware、Hyper-V、VirtualBox这类软件装的虚拟网卡会干扰扫描保险起见调试期间先禁用虚拟网卡。物理连接对不对。网线插好没有、对端设备上电没有、链路灯亮不亮这些基础的东西反而最容易被跳过。有一次我折腾半天才发现是网线水晶头没做好。电脑和设备是否在同一广播域。DCP是二层协议不需要IP同网段但必须物理上连通且中间没有三层设备隔断。有没有多台设备重名。同一个网段里如果两台设备名称一样分配会失败。设备是不是处于正常状态。有些驱动器在故障状态下不接受DCP写入先清故障再分配。分配成功后博途会显示设备的新名称和IP。注意设备名称分配和IP分配是两件事但通常一起做在同一个对话框里把IP也写进去。分完之后可以用在线 → 可访问的设备再扫一遍看名称和IP是否已经生效能扫到并且显示正确就可以进行下一步下载了。5.2 通讯建立但伺服不转的排查顺序这个故障是混挂方案里最典型的场景博途下载完成设备全部在线BF灯不亮诊断里也看不到故障但伺服就是不动。这时候别急着怀疑硬件按下面的顺序一层层查第一层看状态字。在博途的监控表里读ZSW1看位0接通就绪、位1运行就绪、位2运行使能是不是都置1了。如果位0是0说明驱动器根本没进入就绪状态问题在驱动器自身或者使能序列。如果位0是1但位2是0说明PLC给的控制字还没到位。第二层看控制字。读一下PLC实际写出去的控制字是不是16#047F。常见问题是程序中某个中断或者互锁条件把控制字覆盖成了0导致使能一直发不出去。还有位10由PLC控制没置1有些驱动器就停在本地模式不接收报文控制。第三层看转速设定值。控制字对了但转速设定值是0伺服当然不动。检查一下设定值转换逻辑特别是百分比到标定值的换算有没有算错。有次我把163.84错写成16.384结果给了100%实际只有10%转速看着像转得特别慢排查了半天才发现是系数写错。第四层看驱动器控制模式。前面强调过驱动器参数没切到通讯控制模式PLC发什么都没用。这个要进驱动器的参数菜单或者上位机软件确认。第五层看刹车和抱闸。有些伺服带抱闸要单独给抱闸输出信号或者设置抱闸释放延时。使能了但抱闸没松电机嗡嗡响但不转这也是高频故障。5.3 常见故障速查表调试过程中我把遇到的问题整理成了一张表现场对着查效率高很多现象可能原因排查方法BF红灯闪烁设备名称或IP不匹配重新分配设备名称和IP设备在线但报站故障组态报文与实际不符核对驱动器报文参数与博途选择通讯正常但不启动控制字缺位10或位0监控控制字实际值伺服转速不对参考转速标定不一致统一P2000与驱动器参考转速位置飞车工艺对象机械参数与机械不符核对每转增量、减速比、负载位移启动即报通讯超时更新周期太短或看门狗太紧增大更新周期或看门狗倍数偶发性掉站网线质量或接地干扰换工业网线检查屏蔽接地一使能就报警F07900类电机或编码器参数不匹配核对电机铭牌与驱动器参数关于看门狗超时补一句。RT通讯的看门狗默认是更新周期的3倍比如更新周期4ms看门狗就是12ms。设备挂得多、网络负载重的时候偶尔会有设备来不及响应导致站故障。可以把更新周期适度放宽比如从4ms调到8ms或者单独调整看门狗倍数但别调太松太松了故障反应会迟钝。这个值的原则是能稳定运行的前提下尽量紧兼顾响应速度和抗干扰。5.4 程序结构与多轴复用技巧调试通过之后程序结构得整理一下不然六七个轴写下来代码会乱成一锅粥。我的做法是给每台伺服写一个通用的速度控制功能块FB输入是使能、速度百分比、复位、故障反馈输出是控制字、设定值、状态字、实际值I/O地址用参数传入。V90和MD60虽然品牌不同但报文1的结构是一样的所以这个FB可以通用V90走报文1的那个轴、三台MD60全都用同一个FB。这样做的好处是逻辑只写一遍所有轴共用改一个地方全改。每台轴在调用时传入自己的一组参数IO地址、参考转速、加减速斜率放在数据块里。以后加轴、减轴只要改数据块主程序逻辑不动。对于挂工艺对象的那个主轴逻辑单独写用PLC的运动控制指令MC_Power、MC_MoveAbsolute、MC_Home这些。工艺对象的好处这时候体现出来了回零、定位、限位监控都是现成的不用自己造轮子。实操心得调试多轴系统的时候我习惯先单轴调通再联调。每台轴单独上电、单独使能、单独跑确认控制字时序、转速标定、方向都对再把它们放进同一个程序框架里。混在一起调出问题根本分不清是哪台。这个过程看着慢其实最快。6. 几条踩坑经验和后续扩展思路写到这里把几个我觉得最值得说的经验单独拎出来。第一条关于第三方伺服的标准到底有多标准。理论上大家都遵循标准报文1、报文3但实际实现上各家有各家的脾气。控制字的位定义、状态字的位定义、参考转速的标定习惯都可能和西门子有一点差异。所以每次引入一个新的第三方品牌别急着批量采购先买一台样机把通讯和控制时序完整跑一遍确认没问题再上量。这一台样机的调试时间能帮你避免后面几十台的返工。第二条关于设备名称和IP的现场管理。我见过太多项目因为设备名称混乱导致后期维护困难设备坏了换一台新设备的名称和原来不一样博途里对不上现场又没带电脑只能干等。我的做法是每台设备的名称和IP都贴在设备上换站的时候照着贴纸重新分配五分钟搞定。这个习惯看起来土但真的好用。第三条关于地址规划的前瞻性。手动分配地址的时候每个设备的地址区间留够余量比如给每台轴预留16个字节即使现在只用8个字节剩下的也空着。以后驱动器升级、报文变长地址不用重排程序不用大改。省这点地址空间不值得改程序的代价大得多。第四条关于诊断的日常利用。PROFINET的诊断信息非常丰富但很多人调通之后就再也不看。其实博途的在线诊断能看到每个设备的通讯质量、报文计数、错误统计。我习惯在HMI上做一个通讯状态页面把每个站的在离线状态、错误码显示出来一旦掉站立刻能看到是哪一台而不是到了停机才发现。第五条关于后续扩展。这套混挂方案的框架是通用的以后再引入第三个品牌的PN伺服流程一样下载对应GSDML、导入、拖进网络、改名称、选报文、核对地址、配置驱动器参数、分配名称、下载调试。把这篇的流程走一遍新品牌也基本能拿下。真正需要特别关注的永远是那几点报文映射对不对、控制字位定义有没有差异、参考转速标不标得齐。真要说这次项目最大的体会其实是标准报文这四个字不要迷信。混挂多品牌伺服通讯层的标准是统一的但应用层的细节是各家自己的。把这些细节一个个啃下来你的方案就稳了。最后留一个我个人常用的判断方法新设备上台先用报文1、先做速度控制、先用监控表手动写控制字确认能转了再往上层堆功能。磨刀不误砍柴工这个顺序基本没出过错。
返回列表