浔之漫智控技术(上海)有限公司
西门子模块代理商

西门子S7-400中央处理单元CPU414-3西门子代理商

西门子S7-400中央处理单元CPU414-3西门子代理商

西门子S7-400中央处理单元CPU414-3西门子代理商

西门子S7-400中央处理单元CPU414-3西门子代理商

西门子S7-400中央处理单元CPU414-3西门子代理商

主营西门子原装

S7-200CN|S7-200|S7-1200|S7-300|

S7-400|ET200系列PLC,

西门子T400|TDC高端控制器|

西门子PCS7过程控制系统,西门子HMI,

西门子802C|S|D|810D|840D|828D数控系统及备件,

西门子MM4|G110|G120|V10标准变频器,

西门子S120|611系列伺服系统,

西门子profibus-DP现场总线系统,

西门子电机,西门子过程仪表

凡我公司出售的西门子产品均享受西门子官方质保一年,

一年内有任何质量问题免费提供换新或维修服务,不收取任何费用!

希望我的用心能换来您对我们的信心!

我公司大量现货供应,价格优势,品质保证,德国原装进口

西门子PROFINET故障诊断方法有哪些

1.基于CP443-1的PROFINET通信的故障诊断

  项目CP443_1与项目315_2PN的诊断程序基本上相同。

  (1)DO模块负载断线的诊断

  运行时断开ET200SPN的DO模块外部负载的接线,因为DO模块组态了断线诊断功能(见图11-9),触发了诊断中断,CPU调用OB82。CPU和CP443-1的EXTFLED亮,IM 151-3PN和DO的SFLED亮。

  打开诊断视图(即在线的HW Config),选中ET200S PN,可以看到CPU,IM151-3PN 和DO模块上的故障符号。双击ET200SPN的DO模块,打开它的模块信息对话框,在“IO 设备诊断”选项卡的“指定通道诊断”列表中,可以看到3号插槽的通道0和通道1的引线断开的故障。

  OB82调用SFB54后,保存在DB6和DB7中的诊断信息与项目315_PN同样的故障读取的诊断信息基本上相同。

  (2)拔出有诊断功能的DO模块

  在运行时拔出200S DP 的6号槽组态了诊断功能的DO模块,CPU和CP443-1的EXTF LED亮,IM 151-3 DP和DO模块的SF LED亮。从变量表可以看出,CPU分别调用了一次OB83和OB86,模块拔出期间,多次调用OB85。

  选中SIMATIC管理器左边窗口的400站点,执行菜单命令“PLC”→“诊断/设置”→“模块信息”,打开CPU的模块信息对话框。因为在CPU的每个扫描循环周期都要调用一次OB85,断缓冲区中的事件都是调用OB85的信息,“关于事件的详细资料”区(见图11-35)给出出现故障的模块的地址为IB11(即6号槽的DI模块的地址)。

  双击诊断视图中的IE/PB Link,打开它的模块信息对话框,在“关于事件的详细资料”区(见图11-36),可以看到3号站地址为11的模块被拔出的信息。


CPU的模块信息对话窗


  插入6号槽的DO模块,CPU又调用一次OB83和OB86。

  2. 基于CP 343-1的PROFINET通信的故障诊断

  (1)拔出ET200S DP 电源模块的诊断

  运行时拔出ET200S DP的电源模块,CPU的LED状态不变,CP 343-1、IE/PBLink、IM 151-1和有诊断功能的6号槽DO模块的SFLED亮,未产生中断。

  打开诊断视图(即在线的HW Config),其中的CP 343-1、IE/PB Link和ET 200S DP上有故障符号。双击CP 343-1,打开它的模块信息对话框,在“诊断缓冲区”选项卡中可以看到信息“外部错误,进入的事件”。

  双击诊断视图中的 IE/PB Link,打开它的模块信息对话框,在“常规”选项卡中,可以看到“模块可用且正常,外部出错”。在“诊断缓冲区”选项卡,可以看到模块被拔出的信息、该模块所在的站地址和模块的诊断地址,以及信息“外部错误,进入的事件”。

  (2)拔出ET200SPN电源模块的诊断

  运行时拔出ET200SPN插槽1的电源模块,CPU的LED状态不变,CP343-1、IM151-3PN

  和有诊断功能的DI、DO模块的SFLED亮,未产生中断。

  在诊断视图中,CP343-1和ET200SPN有故障符号。

  CP343-1的诊断缓冲区的诊断信息为“外部错误,进入的事件”。

  IM151-3PN的“模块信息”对话框的“常规”选项卡中的信息为“模块可用且正常,外部出错”,“IO设备诊断”选项卡的诊断信息为“插槽1中的模块丢失”。

  (3)硬件中断

  CP343-1作PROFINET控制器时,ET200SPN的DI模块属性视图的“参数”选项卡中的硬件中断复选框为灰色,不能组态硬件中断。

  CPU集成的PN接口和CP443-1作PROFINET控制器时,ET200SPN的DI模块可以组态和产生硬件中断。使用本章的3种PROFINET控制器时,ET200S DP的DI模块都可以组态和产生硬件中断。

QQ图片20200602212417.jpg

西门子SCL常用控制语句解析

西门子SCL常用控制语句解析

指令

SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这些不同的。


SCL特殊的指令有以下几种,如图1-3红框中的指令:


图1 读/写存储器



图2 转换操作中的变量



图3 程序控制指令

这里只介绍图3的程序控制指令。


程序控制指令解释

类型 程序控制语句 说明

选择语句 IF-THEN语句 用于将程序执行转移到两个备选分支之一 (取决于条件为 True 还是False)判断两个量的真假

选择语句 CASE语句 用于选择执行 n 个备选分支之一 (取决于变量值,变量值等于2,设定的备选分支等于2的话,就会执行2这个分支。)

选择语句 FOR语句 只要控制变量在指定值范围内,就重复执行某一语句序列

循环语句 WHILE-DO语句 只要仍满足执行条件,就重复执行当前一语句序列,

循环语句 REPEAT-UNTIL语句 重复执行某一语句序列,直到满足终止条件为止

循环语句 CONTINUE语句 停止执行当前循环迭代

程序跳转 EXIT语句 无论是否满足终止条件,都会随时退出循环

程序跳转 GOTO语句 使程序立即跳转到指定标签

程序跳转 RETURN语句 使程序立刻退出正在执行的块,返回到调用块

程序控制指令是SCL编程的基础,接近**语言的指令,虽然这些功能通过LAD/FBD也可以实现,但使用SCL编写会更加方便,逻辑条理也更加清晰。


IF 条件执行

说明:使用“条件执行”指令,可以根据条件控制程序流的分支。该条件是结果为布尔值 (True或 False)的表达式。可以将Bool变量、逻辑表达式或比较表达式作为条件。

执行该条件执行指令时,将对指定的表达式进行运算。如果表达式的值为 True,则表示满足该条件;如果其值为 False,则表示不满足该条件根据分支的类型,可以对以下形式的指令进行编程


IF...THEN... 分支:

IF "条件" = 1 THEN  //输入条件,后面需要加上THEN,同时,注意格式,需要空格

"输出" := 1; //注意空格,还有冒号以及分号的使用,必须在英文状态下输入。

END IF; //结束语,也一定要加上。

//还有一种,我们可以在条件那再加上一个条件

IF "条件" = 1 THEN //当条件等于1时,那么输出1就会动作,当条件不为1时,那么输出2就会动作。

 "输出1" := 1;

else //相反

 "输出2" := 1;

END_IF;

1

2

3

4

5

6

7

8

9

10

在这里我建议,如果没有特别的要求,我们的变量表的名称可以化成英文或者是拼音的形式,这样我们在写起来的时候就可很大程度上避免来回切换中英文。


CASE:创建多路分支

说明:使用"创建多路分支"指令,可以根据数字表达式的值执行多个指令序列中的一个。


按如下方式声明此指令:


CASE






ELSE


END_CASE;


CASE "状态值" OF   //当状态值等于1时绿色就会TRUE,当等于2时,黄色就会TRUE。

                   //当不等于1或2时红色就会TRUE,

    1:  // Statement section case 1

        "绿色":=1 ;

        "黄色" := 0;

        "红色" := 0;

    2:  // Statement section case 2 to 4

        "黄色":=1  ;

        "绿色" := 0;

        "红色" := 0;

    ELSE  // Statement section ELSE

        "黄色" := 0;

        "绿色" := 0;

        "红色" := 1; ;

END_CASE;

//当表达式的值等于某个常数值时,将执行该常数后的各种指令。

//如果不满足条件,则执行 ELSE 后编写的指令。如果两个值不相等,则执行这些指令。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

FOR:在计数循环中执行

说明:使用"在计数循环中执行"指令,重复执行程序循环,直至运行变量不在指定的取值范围内。


也可以嵌套程序循环。在程序循环内,可以编写包含其它运行变量的其它程序循环。


通过指令"复查循环条件"(Continue),可以终止当前正在运行的程序循环。通过指令"立即退出循环"(Exit)终止整个循环的执行。




用FOR计算数组里面所有数据的和


//计算数组里面所有数据的和

"和" := 0;

FOR "计数" := 0 TO 20 DO

    "和" := "和" + "数据块_1".数组1["计数"]; 

    // Statement section FOR

 ;

END_FOR;

1

2

3

4

5

6

7

用FOR计算数组里面所有数据的*大值


通过建立0-20的数组,使用FOR语句循环,在0到20 的数组中,用IF语句判断数组2中的*大值,*终在循环到第20的数组中时,IF判断出*大的值,循环停止,求*大值输出*后的结果。


//计算数组数据中*大的值

FOR "*大值" := 0 TO 20 DO //*大值数据类型为:Int    地址:%MW16,


    // Statement section FOR

    IF "求*大值" < "数据块_1".数组2["*大值"] THEN  //求*大值数据类型为:int,%MW18

        // Statement section IF

        "求*大值" := "数据块_1".数组2["*大值"]; //数据类型:Array[0..20] of Int,

      END_IF;   


END_FOR;

1

2

3

4

5

6

7

8

9

10

WHILE语句

在满足条件时,要执行的语句。如果不满足条件,则程序将从 END_WHILE 后继续执行。


WHILE "参数1" <= 100 AND "标志位" = 0 DO //当参数1小于100时,并且标志位等于0

                                          //WHILE语句开始循环

    // Statement section WHILE

    "参数2" := "参数1" + "参数2";     //参数2=参数1+参数2,:=表示传送,将后面的结果传入。

    "参数1":= "参数1" + 1;             //参数1=参数1+1,


    EXIT; //表示立即退出循环,如果没有EXIT,那么就会一直在循环中,无法跳出。                           

END_WHILE;

IF "参数1" >= 101 THEN //当参数1大于等于101时,结束循环,

    // Statement section IF

    "标志位" := 1;

END_IF;

1

2

3

4

5

6

7

8

9

10

11

12

REPEAT语句

REPEAT语句先执行循环体,再判断条件是否成立,




#"3" := 0;

REPEAT

    #"3" := #"3"+2;

UNTIL #"3">100 END_REPEAT;//当执行循环体后,判断条件时候成立若不成立,继续循环,

                       //当条件true时,结束循环。

#"3" := #"4";    

1

2

3

4

5

6

FOR语句循环实现有限次循环


WHLIE语句的条件为真时执行循环体


REPEAT语句的条件为否时执行循环体


GOTO:跳转

说明:使用"跳转"指令,可以从标注为跳转标签的指定点开始继续执行程序。


跳转标签和"跳转"指令必须在同一个块中。在一个块中,跳转标签的名称只能指定一次。每个跳转标签可以是多个跳转指令的目标。不允许从"外部"跳转到程序循环内,但允许从循环内跳转到"外部"。


注意:LAD/FBD语言内的SCL段,不能使用GOTO指令。


跳转标签遵循以下语法规则:


字母(a 至 z,A 至 Z)

字母和数字组合;请必须字母为开始

可按如下方式声明此指令:


GOTO




CASE "状态值" OF  //当状态值为1.2.3中的某个数时,

                 //相应跳转至MyLABEL1,MyLABEL2,MyLABEL3,相反则跳转至MyLABEL4。

    1:

        GOTO MyLABEL1 ;  // Statement section case 1


    2:

        GOTO MyLABEL2// Statement section case 2 to 4

        ;

    3:

        GOTO MyLABEL3;

        GOTO MyLABEL4; ;

END_CASE;

MyLABEL1:

"参数1" += 1;

MyLABEL2:

"参数2" += 2;

MyLABEL3:

"参数3" += 3;

MyLABEL4:

"参数4" += 4;


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

### RETURN:退出块


说明:使用"退出块"指令,可以终止当前处理块中的程序执行,并在调用块中继续执行。


如果该指令出现在块结尾处,则可以跳过。


```c

IF "参数3">=5000 THEN

 // Statement section IF

 RETURN ;

END_IF;

1

2

3

4

5

6

7

8

9

10

11

小结

以上就是西门子SCL语句的程序控制指令,需要灵活多变使用,注意语法格式。

————————————————

版权声明:本文为CSDN博主「Mountain and sea」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/CHUXUEZHE8210/article/details/128914333


展开全文
优质商家推荐 拨打电话