在调用和参数化 SFB、SFC 和 IEC 标准功能时的一些技巧

n

说明
此条目包含在调用和参数化 SFB、SFC 和 IEC 标准功能时的一些技巧:n

  1. 常规 – 哪里可以获得关于 SFB、SFC 和 IEC 功能的信息?
  2. 如何设置 IEC 标准功能 FC11(FIND)的输入参数 “IN1”和“IN2”?
  3. 当设置 SFC14/15 ANY 类型的“RECORD”参数指向 ARRAY 或 STRUCT 数据区时应注意什么?
  4. 何使用 SFC 20 来传送“STRING”类型的数据区?
  5. 为什么 SFC 20 返回值“ RET_VAL”根据所使用的 CPU 的不同而不同?
  6. 为什么尽管字符串变量在允许范围内但 IEC 功能 FC 38 返回值仍为“0”?
  7. 用于通信任务的SFB在哪些OB中调用?

下表描述了相关内容的信息及处理方法:

序号 在调用和参数化 SFB、SFC 和 IEC 标准功能时的一些技巧和提示
1 常规 – 哪里可以获得关于 SFB、SFC 和 IEC 功能的信息?
关于 SFB, SFC 和 IEC 功能的信息: n

  • 选中块并点击 F1 打开在线帮助n
  • 手册“System software for S7-300/400 system and standard functions”,条目号: 1214574.
2 如何设置 IEC 标准功能 FC11(FIND)的输入参数 “IN1”和“IN2”?
所设置的字符串“IN2”一定不能与字符串“IN1”相同。如果两个字符串一致,使用块 FC11 (FIND) 依然报告“0”。对于检查是否相等应使用 FC10 (EQ_STRNG) 或两者一起使用。
3 当设置 SFC14/15 ANY 类型的“RECODE”参数指向 ARRAY 或 STRUCT 数据区时应注意什么?
STEP 7 总是以字(WORD)在内存中来存储 ARRAY 和 STRUCT 类型的数据。一个奇数字节长度 的数组(例如 ARRAY [1..5])会多加一个字节来填满,所以使用 ANY 指针会传送一个错误的长度。这会导致如下错误信息: n

  • 80B1: “The length of the specified target area is not equal to the length of the user data configured with STEP 7”

ANY 指针的长度必须指定为字节,例如 :“P#M280.0 BYTE 5”。建议使用绝对地址传递SFC14 / 15 的 ANY 类型参数。

4何使用 SFC 20 来传送“STRING”类型的数据区?
通过使用系统功能块 SFC20 (BLKMOV) 可以实现例如数据从数据块 DB1 到 DB2 的传送。当在 DB 块中写入一个字符串变量时 ,必须预先对这个变量进行设置。并且将此变量传递给 SFC20 时必须使用符号寻址。如何使用 SFC20 编程实现字符串变量的传递如图 01 所示。 n

在调用和参数化 SFB、SFC 和 IEC 标准功能时的一些技巧
图01

5什么 SFC 20 返回值“ RET_VAL”根据所使用的 CPU 的不同而不同?
当分配了一个长度为“0”的不许可的 ANY 类型的指针,对于 S7 300 和 S7 400 返回值有所不同,SFC20 不同的返回值是由于 CPU 对错误处理的方式不同。
6为什么尽管字符串变量在允许范围内但 IEC 功能 FC 38 返回值仍为“0”?
如果 IEC 功能 FC 38 的字符串变量所赋值的参数是在 DB 中定义的并没有初值,那么实际长度将为“0”个字节。变量并未在 DB 中初始化。这意味着变量带有“ 已定义”长度的信息,但没有任何实际长度信息。现在,如果在变量表中输入一个与实际字节长度不符的字符串,此字符串 CPU 将不识别。只有与实际长度相符的字符串才会被 CPU 识别。
n

在调用和参数化 SFB、SFC 和 IEC 标准功能时的一些技巧
图02n

注释:
请同样参考 STEP 7 在线帮助信息,主题为“Format of the Data Type STRING”。

7

用于通信任务的SFB在哪些OB中调用?
通过组态的连接,所有用于数据交换或程序管理的SFB (设置站点为停止或运行) 必须在启动OB(S7-300: OB100; S7-400: OB100和OB101 )、和周期循环执行块( OB1 )中调用。
OB100是启动块,在CPU重启时执行(暖启动)。例如,可以在OB100里由M1.0和M1.1标志位使能SFB14/15 第一次通信的触发。可以找到进一步的资料有关SFB14/ SFB15编程和参数化,参考示例程序条目 1819293 。n

必须在启动OB里连接SFB的参数“REQ”,“ID”和“PI_NAME”如下:n

  • “REQ”: 如果某些条件得到满足启用数据交换。连接“REQ”一个布尔状态为“0”的实际参数。n
  • “ID”: 参考已经组态完成的连接的本地连接的描述。 以 W#16#x 格式连接 “ID” 参数,其中x是连接的ID编号。n
  • “PI_NAME”: 保存正在启动的程序的名称(ASCII代码)的内存区域。参数“PI_NAME”(SFB19“START”,SFB20“STOP”或SFB21“RESUME”)必须被连接与一个“P_PROGRAM”开头的字符串。

更多SFB参数信息请参见STEP7在线帮助。

关键字
字符串 比较

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc331189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论