SCL编程问答 联系客服

发布时间 : 星期二 文章SCL编程问答更新完毕开始阅读d201657f1711cc7931b71618

使用 S7-SCL,不能定义任何全局常数。

解决方法:

在 STEP 7 的符号表中,使用相应的数据类型创建标记字或双字。为这些标记区域分配恒定的数值。此后,便可以在整个项目中通过符号寻址和恒定分配的数值来使用标记数据区,这当然也包括 S7-SCL。

图.01 在变量表中定义 \变量, INT 类型,地址是 \。在 OB1 里使用 load 和 transfer 指令赋值。由此即可在项目和 S7-SCL 源程序里使用此变量。

图 01

S7-SCL 中如何编辑、比较字符串,或将字符串转变为其他的数据类型?

显示订货号

描述:

此条目下处理下列问题:

? ? ?

对一个字符串中的某个字符进行直接读写访问 编辑,比较,转换数据类型 编写一个字符串比较的FB例程

对一个字符串中的某个字符进行直接读写访问

字符串中的单个元素是无法单独访问的,例如这样的格式不允许: MB10 = str[5] 。 图 01 实例说明如何使用 IEC FC26 “MID” 函数、转换函数 “ STRING_TO_CHAR ”和“ CHAR_TO_BYTE ”对字符串中某个元素进行访问。

图 01

参数含义:

? ? ? ?

IN : STRING 格式的输入变量。

L : 从位置 P 开始(含 P)的字符串长度。(数据类型: INT ) P : 起始字符位置。 (数据类型: INT ) RET_VAL : STRING 格式的输出变量。

编辑,比较转换数据类型

下面的 PDF 文件中是使用 IEC 标准函数进行字符串编辑的 S7-SCL 一些例子与说明。

S7_SCL_String_Parameterzuweisung_e ( 99 KB )

字符串比较 FC 例程

FC 的参数往往传递的是地址。 由于 FC 的 STRING 类型的参数地址指向调用者中字符串的存储位置, 如果此 FC 被调用时,所传递的指向字符串的地址是无效的。然而对于 FB ,传递的字符串存储于背景 DB 中,所传递的地址是总是有效的。对于包含字符串比较程序的 FC ,在处理之前必须将字符串数据从 IN, OUT , IN_OUT 传到临时变量区,否则编译会失败,错误消息是:“Parameter assignment incorrect” (参数分配错误)。

图 02 是 S7-SCL 字符串比较 FC 程序示例。 当此 FC 被调用时,如果没有被装载到 FC 的临时变量区,string1 和 string2 将无法被获取。

图 02

然而,缓存字符串数据到临时变量区域将很快导致本地存储需求增长,如果只有少数的 STRING 变量,使用临时变量是适宜的,但是 STRING 变量很多,建议使用 DB 变量缓存

字符串。图 03 为使用数据块 DB100 缓存输入变量的示例。

图 03

关键字:

消息号 15:4099 , 错误消息,临时变量,指针

如何读出带有S7-SCL关键字“AT”的字符串中的管理和字节部分?

显示订货号

说明:

在某些数据通信任务中, 例如通过TCP协议(见条目号:19033929)传送有可变信息长度的数据,字符串的管理和字节部分可能必须分开。S7-SCL的关键字AT可用于这一目的。

数据类型STRING包含最多254个字符。STRING数据类型的变量的最大长度为256个字符。 在变量创建时,也同时定义了其最大长度。当前长度(字符串使用的实际长度)在字符串重构或编辑过程中被输入。字符串的第一个字节指定最大长度,第二个字节指定实际长度 。接下来