举个例子,考虑当我们需要设定经济函数(EF)跟踪滤波器的可接受值限制的情况。SMOCPro内核内置属性验证仅接受一个非负值的输入(若输入是负值,EF跟踪滤波器的质量将被设定为BAD)。在很多情况下,所提供的验证可能是不够的。例如,考虑一个例子我们想要将EF跟踪滤波器的可接受值限制在500~1000分钟。
第一个计算将跟踪滤波器传入的质量信息存储在外部输出位号EXT0。第二个计算查明EF跟踪滤波器值是否大于500分钟。如果小于,其向外部输出位号COND1分配一个0(BAD质量)。第三个计算验证了EF跟踪滤波器的值是不大于1000分钟的,如果EF跟踪滤波器的当前值超过1000,其将向外部输出位号COND2分配一个0(BAD质量)。第三个计算对前两个计算的结果执行了AND计算,即如果EF跟踪滤波器违反了任意两个限制,EF跟踪滤波器质量将被分配为BAD质量。如果EF跟踪滤波器的值在500~1000分钟时,EF跟踪滤波器的质量标签将保持不变。
作为测试,假设EF跟踪滤波器的值是20。第二个计算给EF跟踪滤波器的质量设定为BAD(参见下面的第四个计算结果)。
假设EF跟踪滤波器的值是600,如下图所示,质量将保持不变。
注意:SMOCPro内核中的时间单位是秒。因此,计算中输入的所有时间都必须是秒。例如,在上述情况下,我们需要检查指定的跟踪滤波器是在500~1000分钟之间。鉴于内核并不能理解分钟,正如例子中所示的,将分钟转换成秒是非常重要的。
再举一个例子,假设你有一个计算是向一个POV写入脉冲因子属性。增加额外的计算以确认脉冲因子的计算值在值的可接受范围内是非常重要的。如果计算出的值是不可接受的,这些附加计算也应该指明动作过程。对这个脉冲因子的例子,我们考虑这里的以下选项:
•如果计算出的脉冲因子大于1或小于0,将其截取在与其最近的限制处;
•如果计算出的脉冲因子在[0,1]之外,则向其写入一个已知的缺省值;
•如果计算出的脉冲因子在[0,1]之外,将对应脉冲因子的质量设定为BAD(内置内核属性的验证行为)。
注意:若要了解关于内置SMOCPro内核属性验证的详细信息,请参阅内核允许值检查和质量管理的相关部分。
原文:
As an example, consider the case where we want to set limits on acceptable values for the economic function (EF) tracking filter. The built-in attribute validation in the SMOCPro kernel accepts a nonnegative entry only (if the entry in negative, the quality for EF tracking filter is set to BAD). In many cases, the provided validation may not be sufficient. For instance, consider an example in which we want to restrict the acceptable value for the EFtracking filter between 500 and 1000 minutes.
The first calculation stores the incoming quality for the tracking filter in the external output tag EXT0. The second calculation ascertains if the value for EFTracking Filter is greater than 500 minutes. If not, it assigns a 0 (BAD quality) to the external output tag COND1. The third calculation verifies if the value for EF tracking filter is not greater than 1000 minutes and assigns a 0 (quality of BAD) to the external output tag COND2 if the current value for EFTracking Filter exceeds 1000. The third calculation performs an AND operation on the results of the first two calculations, i.e., if the EF tracking filter violates either of the two limits, a quality of BAD is assigned to the EF tracking filter quality. If the value for EF Tracking filter is between 500 and 1000 minutes, the quality flag for EF Tracking filter is left unchanged.
As a test, suppose the value for the EF tracking filter was 20. The second calculation sets a quality of BAD for EF tracking filter (see the result for the fourth calculation below)
Suppose the value for EF tracking filter was 600, the quality left unchanged as shown below
NOTE: The unit for time in the SMOCPro kernel is seconds. Therefore, all time entries in calculations must be in seconds. For example, in the case above, we needed to check if the specified tracking filter was between 500 and 1000 minutes. Because the kernel does not understand minutes, it is important to convert minutes into seconds as was done in the example.
As another example, suppose you have a calculation that writes to an impulse factor attribute for a POV. It is important that additional calculations be added to ensure the calculated value for the impulse factor lies in the acceptable range of values. These additional calculations should also specify a course of action if the calculated values are not acceptable. For the impulse factor example we consider here, some options are
• If the calculated impulse factor is greater than 1 or is less than 0, truncate at the closest limit
• If the calculated impulse factor is outside [0, 1], set it to a known default value.
• If the calculated impulse factor is outside [0, 1], set the corresponding impulse factor quality to BAD (Built-in kernel attribute validation behavior)
NOTE: For details on built-in SMOCPro kernel attribute validations, please see the section on Kernel Allowable-Value Checks and Quality Management.
2016.5.1