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