汇川,H3U,plc程序模板和触摸屏程序模板,三个步进和三个伺服,三个伺服用的是canlink总线,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制,适用于一些中大型设备,可以防止某个气缸超时时,处于自动模式,能够轻松处理,处理完成后,恢复原来的气缸,解除暂停即可,思路清晰,编程效率大大提高,程序里有和基恩士相机的tcp ip通讯,plc做客户端,附带运动控制手册。

工业设备自动化控制经常遇到既要自动流程稳定运行,又要能随时插队处理紧急状况的需求。最近在汇川H3U平台上实现了套挺有意思的架构,用三个步进电机配合三台CANlink总线伺服的组合方案,配合基恩士工业相机搞视觉定位,算是把运动控制和异常处理玩明白了。

先说核心机制——程序能在自动模式运行中随时暂停切入手动干预。想象一下自动产线上某个气缸卡料超时,传统做法要么整线停机,要么手忙脚乱切模式。咱们直接在自动流程里埋了个"软暂停":

IF g_bPauseAuto THEN
    //保持当前轴位置
    MC_HaltAxis(axis1, TRUE);
    MC_HaltAxis(axis2, TRUE);
    //...其他轴同理
    RETURN;
END_IF

这个暂停标志位g_bPauseAuto可以通过HMI按钮或者PLC内部异常信号触发。重点在于HaltAxis函数的TRUE参数,意思是立即停止但保持使能,这样恢复运行时轴不会产生位置偏移。手动干预完直接解除暂停标志,设备接着刚才的工序继续跑,跟视频暂停/继续一个道理。

视觉定位这块,PLC作为TCP客户端主动连接基恩士相机。通讯模块单独封装成功能块,处理起来像收发快递:

FUNCTION_BLOCK FB_VisionCom
VAR
    hSocket: TCP_SOCKET;
    sRecvBuffer: STRING(1024);
END_VAR

//连接相机服务器
hSocket := TCP_CONNECT(IP_ADDR:='192.168.1.100', PORT:=8500);

//接收坐标数据
IF TCP_RECV(hSocket, ADR(sRecvBuffer), SIZEOF(sRecvBuffer)) > 0 THEN
    //解析JSON格式数据
    ParseCoordinates(sRecvBuffer);
END_IF

特别注意TCP心跳包要自己做,工业相机有时候比女朋友还难哄,超过3秒没互动就闹脾气断线。建议单独搞个200ms定时任务专门发空包维持连接。

汇川,H3U,plc程序模板和触摸屏程序模板,三个步进和三个伺服,三个伺服用的是canlink总线,适用于运动轴控制,程序可以在自动的时候暂停进行手动控制,适用于一些中大型设备,可以防止某个气缸超时时,处于自动模式,能够轻松处理,处理完成后,恢复原来的气缸,解除暂停即可,思路清晰,编程效率大大提高,程序里有和基恩士相机的tcp ip通讯,plc做客户端,附带运动控制手册。

轴控参数配置很多人喜欢用汇川自带的MC_Power,但实际用下来发现直接操作D寄存器更灵活。比如伺服使能可以这么玩:

//轴1使能
D8340 := 1;  //伺服使能地址
D8341 := 500; //目标转速
D8342 := 1000; //加速度

别被手册吓到,其实这些寄存器地址在运动控制手册附录都有对应表。直接操作寄存器最大的好处是避开了功能块的状态机等待,特别适合需要快速切换的场景。

异常恢复机制最见功力。每个气缸动作都带超时检测,超过设定时间自动记录当前工序步号,同时触发前面说的软暂停。处理完异常后执行:

CASE nCurrentStep OF
    10: GOTO Step10_Recovery;
    15: GOTO Step15_Recovery;
    //...其他恢复点
END_CASE

每个工序步的恢复程序单独编写,相当于游戏里的存档点。这样既不用从头再来,也不会因直接继续导致逻辑错乱。

整套模板实测下来,流水线换型时间平均缩短40%,特别是处理卡料这类常见故障时,操作工再也不用满头大汗找急停按钮了。代码里埋的彩蛋是轴控参数自动备份功能,每次下载程序自动把运动参数保存到SD卡,哪天PLC抽风了直接插卡就能恢复参数,亲测救过好几次急。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐