n
说明
此条目包含在调用和参数化 SFB、SFC 和 IEC 标准功能时的一些技巧:n
- 常规 - 哪里可以获得关于 SFB、SFC 和 IEC 功能的信息?
- 如何设置 IEC 标准功能 FC11(FIND)的输入参数 “IN1”和“IN2”?
- 当设置 SFC14/15 ANY 类型的“RECORD”参数指向 ARRAY 或 STRUCT 数据区时应注意什么?
- 何使用 SFC 20 来传送“STRING”类型的数据区?
- 为什么 SFC 20 返回值“ RET_VAL”根据所使用的 CPU 的不同而不同?
- 为什么尽管字符串变量在允许范围内但 IEC 功能 FC 38 返回值仍为“0”?
- 用于通信任务的SFB在哪些OB中调用?
下表描述了相关内容的信息及处理方法:
序号 | 在调用和参数化 SFB、SFC 和 IEC 标准功能时的一些技巧和提示 |
1 | 常规 - 哪里可以获得关于 SFB、SFC 和 IEC 功能的信息? 关于 SFB, SFC 和 IEC 功能的信息: n
|
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
ANY 指针的长度必须指定为字节,例如 :“P#M280.0 BYTE 5”。建议使用绝对地址传递SFC14 / 15 的 ANY 类型参数。 |
4 | 何使用 SFC 20 来传送“STRING”类型的数据区? 通过使用系统功能块 SFC20 (BLKMOV) 可以实现例如数据从数据块 DB1 到 DB2 的传送。当在 DB 块中写入一个字符串变量时 ,必须预先对这个变量进行设置。并且将此变量传递给 SFC20 时必须使用符号寻址。如何使用 SFC20 编程实现字符串变量的传递如图 01 所示。 n
|
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
注释: |
7 | 用于通信任务的SFB在哪些OB中调用? 必须在启动OB里连接SFB的参数“REQ”,“ID”和“PI_NAME”如下:n
更多SFB参数信息请参见STEP7在线帮助。 |
关键字
字符串 比较
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc331189.html