登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:SCL必将成为PLC的主流编程语言

点击:11356 回复:46

接触S7-1200的时间不是很长,但人个感觉TIA PROTAL中的SCL编程语言还不错,下面是我写的一个传送带的启停程序:
IF #start THEN
   #Step_Variable := 1;
END_IF;
#Timer_1.TON(IN:=(#Step_Variable=1),
            PT:=T#5S);
#Timer_2.TON(IN :=(#Step_Variable=3),
            PT := T#5s);
CASE #Step_Variable OF
   1:
       #motor_1 := true;
       IF #Timer_1.Q THEN
           #Step_Variable := 2;
       END_IF;
   2:
       #motor_2 := true;
       IF #stop THEN
           #Step_Variable := 3;
       END_IF;
   3:
       #motor_2 := FALSE;
       IF #Timer_2.Q THEN
           #motor_1 := false;
           #Step_Variable := 0;
       END_IF;
END_CASE;
(*
IF #Step_Variable = 1 THEN
   #motor_1 := true;
   IF #Timer_1.Q THEN
       #Step_Variable := 2;
   END_IF;
ELSE IF #Step_Variable = 2 THEN
   #motor_2 := true;
   IF #stop THEN
      #Step_Variable := 3;
   END_IF;
ELSE IF #Step_Variable = 3 THEN
   #motor_2 := FALSE;
      IF #Timer_2.Q THEN
          #motor_1 := false;
          #Step_Variable := 0;
      END_IF;
       END_IF;
   END_IF;
END_IF;
*)
   可以发现,用CASE做顺控程序还是可以的。程序的后面部分用IF语句替代CASE语句的情况,效果也一样。
   注意:把定时器放到CASE中,它的IN端口,在时间到达的时是不能切断的(大家可以分析其原因)。
   朋友们如果感兴趣,可以看看我写的课程《S7-1200应用技术》。
   https://mooc1-2.chaoxing.com/course/201475891.html
最后修改:2018/10/27 19:21:42
18-10-27 18:21
我献丑来一个,半成品,给设备改造的,用的欧姆龙CP1L,ST语言功能块,部分节选。
(*自动*)
IF ERROR=FALSE THEN
IF 原位bool=TRUE AND 管到位_UP=TRUE AND 自动_BOOL=TRUE  THEN AUTO_D:= 1;END_IF;
IF 预夹紧_到位=TRUE     AND                                                AUTO_D=1 THEN AUTO_D:= 2;END_IF;
IF 锁紧_到位=TRUE and                                                          AUTO_D=2 THEN  AUTO_D:= 3;END_IF;
IF 挡料板_到位=TRUE AND                                                     AUTO_D=3 THEN AUTO_D:= 4;END_IF;
IF 扩口_到位=TRUE AND T_0=2  and                                     AUTO_D=4 THEN  AUTO_D:= 5;END_IF;
IF 扩口_原位=TRUE and                                                             AUTO_D=5 THEN  AUTO_D:= 6;END_IF;
IF 换冲_到位=TRUE and                                                              AUTO_D=6 THEN  AUTO_D:= 7;END_IF;
IF 扩口_到位=TRUE  AND T_0=2 and                                        AUTO_D=7 THEN  AUTO_D:= 8;END_IF;
if  扩口_原位=TRUE and                                                               AUTO_D=8 THEN  AUTO_D:= 9;END_IF;
IF 挡料板_原位=TRUE AND 锁紧_原位=TRUE
AND 换冲_原位=TRUE and                                                       AUTO_D=9 THEN  AUTO_D:= 10;END_IF;
IF 预夹紧_原位=TRUE and                                                             AUTO_D=10 THEN  AUTO_D:= 0;END_IF;
(*自动输出*)
CASE AUTO_D OF
1:预夹紧_OUT:=TRUE;
2:锁紧_OUT:= TRUE;
3:挡料板_OUT:= TRUE;
4:扩口_OUT:= TRUE;
5:扩口_OUT:= FALSE;
6:换冲_OUT:= TRUE;
7:扩口_OUT:= TRUE;
8:扩口_OUT:= false;
9:挡料板_OUT:= false;锁紧_OUT:= false;换冲_OUT:= false;
10:预夹紧_OUT:= FALSe;
END_CASE;
ELSE
AUTO_D:= 0;
预夹紧_OUT:= false;
  锁紧_OUT:= false;
    扩口_OUT:= false;
  挡料板_OUT:= FALSE;
换冲_OUT:= false;
END_IF;
(*气缸不到位超时报警*)
IF T_1>=100 THEN
CASE AUTO_D OF
1: IF 预夹紧_到位=FALSE THEN ERROR_ID:= 2;END_IF;
2:IF 锁紧_到位=FALSE THEN ERROR_ID:= 3;END_IF;
3:IF 挡料板_到位=FALSE THEN ERROR_ID:= 4;END_IF;
4:IF 扩口_到位=FALSE THEN ERROR_ID:= 5;END_IF;
5:IF 扩口_原位=FALSE THEN ERROR_ID:= 6; END_IF;
6:IF 换冲_到位=FALSE THEN ERROR_ID:= 7;END_IF;
7:IF 扩口_到位=FALSE THEN ERROR_ID:= 8;END_IF;
8:IF 扩口_原位=FALSE THEN ERROR_ID:= 9;END_IF;
9:IF 挡料板_原位=FALSE THEN ERROR_ID:= 10;ELSIF 锁紧_原位=FALSE THEN ERROR_ID:= 11;ELSIF 换冲_原位=FALSE THEN ERROR_ID:= 12;END_IF;
10:IF 预夹紧_原位=FALSE THEN ERROR_ID:= 13;END_IF;
END_CASE;(*输出错误ID*)
END_IF;
习惯了梯形图,ST语言还是没有梯形图直观。
菜鸟的感觉:
高级语言适合数学计算之类的,写逻辑还是梯形图直观。
顺便鄙视下欧姆龙,CP小型机ST语言居然不能用定时器。。。。
最后修改:2018/10/27 21:04:17
18-10-27 20:57
还是梯形图适合逻辑
18-10-27 22:44
程序写的不错。tia protal中可以采用SCL与LAD混编的模式。这样的灵活性就更大了。
18-10-27 23:33
作为一个有C基础的人来说,用SCL他可能更擅长,入门更快。作为习惯了LAD编程的人员来说,写一般的逻辑关系程序,确实要清晰些。
计算机的普通编程人员将会有一部分人能胜任1200的编程工作,而且他们的转行不会有多大的门坎。可以说,PLC的编程人员来源会更广泛。
18-10-27 23:48
习惯于用哪种语言、或者觉得哪种语言比较好理解,可能与编程者熟悉的编程语言有关、以及对应的应用也有关系。
但多了解一种语言也是不错的,可提供选择。
最后修改:2018/10/28 5:45:52
18-10-28 05:44
在JAVA出现之前,C语言的菜鸟们也是认为C语言将一统江湖,在PYTHON出来之前,JAVA的菜鸟们也是这么认为的。
菜鸟们总是习惯使用必将,一定等词汇来描述他们认为的事物,为什么老鸟们不这样认为呢?因为老鸟们知道:
1:SCL,也就是ST语言,编译为机器码的执行效率比其他语言效率低。
2:梯形图编程语言也在进步,去看看诸如富士,AB这类在梯形图中使用高级语言编程等增强型梯形图语言的厂家就知道了。
HAVE FUN!
18-10-28 06:22
老外喜欢用SCL语言编程,它功能丰富。国人喜欢用梯形图编程,易于推广。
18-10-28 11:03
表情最多只能说是备选的语言方法 ,主流怕是很难,可读性并不是很好,推广也难。老外是因为人家母语就是字母组成 对他们来说可读性还是非常强。现在PLC 还是以 LAD SFC ST CFC 这一类为代表 也符合IEC标准的。如果哪一家PLC只有一种你说的SCL怕是干不了几年在中国就只能关门了表情市场决定的。
18-10-28 11:29

引用 twtynijj 在 2018/10/28 11:29:56 发言【内容省略】

西门子之所以称为SCL而不是ST,是因为其编程语言指令表叫做STL,为了避免混淆,所以叫做SCL,其实就是其他厂家的ST语言。
还是以 LAD SFC ST CFC 这一类为代表看到这句,就说明您不太熟悉西门子的啊。
Good Luck~
18-10-28 17:04

上一页下一页

工控新闻

更多新闻资讯