5 Replies Latest reply on Jun 22, 2017 6:23 PM by MikeSpath

    Weird error about equation rules in Analysis

    MikeSpath

      Hello:

      We have quite a bit of logic associated with these attributes but up until now everything has been fine. For some reason there is an error that I cannot resolve. See the attached png file for the details. I did a search for it in PI square and the osi site in general but could not find anything.

       

      Mike

        • Re: Weird error about equation rules in Analysis
          David Pugal

          It appears that something has gone wrong with EF analysis rule configuration. Typically there could be only 2 analysis rules: PE for the expression configuration, and possibly time true, but that only for older versions. When you export the element, what analysis rules do you see in the XML for this particular analysis?

          • Re: Weird error about equation rules in Analysis
            Rick Davin

            It may help to know your AF Client version, and what version of Analysis Services are you using?

              • Re: Weird error about equation rules in Analysis
                MikeSpath

                using

                AFClient V2106 R2 2.86

                AFServices V2016 R2 V2.85

                Below is what I see in the XML for Analysis Rule. They seem to be repeated. Whereas the one for Ph is not.

                 

                   <AFAnalysisTemplate>
                      <Name>vessel3.DO</Name>
                      <Target>Vessel3</Target>
                      <AFAnalysisRule>
                        <AFPlugIn>EventFrame</AFPlugIn>
                        <ConfigString>EFTGUID=1aa469c5-bc9b-4034-92b8-f41b3797f733;EFTNAME=vessel3.DO</ConfigString>
                        <AFAnalysisRule>
                          <AFPlugIn>PerformanceEquation</AFPlugIn>
                          <ConfigString>@group("Variables")
                UpperLimit:= 'vessel3.DO|_SP' + 'vessel3.DO|_SP' * 'vessel3.DO|Maximum' * 0.01;@group("Variables")
                LowerLimit:= 'vessel3.DO|_SP' - 'vessel3.DO|_SP' * 'vessel3.DO|Minimum' * 0.01;@group("Variables")
                LimitCheck:= If UpperLimit &lt; 'vessel3.DO' or LowerLimit &gt; 'vessel3.DO' then True else False;@group("Variables")
                Check:= If 'vessel3.DO' &gt; 'vessel3.DO|HiHi' or 'vessel3.DO' &gt; 'vessel3.DO|Hi' or 'vessel3.DO' &lt; 'vessel3.DO|Lo' or 'vessel3.DO' &lt; 'vessel3.DO|LoLo' then True else False ;@group("Variables")
                LimitsOutOfSpec:= If 'vessel3.DO|CheckSP' = True then LimitCheck else False;@group("Variables")
                CheckOutOfSpec:= If 'vessel3.DO|CheckSP' = False then Check else False;@group("Variables")
                OutOfSpec:= If LimitsOutOfSpec = True or CheckOutOfSpec = True then True else False;@group("Variables")
                SendEmail1:= If OutOfSpec = True and 'vessel3.DO|CheckStatus' = True and 'BatchStatus' = 1 then True else False;@group("Variables")
                SendEmail2:= If OutOfSpec = True and 'vessel3.DO|CheckStatus' = False then True else False;@group("Start triggers") @timetrue("44") @severity("Information")
                SendNotification:= SendEmail1 = True or SendEmail2 = True;@group("End triggers")
                EndNotification:= SendEmail1 = False or SendEmail2 = False;</ConfigString>
                        </AFAnalysisRule>
                        <AFAnalysisRule>
                          <AFPlugIn>PerformanceEquation</AFPlugIn>
                          <ConfigString>@group("Variables")
                UpperLimit:= 'vessel3.DO|_SP' + 'vessel3.DO|_SP' * 'vessel3.DO|Maximum' * 0.01;@group("Variables")
                LowerLimit:= 'vessel3.DO|_SP' - 'vessel3.DO|_SP' * 'vessel3.DO|Minimum' * 0.01;@group("Variables")
                LimitCheck:= If UpperLimit &lt; 'vessel3.DO' or LowerLimit &gt; 'vessel3.DO' then True else False;@group("Variables")
                Check:= If 'vessel3.DO' &gt; 'vessel3.DO|HiHi' or 'vessel3.DO' &gt; 'vessel3.DO|Hi' or 'vessel3.DO' &lt; 'vessel3.DO|Lo' or 'vessel3.DO' &lt; 'vessel3.DO|LoLo' then True else False ;@group("Variables")
                LimitsOutOfSpec:= If 'vessel3.DO|CheckSP' = True then LimitCheck else False;@group("Variables")
                CheckOutOfSpec:= If 'vessel3.DO|CheckSP' = False then Check else False;@group("Variables")
                OutOfSpec:= If LimitsOutOfSpec = True or CheckOutOfSpec = True then True else False;@group("Variables")
                SendEmail1:= If OutOfSpec = True and 'vessel3.DO|CheckStatus' = True and 'BatchStatus' = 1 then True else False;@group("Variables")
                SendEmail2:= If OutOfSpec = True and 'vessel3.DO|CheckStatus' = False then True else False;@group("Start triggers") @timetrue("44") @severity("Information")
                SendNotification:= SendEmail1 = True or SendEmail2 = True;@group("End triggers")
                EndNotification:= SendEmail1 = False or SendEmail2 = False;</ConfigString>
                        </AFAnalysisRule>
                        <AFAnalysisRule>
                          <AFPlugIn>PerformanceEquation</AFPlugIn>
                          <ConfigString>@group("Variables")
                UpperLimit:= 'vessel3.DO|_SP' + 'vessel3.DO|_SP' * 'vessel3.DO|Maximum' * 0.01;@group("Variables")
                LowerLimit:= 'vessel3.DO|_SP' - 'vessel3.DO|_SP' * 'vessel3.DO|Minimum' * 0.01;@group("Variables")
                LimitCheck:= If UpperLimit &lt; 'vessel3.DO' or LowerLimit &gt; 'vessel3.DO' then True else False;@group("Variables")
                Check:= If 'vessel3.DO' &gt; 'vessel3.DO|HiHi' or 'vessel3.DO' &gt; 'vessel3.DO|Hi' or 'vessel3.DO' &lt; 'vessel3.DO|Lo' or 'vessel3.DO' &lt; 'vessel3.DO|LoLo' then True else False ;@group("Variables")
                LimitsOutOfSpec:= If 'vessel3.DO|CheckSP' = True then LimitCheck else False;@group("Variables")
                CheckOutOfSpec:= If 'vessel3.DO|CheckSP' = False then Check else False;@group("Variables")
                OutOfSpec:= If LimitsOutOfSpec = True or CheckOutOfSpec = True then True else False;@group("Variables")
                SendEmail1:= If OutOfSpec = True and 'vessel3.DO|CheckStatus' = True and 'BatchStatus' = 1 then True else False;@group("Variables")
                SendEmail2:= If OutOfSpec = True and 'vessel3.DO|CheckStatus' = False then True else False;@group("Start triggers") @timetrue("44") @severity("Information")
                SendNotification:= SendEmail1 = True or SendEmail2 = True;@group("End triggers")
                EndNotification:= SendEmail1 = False or SendEmail2 = False;</ConfigString>
                        </AFAnalysisRule>
                      </AFAnalysisRule>
                      <AFTimeRule>
                        <AFPlugIn>Natural</AFPlugIn>
                      </AFTimeRule>
                    </AFAnalysisTemplate>
                    <AFAnalysisTemplate>