【SCL】1200应用案例:交通灯模拟自动装料控制
创始人
2024-05-14 17:16:55

使用博图SCL语言来编写 交通灯模拟控制 和 自动装料应用案例

文章目录

目录

前言

一、应用:交通灯模拟控制

1.控制要求

2.I\o分配和接线

 3.程序编写和效果

4.小结

二、自动装料模拟控制 

 1.控制要求

 2.I/O分配

3.程序编写 

 4.小结

总结


前言

本篇文章我们继续学习西门子SCL语言的应用;


一、应用:交通灯模拟控制

1.控制要求

接通 PLC 控制器,按下启动按钮,信号灯系统开始工作,先是南北红灯 R 亮,东西绿 G 灯亮; 25S 后东西绿灯 G 灭,东西黄灯 Y 闪亮; 5S 后 ,南北红灯 R 灭,南北绿灯 G 亮,东西黄灯 Y 灭,东西红灯 R 亮; 25S 后南北绿灯 G 灭,南北黄灯 Y 闪亮; 5S 后南北黄灯灭,南北红灯 R 亮,东西红灯 R 灭,东西绿灯 G 亮,周而复始。

当按下停止按钮时,系统停止工作。

2.I\o分配和接线

I/0分配:

输入输出
名称作用地址名称作用地址
SB1启动I0.0L1东西红灯Q0.0
SB2停止I0.1L2东西绿灯Q0.1
L3东西黄灯Q0.2
L4南北红灯Q0.3
L5南北绿灯Q0.4
L6南北黄灯Q0.5

接线图:

接线时注意24V正负极不要接反。 

 3.程序编写和效果

 这里就按照流程来编写就可以了,注意先后顺序。 

 

程序: 


//控制部分
IF "启动" THEN"数据块_1".变量 := 1;
END_IF;IF "停止" THEN"东西红灯" := 0;"东西黄灯" := 0;"东西绿灯" := 0;"南北红灯" := 0;"南北黄灯" := 0;"南北绿灯" := 0;RESET_TIMER(#IEC_Timer_0_Instance);RESET_TIMER(#IEC_Timer_0_Instance_1);RESET_TIMER(#IEC_Timer_0_Instance_2);RESET_TIMER(#IEC_Timer_0_Instance_3);"数据块_1".变量 := 0;
END_IF;//运行部分
CASE "数据块_1".变量 OF1:"南北红灯" := 0;"东西绿灯" := 0;"东西红灯" := 1;"南北绿灯" := 1;#IEC_Timer_0_Instance(IN := "南北绿灯",PT := T#5s,Q => "输出点1");IF "输出点1" THEN"南北绿灯" := 0;"数据块_1".变量 := 2;END_IF;2:"中继1" := 1;"南北黄灯" := "中继1" AND "Clock_1Hz";#IEC_Timer_0_Instance_1(IN := "中继1",PT := T#2s,Q => "输出点2");IF "输出点2" THEN"东西红灯" := 0;"中继1" := 0;"南北黄灯" := 0;"数据块_1".变量 := 3;END_IF;3:"南北绿灯" := 0;"东西红灯" := 0;"南北红灯" := 1;"东西绿灯" := 1;#IEC_Timer_0_Instance_2(IN := "东西绿灯",PT := T#5s,Q => "输出点3");IF "输出点3" THEN"东西绿灯" := 0;"数据块_1".变量 := 4;END_IF;4:"中继2" := 1;"东西黄灯" := "中继2" AND "Clock_1Hz";#IEC_Timer_0_Instance_3(IN := "中继2",PT := T#2s,Q => "输出点4");IF "输出点4" THEN"中继2" := 0;"东西黄灯" := 0;"数据块_1".变量 := 5;END_IF;5:"东西红灯" := 0;"东西黄灯" := 0;"东西绿灯" := 0;"南北红灯" := 0;"南北黄灯" := 0;"南北绿灯" := 0;RESET_TIMER(#IEC_Timer_0_Instance);RESET_TIMER(#IEC_Timer_0_Instance_1);RESET_TIMER(#IEC_Timer_0_Ins

4.小结

这里程序不难, 使用CASE语句来逐步完成东西和南北方向指示灯;在编写时要注意每走下一步都要将上一步的状态清零,避免造成重复;结束和停止时都要将定时器进行复位,来实现每次循环。


 


二、自动装料模拟控制 

 1.控制要求

按下启动开关,L2 灭,L1 亮,车未到位,表明允许汽车开进装料。料斗出料口 D2 关 闭,若料位传感器 S1 置为“0”(料斗中的物料不满),进料阀开启进料,D4 亮。当 S1 置为“1”(料斗中的物料已满),则停止进料(D4 灭)。电动机 M1、M2、M3 均为“0”。 当汽车开进装车位置时,限位开 SQ1 置为“1”,信号灯 L2 亮,L1 灭,车到位;同时 启动电动机 M3,经过 3s 后,再启动 M2,再经 2s 后启动 M1,再经过 3s 后才打开出料阀, D2 亮,物料经料斗出料。 当车装满时,限位开关 SQ2 为“1”,D1 亮,料斗关闭,3s 后 M1 停止,M2 在 M1 停止 3s 后停止,M3 在 M2 停止 3s 后停止,同时 L2 灭,L1 亮,表明 汽车可以开走。 按下停止按钮,自动配料装车的整个系统终止运行。

 

 

 2.I/O分配

输入输出
名称作用地址名称作用地址
SB1启动I0.0L1指示灯Q0.0
SB2停止I0.1L2指示灯Q0.1
SQ1限位I0.2D1指示灯Q0.2
SQ2限位I0.3D2指示灯Q0.3
S1料位传感器I0.4D4指示灯Q0.4
M1电机Q0.5
M2电机Q0.6
M3电机Q0.7

3.程序编写 

程序是在FB块中编写的,使用的是#变量,在主程序调用后可以填入相应的I/O点。 程序:

IF #停止1 THEN#L1 := 0;#L2 := 0;#D1 := 0;#D2(出料口) := 0;#D4(进料阀指示) := 0;#M1 := 0;#M2 := 0;#M3 := 0;#中继1 := 0;#中继2 := 0;RESET_TIMER(#IEC_Timer_0_Instance_4);RESET_TIMER(#IEC_Timer_0_Instance_5);RESET_TIMER(#IEC_Timer_0_Instance_6);RESET_TIMER(#IEC_Timer_0_Instance_7);RESET_TIMER(#IEC_Timer_0_Instance_8);RESET_TIMER(#IEC_Timer_0_Instance_9);"数据块_1".II变量 := 0;END_IF;IF  #启动1 THEN#L2 := 0;#L1 := 1;#M1 := 0;#M2 := 0;#M3 := 0;"数据块_1".II变量 := 1;
END_IF;CASE "数据块_1".II变量 OF1:IF #S1(料位传感器) THEN#D4(进料阀指示) := 0;#D2(出料口) := 0;"数据块_1".II变量 := 2;ELSIF #S1(料位传感器)=0 THEN#D4(进料阀指示) := 1;#D2(出料口) := 1;"数据块_1".II变量 := 1;END_IF;2:IF #SQ1 THEN#L2 := 1;#L1 := 0;"数据块_1".II变量 := 3;END_IF;3:#M3 := 1;#IEC_Timer_0_Instance_4(IN:=#M3,PT:=T#3s,Q=>#输出点1);IF #输出点1 THEN#M2 := 1;END_IF;#IEC_Timer_0_Instance_5(IN:=#M2,PT:=T#2s,Q=>#输出点2);IF #输出点2 THEN#M1 := 1;END_IF;#IEC_Timer_0_Instance_6(IN:=#M1,PT:=T#3s,Q=>#输出点3);IF #输出点3 THEN#D2(出料口) := 1;"数据块_1".II变量 := 4;END_IF;4:IF #SQ2 THEN#L2 := 0;#L1 := 1;#D1 := 1;#D2(出料口) := 0;END_IF;#IEC_Timer_0_Instance_7(IN:=#D1,PT:=T#3s,Q=>#输出点4);IF #输出点4 THEN#M1 := 0;#中继1 := 1;END_IF;#IEC_Timer_0_Instance_8(IN:=#中继1,PT:=T#3s,Q=>#输出点5);IF #输出点5 THEN#M2 := 0;#中继2 := 1;END_IF;#IEC_Timer_0_Instance_9(IN:=#中继2,PT:=T#3s,Q=>#输出点6);IF #输出点6 THEN#M3 := 0;"数据块_1".II变量 := 5;END_IF;5:#中继1 := 0;#中继2 := 0;#L2 := 0;#L1 := 0;#D1 := 0;RESET_TIMER(#IEC_Timer_0_Instance_4);RESET_TIMER(#IEC_Timer_0_Instance_5);RESET_TIMER(#IEC_Timer_0_Instance_6);RESET_TIMER(#IEC_Timer_0_Instance_7);RESET_TIMER(#IEC_Timer_0_Instance_8);RESET_TIMER(#IEC_Timer_0_Instance_9);"数据块_1".II变量 := 0;END_CASE;

 4.小结

 自动装料使用的是CASE语句来完成,其中要注意这一点控制要求:用if   eisif  解决。

若料位传感器 S1 置为“0”(料斗中的物料不满),进料阀开启进料,D4 亮。当 S1 置为“1”(料斗中的物料已满),则停止进料(D4 灭)。

 

总结

以上就是 交通灯 和 自动装料  这两个应用案例。

相关内容

热门资讯

阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...