
codesys平台PLC改造案例剃齿机【YN4232C】【YP4250】X绿灯 2个红灯 1个-------------------------------急停 红 1个按钮 绿 2个按钮 红 1个2档 6个3档 3个X24 B限位 Y17 A移X26 A限位 Y16 B移X00 启动 400 X01 急退 401 X02 左右停右停面板 402 X03 自动手自动 403 X04 A移正剃 404 正剃正逆剃 X05 2次循环 405 X06 4次循环 406 X07 刀正转 407 X10 刀反转 408 X11 顶尖松面板 411【手动】 X12 刻度盘下正 412 X13 刻度盘上反 413 X14 工作台往返面板 500【手动】先右 X15 冷却泵开面板 501 X16 保护液力 502 X17 保护过载 503 X20 顶尖紧工作台 504【自动】 X21 保护顶尖工作台 505 X22 刻度盘起点 506 X23 点行程【上行程开关】 507 X24 B限位【工作台】 510 X25 点光程【上行程开关】 511 X26 A限位【工作台】 512 X27 安全门 513Y刻度盘刀全压0.5s后可动Y00Y01Y02Y03Y04 排屑电机 434Y05 冷却电机 435Y06 刀正转 436Y07 刀反转 437Y10 全压启动 530Y11 刻度盘正转下 531Y12 刻度盘反转上 532Y13 刻度盘刹车 533Y14 阀顶尖松 534Y15 阀光程【慢速】 535Y16 阀B移 536 【X24B限位】Y17 阀A移537 【X26A限位】MM100 启动M101 自动A移M102 自动B移M103 点行程M105 刻盘下M116 A移M117 B移TT000~T199100msT40 自动运行坚持2.5s等待点行程释放T41 平台移动0.2s后刻度盘可以下T42 刻度盘刹车1.3sT43 A移0.3s后刀正T44 A移0.3s后刀反T45 刀动0.8s后全压T46 急退0.6s后加0.3sT47 1sT50 急退保持0.6sT51 刀动0.1s后可AB移T53 手动0.5s后T54 全压0.5s后刻度盘可下T55 停止1s后失效光程声明FUNCTION_BLOCK FByn4232c VAR_INPUT x00启动:BOOL; //启动 x01急退:BOOL; //急退 x02停车位置A:BOOL; //右停 x03自动:BOOL; //自动 x04A移正剃:BOOL; //顺逆剃 x05循环2次:BOOL; //循环2次 x06循环4次:BOOL; //循环4次 x07刀正:BOOL; //刀正 x10刀反:BOOL; //刀反 x11顶尖松:BOOL; //顶尖松 x12刻盘下:BOOL; //刻盘下 x13刻盘上:BOOL; //刻盘上 x14AB移:BOOL; //工作台【A移】 x15冷却泵:BOOL; //冷却泵 x16保护液力:BOOL; //保护液力 x17保护过载:BOOL; //保护过载 x20顶尖紧:BOOL; //顶尖紧 x21保护顶尖:BOOL; //保护顶尖 x22刻盘起点:BOOL; //刻盘起点 x23点行程:BOOL; //点行程 x24B限位:BOOL; //B限位 x25慢移:BOOL; //点光程 x26A限位:BOOL; //A限位 x27保护门:BOOL; //保护门 END_VAR VAR_OUTPUT y04排屑:BOOL; //排屑 y05冷却:BOOL; //冷却 y06刀正:BOOL; //刀正 y07刀反:BOOL; //刀反 y10全压:BOOL; //全压 y11刻盘下:BOOL; //刻盘下 y12刻盘上:BOOL; //刻盘上 y13刻盘刹车:BOOL; //刻盘刹车 y14顶尖松:BOOL; //顶尖松 y15慢移:BOOL; //慢移 y16B移:BOOL; //B移 y17A移:BOOL; //A移 END_VAR VAR R_TRIGs: ARRAY[0..200] OF R_TRIG; //【手动】上升沿 F_TRIGs: ARRAY[0..200] OF F_TRIG; //【手动】 T40: TON;//自动坚持2.5s T41: TON;//平台移动0.2s后 T42: TP;//刹车1.3s T43: TON;//A移0.3s刀正 T44: TON;//A移0.3s刀反 T45: TON;//0.8s全压 T46: TON;//急退0.6s0.3s T47: TON;//1s T50: TON;//急退保持0.6s T51: TON;//刀动0.1s后可AB移 T53: TON;//手动0.5s后 T54: TON;//全压0.5s后刻度盘可下 T55: TON;//停止1s后失效光程 M100自动: BOOL;//自动运行 M141换件:BOOL; M260手动安全: BOOL;//手动安全 M420程序记: INT; M401急退: BOOL; M406程序结束: BOOL; // 自动刀正 M110自动刀正: BOOL; // A移 M101A移: BOOL; // 正剃 M214正剃: BOOL; // 自动刀反 M111自动刀反: BOOL; M102B移: BOOL; M215反剃: BOOL; M214正逆剃: BOOL; M210停车位置A: BOOL; M421光程次数: INT; END_VAR手动24.7.15//维修电工祁成 24.7.15 //【开关沿】 //上升沿 R_TRIGs[00](CLK:x00启动 , Q ); R_TRIGs[01](CLK:x01急退 , Q ); R_TRIGs[02](CLK:x02停车位置A , Q ); R_TRIGs[03](CLK:x03自动 , Q ); R_TRIGs[04](CLK:x04A移正剃 , Q ); R_TRIGs[05](CLK:x05循环2次 , Q ); R_TRIGs[06](CLK:x06循环4次 , Q ); R_TRIGs[07](CLK:x07刀正 , Q ); R_TRIGs[10](CLK:x10刀反 , Q ); R_TRIGs[11](CLK:x11顶尖松 , Q ); R_TRIGs[12](CLK:x12刻盘下 , Q ); R_TRIGs[13](CLK:x13刻盘上 , Q ); R_TRIGs[14](CLK:x14AB移 , Q ); R_TRIGs[15](CLK:x15冷却泵 , Q ); R_TRIGs[16](CLK:x16保护液力 , Q ); R_TRIGs[17](CLK:x17保护过载 , Q ); R_TRIGs[20](CLK:x20顶尖紧 , Q ); R_TRIGs[21](CLK:x21保护顶尖 , Q ); R_TRIGs[22](CLK:x22刻盘起点 , Q ); R_TRIGs[23](CLK:x23点行程 , Q ); R_TRIGs[24](CLK:x24B限位 , Q ); R_TRIGs[25](CLK:x25慢移 , Q ); R_TRIGs[26](CLK:x26A限位 , Q ); R_TRIGs[27](CLK:x27保护门 , Q ); //下降沿 F_TRIGs[00](CLK:x00启动 , Q ); F_TRIGs[01](CLK:x01急退 , Q ); F_TRIGs[02](CLK:x02停车位置A , Q ); F_TRIGs[03](CLK:x03自动 , Q ); F_TRIGs[04](CLK:x04A移正剃 , Q ); F_TRIGs[05](CLK:x05循环2次 , Q ); F_TRIGs[06](CLK:x06循环4次 , Q ); F_TRIGs[07](CLK:x07刀正 , Q ); F_TRIGs[10](CLK:x10刀反 , Q ); F_TRIGs[11](CLK:x11顶尖松 , Q ); F_TRIGs[12](CLK:x12刻盘下 , Q ); F_TRIGs[13](CLK:x13刻盘上 , Q ); F_TRIGs[14](CLK:x14AB移 , Q ); F_TRIGs[15](CLK:x15冷却泵 , Q ); F_TRIGs[16](CLK:x16保护液力 , Q ); F_TRIGs[17](CLK:x17保护过载 , Q ); F_TRIGs[20](CLK:x20顶尖紧 , Q ); F_TRIGs[21](CLK:x21保护顶尖 , Q ); F_TRIGs[22](CLK:x22刻盘起点 , Q ); F_TRIGs[23](CLK:x23点行程 , Q ); F_TRIGs[24](CLK:x24B限位 , Q ); F_TRIGs[25](CLK:x25慢移 , Q ); F_TRIGs[26](CLK:x26A限位 , Q ); F_TRIGs[27](CLK:x27保护门 , Q ); // //手动下降沿 IF F_TRIGs[3].Q //【手动沿】 x03自动 THEN // y04排屑:FALSE; y05冷却:FALSE; y06刀正:FALSE; y07刀反:FALSE; y10全压:FALSE; y11刻盘下:FALSE; y12刻盘上:FALSE; y13刻盘刹车:FALSE; y14顶尖松:FALSE; y15慢移:FALSE; y16B移:FALSE; y17A移:FALSE; M100自动:0; M141换件:0; M420程序记:0; END_IF //手动 动作↑ T53(IN:NOT x03自动 , PT:T#0.5S , Q , ET ); //冷却泵 IF R_TRIGs[15].Q AND T53.Q THEN y04排屑 :TRUE; y05冷却 :TRUE; END_IF IF NOT x15冷却泵 AND NOT x03自动 THEN y04排屑 :FALSE; y05冷却 :FALSE; END_IF //刀正 IF R_TRIGs[7].Q AND T53.Q AND NOT y07刀反 AND M260手动安全 THEN y06刀正 :TRUE; END_IF IF NOT x07刀正 AND NOT x03自动 THEN y06刀正 :FALSE; END_IF //刀反 IF R_TRIGs[10].Q AND T53.Q AND NOT y06刀正 AND M260手动安全 THEN y07刀反 :TRUE; END_IF IF NOT x10刀反 AND NOT x03自动 THEN y07刀反 :FALSE; END_IF //全压0.8s后 T45(IN:y06刀正 OR y07刀反 , PT:T#0.8S , Q , ET ); IF T45.Q THEN y10全压:TRUE; ELSE y10全压:FALSE; END_IF //刻度盘【下】 //刻盘下hou刹车 IF R_TRIGs[12].Q AND NOT x25慢移 AND T53.Q AND NOT x13刻盘上 AND NOT y13刻盘刹车 // AND M260手动安全 THEN y12刻盘上 :FALSE; y11刻盘下 :TRUE; END_IF IF NOT x12刻盘下 AND NOT x03自动 THEN y11刻盘下 :FALSE; END_IF IF x25慢移 THEN y11刻盘下 :FALSE; END_IF //刻度盘【上】 //刻度盘上hou刹车 IF R_TRIGs[13].Q AND NOT x22刻盘起点 AND T53.Q AND NOT x12刻盘下 AND NOT y13刻盘刹车 // AND M260手动安全 THEN y11刻盘下 :FALSE; y12刻盘上:TRUE; END_IF IF R_TRIGs[01].Q AND NOT x22刻盘起点 AND T53.Q //x01急退【刻盘上】 THEN y13刻盘刹车:FALSE; y11刻盘下:FALSE; y12刻盘上:TRUE; END_IF IF NOT x13刻盘上 AND NOT x03自动 THEN y12刻盘上 :FALSE; END_IF IF x22刻盘起点 THEN y12刻盘上 :FALSE; END_IF //刻度盘刹车1.3s【脉冲】 T42(IN: NOT y11刻盘下 AND NOT y12刻盘上 , PT:T#1.3S , Q , ET );//TP 脉冲 IF T42.Q THEN y13刻盘刹车:TRUE; ELSE y13刻盘刹车:FALSE; END_IF //顶尖松 IF R_TRIGs[11].Q AND NOT y06刀正 AND NOT y07刀反 AND T53.Q //刀动时顶尖不能松 THEN y14顶尖松 :TRUE; END_IF IF NOT x11顶尖松 AND NOT x03自动 THEN y14顶尖松 :FALSE; END_IF //慢移 IF R_TRIGs[25].Q OR x25慢移 THEN y15慢移:TRUE; END_IF IF x22刻盘起点 THEN y15慢移:FALSE; END_IF //【AB移】 //A移 IF R_TRIGs[14].Q AND NOT x26A限位 AND T53.Q THEN y16B移 :FALSE; y17A移 :TRUE; END_IF IF y16B移 AND x24B限位 AND NOT x26A限位 AND x14AB移 AND T53.Q THEN y16B移 :FALSE; y17A移 :TRUE; END_IF //B移 IF R_TRIGs[14].Q AND x26A限位 AND NOT x24B限位 AND T53.Q THEN y17A移 :FALSE; y16B移 :TRUE; END_IF IF y17A移 AND x26A限位 AND NOT x24B限位 AND x14AB移 AND T53.Q THEN y17A移 :FALSE; y16B移 :TRUE; END_IF //停 IF NOT x14AB移 AND NOT x03自动 THEN y16B移 :FALSE; y17A移 :FALSE; END_IF //手动安全M260 IF NOT x03自动 AND NOT x11顶尖松 AND x16保护液力 AND x21保护顶尖 AND x27保护门 AND NOT y14顶尖松 THEN M260手动安全:TRUE; ELSE M260手动安全:FALSE; END_IF //【机械保护】 IF x24B限位 THEN y16B移:FALSE;END_IF IF x26A限位 THEN y17A移:FALSE;END_IF // // M260手动安全:TRUE;//仿真调试用自动24.7.15 启动行添加无限慢行程次数//24.7.15 //自动开关量 M100 // 【0】 2 3 5 16 17 20 21 22 26 27 // //时序图 //【0】【26A限】-----------------重置 //45 //0.3s刀正 //45 6 //0.8s全压 //456 10 //0.5s刻盘下 //456 10 11 //【x23点行x26A限】-------------位移 //456 10 16 // //【24B限位】 //45 //0.3s刀正 //45 7 //0.8s全压 //457 10 //0.5s刻盘下 //457 10 11 //【x23点行x24B限】 //457 10 17 // //25慢移 // 15 // //自动沿 IF R_TRIGs[03].Q OR F_TRIGs[03].Q //【自动沿】 THEN // y04排屑:FALSE; y05冷却:FALSE; y06刀正:FALSE; y07刀反:FALSE; y10全压:FALSE; y11刻盘下:FALSE; y12刻盘上:FALSE; y13刻盘刹车:FALSE; y14顶尖松:FALSE; y15慢移:FALSE; y16B移:FALSE; y17A移:FALSE; M100自动:0; M141换件:0; M420程序记:0; END_IF //顶尖 IF x20顶尖紧 AND x03自动 THEN y14顶尖松:FALSE;//顶尖【紧】 END_IF IF NOT x20顶尖紧 AND NOT y06刀正 AND NOT y07刀反 AND NOT M100自动 AND x03自动 THEN y14顶尖松:TRUE;//顶尖【松】 END_IF //【换工件】 IF R_TRIGs[20].Q THEN M141换件:1; END_IF //启动【M100】 IF R_TRIGs[00].Q AND x20顶尖紧 AND x03自动 AND NOT x01急退 AND M141换件 //【新工件】 AND x16保护液力 AND x17保护过载 AND x21保护顶尖 AND x27保护门 AND (x24B限位 OR x26A限位) THEN M100自动:TRUE; M420程序记:0; M214正剃:x04A移正剃;//【正逆剃】 M215反剃: NOT M214正剃;//【正逆剃】 M210停车位置A:x02停车位置A; M421光程次数:0; IF x05循环2次 THEN M421光程次数:2;END_IF IF x06循环4次 THEN M421光程次数:4;END_IF END_IF //急退 IF R_TRIGs[01].Q OR M401急退 AND x03自动 THEN y04排屑:FALSE; y05冷却:FALSE; y06刀正:FALSE; y07刀反:FALSE; y10全压:FALSE; y11刻盘下:FALSE; y14顶尖松:FALSE; y15慢移:FALSE; y16B移:FALSE; y17A移:FALSE; M100自动:FALSE; M141换件:0; M420程序记:0; M406程序结束:0; // IF NOT x22刻盘起点 AND NOT y13刻盘刹车 THEN y12刻盘上:TRUE; M401急退:FALSE; END_IF IF x22刻盘起点 THEN M401急退:FALSE; END_IF END_IF //【排屑冷却泵】 IF M100自动 AND x03自动 THEN y04排屑:TRUE; y05冷却:TRUE; END_IF // //【左右限位】00000000000000000000000000000000000 R_TRIGs[124](CLK: x24B限位 AND M100自动 , Q ); R_TRIGs[126](CLK: x26A限位 AND M100自动 , Q ); IF R_TRIGs[124].Q OR R_TRIGs[126].Q THEN y06刀正:FALSE; y07刀反:FALSE; y10全压:FALSE; y11刻盘下:FALSE; y12刻盘上:FALSE; y16B移:FALSE; y17A移:FALSE; END_IF //【45】0.3s【正逆剃】1111111111111111111111111111 T43(IN: x26A限位 AND M100自动 , PT:T#0.3S , Q , ET ); T44(IN: x24B限位 AND M100自动 , PT:T#0.3S , Q , ET ); //【A移】 刀 【正反】 IF x24B限位 AND M100自动 AND T44.Q THEN IF M214正剃 THEN // A移 正剃 y07刀反:FALSE; y06刀正:TRUE; END_IF IF NOT M214正剃 THEN y06刀正:FALSE; y07刀反:TRUE; END_IF END_IF //【B移】 刀 【正反】 IF x26A限位 AND M100自动 AND T43.Q THEN IF M214正剃 THEN // B移 反剃 y06刀正:FALSE; y07刀反:TRUE; END_IF IF NOT M214正剃 THEN y07刀反:FALSE; y06刀正:TRUE; END_IF END_IF //456 10 【11】 //【全压】0.5s【刻盘下】2222222222222222222222222222222 T54(IN:y10全压 AND M100自动 , PT: T#0.5S, Q , ET ); R_TRIGs[110](CLK: T54.Q , Q ); IF R_TRIGs[110].Q AND NOT y15慢移 AND NOT y12刻盘上 AND NOT y13刻盘刹车 THEN y11刻盘下:TRUE; END_IF // //【程序计】 IF y15慢移 AND R_TRIGs[26].Q THEN M420程序记:M420程序记1; END_IF//【计光程—_2~4】 IF y15慢移 AND R_TRIGs[24].Q THEN M420程序记:M420程序记1; END_IF//【计光程—_2~4】 // // 刻盘结束 IF R_TRIGs[110].Q AND y15慢移 AND M420程序记M421光程次数 THEN//【全压】【慢移】【程序计】 y12刻盘上:TRUE; M406程序结束:TRUE; END_IF //456 10 16 //【x23点行】AB移33333333333333333333333333333333333333 R_TRIGs[123](CLK: x23点行程 AND M100自动 , Q );//【x23点行】 IF R_TRIGs[123].Q //x23点行程 THEN y11刻盘下:FALSE; y12刻盘上:FALSE; IF x24B限位 AND NOT x26A限位 THEN y17A移:TRUE;END_IF //【A移】y16B移:FALSE; IF x26A限位 AND NOT x24B限位 THEN y16B移:TRUE;END_IF //【B移】y17A移:FALSE; END_IF //【光程】【全压0.5s后】4444444444444444444444444444444444444 IF y15慢移 AND T54.Q AND NOT M406程序结束 THEN //全压后0.5s后 IF x24B限位 AND NOT x26A限位 THEN y17A移:TRUE;END_IF // AND T54.Q IF x26A限位 AND NOT x24B限位 THEN y16B移:TRUE;END_IF // AND T54.Q END_IF //【程序结束】 IF M210停车位置A AND M406程序结束 AND x26A限位 THEN M401急退:TRUE; END_IF //停车位A IF NOT M210停车位置A AND M406程序结束 AND x24B限位 THEN M401急退:TRUE; END_IF //停车位B // //【bug修复】 IF x24B限位 AND x26A限位 AND M100自动 THEN M401急退:TRUE; M406程序结束:TRUE; END_IF //维修电工祁成 qq750273008 2024-7-15 //启动条件输入 035【16】【17】【21】【22】【27】24或者26程序448步//手动 动作↑T53(IN:NOT x03自动 , PT:T#0.5S , Q , ET );//冷却泵R_TRIG_0(CLK:x15冷却泵 , Q );F_TRIG_0(CLK:x15冷却泵 , Q );IF R_TRIG_0.Q AND T53.Q THENy04排屑 STRUE;y05冷却 :TRUE;//跟置位效果一样的END_IFIF F_TRIG_0.Q AND T53.Q THENy04排屑 :FALSE;y05冷却 :FALSE;END_IF//软件GX Developer安装码570-986818410 或者998-598638072。800ms后刀全压100ms后工作台才能左右。物料清单施耐德 LC1D32-M7CLC1D25继电器 CAD50M7C4P底座 RXZE1M4C4P继电器 RXM4AB2BD辅助触点 LADN40CLADN02CPLC西门子200smart ST60-0AA1PLC禾川HCQ0-1100-D明纬开关电源NDR-240 DC24v-240wAC220漏电开关 IC65N 1P C25三相插座EA9XN416