如何使用 RSLogix 5000 获取 SCL 中 BOOL[] 的长度
How to get the length of BOOL[] in SCL with RSLogix 5000
目标
我正在 SCL
中对 Allen-Bradley / Rockwell CompactLogix PLC
进行编程。我想在运行时确定 Arrays
的大小。可以在编译前将 Array
长度作为 constants
输入到代码中。但是,如果可以自动确定数组的长度,将大大提高可重用性。
问题
有一个函数 SIZE(Source,Dimtovary,Size)
可以满足我的需求,尽管它只适用于 SINT[]
INT[]
DINT[]
REAL[]
structure
和 STRING
。不幸的是,我需要 BOOL[]
.
的长度
"The SIZE instruction finds the number of elements (size) in the designated dimension of the Source array or string operand and places the result in the Size operand. The instruction finds the size of one dimension of an array."
伪代码
Int_array := INT[16];
Bool_array := BOOL[64];
SIZE(Int_array[0],0,Int_array_len);
// Works, Int_array_len contains 16
SIZE(Bool_array[0],0,Bool_array_len);
// Isn't compilable becaus size(); isn't defined for boolean arrays
环境
- IDE: Rockwell Studio 5000 / RSLogix 5000
- PLC:1769-L36ERMS
- 语言: SCL(结构化文本)
- 参考: Programming reference manual
问题
有没有办法确定布尔数组的长度,例如 BOOL[64]
?
此外,是否存在 SIZE(Source,Dimtovary,Size);
不适用于布尔数组的根本原因?
答案是否定的;无法获得 BOOL[]
数组的大小。
正如@DanMašek 正确建议的那样,BOOL[]
数组非常有限。甚至建议使用 UDTs
代替 BOOL
类型的成员。
不幸的是,我仍然没有办法以某种方式排列多个 BITs
的长度并在 for loop
中循环遍历它们。
目标
我正在 SCL
中对 Allen-Bradley / Rockwell CompactLogix PLC
进行编程。我想在运行时确定 Arrays
的大小。可以在编译前将 Array
长度作为 constants
输入到代码中。但是,如果可以自动确定数组的长度,将大大提高可重用性。
问题
有一个函数 SIZE(Source,Dimtovary,Size)
可以满足我的需求,尽管它只适用于 SINT[]
INT[]
DINT[]
REAL[]
structure
和 STRING
。不幸的是,我需要 BOOL[]
.
"The SIZE instruction finds the number of elements (size) in the designated dimension of the Source array or string operand and places the result in the Size operand. The instruction finds the size of one dimension of an array."
伪代码
Int_array := INT[16];
Bool_array := BOOL[64];
SIZE(Int_array[0],0,Int_array_len);
// Works, Int_array_len contains 16
SIZE(Bool_array[0],0,Bool_array_len);
// Isn't compilable becaus size(); isn't defined for boolean arrays
环境
- IDE: Rockwell Studio 5000 / RSLogix 5000
- PLC:1769-L36ERMS
- 语言: SCL(结构化文本)
- 参考: Programming reference manual
问题
有没有办法确定布尔数组的长度,例如 BOOL[64]
?
此外,是否存在 SIZE(Source,Dimtovary,Size);
不适用于布尔数组的根本原因?
答案是否定的;无法获得 BOOL[]
数组的大小。
正如@DanMašek 正确建议的那样,BOOL[]
数组非常有限。甚至建议使用 UDTs
代替 BOOL
类型的成员。
不幸的是,我仍然没有办法以某种方式排列多个 BITs
的长度并在 for loop
中循环遍历它们。