博途scl语言提示未编译
A. 在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之后同样很方便。
具体细节还请翻看编程手册.
B. 西门子博途SCL语言问题
OUT作为FC105,也就是SCALE的线性整定返回值。
而VAT则表明SCALE函数的执行状态,相当于ENO。
C. 西门子PLC中,取反指令NOT
赋值的符号为 :=,注意一定要用英文半角的标点符号,变量可以中文变量,先看最简单的一个触点控制线圈输出的语句:
常开触点控制线圈
常闭触点用取反指令NOT,其它的和常开触点一样
常闭触点控制线圈
串联触点中间用AND或者符号&进行连接
串联触点的写法
串联中的常闭触点,别忘了加NOT
一常开一常闭触点
并联触点指令为OR
两个常开触点并联
并联触点中用常闭依然要加NOT
一常闭一常开触点并联
串联和并联的混合输入,可以加入括号以区分,不然初学者会傻傻分不清逻辑
串联和并联的混合输入,可以加括号以区分
除了上面的,还有一种异或运算,符号为XOR,意思是两个值做异或运算,当两个值相同时,结果为0,当两个值不同的,结果为1,与梯形图比较可以写成如下所示:
异或运算
SCL语言很简单,如果有高级语言基础,基本一天就可以学会,三天精通,五天就可以随便写程序了,关键在于在坚持。
在TIA博途软件中,默认支持SCL语言,在建立程序块时可以直接选择SCL语言。
SCL语言类似计算机高级语言,如果你有C、Java、C++、Python这种高级语言的学习经历,再学习SCL就会容易很多。
在用SCL语言编程时,主要用IF...THEN/FOR/WHILE语句去构造条件、循环、判断这样的结构,在这些结构中再次添加指令,去实现逻辑判断。所有程序的编写都是在纯文本的环境下编辑,不像梯形图那么直观。
能把SCL运用的比较灵活的,大多是从IT转行过来做工控的人。本人就对SCL不太感冒,虽然一直在学习。
1、新建SCL语言功能块
在TIA博途软件中能直接建立SCL语言的功能块,如下图所示,只需要在语言下拉列表中选择SCL即可。
新建好程序块直接打开,会进入SCL的编辑环境,
2、SCL语言指令介绍
介绍指令之前先说一些,高级语言编写基础知识。
一行代码结束后要添加英文分号,表示改行代码结束。
所有代码程序都为英文字符,在英文输入法下输入字符。
可以添加中文注释,注释前先添加双斜杠,即://。这种注释方法只能添加行注释,段注释要插入一个注释段。
在SCL中变量需要在双引号内,定义好变量后软件能辅助添加。
每种高级语言的编写都有各自基础规则,建议大家多了解,不要在基础知识上犯错误。
D. 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。
E. 博途v15中怎样把scl程序转换成lad程序
不是说所有的PLC编程语言都可以互相转换
不要说SCL了,就算是STL都未必能转换回去
举个例子,你用LAD写一段起保停的程序,然后转换成STL,删掉NOP行
这时候程序功能没有发生任何改变,但是你会发现这段STL无法再转换回LAD
SCL有点接近C语言的编写习惯,就像IF语句就特别像,几乎一样
他和LAD不能互转
F. SCL没有源文件如何生成博途
SCL没有源文件生成博途方法:
在TIA博途中点击“项目移植”选项后,再选择STEP7源项目打开就可以生成博途了。
SCL(Structured Control Language)语言,也就是结构化控制语言,它其实和IEC标准制定的ST语言是一样的。S7-SCL 可以编译成 STL, 虽然其代码量相对于 STL 编程有所增加,但我们更关心的是程序结构和程序的总体效率。
类似于计算机行业的发展,汇编语言已经被舍弃,取而代之的是 C/C++等高级语言。S7-SCL 对工程设计人员要求较高,需要其具有一定的计算机高级语言的知识和编程技巧。
STL是STEP7时代推出的语言,它不是STRUCT TEXT LANGUAGE的缩写,所以它和ST语言完全没关系。
STL语言是一种汇编语言,是面向机器底层的语言,可以直接操作寄存器,可读性不强,和80C51单片机的机器语言是一个层面。所以它是一种低级语言,而ST和SCL都是中高级语言。
SCL源文件支持的文件格式:
S7-SCL 支持如下 STEP7 的块:OB,FC,FB,DB,UDT。在 S7 程序中,S7-SCL 块可以与其它STEP7 编程语言生成的块互相调用。
S7-SCL 可以被编译成 STL, S7-SCL 生成的块也可以作为库文件被其它语言引用。由于 S7-SCL 程序由 ASCII 文本构成,所以它非常容易被导入或导出。
G. 初学西门子PLC的SCL语言编程,在帮助文件中复制了一段SCL语言,编译后一直提示错误,求大神解答
FUNCTION_BLOCK FB20
VAR_INPUT
ENDVAL: INT;
END_VAR
VAR_IN_OUT
IQ1 : REAL;
END_VAR
VAR
INDEX : INT;
END_VAR
VAR_TEMP
CONTROL : BOOL;
END_VAR
BEGIN
CONTROL:=FALSE;
FOR INDEX:= 1 TO ENDVAL DO
IQ1:= IQ1 * 2;
IF IQ1 >10000 THEN
CONTROL = TRUE
END_IF
END_FOR
END