西门子plc编程语言scl,PLC的SCL语言疑问

1 , PLC的SCL语言疑问DB1000.POOL_int[48] := WORD_TO_INT(INT_TO_WORD(DB1000.POOL_int[48] + 1) & 16#7FFF);INT_TO_WORD(DB1000.POOL_int[48] + 1)将数组中的数据+1,然后数据类型强制转换为WORD类型 。& 16#7FFF);将上述结果与16进制数据7FFF做与操作,实质就是将最高位置0.最后将处理的数据转换为整型保存到[48]数组单元中 。BEGIN作为语句块的开始,后面跟个分号代表第一句语句为空语句,其等同于BEGIN;SCL语言就是类似于Pascal的语言,其他品牌的PLC中称作ST语言 , 因为西门子的语句表叫做STL,为了避免混淆,因此叫做SCL 。
2,西门子PLC编程语言有哪几种plc编程语言有梯形图语言、指令表语言、功能模块图语言等 。1、梯形图语言是PLC程序设计中最常用的编程语言 。CPU将物理输入读入内存表 , 通常称为“输入表” 。该表经评估后在程序中使用 。不同平台,使用不同类型的寄存器;在每个扫描周期,按照从左向右,从上到下的顺序处理逻辑 。2、指令表编程语言是与汇编语言类似的一种助记符编程语言 。设备干涉处理模块 。主要处理设备中各种气缸或者电缸之间的干涉处理,防止它们之间出现相互碰撞的可能 。比如气缸A与气缸B之间存在一个公共区域,两个同时进入公共区域则会发生碰撞,这时候两者之间就要做防干涉处理 。3、功能模块图语言是与数字逻辑电路类似的一种PLC编程语言 。PLC上的I/O模块指示灯是否也点亮 。在许多设备中,输入和输出信号通过端子与可编程控制器相连 。有时端子的指示灯有信号,但不能保证PLC上相应的地址不会因为连接线开路而连接 。
3,在Step 7使用SCL语言的问题SCL语言是类PASCAL语言,并不是C , 前些年比较风靡的DELPHI就是采用的PASCAL语言 。另外补充一下对SCL的感受:1、CASE指令可实现STL的JL指令的功能,使用起来更直观化,另外支持GOTO跳转,对于程序实现步进控制同样很方便 。2、SCL不仅可以在线调试 , 而且支持变量"参考数据"功能,并且变量符号与绝对地址无一疏漏 。3、对于SCL上升沿下降沿检测的实现我并不同意4楼所说,同样只需要像STL、LAD定义一个沿检测位 , 即可轻松实现沿检测功能,下面举一上升沿例子:上升沿检测原理: IF In AND NOT Mem THEN //沿检测逻辑执行语句部分;END_IF;Mem:=In; 注:Mem就是我们需要的中间存储位、 In被检测的变量 4、另外在西门子介绍SCl时着重强调了几项功能: 5、SCL同样支持多重背景调用功能 。6、对于STL能实现的复杂运算功能目前我还没发现SCL不能支持的,在没使用SCL之前的我程序基本都是用STL , 使用了SCL之后同样很方便 。具体细节还请翻看编程手册.STL中用CALL指令调取函数 。SCL不清楚【西门子plc编程语言scl,PLC的SCL语言疑问】
4,西门子PLC SCL编程指令讲解在SCL程序编写中 , 在逻辑控制或者数据处理分析中,有一类指令我们用得最多,就是程序控制指令 , 常见的入IF ,Case ,For 和While 等 。下面我仔细的讲解,有疑问可以留言提出:图1 程序控制指令IF .. THEN 指令IF 指令含有含有三个分支 , 分别是Then ,Else 和ElsIF 。图2 IF 语句图3 浮点数比较条件IF语句应该是SCL里面最常用的语句了,常用于条件判断 。判断类型可以是BOOL类型,可以是浮点类型等等,基本上所有类型都可以判断,只要比较的两个变量类型是一样 。在图2中,AByte 是Byte 类型,因为1在0..255之间,所以1会自动转化为Byte类型 。如果比较的是Abyte类型是256,会是什么样子呢?读者可以自己写的程序 , 试验一下,看看结果,会加深你对数据类型的理解 。上面程序中,首先比如AByte是否和1相等 , 如果相等则Outvalue的值为1,然后和2比较,如果和2相等,那么OuValue值为2,如果都满足条件OuValue 的输出值则为5 。上述的IF条件语句,也可以用CASE语句来进行表示 。CASE的比较类型没有IF 范围广,只有整形才能做为比较条件 。CASE指令图4 IF语句的CASE表达方式从CASE语句表述中,我们发现语句相对于IF表达式来说 , 更加清晰简单明了,所以如果需要用到整形条件作为判断,尽量用CASE来实现,会提高效率 。FOR 指令FOR指令常用来对数组类型数据进行批量处理 , 在上一期讲解中已经举过一个例子,下面举个稍微复杂点的例子 。图5 FOR循环语句在FOR程序,我们对数组的每一个索引值进行赋值,同时判断索引值的奇偶性来进行赋值操作 。图6 FOR循环语句2在上面的程序里面,我们发现有一个关键字Continue .当FOR循环执行到该语句的时候 , Continue下面的程序都不会执行 。所以,当iCout小于15的时候,AArray[iCount]:=iCount赋值语句不会执行 。还有一个地方有点区别,就是FOR 语句后面 , 多了一个关键字 BY。BY的含义是For 执行的间隔按照BY的设定来执行 。如果后面设定为1,则0..99全部执行;如果设定为2,则执行顺序为0,2,4,6,8的顺序来执行 。上述的FOR循环语句,我们同样可以采用WHILE循环来实现 。WHILE 指令图7 WHILE指令WHILE循环的表达方式和FOR循环基本类型,但是我们注意一点 , 这里面对循环变量,手动进行进行递进 。如果没有这一句 , iCount的值一直为0,循环条件iCount<100将一直为True,WHILE循环会一直执行 。所以切记一定执行该语句 。我们还注意到一个关键字EXIT,当执行到该指令的时候,WHILE循环会停止执行,FOR指令也是一样 。所以上面的程序,运行下来的情况是 , 数组的赋值只执行到AArray[81]结束 。GOTO指令goto指令主要用来执行跳转过程,可以带来程序操作的便利性,一般不推荐使用 。若操作不当,则会打乱整个程序的逻辑性 。在图7 中,如果iCount 大于90,那么,程序就会跳出WHILE 循环执行指定标签lable13地方程序#iCount=0,继续从头开始执行WHILE循环 。当然这个操作是毫无意义的,这里只是举个例子而已 。5,PLC S7SCL是什么意思结构化控制语言编程结构和C语言和Pascal语言相似,特别适合于习惯于使用高级语言编程的人使用 。SCL程序可以在CPU314及其以上的S7(包括400)中运行 。德国西门子(SIEMENS)公司生产的可编程序控制器在我国的应用也相当广泛,在冶金、化工、印刷生产线等领域都有应用 。西门子(SIEMENS)公司的PLC产品包括LOGO、S7-200、S7-1200、S7-300、S7-400等 。西门子S7系列PLC体积小、速度快、标准化,具有网络通信能力,功能更强,可靠性高 。S7系列PLC产品可分为微型PLC(如S7-200),小规模性能要求的PLC(如S7-300)和中、高性能要求的PLC(如S7-400)等 。lad:梯形图----------日系称作为ldstl:指令表---------日系称作为ilscl:结构文本-------日系称作为stgraph:图形编程-----日系称作为sfchigraph:高级图形编程cfc:连续功能编程 。结构化控制语言编程结构和C语言和Pascal语言相似,特别适合于习惯于使用高级语言编程的人使用 。SCL程序可以在CPU314及其以上的S7(包括400)中运行 。

    推荐阅读