西门子1200玩转五轴伺服:工厂老鸟的实战拆解

西门子1200玩转五轴伺服:工厂老鸟的实战拆解 西门子1200伺服控制5轴程序-152a 程序采用1200系列PLC项目实现以下功能 1.三轴机械手联动取放料PTO脉冲定位控制台达B2伺服 2.台达伺服速度模式应用扭矩模式应用实现收放卷 3.程序为结构化编程,每一功能为模块化设计,功能:自动_手动_单步_暂停后原位置继续运行_轴断电保持_报警功能_气缸运行及报警. 4.每个功能块可以重复调用可以建成库用时调出即可可以复制出来当作自己的块来调用 5.上位机采样威纶通触摸屏 6.程序博图V14SP1 V15 或者更高版本都可以打开 7 内容包括博途V14SP1程序 项目CAD电气图纸 威纶通触摸屏程序 参考本案例熟悉掌握结构化编程技巧,扩展逻辑思维。最近搞到一套挺有意思的PLC程序——基于西门子1200的五轴控制系统。这玩意儿把机械手控制、收放卷张力控制这些工厂常见需求打包实现了最骚的是程序架构做得跟乐高积木似的随便拆了就能复用。咱今天就扒开代码看看门道。先说机械手控制三轴联动用PTO脉冲控制台达B2伺服这个操作挺典型。程序里直接封装了Axis_Ctrl功能块调用时填个背景数据块就能生成独立控制单元。看这段速度模式切换代码CASE #Mode_Select OF 1: //速度模式 #SINA_PARA( Axis:Axis1, Mode:3, VelocLimit:500.0 ); 2: //扭矩模式 #SINA_PARA( Axis:Axis1, Mode:4, TorqueLimit:80.0 ); END_CASE;这里用SINAPARA函数块动态改伺服模式注意扭矩模式给了80%的力矩限制——这个值根据实际卷径要动态计算程序里用了个DiameterCalc功能块实时更新防止断料。模块化设计是真香每个气缸动作都被拆成独立FC。比如夹爪气缸模块FUNCTION Gripper_Cylinder : Void VAR_INPUT Sensor_OK : Bool; //到位信号 TimeOut : Time : T#5S; //超时报警 END_VAR VAR_OUTPUT AlarmCode : Byte; END_VAR带超时检测和报警编码要加新气缸直接CtrlC改个名字就能用。程序里连手动/自动切换都做成了标准接口不同设备间移植改个管脚映射就行。西门子1200伺服控制5轴程序-152a 程序采用1200系列PLC项目实现以下功能 1.三轴机械手联动取放料PTO脉冲定位控制台达B2伺服 2.台达伺服速度模式应用扭矩模式应用实现收放卷 3.程序为结构化编程,每一功能为模块化设计,功能:自动_手动_单步_暂停后原位置继续运行_轴断电保持_报警功能_气缸运行及报警. 4.每个功能块可以重复调用可以建成库用时调出即可可以复制出来当作自己的块来调用 5.上位机采样威纶通触摸屏 6.程序博图V14SP1 V15 或者更高版本都可以打开 7 内容包括博途V14SP1程序 项目CAD电气图纸 威纶通触摸屏程序 参考本案例熟悉掌握结构化编程技巧,扩展逻辑思维。威纶通触摸屏有个骚操作把报警信息做成矩阵显示。用了个二维数组变量Local_HMI_Alarm[0][0] E001 伺服过载 Local_HMI_Alarm[0][1] 检查电机温度 ...配合分页指令实现滚动显示比传统逐条报警省了70%的界面空间。PLC端用ALARM_8功能块触发对应位这招适合报警点多的设备。断电保持处理得很细不光记录各轴当前位置连气缸状态都存了掉电保持变量。关键是用了个Position_Buffer功能块每100ms把实际位置写入保持区IF NOT Power_Fail THEN DB_Axis1.RetainPos : ActualPos_Axis1; END_IF;这样就算突然断电上电后直接读取RetainPos就能回原位置。实测位置偏差不超过3个脉冲比重新回零节省至少20秒。这套程序最牛逼的是把工厂常见的零碎功能都标准化了要自己从头写起码得个把月。现在直接拆它的功能块——比如那个带速度前馈的张力控制算法模块稍改改参数就能套在不同收卷设备上。搞工控的都知道这种能当积木用的代码才是真生产力工具。项目资源在文末需要的老铁自取。提醒下博图版本建议用V15以上V14SP1有些FB接口要手动适配下