与Rockwell控制器的第一部分:优化电磁流量计的类型
来源: 发布日期:2019-08-16 09:25:18 作者:
电磁流量计的类型
电磁流量计类型(电磁流量计)允许将不同类型的数据组合到单个控制器标签中。电磁流量计对以下内容很有用:
组织控制器内的数据。
缩短多个类似设备的开发时间。
将要作为一个标签传输的数据组合在AOI(附加指令)之间。
将要传输的数据组合为一个标签,用于处理器到处理器的通信。
电磁流量计可能无法在线修改。更改它们需要下载,因此请提前计划!
电磁流量计会员订单
列出电磁流量计成员的顺序决定了它们在内存中的顺序。排序不良的成员会浪费内存 - 它会消耗内存和网络流量中不会传输任何有用信息的内容。
请遵循以下规则来优化电磁流量计内存使用情况:
CLx处理器是32位的,因此内存以32位块处理(这些屏幕截图中的红线表示32位字之间的转换)。
BOOL消耗1位,SINT(小整数)消耗8位或1字节,INT消耗16位或2字节。所有其他数据类型,包括原子类型DINT(32位双整数),REAL(32位浮点)和LINT(日期/时间戳的64位长整数),以及所有复杂类型,都消耗内存32位的倍数。
如果将BOOL添加到电磁流量计,请始终将至少八个BOOL添加到一起。
如果您有8个BOOL的奇数倍,请在它们之前添加奇数个SINT。
使用BOOL,SINT和INT舍入电磁流量计的部分,这些部分不消耗32位的倍数,其中更多的类型可以精确地达到32位。
INT必须从32位部分的开头或第16位开始。如果有两个SINT和一个INT,或一个INT后跟两个SINT,则消耗32位。但是如果你有一个SINT,那么一个INT,然后是一个消耗64位的SINT,其中32个浪费了。
通常,简单地将类型分组在一起可以最大限度地减少浪费,而无需进行任何计
在类型之间来回切换 - 特别是在32 +位和BOOL类型之间 - 将最大化浪费。
复制电磁流量计的一部分有很多原因。CLx不允许COPY以BOOL开头,但如果在复制第一个成员后有BOOL,则它们将复制。副本的长度以引用的目标类型的倍数确定。启示:
o如果电磁流量计的第一个成员是BOOL,则除非整个电磁流量计被复制,否则不能复制它。
o如果要复制的第一个成员是INT,则只能将偶数个字节复制到同一个电磁流量计的另一个实例(如果目标是SINT数组或者具有SINT的不同电磁流量计,则可以复制奇数目的地的第一个成员)。
o如果要复制的第一个成员不是SINT或INT,则只能以4个或更多字节的块的形式复制到同一电磁流量计的另一个实例。
o因此,我建议使用SINT启动所有电磁流量计,然后启动BOOL,然后启动INT,然后启动其他所有电磁流量计。如果电磁流量计用于通信目的,则第一个SINT应该是HB。
附加说明是不同的
以上指南适用于电磁流量计。AOI参数与电磁流量计成员有一些相似之处,但AOI参数排序并不重要 - 该信息会针对内存消耗自动优化,并且不一定以参数出现的相同顺序存储在内存中。
嵌套的电磁流量计成员
如果一个控制器有多个相同的设备和许多数据,那么为一件设备创建一个电磁流量计通常是有意义的,然后是一个包含每个设备的设备电磁流量计实例的大型主电磁流量计 - 以及备用实例如果有可能增加更多的可能性。
电磁流量计和AOI
您可以在电磁流量计中嵌套AOI实例。所有输入和输出参数都将可见。输入/输出参数不会在AOI中“存活”,因此它们不会成为电磁流量计的一部分。如果AOI具有本地标记,则它们将占用电磁流量计中的内存,但是不可见。
电磁流量计和其他复杂类型只能是AOI的输入/输出参数 - 而不是输入或输出。但是,如果您希望电磁流量计在AOI中“活动”,请将其添加为本地标记。外部逻辑不会看到它。如果外部访问从默认的“无”更改为“只读”或“读/写”,则HMI或外部控制器可以看到它。您可以通过创建别名为这些成员的参数,使电磁流量计的原子类型(BOOL,SINT,INT,DINT和REAL)成员对外部逻辑可见。
电磁流量计类型(电磁流量计)允许将不同类型的数据组合到单个控制器标签中。电磁流量计对以下内容很有用:
组织控制器内的数据。
缩短多个类似设备的开发时间。
将要作为一个标签传输的数据组合在AOI(附加指令)之间。
将要传输的数据组合为一个标签,用于处理器到处理器的通信。
电磁流量计可能无法在线修改。更改它们需要下载,因此请提前计划!
电磁流量计会员订单
列出电磁流量计成员的顺序决定了它们在内存中的顺序。排序不良的成员会浪费内存 - 它会消耗内存和网络流量中不会传输任何有用信息的内容。
请遵循以下规则来优化电磁流量计内存使用情况:
CLx处理器是32位的,因此内存以32位块处理(这些屏幕截图中的红线表示32位字之间的转换)。
BOOL消耗1位,SINT(小整数)消耗8位或1字节,INT消耗16位或2字节。所有其他数据类型,包括原子类型DINT(32位双整数),REAL(32位浮点)和LINT(日期/时间戳的64位长整数),以及所有复杂类型,都消耗内存32位的倍数。
如果将BOOL添加到电磁流量计,请始终将至少八个BOOL添加到一起。
如果您有8个BOOL的奇数倍,请在它们之前添加奇数个SINT。
使用BOOL,SINT和INT舍入电磁流量计的部分,这些部分不消耗32位的倍数,其中更多的类型可以精确地达到32位。
INT必须从32位部分的开头或第16位开始。如果有两个SINT和一个INT,或一个INT后跟两个SINT,则消耗32位。但是如果你有一个SINT,那么一个INT,然后是一个消耗64位的SINT,其中32个浪费了。
通常,简单地将类型分组在一起可以最大限度地减少浪费,而无需进行任何计
在类型之间来回切换 - 特别是在32 +位和BOOL类型之间 - 将最大化浪费。
复制电磁流量计的一部分有很多原因。CLx不允许COPY以BOOL开头,但如果在复制第一个成员后有BOOL,则它们将复制。副本的长度以引用的目标类型的倍数确定。启示:
o如果电磁流量计的第一个成员是BOOL,则除非整个电磁流量计被复制,否则不能复制它。
o如果要复制的第一个成员是INT,则只能将偶数个字节复制到同一个电磁流量计的另一个实例(如果目标是SINT数组或者具有SINT的不同电磁流量计,则可以复制奇数目的地的第一个成员)。
o如果要复制的第一个成员不是SINT或INT,则只能以4个或更多字节的块的形式复制到同一电磁流量计的另一个实例。
o因此,我建议使用SINT启动所有电磁流量计,然后启动BOOL,然后启动INT,然后启动其他所有电磁流量计。如果电磁流量计用于通信目的,则第一个SINT应该是HB。
附加说明是不同的
以上指南适用于电磁流量计。AOI参数与电磁流量计成员有一些相似之处,但AOI参数排序并不重要 - 该信息会针对内存消耗自动优化,并且不一定以参数出现的相同顺序存储在内存中。
嵌套的电磁流量计成员
如果一个控制器有多个相同的设备和许多数据,那么为一件设备创建一个电磁流量计通常是有意义的,然后是一个包含每个设备的设备电磁流量计实例的大型主电磁流量计 - 以及备用实例如果有可能增加更多的可能性。
电磁流量计和AOI
您可以在电磁流量计中嵌套AOI实例。所有输入和输出参数都将可见。输入/输出参数不会在AOI中“存活”,因此它们不会成为电磁流量计的一部分。如果AOI具有本地标记,则它们将占用电磁流量计中的内存,但是不可见。
电磁流量计和其他复杂类型只能是AOI的输入/输出参数 - 而不是输入或输出。但是,如果您希望电磁流量计在AOI中“活动”,请将其添加为本地标记。外部逻辑不会看到它。如果外部访问从默认的“无”更改为“只读”或“读/写”,则HMI或外部控制器可以看到它。您可以通过创建别名为这些成员的参数,使电磁流量计的原子类型(BOOL,SINT,INT,DINT和REAL)成员对外部逻辑可见。