首页 > 解决方案 > 带参数的用户定义函数

问题描述

在 codesys 中,一些函数支持在其他语言中通常称为“params”的函数,即可以采用不同数量的类似类型变量的函数。例如ADD运算符(梯形图功能)。

我的问题是,是否有任何方法可以在用户定义的函数中做同样的事情?

到目前为止,我唯一的想法是ARRAY [*] OF SOMETHING使用LOWER_BOUNDUPPER_BOUND进行计算。这确实有效,但需要用户在每次想要调用我的函数时创建一个额外的数组变量。例如,我们有CONCAT连接 2 个字符串的函数。假设我想要一个CONCAT_ALL接受n 个字符串并将它们全部连接起来的函数:

    STRS: ARRAY [0..9] OF STRING := [STR1, STR2, STR3, STR4, STR5, STR6, STR7, STR8, STR9, STR10];
    // This works, but I want to avoid creating an array variable!
    CONALL1: STRING := CONCAT_ALL(STRINGS := STRS);
    // This doesn't work!
    CONALL2: STRING := CONCAT_ALL(STRINGS := [STR1, STR2, STR3, STR4, STR5, STR6, STR7, STR8, STR9, STR10]);

(编辑:有人问我,我使用的是 Schneider Electric Machine Expert 1.2 或 CODESYS 编译器 3.5.12.80)

标签: codesys

解决方案


未来有希望!

在 Codesys V3.5 SP16 中,似乎终于可以使用带有可选参数的函数和方法。当然,这将出现在非 codesys 产品中,例如 TwinCAT 和 Schneider,在以后的版本中。

这意味着您最终可以创建一个包含 100 个参数的 CONCAT,并使用例如 3 来调用它!惊人的。

https://www.codesys.com/fileadmin/data/Images/Download/features-and-improvements-V35SP16-en.pdf

文档截图


推荐阅读