lib/C/iec_std_FB_no_ENENO.h
changeset 1011 76175defb87b
equal deleted inserted replaced
1010:242907849850 1011:76175defb87b
       
     1 
       
     2 
       
     3 /****
       
     4  * IEC 61131-3 standard function block library
       
     5  */
       
     6 
       
     7 /* NOTE: The code in this file was generated by iec2c (i.e. matiec C compiler), using as source
       
     8  *        the *.txt files in the 'lib' directory.
       
     9  *       The only 'manual' change was:
       
    10  *          - to merge the generated .h and .c files into this single file
       
    11  *          - to remove the forward declarations of the functions
       
    12  *          - to change the function prototypes to become 'static'.
       
    13  *             e.g.:   static void R_TRIG_init__(...)
       
    14  *                     ^^^^^^
       
    15  * 
       
    16  * NOTE: If the structure of the C code generated by iec2c (matiec) should change, then this C 'library'
       
    17  *       file will need to be recompiled. 
       
    18  *       The correct way of going about this would be to have this file be automatically generated during
       
    19  *       the build process (i.e. after compiling matiec), but we will leave this for later if it ever
       
    20  *       becomes necessary.
       
    21  * 
       
    22  * WARNING: There are 2 versions of this file:
       
    23  *            - file: iec_std_FB.h
       
    24  *              Version to be used when the EN and ENO parameters are implicitly generated
       
    25  *              for all functions and function blocks
       
    26  *            - file: iec_std_FB_no_ENENO.h
       
    27  *              Version to be used when the EN and ENO parameters are NOT implicitly generated
       
    28  *              for all functions and function blocks
       
    29  */
       
    30 
       
    31 #ifndef _IEC_STD_FB_H
       
    32 #define _IEC_STD_FB_H
       
    33 
       
    34 
       
    35 #include "accessor.h"
       
    36 
       
    37 
       
    38 // FUNCTION_BLOCK R_TRIG
       
    39 // Data part
       
    40 typedef struct {
       
    41   // FB Interface - IN, OUT, IN_OUT variables
       
    42   __DECLARE_VAR(BOOL,CLK)
       
    43   __DECLARE_VAR(BOOL,Q)
       
    44 
       
    45   // FB private variables - TEMP, private and located variables
       
    46   __DECLARE_VAR(BOOL,M)
       
    47 
       
    48 } R_TRIG;
       
    49 
       
    50 // FUNCTION_BLOCK F_TRIG
       
    51 // Data part
       
    52 typedef struct {
       
    53   // FB Interface - IN, OUT, IN_OUT variables
       
    54   __DECLARE_VAR(BOOL,CLK)
       
    55   __DECLARE_VAR(BOOL,Q)
       
    56 
       
    57   // FB private variables - TEMP, private and located variables
       
    58   __DECLARE_VAR(BOOL,M)
       
    59 
       
    60 } F_TRIG;
       
    61 
       
    62 // FUNCTION_BLOCK SR
       
    63 // Data part
       
    64 typedef struct {
       
    65   // FB Interface - IN, OUT, IN_OUT variables
       
    66   __DECLARE_VAR(BOOL,S1)
       
    67   __DECLARE_VAR(BOOL,R)
       
    68   __DECLARE_VAR(BOOL,Q1)
       
    69 
       
    70   // FB private variables - TEMP, private and located variables
       
    71 
       
    72 } SR;
       
    73 
       
    74 // FUNCTION_BLOCK RS
       
    75 // Data part
       
    76 typedef struct {
       
    77   // FB Interface - IN, OUT, IN_OUT variables
       
    78   __DECLARE_VAR(BOOL,S)
       
    79   __DECLARE_VAR(BOOL,R1)
       
    80   __DECLARE_VAR(BOOL,Q1)
       
    81 
       
    82   // FB private variables - TEMP, private and located variables
       
    83 
       
    84 } RS;
       
    85 
       
    86 // FUNCTION_BLOCK CTU
       
    87 // Data part
       
    88 typedef struct {
       
    89   // FB Interface - IN, OUT, IN_OUT variables
       
    90   __DECLARE_VAR(BOOL,CU)
       
    91   __DECLARE_VAR(BOOL,R)
       
    92   __DECLARE_VAR(INT,PV)
       
    93   __DECLARE_VAR(BOOL,Q)
       
    94   __DECLARE_VAR(INT,CV)
       
    95 
       
    96   // FB private variables - TEMP, private and located variables
       
    97   R_TRIG CU_T;
       
    98 
       
    99 } CTU;
       
   100 
       
   101 // FUNCTION_BLOCK CTU_DINT
       
   102 // Data part
       
   103 typedef struct {
       
   104   // FB Interface - IN, OUT, IN_OUT variables
       
   105   __DECLARE_VAR(BOOL,CU)
       
   106   __DECLARE_VAR(BOOL,R)
       
   107   __DECLARE_VAR(DINT,PV)
       
   108   __DECLARE_VAR(BOOL,Q)
       
   109   __DECLARE_VAR(DINT,CV)
       
   110 
       
   111   // FB private variables - TEMP, private and located variables
       
   112   R_TRIG CU_T;
       
   113 
       
   114 } CTU_DINT;
       
   115 
       
   116 // FUNCTION_BLOCK CTU_LINT
       
   117 // Data part
       
   118 typedef struct {
       
   119   // FB Interface - IN, OUT, IN_OUT variables
       
   120   __DECLARE_VAR(BOOL,CU)
       
   121   __DECLARE_VAR(BOOL,R)
       
   122   __DECLARE_VAR(LINT,PV)
       
   123   __DECLARE_VAR(BOOL,Q)
       
   124   __DECLARE_VAR(LINT,CV)
       
   125 
       
   126   // FB private variables - TEMP, private and located variables
       
   127   R_TRIG CU_T;
       
   128 
       
   129 } CTU_LINT;
       
   130 
       
   131 // FUNCTION_BLOCK CTU_UDINT
       
   132 // Data part
       
   133 typedef struct {
       
   134   // FB Interface - IN, OUT, IN_OUT variables
       
   135   __DECLARE_VAR(BOOL,CU)
       
   136   __DECLARE_VAR(BOOL,R)
       
   137   __DECLARE_VAR(UDINT,PV)
       
   138   __DECLARE_VAR(BOOL,Q)
       
   139   __DECLARE_VAR(UDINT,CV)
       
   140 
       
   141   // FB private variables - TEMP, private and located variables
       
   142   R_TRIG CU_T;
       
   143 
       
   144 } CTU_UDINT;
       
   145 
       
   146 // FUNCTION_BLOCK CTU_ULINT
       
   147 // Data part
       
   148 typedef struct {
       
   149   // FB Interface - IN, OUT, IN_OUT variables
       
   150   __DECLARE_VAR(BOOL,CU)
       
   151   __DECLARE_VAR(BOOL,R)
       
   152   __DECLARE_VAR(ULINT,PV)
       
   153   __DECLARE_VAR(BOOL,Q)
       
   154   __DECLARE_VAR(ULINT,CV)
       
   155 
       
   156   // FB private variables - TEMP, private and located variables
       
   157   R_TRIG CU_T;
       
   158 
       
   159 } CTU_ULINT;
       
   160 
       
   161 // FUNCTION_BLOCK CTD
       
   162 // Data part
       
   163 typedef struct {
       
   164   // FB Interface - IN, OUT, IN_OUT variables
       
   165   __DECLARE_VAR(BOOL,CD)
       
   166   __DECLARE_VAR(BOOL,LD)
       
   167   __DECLARE_VAR(INT,PV)
       
   168   __DECLARE_VAR(BOOL,Q)
       
   169   __DECLARE_VAR(INT,CV)
       
   170 
       
   171   // FB private variables - TEMP, private and located variables
       
   172   R_TRIG CD_T;
       
   173 
       
   174 } CTD;
       
   175 
       
   176 // FUNCTION_BLOCK CTD_DINT
       
   177 // Data part
       
   178 typedef struct {
       
   179   // FB Interface - IN, OUT, IN_OUT variables
       
   180   __DECLARE_VAR(BOOL,CD)
       
   181   __DECLARE_VAR(BOOL,LD)
       
   182   __DECLARE_VAR(DINT,PV)
       
   183   __DECLARE_VAR(BOOL,Q)
       
   184   __DECLARE_VAR(DINT,CV)
       
   185 
       
   186   // FB private variables - TEMP, private and located variables
       
   187   R_TRIG CD_T;
       
   188 
       
   189 } CTD_DINT;
       
   190 
       
   191 // FUNCTION_BLOCK CTD_LINT
       
   192 // Data part
       
   193 typedef struct {
       
   194   // FB Interface - IN, OUT, IN_OUT variables
       
   195   __DECLARE_VAR(BOOL,CD)
       
   196   __DECLARE_VAR(BOOL,LD)
       
   197   __DECLARE_VAR(LINT,PV)
       
   198   __DECLARE_VAR(BOOL,Q)
       
   199   __DECLARE_VAR(LINT,CV)
       
   200 
       
   201   // FB private variables - TEMP, private and located variables
       
   202   R_TRIG CD_T;
       
   203 
       
   204 } CTD_LINT;
       
   205 
       
   206 // FUNCTION_BLOCK CTD_UDINT
       
   207 // Data part
       
   208 typedef struct {
       
   209   // FB Interface - IN, OUT, IN_OUT variables
       
   210   __DECLARE_VAR(BOOL,CD)
       
   211   __DECLARE_VAR(BOOL,LD)
       
   212   __DECLARE_VAR(UDINT,PV)
       
   213   __DECLARE_VAR(BOOL,Q)
       
   214   __DECLARE_VAR(UDINT,CV)
       
   215 
       
   216   // FB private variables - TEMP, private and located variables
       
   217   R_TRIG CD_T;
       
   218 
       
   219 } CTD_UDINT;
       
   220 
       
   221 // FUNCTION_BLOCK CTD_ULINT
       
   222 // Data part
       
   223 typedef struct {
       
   224   // FB Interface - IN, OUT, IN_OUT variables
       
   225   __DECLARE_VAR(BOOL,CD)
       
   226   __DECLARE_VAR(BOOL,LD)
       
   227   __DECLARE_VAR(ULINT,PV)
       
   228   __DECLARE_VAR(BOOL,Q)
       
   229   __DECLARE_VAR(ULINT,CV)
       
   230 
       
   231   // FB private variables - TEMP, private and located variables
       
   232   R_TRIG CD_T;
       
   233 
       
   234 } CTD_ULINT;
       
   235 
       
   236 // FUNCTION_BLOCK CTUD
       
   237 // Data part
       
   238 typedef struct {
       
   239   // FB Interface - IN, OUT, IN_OUT variables
       
   240   __DECLARE_VAR(BOOL,CU)
       
   241   __DECLARE_VAR(BOOL,CD)
       
   242   __DECLARE_VAR(BOOL,R)
       
   243   __DECLARE_VAR(BOOL,LD)
       
   244   __DECLARE_VAR(INT,PV)
       
   245   __DECLARE_VAR(BOOL,QU)
       
   246   __DECLARE_VAR(BOOL,QD)
       
   247   __DECLARE_VAR(INT,CV)
       
   248 
       
   249   // FB private variables - TEMP, private and located variables
       
   250   R_TRIG CD_T;
       
   251   R_TRIG CU_T;
       
   252 
       
   253 } CTUD;
       
   254 
       
   255 // FUNCTION_BLOCK CTUD_DINT
       
   256 // Data part
       
   257 typedef struct {
       
   258   // FB Interface - IN, OUT, IN_OUT variables
       
   259   __DECLARE_VAR(BOOL,CU)
       
   260   __DECLARE_VAR(BOOL,CD)
       
   261   __DECLARE_VAR(BOOL,R)
       
   262   __DECLARE_VAR(BOOL,LD)
       
   263   __DECLARE_VAR(DINT,PV)
       
   264   __DECLARE_VAR(BOOL,QU)
       
   265   __DECLARE_VAR(BOOL,QD)
       
   266   __DECLARE_VAR(DINT,CV)
       
   267 
       
   268   // FB private variables - TEMP, private and located variables
       
   269   R_TRIG CD_T;
       
   270   R_TRIG CU_T;
       
   271 
       
   272 } CTUD_DINT;
       
   273 
       
   274 // FUNCTION_BLOCK CTUD_LINT
       
   275 // Data part
       
   276 typedef struct {
       
   277   // FB Interface - IN, OUT, IN_OUT variables
       
   278   __DECLARE_VAR(BOOL,CU)
       
   279   __DECLARE_VAR(BOOL,CD)
       
   280   __DECLARE_VAR(BOOL,R)
       
   281   __DECLARE_VAR(BOOL,LD)
       
   282   __DECLARE_VAR(LINT,PV)
       
   283   __DECLARE_VAR(BOOL,QU)
       
   284   __DECLARE_VAR(BOOL,QD)
       
   285   __DECLARE_VAR(LINT,CV)
       
   286 
       
   287   // FB private variables - TEMP, private and located variables
       
   288   R_TRIG CD_T;
       
   289   R_TRIG CU_T;
       
   290 
       
   291 } CTUD_LINT;
       
   292 
       
   293 // FUNCTION_BLOCK CTUD_UDINT
       
   294 // Data part
       
   295 typedef struct {
       
   296   // FB Interface - IN, OUT, IN_OUT variables
       
   297   __DECLARE_VAR(BOOL,CU)
       
   298   __DECLARE_VAR(BOOL,CD)
       
   299   __DECLARE_VAR(BOOL,R)
       
   300   __DECLARE_VAR(BOOL,LD)
       
   301   __DECLARE_VAR(UDINT,PV)
       
   302   __DECLARE_VAR(BOOL,QU)
       
   303   __DECLARE_VAR(BOOL,QD)
       
   304   __DECLARE_VAR(UDINT,CV)
       
   305 
       
   306   // FB private variables - TEMP, private and located variables
       
   307   R_TRIG CD_T;
       
   308   R_TRIG CU_T;
       
   309 
       
   310 } CTUD_UDINT;
       
   311 
       
   312 // FUNCTION_BLOCK CTUD_ULINT
       
   313 // Data part
       
   314 typedef struct {
       
   315   // FB Interface - IN, OUT, IN_OUT variables
       
   316   __DECLARE_VAR(BOOL,CU)
       
   317   __DECLARE_VAR(BOOL,CD)
       
   318   __DECLARE_VAR(BOOL,R)
       
   319   __DECLARE_VAR(BOOL,LD)
       
   320   __DECLARE_VAR(ULINT,PV)
       
   321   __DECLARE_VAR(BOOL,QU)
       
   322   __DECLARE_VAR(BOOL,QD)
       
   323   __DECLARE_VAR(ULINT,CV)
       
   324 
       
   325   // FB private variables - TEMP, private and located variables
       
   326   R_TRIG CD_T;
       
   327   R_TRIG CU_T;
       
   328 
       
   329 } CTUD_ULINT;
       
   330 
       
   331 // FUNCTION_BLOCK TP
       
   332 // Data part
       
   333 typedef struct {
       
   334   // FB Interface - IN, OUT, IN_OUT variables
       
   335   __DECLARE_VAR(BOOL,IN)
       
   336   __DECLARE_VAR(TIME,PT)
       
   337   __DECLARE_VAR(BOOL,Q)
       
   338   __DECLARE_VAR(TIME,ET)
       
   339 
       
   340   // FB private variables - TEMP, private and located variables
       
   341   __DECLARE_VAR(SINT,STATE)
       
   342   __DECLARE_VAR(BOOL,PREV_IN)
       
   343   __DECLARE_VAR(TIME,CURRENT_TIME)
       
   344   __DECLARE_VAR(TIME,START_TIME)
       
   345 
       
   346 } TP;
       
   347 
       
   348 // FUNCTION_BLOCK TON
       
   349 // Data part
       
   350 typedef struct {
       
   351   // FB Interface - IN, OUT, IN_OUT variables
       
   352   __DECLARE_VAR(BOOL,IN)
       
   353   __DECLARE_VAR(TIME,PT)
       
   354   __DECLARE_VAR(BOOL,Q)
       
   355   __DECLARE_VAR(TIME,ET)
       
   356 
       
   357   // FB private variables - TEMP, private and located variables
       
   358   __DECLARE_VAR(SINT,STATE)
       
   359   __DECLARE_VAR(BOOL,PREV_IN)
       
   360   __DECLARE_VAR(TIME,CURRENT_TIME)
       
   361   __DECLARE_VAR(TIME,START_TIME)
       
   362 
       
   363 } TON;
       
   364 
       
   365 // FUNCTION_BLOCK TOF
       
   366 // Data part
       
   367 typedef struct {
       
   368   // FB Interface - IN, OUT, IN_OUT variables
       
   369   __DECLARE_VAR(BOOL,IN)
       
   370   __DECLARE_VAR(TIME,PT)
       
   371   __DECLARE_VAR(BOOL,Q)
       
   372   __DECLARE_VAR(TIME,ET)
       
   373 
       
   374   // FB private variables - TEMP, private and located variables
       
   375   __DECLARE_VAR(SINT,STATE)
       
   376   __DECLARE_VAR(BOOL,PREV_IN)
       
   377   __DECLARE_VAR(TIME,CURRENT_TIME)
       
   378   __DECLARE_VAR(TIME,START_TIME)
       
   379 
       
   380 } TOF;
       
   381 
       
   382 // FUNCTION_BLOCK DERIVATIVE
       
   383 // Data part
       
   384 typedef struct {
       
   385   // FB Interface - IN, OUT, IN_OUT variables
       
   386   __DECLARE_VAR(BOOL,RUN)
       
   387   __DECLARE_VAR(REAL,XIN)
       
   388   __DECLARE_VAR(TIME,CYCLE)
       
   389   __DECLARE_VAR(REAL,XOUT)
       
   390 
       
   391   // FB private variables - TEMP, private and located variables
       
   392   __DECLARE_VAR(REAL,X1)
       
   393   __DECLARE_VAR(REAL,X2)
       
   394   __DECLARE_VAR(REAL,X3)
       
   395 
       
   396 } DERIVATIVE;
       
   397 
       
   398 // FUNCTION_BLOCK HYSTERESIS
       
   399 // Data part
       
   400 typedef struct {
       
   401   // FB Interface - IN, OUT, IN_OUT variables
       
   402   __DECLARE_VAR(REAL,XIN1)
       
   403   __DECLARE_VAR(REAL,XIN2)
       
   404   __DECLARE_VAR(REAL,EPS)
       
   405   __DECLARE_VAR(BOOL,Q)
       
   406 
       
   407   // FB private variables - TEMP, private and located variables
       
   408 
       
   409 } HYSTERESIS;
       
   410 
       
   411 // FUNCTION_BLOCK INTEGRAL
       
   412 // Data part
       
   413 typedef struct {
       
   414   // FB Interface - IN, OUT, IN_OUT variables
       
   415   __DECLARE_VAR(BOOL,RUN)
       
   416   __DECLARE_VAR(BOOL,R1)
       
   417   __DECLARE_VAR(REAL,XIN)
       
   418   __DECLARE_VAR(REAL,X0)
       
   419   __DECLARE_VAR(TIME,CYCLE)
       
   420   __DECLARE_VAR(BOOL,Q)
       
   421   __DECLARE_VAR(REAL,XOUT)
       
   422 
       
   423   // FB private variables - TEMP, private and located variables
       
   424 
       
   425 } INTEGRAL;
       
   426 
       
   427 // FUNCTION_BLOCK PID
       
   428 // Data part
       
   429 typedef struct {
       
   430   // FB Interface - IN, OUT, IN_OUT variables
       
   431   __DECLARE_VAR(BOOL,AUTO)
       
   432   __DECLARE_VAR(REAL,PV)
       
   433   __DECLARE_VAR(REAL,SP)
       
   434   __DECLARE_VAR(REAL,X0)
       
   435   __DECLARE_VAR(REAL,KP)
       
   436   __DECLARE_VAR(REAL,TR)
       
   437   __DECLARE_VAR(REAL,TD)
       
   438   __DECLARE_VAR(TIME,CYCLE)
       
   439   __DECLARE_VAR(REAL,XOUT)
       
   440 
       
   441   // FB private variables - TEMP, private and located variables
       
   442   __DECLARE_VAR(REAL,ERROR)
       
   443   INTEGRAL ITERM;
       
   444   DERIVATIVE DTERM;
       
   445 
       
   446 } PID;
       
   447 
       
   448 // FUNCTION_BLOCK RAMP
       
   449 // Data part
       
   450 typedef struct {
       
   451   // FB Interface - IN, OUT, IN_OUT variables
       
   452   __DECLARE_VAR(BOOL,RUN)
       
   453   __DECLARE_VAR(REAL,X0)
       
   454   __DECLARE_VAR(REAL,X1)
       
   455   __DECLARE_VAR(TIME,TR)
       
   456   __DECLARE_VAR(TIME,CYCLE)
       
   457   __DECLARE_VAR(BOOL,BUSY)
       
   458   __DECLARE_VAR(REAL,XOUT)
       
   459 
       
   460   // FB private variables - TEMP, private and located variables
       
   461   __DECLARE_VAR(REAL,XI)
       
   462   __DECLARE_VAR(TIME,T)
       
   463 
       
   464 } RAMP;
       
   465 
       
   466 // FUNCTION_BLOCK RTC
       
   467 // Data part
       
   468 typedef struct {
       
   469   // FB Interface - IN, OUT, IN_OUT variables
       
   470   __DECLARE_VAR(BOOL,IN)
       
   471   __DECLARE_VAR(DT,PDT)
       
   472   __DECLARE_VAR(BOOL,Q)
       
   473   __DECLARE_VAR(DT,CDT)
       
   474 
       
   475   // FB private variables - TEMP, private and located variables
       
   476   __DECLARE_VAR(BOOL,PREV_IN)
       
   477   __DECLARE_VAR(TIME,OFFSET)
       
   478   __DECLARE_VAR(DT,CURRENT_TIME)
       
   479 
       
   480 } RTC;
       
   481 
       
   482 // FUNCTION_BLOCK SEMA
       
   483 // Data part
       
   484 typedef struct {
       
   485   // FB Interface - IN, OUT, IN_OUT variables
       
   486   __DECLARE_VAR(BOOL,CLAIM)
       
   487   __DECLARE_VAR(BOOL,RELEASE)
       
   488   __DECLARE_VAR(BOOL,BUSY)
       
   489 
       
   490   // FB private variables - TEMP, private and located variables
       
   491   __DECLARE_VAR(BOOL,Q_INTERNAL)
       
   492 
       
   493 } SEMA;
       
   494 
       
   495 
       
   496 
       
   497 
       
   498 static void R_TRIG_init__(R_TRIG *data__, BOOL retain) {
       
   499   __INIT_VAR(data__->CLK,__BOOL_LITERAL(FALSE),retain)
       
   500   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   501   __INIT_VAR(data__->M,__BOOL_LITERAL(FALSE),1)
       
   502 }
       
   503 
       
   504 // Code part
       
   505 static void R_TRIG_body__(R_TRIG *data__) {
       
   506 // Initialise TEMP variables
       
   507 
       
   508 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CLK,) && !(__GET_VAR(data__->M,))));
       
   509 __SET_VAR(data__->,M,,__GET_VAR(data__->CLK,));
       
   510 
       
   511 goto __end;
       
   512 
       
   513 __end:
       
   514   return;
       
   515 } // R_TRIG_body__() 
       
   516 
       
   517 
       
   518 
       
   519 
       
   520 
       
   521 static void F_TRIG_init__(F_TRIG *data__, BOOL retain) {
       
   522   __INIT_VAR(data__->CLK,__BOOL_LITERAL(FALSE),retain)
       
   523   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   524   __INIT_VAR(data__->M,__BOOL_LITERAL(FALSE),1)
       
   525 }
       
   526 
       
   527 // Code part
       
   528 static void F_TRIG_body__(F_TRIG *data__) {
       
   529 // Initialise TEMP variables
       
   530 
       
   531 __SET_VAR(data__->,Q,,(!(__GET_VAR(data__->CLK,)) && !(__GET_VAR(data__->M,))));
       
   532 __SET_VAR(data__->,M,,!(__GET_VAR(data__->CLK,)));
       
   533 
       
   534 goto __end;
       
   535 
       
   536 __end:
       
   537   return;
       
   538 } // F_TRIG_body__() 
       
   539 
       
   540 
       
   541 
       
   542 
       
   543 
       
   544 static void SR_init__(SR *data__, BOOL retain) {
       
   545   __INIT_VAR(data__->S1,__BOOL_LITERAL(FALSE),retain)
       
   546   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   547   __INIT_VAR(data__->Q1,__BOOL_LITERAL(FALSE),retain)
       
   548 }
       
   549 
       
   550 // Code part
       
   551 static void SR_body__(SR *data__) {
       
   552 // Initialise TEMP variables
       
   553 
       
   554 __SET_VAR(data__->,Q1,,(__GET_VAR(data__->S1,) || (!(__GET_VAR(data__->R,)) && __GET_VAR(data__->Q1,))));
       
   555 
       
   556 goto __end;
       
   557 
       
   558 __end:
       
   559   return;
       
   560 } // SR_body__() 
       
   561 
       
   562 
       
   563 
       
   564 
       
   565 
       
   566 static void RS_init__(RS *data__, BOOL retain) {
       
   567   __INIT_VAR(data__->S,__BOOL_LITERAL(FALSE),retain)
       
   568   __INIT_VAR(data__->R1,__BOOL_LITERAL(FALSE),retain)
       
   569   __INIT_VAR(data__->Q1,__BOOL_LITERAL(FALSE),retain)
       
   570 }
       
   571 
       
   572 // Code part
       
   573 static void RS_body__(RS *data__) {
       
   574 // Initialise TEMP variables
       
   575 
       
   576 __SET_VAR(data__->,Q1,,(!(__GET_VAR(data__->R1,)) && (__GET_VAR(data__->S,) || __GET_VAR(data__->Q1,))));
       
   577 
       
   578 goto __end;
       
   579 
       
   580 __end:
       
   581   return;
       
   582 } // RS_body__() 
       
   583 
       
   584 
       
   585 
       
   586 
       
   587 
       
   588 static void CTU_init__(CTU *data__, BOOL retain) {
       
   589   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
   590   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   591   __INIT_VAR(data__->PV,0,retain)
       
   592   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   593   __INIT_VAR(data__->CV,0,retain)
       
   594   R_TRIG_init__(&data__->CU_T,retain);
       
   595 }
       
   596 
       
   597 // Code part
       
   598 static void CTU_body__(CTU *data__) {
       
   599 // Initialise TEMP variables
       
   600 
       
   601 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
   602 R_TRIG_body__(&data__->CU_T);
       
   603 if (__GET_VAR(data__->R,)) {
       
   604   __SET_VAR(data__->,CV,,0);
       
   605 } else if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
   606   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
   607 };
       
   608 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
   609 
       
   610 goto __end;
       
   611 
       
   612 __end:
       
   613   return;
       
   614 } // CTU_body__() 
       
   615 
       
   616 
       
   617 
       
   618 
       
   619 
       
   620 static void CTU_DINT_init__(CTU_DINT *data__, BOOL retain) {
       
   621   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
   622   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   623   __INIT_VAR(data__->PV,0,retain)
       
   624   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   625   __INIT_VAR(data__->CV,0,retain)
       
   626   R_TRIG_init__(&data__->CU_T,retain);
       
   627 }
       
   628 
       
   629 // Code part
       
   630 static void CTU_DINT_body__(CTU_DINT *data__) {
       
   631 // Initialise TEMP variables
       
   632 
       
   633 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
   634 R_TRIG_body__(&data__->CU_T);
       
   635 if (__GET_VAR(data__->R,)) {
       
   636   __SET_VAR(data__->,CV,,0);
       
   637 } else if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
   638   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
   639 };
       
   640 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
   641 
       
   642 goto __end;
       
   643 
       
   644 __end:
       
   645   return;
       
   646 } // CTU_DINT_body__() 
       
   647 
       
   648 
       
   649 
       
   650 
       
   651 
       
   652 static void CTU_LINT_init__(CTU_LINT *data__, BOOL retain) {
       
   653   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
   654   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   655   __INIT_VAR(data__->PV,0,retain)
       
   656   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   657   __INIT_VAR(data__->CV,0,retain)
       
   658   R_TRIG_init__(&data__->CU_T,retain);
       
   659 }
       
   660 
       
   661 // Code part
       
   662 static void CTU_LINT_body__(CTU_LINT *data__) {
       
   663 // Initialise TEMP variables
       
   664 
       
   665 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
   666 R_TRIG_body__(&data__->CU_T);
       
   667 if (__GET_VAR(data__->R,)) {
       
   668   __SET_VAR(data__->,CV,,0);
       
   669 } else if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
   670   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
   671 };
       
   672 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
   673 
       
   674 goto __end;
       
   675 
       
   676 __end:
       
   677   return;
       
   678 } // CTU_LINT_body__() 
       
   679 
       
   680 
       
   681 
       
   682 
       
   683 
       
   684 static void CTU_UDINT_init__(CTU_UDINT *data__, BOOL retain) {
       
   685   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
   686   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   687   __INIT_VAR(data__->PV,0,retain)
       
   688   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   689   __INIT_VAR(data__->CV,0,retain)
       
   690   R_TRIG_init__(&data__->CU_T,retain);
       
   691 }
       
   692 
       
   693 // Code part
       
   694 static void CTU_UDINT_body__(CTU_UDINT *data__) {
       
   695 // Initialise TEMP variables
       
   696 
       
   697 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
   698 R_TRIG_body__(&data__->CU_T);
       
   699 if (__GET_VAR(data__->R,)) {
       
   700   __SET_VAR(data__->,CV,,0);
       
   701 } else if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
   702   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
   703 };
       
   704 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
   705 
       
   706 goto __end;
       
   707 
       
   708 __end:
       
   709   return;
       
   710 } // CTU_UDINT_body__() 
       
   711 
       
   712 
       
   713 
       
   714 
       
   715 
       
   716 static void CTU_ULINT_init__(CTU_ULINT *data__, BOOL retain) {
       
   717   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
   718   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   719   __INIT_VAR(data__->PV,0,retain)
       
   720   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   721   __INIT_VAR(data__->CV,0,retain)
       
   722   R_TRIG_init__(&data__->CU_T,retain);
       
   723 }
       
   724 
       
   725 // Code part
       
   726 static void CTU_ULINT_body__(CTU_ULINT *data__) {
       
   727 // Initialise TEMP variables
       
   728 
       
   729 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
   730 R_TRIG_body__(&data__->CU_T);
       
   731 if (__GET_VAR(data__->R,)) {
       
   732   __SET_VAR(data__->,CV,,0);
       
   733 } else if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
   734   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
   735 };
       
   736 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
   737 
       
   738 goto __end;
       
   739 
       
   740 __end:
       
   741   return;
       
   742 } // CTU_ULINT_body__() 
       
   743 
       
   744 
       
   745 
       
   746 
       
   747 
       
   748 static void CTD_init__(CTD *data__, BOOL retain) {
       
   749   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
   750   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
   751   __INIT_VAR(data__->PV,0,retain)
       
   752   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   753   __INIT_VAR(data__->CV,0,retain)
       
   754   R_TRIG_init__(&data__->CD_T,retain);
       
   755 }
       
   756 
       
   757 // Code part
       
   758 static void CTD_body__(CTD *data__) {
       
   759 // Initialise TEMP variables
       
   760 
       
   761 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
   762 R_TRIG_body__(&data__->CD_T);
       
   763 if (__GET_VAR(data__->LD,)) {
       
   764   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
   765 } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
   766   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
   767 };
       
   768 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) <= 0));
       
   769 
       
   770 goto __end;
       
   771 
       
   772 __end:
       
   773   return;
       
   774 } // CTD_body__() 
       
   775 
       
   776 
       
   777 
       
   778 
       
   779 
       
   780 static void CTD_DINT_init__(CTD_DINT *data__, BOOL retain) {
       
   781   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
   782   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
   783   __INIT_VAR(data__->PV,0,retain)
       
   784   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   785   __INIT_VAR(data__->CV,0,retain)
       
   786   R_TRIG_init__(&data__->CD_T,retain);
       
   787 }
       
   788 
       
   789 // Code part
       
   790 static void CTD_DINT_body__(CTD_DINT *data__) {
       
   791 // Initialise TEMP variables
       
   792 
       
   793 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
   794 R_TRIG_body__(&data__->CD_T);
       
   795 if (__GET_VAR(data__->LD,)) {
       
   796   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
   797 } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
   798   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
   799 };
       
   800 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) <= 0));
       
   801 
       
   802 goto __end;
       
   803 
       
   804 __end:
       
   805   return;
       
   806 } // CTD_DINT_body__() 
       
   807 
       
   808 
       
   809 
       
   810 
       
   811 
       
   812 static void CTD_LINT_init__(CTD_LINT *data__, BOOL retain) {
       
   813   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
   814   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
   815   __INIT_VAR(data__->PV,0,retain)
       
   816   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   817   __INIT_VAR(data__->CV,0,retain)
       
   818   R_TRIG_init__(&data__->CD_T,retain);
       
   819 }
       
   820 
       
   821 // Code part
       
   822 static void CTD_LINT_body__(CTD_LINT *data__) {
       
   823 // Initialise TEMP variables
       
   824 
       
   825 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
   826 R_TRIG_body__(&data__->CD_T);
       
   827 if (__GET_VAR(data__->LD,)) {
       
   828   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
   829 } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
   830   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
   831 };
       
   832 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) <= 0));
       
   833 
       
   834 goto __end;
       
   835 
       
   836 __end:
       
   837   return;
       
   838 } // CTD_LINT_body__() 
       
   839 
       
   840 
       
   841 
       
   842 
       
   843 
       
   844 static void CTD_UDINT_init__(CTD_UDINT *data__, BOOL retain) {
       
   845   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
   846   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
   847   __INIT_VAR(data__->PV,0,retain)
       
   848   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   849   __INIT_VAR(data__->CV,0,retain)
       
   850   R_TRIG_init__(&data__->CD_T,retain);
       
   851 }
       
   852 
       
   853 // Code part
       
   854 static void CTD_UDINT_body__(CTD_UDINT *data__) {
       
   855 // Initialise TEMP variables
       
   856 
       
   857 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
   858 R_TRIG_body__(&data__->CD_T);
       
   859 if (__GET_VAR(data__->LD,)) {
       
   860   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
   861 } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
   862   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
   863 };
       
   864 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) <= 0));
       
   865 
       
   866 goto __end;
       
   867 
       
   868 __end:
       
   869   return;
       
   870 } // CTD_UDINT_body__() 
       
   871 
       
   872 
       
   873 
       
   874 
       
   875 
       
   876 static void CTD_ULINT_init__(CTD_ULINT *data__, BOOL retain) {
       
   877   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
   878   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
   879   __INIT_VAR(data__->PV,0,retain)
       
   880   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
   881   __INIT_VAR(data__->CV,0,retain)
       
   882   R_TRIG_init__(&data__->CD_T,retain);
       
   883 }
       
   884 
       
   885 // Code part
       
   886 static void CTD_ULINT_body__(CTD_ULINT *data__) {
       
   887 // Initialise TEMP variables
       
   888 
       
   889 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
   890 R_TRIG_body__(&data__->CD_T);
       
   891 if (__GET_VAR(data__->LD,)) {
       
   892   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
   893 } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
   894   __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
   895 };
       
   896 __SET_VAR(data__->,Q,,(__GET_VAR(data__->CV,) <= 0));
       
   897 
       
   898 goto __end;
       
   899 
       
   900 __end:
       
   901   return;
       
   902 } // CTD_ULINT_body__() 
       
   903 
       
   904 
       
   905 
       
   906 
       
   907 
       
   908 static void CTUD_init__(CTUD *data__, BOOL retain) {
       
   909   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
   910   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
   911   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   912   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
   913   __INIT_VAR(data__->PV,0,retain)
       
   914   __INIT_VAR(data__->QU,__BOOL_LITERAL(FALSE),retain)
       
   915   __INIT_VAR(data__->QD,__BOOL_LITERAL(FALSE),retain)
       
   916   __INIT_VAR(data__->CV,0,retain)
       
   917   R_TRIG_init__(&data__->CD_T,retain);
       
   918   R_TRIG_init__(&data__->CU_T,retain);
       
   919 }
       
   920 
       
   921 // Code part
       
   922 static void CTUD_body__(CTUD *data__) {
       
   923 // Initialise TEMP variables
       
   924 
       
   925 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
   926 R_TRIG_body__(&data__->CD_T);
       
   927 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
   928 R_TRIG_body__(&data__->CU_T);
       
   929 if (__GET_VAR(data__->R,)) {
       
   930   __SET_VAR(data__->,CV,,0);
       
   931 } else if (__GET_VAR(data__->LD,)) {
       
   932   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
   933 } else {
       
   934   if (!((__GET_VAR(data__->CU_T.Q,) && __GET_VAR(data__->CD_T.Q,)))) {
       
   935     if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
   936       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
   937     } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
   938       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
   939     };
       
   940   };
       
   941 };
       
   942 __SET_VAR(data__->,QU,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
   943 __SET_VAR(data__->,QD,,(__GET_VAR(data__->CV,) <= 0));
       
   944 
       
   945 goto __end;
       
   946 
       
   947 __end:
       
   948   return;
       
   949 } // CTUD_body__() 
       
   950 
       
   951 
       
   952 
       
   953 
       
   954 
       
   955 static void CTUD_DINT_init__(CTUD_DINT *data__, BOOL retain) {
       
   956   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
   957   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
   958   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
   959   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
   960   __INIT_VAR(data__->PV,0,retain)
       
   961   __INIT_VAR(data__->QU,__BOOL_LITERAL(FALSE),retain)
       
   962   __INIT_VAR(data__->QD,__BOOL_LITERAL(FALSE),retain)
       
   963   __INIT_VAR(data__->CV,0,retain)
       
   964   R_TRIG_init__(&data__->CD_T,retain);
       
   965   R_TRIG_init__(&data__->CU_T,retain);
       
   966 }
       
   967 
       
   968 // Code part
       
   969 static void CTUD_DINT_body__(CTUD_DINT *data__) {
       
   970 // Initialise TEMP variables
       
   971 
       
   972 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
   973 R_TRIG_body__(&data__->CD_T);
       
   974 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
   975 R_TRIG_body__(&data__->CU_T);
       
   976 if (__GET_VAR(data__->R,)) {
       
   977   __SET_VAR(data__->,CV,,0);
       
   978 } else if (__GET_VAR(data__->LD,)) {
       
   979   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
   980 } else {
       
   981   if (!((__GET_VAR(data__->CU_T.Q,) && __GET_VAR(data__->CD_T.Q,)))) {
       
   982     if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
   983       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
   984     } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
   985       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
   986     };
       
   987   };
       
   988 };
       
   989 __SET_VAR(data__->,QU,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
   990 __SET_VAR(data__->,QD,,(__GET_VAR(data__->CV,) <= 0));
       
   991 
       
   992 goto __end;
       
   993 
       
   994 __end:
       
   995   return;
       
   996 } // CTUD_DINT_body__() 
       
   997 
       
   998 
       
   999 
       
  1000 
       
  1001 
       
  1002 static void CTUD_LINT_init__(CTUD_LINT *data__, BOOL retain) {
       
  1003   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
  1004   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
  1005   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
  1006   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
  1007   __INIT_VAR(data__->PV,0,retain)
       
  1008   __INIT_VAR(data__->QU,__BOOL_LITERAL(FALSE),retain)
       
  1009   __INIT_VAR(data__->QD,__BOOL_LITERAL(FALSE),retain)
       
  1010   __INIT_VAR(data__->CV,0,retain)
       
  1011   R_TRIG_init__(&data__->CD_T,retain);
       
  1012   R_TRIG_init__(&data__->CU_T,retain);
       
  1013 }
       
  1014 
       
  1015 // Code part
       
  1016 static void CTUD_LINT_body__(CTUD_LINT *data__) {
       
  1017 // Initialise TEMP variables
       
  1018 
       
  1019 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
  1020 R_TRIG_body__(&data__->CD_T);
       
  1021 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
  1022 R_TRIG_body__(&data__->CU_T);
       
  1023 if (__GET_VAR(data__->R,)) {
       
  1024   __SET_VAR(data__->,CV,,0);
       
  1025 } else if (__GET_VAR(data__->LD,)) {
       
  1026   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
  1027 } else {
       
  1028   if (!((__GET_VAR(data__->CU_T.Q,) && __GET_VAR(data__->CD_T.Q,)))) {
       
  1029     if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
  1030       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
  1031     } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
  1032       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
  1033     };
       
  1034   };
       
  1035 };
       
  1036 __SET_VAR(data__->,QU,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
  1037 __SET_VAR(data__->,QD,,(__GET_VAR(data__->CV,) <= 0));
       
  1038 
       
  1039 goto __end;
       
  1040 
       
  1041 __end:
       
  1042   return;
       
  1043 } // CTUD_LINT_body__() 
       
  1044 
       
  1045 
       
  1046 
       
  1047 
       
  1048 
       
  1049 static void CTUD_UDINT_init__(CTUD_UDINT *data__, BOOL retain) {
       
  1050   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
  1051   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
  1052   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
  1053   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
  1054   __INIT_VAR(data__->PV,0,retain)
       
  1055   __INIT_VAR(data__->QU,__BOOL_LITERAL(FALSE),retain)
       
  1056   __INIT_VAR(data__->QD,__BOOL_LITERAL(FALSE),retain)
       
  1057   __INIT_VAR(data__->CV,0,retain)
       
  1058   R_TRIG_init__(&data__->CD_T,retain);
       
  1059   R_TRIG_init__(&data__->CU_T,retain);
       
  1060 }
       
  1061 
       
  1062 // Code part
       
  1063 static void CTUD_UDINT_body__(CTUD_UDINT *data__) {
       
  1064 // Initialise TEMP variables
       
  1065 
       
  1066 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
  1067 R_TRIG_body__(&data__->CD_T);
       
  1068 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
  1069 R_TRIG_body__(&data__->CU_T);
       
  1070 if (__GET_VAR(data__->R,)) {
       
  1071   __SET_VAR(data__->,CV,,0);
       
  1072 } else if (__GET_VAR(data__->LD,)) {
       
  1073   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
  1074 } else {
       
  1075   if (!((__GET_VAR(data__->CU_T.Q,) && __GET_VAR(data__->CD_T.Q,)))) {
       
  1076     if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
  1077       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
  1078     } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
  1079       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
  1080     };
       
  1081   };
       
  1082 };
       
  1083 __SET_VAR(data__->,QU,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
  1084 __SET_VAR(data__->,QD,,(__GET_VAR(data__->CV,) <= 0));
       
  1085 
       
  1086 goto __end;
       
  1087 
       
  1088 __end:
       
  1089   return;
       
  1090 } // CTUD_UDINT_body__() 
       
  1091 
       
  1092 
       
  1093 
       
  1094 
       
  1095 
       
  1096 static void CTUD_ULINT_init__(CTUD_ULINT *data__, BOOL retain) {
       
  1097   __INIT_VAR(data__->CU,__BOOL_LITERAL(FALSE),retain)
       
  1098   __INIT_VAR(data__->CD,__BOOL_LITERAL(FALSE),retain)
       
  1099   __INIT_VAR(data__->R,__BOOL_LITERAL(FALSE),retain)
       
  1100   __INIT_VAR(data__->LD,__BOOL_LITERAL(FALSE),retain)
       
  1101   __INIT_VAR(data__->PV,0,retain)
       
  1102   __INIT_VAR(data__->QU,__BOOL_LITERAL(FALSE),retain)
       
  1103   __INIT_VAR(data__->QD,__BOOL_LITERAL(FALSE),retain)
       
  1104   __INIT_VAR(data__->CV,0,retain)
       
  1105   R_TRIG_init__(&data__->CD_T,retain);
       
  1106   R_TRIG_init__(&data__->CU_T,retain);
       
  1107 }
       
  1108 
       
  1109 // Code part
       
  1110 static void CTUD_ULINT_body__(CTUD_ULINT *data__) {
       
  1111 // Initialise TEMP variables
       
  1112 
       
  1113 __SET_VAR(data__->CD_T.,CLK,,__GET_VAR(data__->CD,));
       
  1114 R_TRIG_body__(&data__->CD_T);
       
  1115 __SET_VAR(data__->CU_T.,CLK,,__GET_VAR(data__->CU,));
       
  1116 R_TRIG_body__(&data__->CU_T);
       
  1117 if (__GET_VAR(data__->R,)) {
       
  1118   __SET_VAR(data__->,CV,,0);
       
  1119 } else if (__GET_VAR(data__->LD,)) {
       
  1120   __SET_VAR(data__->,CV,,__GET_VAR(data__->PV,));
       
  1121 } else {
       
  1122   if (!((__GET_VAR(data__->CU_T.Q,) && __GET_VAR(data__->CD_T.Q,)))) {
       
  1123     if ((__GET_VAR(data__->CU_T.Q,) && (__GET_VAR(data__->CV,) < __GET_VAR(data__->PV,)))) {
       
  1124       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) + 1));
       
  1125     } else if ((__GET_VAR(data__->CD_T.Q,) && (__GET_VAR(data__->CV,) > 0))) {
       
  1126       __SET_VAR(data__->,CV,,(__GET_VAR(data__->CV,) - 1));
       
  1127     };
       
  1128   };
       
  1129 };
       
  1130 __SET_VAR(data__->,QU,,(__GET_VAR(data__->CV,) >= __GET_VAR(data__->PV,)));
       
  1131 __SET_VAR(data__->,QD,,(__GET_VAR(data__->CV,) <= 0));
       
  1132 
       
  1133 goto __end;
       
  1134 
       
  1135 __end:
       
  1136   return;
       
  1137 } // CTUD_ULINT_body__() 
       
  1138 
       
  1139 
       
  1140 
       
  1141 
       
  1142 
       
  1143 static void TP_init__(TP *data__, BOOL retain) {
       
  1144   __INIT_VAR(data__->IN,__BOOL_LITERAL(FALSE),retain)
       
  1145   __INIT_VAR(data__->PT,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1146   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
  1147   __INIT_VAR(data__->ET,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1148   __INIT_VAR(data__->STATE,0,retain)
       
  1149   __INIT_VAR(data__->PREV_IN,__BOOL_LITERAL(FALSE),retain)
       
  1150   __INIT_VAR(data__->CURRENT_TIME,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1151   __INIT_VAR(data__->START_TIME,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1152 }
       
  1153 
       
  1154 // Code part
       
  1155 static void TP_body__(TP *data__) {
       
  1156 // Initialise TEMP variables
       
  1157 
       
  1158 #define GetFbVar(var,...) __GET_VAR(data__->var,__VA_ARGS__)
       
  1159 #define SetFbVar(var,val,...) __SET_VAR(data__->,var,__VA_ARGS__,val)
       
  1160 __SET_VAR(data__->,CURRENT_TIME,,__CURRENT_TIME)
       
  1161 #undef GetFbVar
       
  1162 #undef SetFbVar
       
  1163 ;
       
  1164 if ((((__GET_VAR(data__->STATE,) == 0) && !(__GET_VAR(data__->PREV_IN,))) && __GET_VAR(data__->IN,))) {
       
  1165   __SET_VAR(data__->,STATE,,1);
       
  1166   __SET_VAR(data__->,Q,,__BOOL_LITERAL(TRUE));
       
  1167   __SET_VAR(data__->,START_TIME,,__GET_VAR(data__->CURRENT_TIME,));
       
  1168 } else if ((__GET_VAR(data__->STATE,) == 1)) {
       
  1169   if (LE_TIME(2, __time_add(__GET_VAR(data__->START_TIME,), __GET_VAR(data__->PT,)), __GET_VAR(data__->CURRENT_TIME,))) {
       
  1170     __SET_VAR(data__->,STATE,,2);
       
  1171     __SET_VAR(data__->,Q,,__BOOL_LITERAL(FALSE));
       
  1172     __SET_VAR(data__->,ET,,__GET_VAR(data__->PT,));
       
  1173   } else {
       
  1174     __SET_VAR(data__->,ET,,__time_sub(__GET_VAR(data__->CURRENT_TIME,), __GET_VAR(data__->START_TIME,)));
       
  1175   };
       
  1176 };
       
  1177 if (((__GET_VAR(data__->STATE,) == 2) && !(__GET_VAR(data__->IN,)))) {
       
  1178   __SET_VAR(data__->,ET,,__time_to_timespec(1, 0, 0, 0, 0, 0));
       
  1179   __SET_VAR(data__->,STATE,,0);
       
  1180 };
       
  1181 __SET_VAR(data__->,PREV_IN,,__GET_VAR(data__->IN,));
       
  1182 
       
  1183 goto __end;
       
  1184 
       
  1185 __end:
       
  1186   return;
       
  1187 } // TP_body__() 
       
  1188 
       
  1189 
       
  1190 
       
  1191 
       
  1192 
       
  1193 static void TON_init__(TON *data__, BOOL retain) {
       
  1194   __INIT_VAR(data__->IN,__BOOL_LITERAL(FALSE),retain)
       
  1195   __INIT_VAR(data__->PT,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1196   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
  1197   __INIT_VAR(data__->ET,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1198   __INIT_VAR(data__->STATE,0,retain)
       
  1199   __INIT_VAR(data__->PREV_IN,__BOOL_LITERAL(FALSE),retain)
       
  1200   __INIT_VAR(data__->CURRENT_TIME,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1201   __INIT_VAR(data__->START_TIME,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1202 }
       
  1203 
       
  1204 // Code part
       
  1205 static void TON_body__(TON *data__) {
       
  1206 // Initialise TEMP variables
       
  1207 
       
  1208 #define GetFbVar(var,...) __GET_VAR(data__->var,__VA_ARGS__)
       
  1209 #define SetFbVar(var,val,...) __SET_VAR(data__->,var,__VA_ARGS__,val)
       
  1210 __SET_VAR(data__->,CURRENT_TIME,,__CURRENT_TIME)
       
  1211 #undef GetFbVar
       
  1212 #undef SetFbVar
       
  1213 ;
       
  1214 if ((((__GET_VAR(data__->STATE,) == 0) && !(__GET_VAR(data__->PREV_IN,))) && __GET_VAR(data__->IN,))) {
       
  1215   __SET_VAR(data__->,STATE,,1);
       
  1216   __SET_VAR(data__->,Q,,__BOOL_LITERAL(FALSE));
       
  1217   __SET_VAR(data__->,START_TIME,,__GET_VAR(data__->CURRENT_TIME,));
       
  1218 } else {
       
  1219   if (!(__GET_VAR(data__->IN,))) {
       
  1220     __SET_VAR(data__->,ET,,__time_to_timespec(1, 0, 0, 0, 0, 0));
       
  1221     __SET_VAR(data__->,Q,,__BOOL_LITERAL(FALSE));
       
  1222     __SET_VAR(data__->,STATE,,0);
       
  1223   } else if ((__GET_VAR(data__->STATE,) == 1)) {
       
  1224     if (LE_TIME(2, __time_add(__GET_VAR(data__->START_TIME,), __GET_VAR(data__->PT,)), __GET_VAR(data__->CURRENT_TIME,))) {
       
  1225       __SET_VAR(data__->,STATE,,2);
       
  1226       __SET_VAR(data__->,Q,,__BOOL_LITERAL(TRUE));
       
  1227       __SET_VAR(data__->,ET,,__GET_VAR(data__->PT,));
       
  1228     } else {
       
  1229       __SET_VAR(data__->,ET,,__time_sub(__GET_VAR(data__->CURRENT_TIME,), __GET_VAR(data__->START_TIME,)));
       
  1230     };
       
  1231   };
       
  1232 };
       
  1233 __SET_VAR(data__->,PREV_IN,,__GET_VAR(data__->IN,));
       
  1234 
       
  1235 goto __end;
       
  1236 
       
  1237 __end:
       
  1238   return;
       
  1239 } // TON_body__() 
       
  1240 
       
  1241 
       
  1242 
       
  1243 
       
  1244 
       
  1245 static void TOF_init__(TOF *data__, BOOL retain) {
       
  1246   __INIT_VAR(data__->IN,__BOOL_LITERAL(FALSE),retain)
       
  1247   __INIT_VAR(data__->PT,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1248   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
  1249   __INIT_VAR(data__->ET,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1250   __INIT_VAR(data__->STATE,0,retain)
       
  1251   __INIT_VAR(data__->PREV_IN,__BOOL_LITERAL(FALSE),retain)
       
  1252   __INIT_VAR(data__->CURRENT_TIME,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1253   __INIT_VAR(data__->START_TIME,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1254 }
       
  1255 
       
  1256 // Code part
       
  1257 static void TOF_body__(TOF *data__) {
       
  1258 // Initialise TEMP variables
       
  1259 
       
  1260 #define GetFbVar(var,...) __GET_VAR(data__->var,__VA_ARGS__)
       
  1261 #define SetFbVar(var,val,...) __SET_VAR(data__->,var,__VA_ARGS__,val)
       
  1262 __SET_VAR(data__->,CURRENT_TIME,,__CURRENT_TIME)
       
  1263 #undef GetFbVar
       
  1264 #undef SetFbVar
       
  1265 ;
       
  1266 if ((((__GET_VAR(data__->STATE,) == 0) && __GET_VAR(data__->PREV_IN,)) && !(__GET_VAR(data__->IN,)))) {
       
  1267   __SET_VAR(data__->,STATE,,1);
       
  1268   __SET_VAR(data__->,START_TIME,,__GET_VAR(data__->CURRENT_TIME,));
       
  1269 } else {
       
  1270   if (__GET_VAR(data__->IN,)) {
       
  1271     __SET_VAR(data__->,ET,,__time_to_timespec(1, 0, 0, 0, 0, 0));
       
  1272     __SET_VAR(data__->,STATE,,0);
       
  1273   } else if ((__GET_VAR(data__->STATE,) == 1)) {
       
  1274     if (LE_TIME(2, __time_add(__GET_VAR(data__->START_TIME,), __GET_VAR(data__->PT,)), __GET_VAR(data__->CURRENT_TIME,))) {
       
  1275       __SET_VAR(data__->,STATE,,2);
       
  1276       __SET_VAR(data__->,ET,,__GET_VAR(data__->PT,));
       
  1277     } else {
       
  1278       __SET_VAR(data__->,ET,,__time_sub(__GET_VAR(data__->CURRENT_TIME,), __GET_VAR(data__->START_TIME,)));
       
  1279     };
       
  1280   };
       
  1281 };
       
  1282 __SET_VAR(data__->,Q,,(__GET_VAR(data__->IN,) || (__GET_VAR(data__->STATE,) == 1)));
       
  1283 __SET_VAR(data__->,PREV_IN,,__GET_VAR(data__->IN,));
       
  1284 
       
  1285 goto __end;
       
  1286 
       
  1287 __end:
       
  1288   return;
       
  1289 } // TOF_body__() 
       
  1290 
       
  1291 
       
  1292 
       
  1293 
       
  1294 
       
  1295 static void DERIVATIVE_init__(DERIVATIVE *data__, BOOL retain) {
       
  1296   __INIT_VAR(data__->RUN,__BOOL_LITERAL(FALSE),retain)
       
  1297   __INIT_VAR(data__->XIN,0,retain)
       
  1298   __INIT_VAR(data__->CYCLE,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1299   __INIT_VAR(data__->XOUT,0,retain)
       
  1300   __INIT_VAR(data__->X1,0,retain)
       
  1301   __INIT_VAR(data__->X2,0,retain)
       
  1302   __INIT_VAR(data__->X3,0,retain)
       
  1303 }
       
  1304 
       
  1305 // Code part
       
  1306 static void DERIVATIVE_body__(DERIVATIVE *data__) {
       
  1307 // Initialise TEMP variables
       
  1308 
       
  1309 if (__GET_VAR(data__->RUN,)) {
       
  1310   __SET_VAR(data__->,XOUT,,((((3.0 * (__GET_VAR(data__->XIN,) - __GET_VAR(data__->X3,))) + __GET_VAR(data__->X1,)) - __GET_VAR(data__->X2,)) / (10.0 * TIME_TO_REAL((TIME)__GET_VAR(data__->CYCLE,)))));
       
  1311   __SET_VAR(data__->,X3,,__GET_VAR(data__->X2,));
       
  1312   __SET_VAR(data__->,X2,,__GET_VAR(data__->X1,));
       
  1313   __SET_VAR(data__->,X1,,__GET_VAR(data__->XIN,));
       
  1314 } else {
       
  1315   __SET_VAR(data__->,XOUT,,0.0);
       
  1316   __SET_VAR(data__->,X1,,__GET_VAR(data__->XIN,));
       
  1317   __SET_VAR(data__->,X2,,__GET_VAR(data__->XIN,));
       
  1318   __SET_VAR(data__->,X3,,__GET_VAR(data__->XIN,));
       
  1319 };
       
  1320 
       
  1321 goto __end;
       
  1322 
       
  1323 __end:
       
  1324   return;
       
  1325 } // DERIVATIVE_body__() 
       
  1326 
       
  1327 
       
  1328 
       
  1329 
       
  1330 
       
  1331 static void HYSTERESIS_init__(HYSTERESIS *data__, BOOL retain) {
       
  1332   __INIT_VAR(data__->XIN1,0,retain)
       
  1333   __INIT_VAR(data__->XIN2,0,retain)
       
  1334   __INIT_VAR(data__->EPS,0,retain)
       
  1335   __INIT_VAR(data__->Q,0,retain)
       
  1336 }
       
  1337 
       
  1338 // Code part
       
  1339 static void HYSTERESIS_body__(HYSTERESIS *data__) {
       
  1340 // Initialise TEMP variables
       
  1341 
       
  1342 if (__GET_VAR(data__->Q,)) {
       
  1343   if ((__GET_VAR(data__->XIN1,) < (__GET_VAR(data__->XIN2,) - __GET_VAR(data__->EPS,)))) {
       
  1344     __SET_VAR(data__->,Q,,0);
       
  1345   };
       
  1346 } else if ((__GET_VAR(data__->XIN1,) > (__GET_VAR(data__->XIN2,) + __GET_VAR(data__->EPS,)))) {
       
  1347   __SET_VAR(data__->,Q,,1);
       
  1348 };
       
  1349 
       
  1350 goto __end;
       
  1351 
       
  1352 __end:
       
  1353   return;
       
  1354 } // HYSTERESIS_body__() 
       
  1355 
       
  1356 
       
  1357 
       
  1358 
       
  1359 
       
  1360 static void INTEGRAL_init__(INTEGRAL *data__, BOOL retain) {
       
  1361   __INIT_VAR(data__->RUN,__BOOL_LITERAL(FALSE),retain)
       
  1362   __INIT_VAR(data__->R1,__BOOL_LITERAL(FALSE),retain)
       
  1363   __INIT_VAR(data__->XIN,0,retain)
       
  1364   __INIT_VAR(data__->X0,0,retain)
       
  1365   __INIT_VAR(data__->CYCLE,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1366   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
  1367   __INIT_VAR(data__->XOUT,0,retain)
       
  1368 }
       
  1369 
       
  1370 // Code part
       
  1371 static void INTEGRAL_body__(INTEGRAL *data__) {
       
  1372 // Initialise TEMP variables
       
  1373 
       
  1374 __SET_VAR(data__->,Q,,!(__GET_VAR(data__->R1,)));
       
  1375 if (__GET_VAR(data__->R1,)) {
       
  1376   __SET_VAR(data__->,XOUT,,__GET_VAR(data__->X0,));
       
  1377 } else if (__GET_VAR(data__->RUN,)) {
       
  1378   __SET_VAR(data__->,XOUT,,(__GET_VAR(data__->XOUT,) + (__GET_VAR(data__->XIN,) * TIME_TO_REAL((TIME)__GET_VAR(data__->CYCLE,)))));
       
  1379 };
       
  1380 
       
  1381 goto __end;
       
  1382 
       
  1383 __end:
       
  1384   return;
       
  1385 } // INTEGRAL_body__() 
       
  1386 
       
  1387 
       
  1388 
       
  1389 
       
  1390 
       
  1391 static void PID_init__(PID *data__, BOOL retain) {
       
  1392   __INIT_VAR(data__->AUTO,__BOOL_LITERAL(FALSE),retain)
       
  1393   __INIT_VAR(data__->PV,0,retain)
       
  1394   __INIT_VAR(data__->SP,0,retain)
       
  1395   __INIT_VAR(data__->X0,0,retain)
       
  1396   __INIT_VAR(data__->KP,0,retain)
       
  1397   __INIT_VAR(data__->TR,0,retain)
       
  1398   __INIT_VAR(data__->TD,0,retain)
       
  1399   __INIT_VAR(data__->CYCLE,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1400   __INIT_VAR(data__->XOUT,0,retain)
       
  1401   __INIT_VAR(data__->ERROR,0,retain)
       
  1402   INTEGRAL_init__(&data__->ITERM,retain);
       
  1403   DERIVATIVE_init__(&data__->DTERM,retain);
       
  1404 }
       
  1405 
       
  1406 // Code part
       
  1407 static void PID_body__(PID *data__) {
       
  1408 // Initialise TEMP variables
       
  1409 
       
  1410 __SET_VAR(data__->,ERROR,,(__GET_VAR(data__->PV,) - __GET_VAR(data__->SP,)));
       
  1411 __SET_VAR(data__->ITERM.,RUN,,__GET_VAR(data__->AUTO,));
       
  1412 __SET_VAR(data__->ITERM.,R1,,!(__GET_VAR(data__->AUTO,)));
       
  1413 __SET_VAR(data__->ITERM.,XIN,,__GET_VAR(data__->ERROR,));
       
  1414 __SET_VAR(data__->ITERM.,X0,,(__GET_VAR(data__->TR,) * (__GET_VAR(data__->X0,) - __GET_VAR(data__->ERROR,))));
       
  1415 __SET_VAR(data__->ITERM.,CYCLE,,__GET_VAR(data__->CYCLE,));
       
  1416 INTEGRAL_body__(&data__->ITERM);
       
  1417 __SET_VAR(data__->DTERM.,RUN,,__GET_VAR(data__->AUTO,));
       
  1418 __SET_VAR(data__->DTERM.,XIN,,__GET_VAR(data__->ERROR,));
       
  1419 __SET_VAR(data__->DTERM.,CYCLE,,__GET_VAR(data__->CYCLE,));
       
  1420 DERIVATIVE_body__(&data__->DTERM);
       
  1421 __SET_VAR(data__->,XOUT,,(__GET_VAR(data__->KP,) * ((__GET_VAR(data__->ERROR,) + (__GET_VAR(data__->ITERM.XOUT,) / __GET_VAR(data__->TR,))) + (__GET_VAR(data__->DTERM.XOUT,) * __GET_VAR(data__->TD,)))));
       
  1422 
       
  1423 goto __end;
       
  1424 
       
  1425 __end:
       
  1426   return;
       
  1427 } // PID_body__() 
       
  1428 
       
  1429 
       
  1430 
       
  1431 
       
  1432 
       
  1433 static void RAMP_init__(RAMP *data__, BOOL retain) {
       
  1434   __INIT_VAR(data__->RUN,__BOOL_LITERAL(FALSE),retain)
       
  1435   __INIT_VAR(data__->X0,0,retain)
       
  1436   __INIT_VAR(data__->X1,0,retain)
       
  1437   __INIT_VAR(data__->TR,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1438   __INIT_VAR(data__->CYCLE,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1439   __INIT_VAR(data__->BUSY,__BOOL_LITERAL(FALSE),retain)
       
  1440   __INIT_VAR(data__->XOUT,0.0,retain)
       
  1441   __INIT_VAR(data__->XI,0,retain)
       
  1442   __INIT_VAR(data__->T,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1443 }
       
  1444 
       
  1445 // Code part
       
  1446 static void RAMP_body__(RAMP *data__) {
       
  1447 // Initialise TEMP variables
       
  1448 
       
  1449 __SET_VAR(data__->,BUSY,,__GET_VAR(data__->RUN,));
       
  1450 if (__GET_VAR(data__->RUN,)) {
       
  1451   if (GE_TIME(2, __GET_VAR(data__->T,), __GET_VAR(data__->TR,))) {
       
  1452     __SET_VAR(data__->,BUSY,,0);
       
  1453     __SET_VAR(data__->,XOUT,,__GET_VAR(data__->X1,));
       
  1454   } else {
       
  1455     __SET_VAR(data__->,XOUT,,(__GET_VAR(data__->XI,) + (((__GET_VAR(data__->X1,) - __GET_VAR(data__->XI,)) * TIME_TO_REAL((TIME)__GET_VAR(data__->T,))) / TIME_TO_REAL((TIME)__GET_VAR(data__->TR,)))));
       
  1456     __SET_VAR(data__->,T,,__time_add(__GET_VAR(data__->T,), __GET_VAR(data__->CYCLE,)));
       
  1457   };
       
  1458 } else {
       
  1459   __SET_VAR(data__->,XOUT,,__GET_VAR(data__->X0,));
       
  1460   __SET_VAR(data__->,XI,,__GET_VAR(data__->X0,));
       
  1461   __SET_VAR(data__->,T,,__time_to_timespec(1, 0, 0, 0, 0, 0));
       
  1462 };
       
  1463 
       
  1464 goto __end;
       
  1465 
       
  1466 __end:
       
  1467   return;
       
  1468 } // RAMP_body__() 
       
  1469 
       
  1470 
       
  1471 
       
  1472 
       
  1473 
       
  1474 static void RTC_init__(RTC *data__, BOOL retain) {
       
  1475   __INIT_VAR(data__->IN,__BOOL_LITERAL(FALSE),retain)
       
  1476   __INIT_VAR(data__->PDT,__dt_to_timespec(0, 0, 0, 1, 1, 1970),retain)
       
  1477   __INIT_VAR(data__->Q,__BOOL_LITERAL(FALSE),retain)
       
  1478   __INIT_VAR(data__->CDT,__dt_to_timespec(0, 0, 0, 1, 1, 1970),retain)
       
  1479   __INIT_VAR(data__->PREV_IN,__BOOL_LITERAL(FALSE),retain)
       
  1480   __INIT_VAR(data__->OFFSET,__time_to_timespec(1, 0, 0, 0, 0, 0),retain)
       
  1481   __INIT_VAR(data__->CURRENT_TIME,__dt_to_timespec(0, 0, 0, 1, 1, 1970),retain)
       
  1482 }
       
  1483 
       
  1484 // Code part
       
  1485 static void RTC_body__(RTC *data__) {
       
  1486 // Initialise TEMP variables
       
  1487 
       
  1488 #define GetFbVar(var,...) __GET_VAR(data__->var,__VA_ARGS__)
       
  1489 #define SetFbVar(var,val,...) __SET_VAR(data__->,var,__VA_ARGS__,val)
       
  1490 __SET_VAR(data__->,CURRENT_TIME,,__CURRENT_TIME)
       
  1491 #undef GetFbVar
       
  1492 #undef SetFbVar
       
  1493 ;
       
  1494 if (__GET_VAR(data__->IN,)) {
       
  1495   if (!(__GET_VAR(data__->PREV_IN,))) {
       
  1496     __SET_VAR(data__->,OFFSET,,__time_sub(__GET_VAR(data__->PDT,), __GET_VAR(data__->CURRENT_TIME,)));
       
  1497   };
       
  1498   __SET_VAR(data__->,CDT,,__time_add(__GET_VAR(data__->CURRENT_TIME,), __GET_VAR(data__->OFFSET,)));
       
  1499 } else {
       
  1500   __SET_VAR(data__->,CDT,,__GET_VAR(data__->CURRENT_TIME,));
       
  1501 };
       
  1502 __SET_VAR(data__->,Q,,__GET_VAR(data__->IN,));
       
  1503 __SET_VAR(data__->,PREV_IN,,__GET_VAR(data__->IN,));
       
  1504 
       
  1505 goto __end;
       
  1506 
       
  1507 __end:
       
  1508   return;
       
  1509 } // RTC_body__() 
       
  1510 
       
  1511 
       
  1512 
       
  1513 
       
  1514 
       
  1515 static void SEMA_init__(SEMA *data__, BOOL retain) {
       
  1516   __INIT_VAR(data__->CLAIM,__BOOL_LITERAL(FALSE),retain)
       
  1517   __INIT_VAR(data__->RELEASE,__BOOL_LITERAL(FALSE),retain)
       
  1518   __INIT_VAR(data__->BUSY,__BOOL_LITERAL(FALSE),retain)
       
  1519   __INIT_VAR(data__->Q_INTERNAL,__BOOL_LITERAL(FALSE),retain)
       
  1520 }
       
  1521 
       
  1522 // Code part
       
  1523 static void SEMA_body__(SEMA *data__) {
       
  1524 // Initialise TEMP variables
       
  1525 
       
  1526 __SET_VAR(data__->,Q_INTERNAL,,(__GET_VAR(data__->CLAIM,) || (__GET_VAR(data__->Q_INTERNAL,) && !(__GET_VAR(data__->RELEASE,)))));
       
  1527 __SET_VAR(data__->,BUSY,,__GET_VAR(data__->Q_INTERNAL,));
       
  1528 
       
  1529 goto __end;
       
  1530 
       
  1531 __end:
       
  1532   return;
       
  1533 } // SEMA_body__() 
       
  1534 
       
  1535 
       
  1536 
       
  1537 
       
  1538 
       
  1539 
       
  1540 
       
  1541 
       
  1542 
       
  1543 
       
  1544 
       
  1545 
       
  1546 
       
  1547 
       
  1548 #endif //_IEC_STD_FB_H