In most input cards
Beckhoff 有两个变量,Limit 1
and limit 2
。他们有个BIT2
datatype,大小为0.2字节,即有两位,如下图所示Limit 1
:
Bit0: Value smaller/equal Limit 1
Bit1: Value bigger/equal Limit 1
所以有一些问题:
我应该定义哪种数据类型来将此变量链接到它,以及如何访问它的两个位。
任何帮助,将不胜感激。
您可以使用BIT
TwinCAT 中的数据类型,但这是仅在结构体或功能块中可用 https://infosys.beckhoff.com/content/1033/tc3_plc_intro/2529442699.html?id=5627824830837717856.
例如,您可以按如下方式定义 STRUCT(另请参阅InfoSys https://infosys.beckhoff.com/content/1033/tc3_plc_intro/2529481355.html?id=5034243832068230001):
TYPE Limits:
STRUCT
SmallerThanOrEqualTo : BIT;
LargerThanOrEqualTo : BIT;
END_STRUCT
END_TYPE
应该可以将此结构的实例链接到变量。
请注意,使用 BIT 访问可以是比使用位掩码慢一点 https://infosys.beckhoff.com/content/1033/tc3_plc_intro/2529442699.html?id=5627824830837717856:
然而,位访问需要更长的时间。因此,如果要以指定格式定义数据,则应该仅使用数据类型 BIT。
托尼·库西奇 https://github.com/tkucic/codesys_code_execution_speedTests进行了速度比较,发现位访问 (13.5 ns) 比位掩码 (2.8 ns) 慢 5 倍左右。完整结果:
BIT
数据类型确实有一个优点:内存效率更高 https://infosys.beckhoff.com/content/1033/tc3_plc_intro/2529442699.html?id=5627824830837717856:
BIT 元素需要 1 位内存空间,您可以使用它的名称来寻址结构或功能块的各个位。按顺序声明的 BIT 元素被合并为字节。与 BOOL 类型相比,这允许您优化内存使用,每个 BOOL 类型至少占用 8 位。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)