[西门子] 西门子博途SCL小车运料程序完整版

[复制链接]
查看191 | 回复0 | 2024-11-19 13:27:23 | 显示全部楼层 |阅读模式
>

题目:

白动将A处的料搬运到料罐C处

1. 有手动,半自动,自动切换功能。

I0.1半自动切换按钮)I0.2自动切换按钮),两个都不接通为手动系统的三个状态分别由三个指示灯显示:手动Q0.0),半自动Q0.1),自动Q0.2);模式切换必须在停机状态下(停机状态为没有前进,没有后退,没有装料,没有卸料)

2. 手动

可以通过按钮控制A处(I0.3:按钮Q0.3:装料电磁阀),C处(I0.4:按钮Q0.4:卸料电磁阀),小车的前进Q0.5,I0.5:按钮)和后退Q0.6,I0.6:按钮)

3.半自动

按下启动按钮I0.7,如果小车在原点I1.0位置打开电磁阀Q0.3开始装料,5秒后关闭,小车开始向前运行,碰到终点开关I1.1,小车停止并开始卸料Q0.4),5秒后停止卸料小车返回原点停止。

4.自动

自动状态下按下启动小车在原点位置开始装料,动作和半自动一样,卸料完成后返回原点又自动装料,一直循环,直到按下停止开关I1.2小车把料卸完回到原点停止。

5.回原点

按下回原点按钮I1.3,检测到小车未在原点,自动启动回原点程序。(先前进至终点卸料5秒,再返回停在原点)

分析:

采用一个FB块编写(也可以采用多个FB块编写或者利用FC块编写均可)。

第一步先编写模式切换;第二步编写手动;第三步编写自动和半自动,因为自动和半自动区别在于有无自动循环,所以可以将动作一起写完,再去判断是自动还是半自动;最后写回原点。

程序分段如下:

1)模式切换:

2)手动动作:

3)自动/半自动动作

注意:这里写的自动半自动动作都是嵌套再IF条件中。

4)回原点

全套程序如下:

//模式切换

#停机状态 := NOT "装料阀" AND NOT "前进" AND NOT "卸料阀" AND NOT "后退";

IF #停机状态 THEN

"手动模式" := NOT "半自动切换按钮" AND NOT "自动切换按钮";

"自动模式" := "自动切换按钮" AND NOT "半自动切换按钮";

"半自动模式" := NOT "自动切换按钮" AND "半自动切换按钮";

END_IF;

//手动

IF "手动模式" AND #回原点流程=0 THEN

"装料阀" := "装料按钮" AND "原点";

"前进" := "前进按钮" AND NOT "终点";

"卸料阀" := "卸料按钮" AND "终点";

"后退" := "后退按钮" AND NOT "原点";

END_IF;

//自动/半自动

IF ( "自动模式" OR  "半自动模式" )AND #回原点流程=0 THEN

#R_TRIG_Instance(CLK := "启动");

#R_TRIG_Instance_1(CLK:="停止");

IF #R_TRIG_Instance_1.Q THEN

#停止标志 := 1;

END_IF;

IF #R_TRIG_Instance.Q AND #流程=0 THEN

#流程 := 1;

END_IF;

IF #流程 = 1 AND "原点" THEN

"装料阀" := 1;

#流程 := 2;

END_IF;

#T0(IN:=#流程 = 2,

PT:=T#5S);

IF   #T0.Q THEN

"装料阀" := 0;

#流程 := 3;

END_IF;

IF #流程 = 3 THEN

"前进" := 1;

END_IF;

IF #流程 = 3 AND "终点" THEN

"前进" := 0;

#流程 := 4;

END_IF;

IF #流程 = 4THEN

"卸料阀" := 1;

END_IF;

#T1(IN:=#流程 = 4,

PT:=T#5S);

IF #T1.Q THEN

"卸料阀" := 0;

#流程 := 5;

END_IF;

IF  #流程 = 5 THEN

"后退" := 1;

END_IF;

IF #流程 = 5 AND "原点" THEN

"后退" := 0;

#流程 := 6;

END_IF;

IF #流程 = 6 AND  "半自动模式"  THEN

#流程 :=0;

END_IF;

IF #流程 = 6 AND  "自动模式"  AND NOT #停止标志 THEN

#流程 := 1;

END_IF;

IF #流程 = 6 AND  "自动模式"  AND  #停止标志 THEN

#流程 := 0;

#停止标志 := 0;

END_IF;

END_IF;

//回原点

IF "回原点按钮" AND NOT "原点" AND #回原点流程=0 THEN

#回原点流程 := 1;

END_IF;

IF #回原点流程 = 1 THEN

"前进" := 1;

END_IF;

IF #回原点流程 = 1 AND "终点" THEN

"前进" := 0;

#回原点流程 := 2;

END_IF;

IF #回原点流程 = 2 THEN

"卸料阀" := 1;

END_IF;

#T2(IN:=#回原点流程 = 2,

PT:=T#5S);

IF #T2.Q THEN

"卸料阀" := 0;

#回原点流程 := 3;

END_IF;

IF #回原点流程 = 3 THEN

"后退" := 1;

END_IF;

IF #回原点流程 = 3 AND "原点" THEN

"后退" := 0;

#回原点流程 := 0;

END_IF;


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则