Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reference 参考库中的常数,twincat 3_Reference_Twincat - Fatal编程技术网

Reference 参考库中的常数,twincat 3

Reference 参考库中的常数,twincat 3,reference,twincat,Reference,Twincat,我正在尝试实现一个Twincat3库,它使用主项目中定义的全局常量进行操作,比如创建那些常量大小的数组并循环使用它们。然而,我一直不成功,我想知道这是否可以做到。当我试图构建主项目时,我刚刚收到这样一个错误“error 4 Border'cPassedConstant'的数组不是常量值”。错误来自库中定义的数组 我曾尝试将一个具有相同名称的常量的GVL设置为库,然后将“external implementation”属性设置为true,但这没有帮助 我在这里的目标是制作一个带有过滤等功能的IO管

我正在尝试实现一个Twincat3库,它使用主项目中定义的全局常量进行操作,比如创建那些常量大小的数组并循环使用它们。然而,我一直不成功,我想知道这是否可以做到。当我试图构建主项目时,我刚刚收到这样一个错误“error 4 Border'cPassedConstant'的数组不是常量值”。错误来自库中定义的数组

我曾尝试将一个具有相同名称的常量的GVL设置为库,然后将“external implementation”属性设置为true,但这没有帮助


我在这里的目标是制作一个带有过滤等功能的IO管理库。然后我可以将它添加到主项目中,并定义一些常量,如“cdigitaliputscont”、“cAnalogInputCount”等。

也许您可以使用新的数组[*]功能,尽管它仍然非常有限。除了在库中定义常量之外,没有其他方法

库的概念与其他环境中的相同。库为您提供可重用的组件。您的主要项目取决于库,而不是相反。因此,您的库对使用它的项目一无所知


TwinCat3中令人困惑的一点是,您可以成功地构建项目,但内部存在编程错误。TwinCat3编译器允许在项目内部执行中断代码,只要不调用它。因此,在提供库时,应始终使用“检查所有对象”。

我建议使用可变长度数组[*],如下链接所述(以及Beckhoff/Infosys的数据类型/数组部分)

关键是您应该在主程序中声明FB_AnalogIO的数组[1..cAINs](它从模拟库中知道FB_AnalogIO,并且可以用恒定的大小声明它)

然后,PRG_IO应更改为函数或函数块,以便它在不知道确切大小的情况下接受数组[*]作为VAR_IN_OUT


您应该检查Beckhoff的功能名为。通过向库项目添加参数列表,可以在使用库的项目中重新定义库常量。定义发生在库管理器中

来自Beckhoff网站的图片:


我认为应该这样做。当然,另一个选项是使用
ARRAY[*]
选项,这也很棒(对于PLC编程世界而言)。参数列表的问题在于它是一个项目范围的重新定义。使用
数组[*]
可以动态更改大小。

我真的不明白这个问题。即使库中有常量,也可以使用常量的数组。你能不能提供一些代码,明确区分库中的内容和其他项目中的内容?我特别希望常量在主项目中定义,并由库使用。假设我想创建一个具有10个模拟IO的系统。。。。然后,我会将我的IO库包含到主项目中,定义一个全局常量cAINs:UINT:=10;然后大体上,我会打电话给图书馆里的PRG_IO POU。在PRG_IO中,将有一个FB_模拟的数组[1..cAINs],该数组将在for循环中执行。库中还有一个函数F_GetAnalogIn,用于获取FB的过滤/缩放AI值。重点是,我可以通过包含库、定义几个常量和调用PRG_IO,轻松创建一个具有可变数量的IOs的IO系统。你现在明白了吗?谢谢!我不知道有这样的特点。我会调查的。