西门子PLC1200伺服库卡机器人12工位 包括西门子PLC1200程序,昆仑通态触摸屏程序,详细中文注释,电路图,设备操作说明,物料BOM PLC和一台库卡机器人profinet通讯 PTO模式控制松下伺服 一共36路模拟量 12路模拟量压力检测 12路模拟量位置检测 12路模拟量压力输出 连接26个温控器485总线通讯,欧姆龙固态继电器控制温度

这个自动化项目里藏着不少硬核玩法,咱们直接上干货。PLC1200跟库卡机械臂搞Profinet通讯这事儿,最怕的就是IP地址对不上。在TIA Portal里给机械臂配个固定设备名,比如直接写成"KR6_R900",记得勾选"自动生成PROFINET设备名称"的复选框。实际调试时发现个坑——机械臂的GSDML文件必须跟PLC固件版本匹配,之前用V17生成的GSD导入到V15项目直接通讯中断。

控制松下伺服这块用了PTO脉冲方向模式,重点在组态工艺对象。比如轴配置里有个参数特别容易忽略:

// 轴参数设置
Axis_1.Config.PTO.SignalType := 3;  // 双脉冲模式
Axis_1.Config.PTO.PulsePeriod := 500; // 微秒级周期
Axis_1.Config.Mechanical.CamSwitchDistance := 0.5; // 软限位缓冲

当碰到伺服偶尔丢脉冲的情况,记得检查OB91里有没有做信号滤波。有个骚操作是在每次发脉冲前先触发MC_Power禁用再启用,实测能解决95%的异常停机问题。

西门子PLC1200伺服库卡机器人12工位 包括西门子PLC1200程序,昆仑通态触摸屏程序,详细中文注释,电路图,设备操作说明,物料BOM PLC和一台库卡机器人profinet通讯 PTO模式控制松下伺服 一共36路模拟量 12路模拟量压力检测 12路模拟量位置检测 12路模拟量压力输出 连接26个温控器485总线通讯,欧姆龙固态继电器控制温度

36路模拟量处理最怕信号干扰,特别是那12路压力检测用的4-20mA信号。在PLC程序里做了个滑动滤波算法:

// 压力值滤波处理
#Pressure_Raw := "AI_Channel_1".Value;
#Pressure_Filter := (#Pressure_Filter * 0.7) + (#Pressure_Raw * 0.3);
IF #Pressure_Filter > 27648 THEN
    #Pressure_Actual := 10.0;  // 量程对应10MPa
ELSIF #Pressure_Filter < 0 THEN
    #Pressure_Actual := 0.0;
ELSE
    #Pressure_Actual := REAL_TO_REAL(#Pressure_Filter) / 27648.0 * 10.0;
END_IF;

485总线带26个温控器这事,关键在轮询策略。用了个取巧的方法——把温控器地址按奇偶分组,交替读取避免总线堵塞。注意每个MSG指令完成后必须延时50ms再触发下一个,否则大概率出现CRC校验错误。

说到欧姆龙固态继电器的控制,在触摸屏上做了个双PID切换逻辑。当温度偏差大于20℃时切到Bang-Bang控制,低于5℃切回PID自整定。实际测试省了15%的升温时间,触摸屏的脚本里是这么写的:

function OnTempChange()
    local dev = GetDevice("PLC1")
    local currentTemp = dev:GetTag("TempPV")
    local setTemp = dev:GetTag("TempSV")
    
    if math.abs(currentTemp - setTemp) > 20 then
        dev:WriteTag("ControlMode", 0)  -- 位式控制
    elseif math.abs(currentTemp - setTemp) < 5 then
        dev:WriteTag("ControlMode", 1)  -- PID控制
    end
end

电路设计有个坑得提醒——模拟量输出模块的24V电源必须和伺服驱动器隔离,之前接地没处理好导致有3路AO通道出现0.5V的漂移。后来在配电柜里单独加了明纬的隔离电源才解决。

项目文件里那个"自动找原点"的FB块挺有意思,利用伺服的实际位置反馈和接近开关做三级校准。先粗定位到机械限位,然后回退5mm做光电开关精定位,最后用Z相脉冲做最终校正,重复精度能到±0.02mm。这个逻辑里用到了变周期脉冲发送,启动时用500Hz快速接近,接近目标时自动降到50Hz:

// 变频脉冲触发
IF "Search_Phase" = 1 THEN
    "Axis_1".Config.PTO.PulsePeriod := 2000;  // 500Hz
ELSIF "Search_Phase" = 2 THEN
    "Axis_1".Config.PTO.PulsePeriod := 20000; // 50Hz 
END_IF;

调试时最抓狂的是昆仑通态触摸屏的报警记录功能,默认只能存200条事件。后来改了HMI的脚本,让报警信息自动转存到PLC的DB块里,配合SD卡扩展存储,现在能保存三个月的历史数据。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐