您现在所在的是:

西门子SIEMENS

回帖:46个,阅读:11384 [上一页] [1] [2] [3] [4] [5] [下一页]
1066
ljj977
文章数:45
年度积分:50
历史总积分:1066
注册时间:2006/2/17
发站内信
发表于:2018/10/27 18:21:37
#0楼
接触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编辑过]
20912
bnnyygy
文章数:5990
年度积分:1578
历史总积分:20912
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2018/10/27 20:57:46
#1楼
我献丑来一个,半成品,给设备改造的,用的欧姆龙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编辑过]
7504
wenpian
文章数:289
年度积分:187
历史总积分:7504
注册时间:2007/2/10
发站内信
发表于:2018/10/27 22:44:08
#2楼
还是梯形图适合逻辑
1066
ljj977
文章数:45
年度积分:50
历史总积分:1066
注册时间:2006/2/17
发站内信
发表于:2018/10/27 23:33:36
#3楼
回复 #1楼 bnnyygy
程序写的不错。tia protal中可以采用SCL与LAD混编的模式。这样的灵活性就更大了。
1066
ljj977
文章数:45
年度积分:50
历史总积分:1066
注册时间:2006/2/17
发站内信
发表于:2018/10/27 23:48:45
#4楼
回复 #2楼 wenpian
作为一个有C基础的人来说,用SCL他可能更擅长,入门更快。作为习惯了LAD编程的人员来说,写一般的逻辑关系程序,确实要清晰些。
计算机的普通编程人员将会有一部分人能胜任1200的编程工作,而且他们的转行不会有多大的门坎。可以说,PLC的编程人员来源会更广泛。
24524
mjinbao
文章数:13934
年度积分:48
历史总积分:24524
注册时间:2013/1/12
发站内信
2018春节活动(三)
2017春节活动(三)
2016国庆活动(三)
发表于:2018/10/28 5:44:49
#5楼
习惯于用哪种语言、或者觉得哪种语言比较好理解,可能与编程者熟悉的编程语言有关、以及对应的应用也有关系。
但多了解一种语言也是不错的,可提供选择。
[此贴子已经被作者于2018/10/28 5:45:52编辑过]
此帖发自手机工控论坛
8302
fujifa
文章数:2937
年度积分:235
历史总积分:8302
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2018/10/28 6:22:26
#6楼
在JAVA出现之前,C语言的菜鸟们也是认为C语言将一统江湖,在PYTHON出来之前,JAVA的菜鸟们也是这么认为的。

菜鸟们总是习惯使用必将,一定等词汇来描述他们认为的事物,为什么老鸟们不这样认为呢?因为老鸟们知道:
1:SCL,也就是ST语言,编译为机器码的执行效率比其他语言效率低。
2:梯形图编程语言也在进步,去看看诸如富士,AB这类在梯形图中使用高级语言编程等增强型梯形图语言的厂家就知道了。

HAVE FUN!
此帖发自手机工控论坛
精通富士POD,富士PLC的编程
有问题可以直接电邮:FUJIFA@yeah.net
16009
hgxmm123
文章数:3031
年度积分:956
历史总积分:16009
注册时间:2006/1/18
发站内信
2018春节活动(一)
2017国庆活动(三)
2016国庆活动(二)
发表于:2018/10/28 11:03:56
#7楼
老外喜欢用SCL语言编程,它功能丰富。国人喜欢用梯形图编程,易于推广。
10242
twtynijj
文章数:2603
年度积分:813
历史总积分:10242
注册时间:2009/7/15
发站内信
2016国庆活动(三)
发表于:2018/10/28 11:29:56
#8楼
表情最多只能说是备选的语言方法 ,主流怕是很难,可读性并不是很好,推广也难。老外是因为人家母语就是字母组成 对他们来说可读性还是非常强。现在PLC 还是以 LAD SFC ST CFC 这一类为代表 也符合IEC标准的。如果哪一家PLC只有一种你说的SCL怕是干不了几年在中国就只能关门了表情市场决定的。
37243
cvlsam 版主
文章数:12401
年度积分:1595
历史总积分:37243
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2018/10/28 17:04:37
#9楼
以下是引用twtynijj2018/10/28 11:29:56的发言:
表情最多只能说是备选的语言方法 ,主流怕是很难,可读性并不是很好,推广也难。老外是因为人家母语就是字母组成 对他们来说可读性还是非常强。现在PLC 还是以 LAD SFC ST CFC 这一类为代表 也符合IEC标准的。如果哪一家PLC只有一种你说的SCL怕是干不了几年在中国就只能关门了表情市场决定的。

西门子之所以称为SCL而不是ST,是因为其编程语言指令表叫做STL,为了避免混淆,所以叫做SCL,其实就是其他厂家的ST语言。

还是以 LAD SFC ST CFC 这一类为代表看到这句,就说明您不太熟悉西门子的啊。

Good Luck~

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006