/*2013-01-18T16:21:58-01:00*/

/********************************************************************
 * tete_aspirante.c
 * 
 * generated by: plcgen 2.3.253
 ********************************************************************/

#include "cb_comp.h"
#include "iec_1131.h"
#include "cb_products_iec.h"

#include "tete_aspirante.h"



/**************************** Variables *****************************/

CB_Index tete_aspirante__num = 0;
CB_Mem_Bool *tete_aspirante_miseSousVide;
CB_Mem_Float *tete_aspirante_incPositionX;
CB_Mem_Float *tete_aspirante_incPositionY;
CB_Mem_Float *tete_aspirante_incPositionZ;
CB_Mem_Bool *tete_aspirante_presence;
CB_Mem_Int *tete_aspirante_status_act_prod;
CB_Mem_Float *tete_aspirante_m11;
CB_Mem_Float *tete_aspirante_m12;
CB_Mem_Float *tete_aspirante_m13;
CB_Mem_Float *tete_aspirante_m14;
CB_Mem_Float *tete_aspirante_m21;
CB_Mem_Float *tete_aspirante_m22;
CB_Mem_Float *tete_aspirante_m23;
CB_Mem_Float *tete_aspirante_m24;
CB_Mem_Float *tete_aspirante_m31;
CB_Mem_Float *tete_aspirante_m32;
CB_Mem_Float *tete_aspirante_m33;
CB_Mem_Float *tete_aspirante_m34;
CB_Mem_Float *tete_aspirante_m41;
CB_Mem_Float *tete_aspirante_m42;
CB_Mem_Float *tete_aspirante_m43;
CB_Mem_Float *tete_aspirante_m44;
CB_Mem_Bool *tete_aspirante_presenceProduit;
CB_Mem_Bool *tete_aspirante_produitAspire;
CB_Mem_Float *tete_aspirante_incrementPositionX;
CB_Mem_Float *tete_aspirante_incrementPositionY;
CB_Mem_Float *tete_aspirante_incrementPositionZ;
CB_Mem_Bool *tete_aspirante_logPassage;
CB_Mem_Bool *tete_aspirante_d_passage;
CB_Mem_Bool *tete_aspirante_v_d_passage;

/**************************** Variables *****************************/

#define miseSousVide (tete_aspirante_miseSousVide->CB_current_value)
#define incPositionX (tete_aspirante_incPositionX->CB_current_value)
#define incPositionY (tete_aspirante_incPositionY->CB_current_value)
#define incPositionZ (tete_aspirante_incPositionZ->CB_current_value)
#define presence (tete_aspirante_presence->CB_current_value)
#define status_act_prod (tete_aspirante_status_act_prod->CB_current_value)
#define m11 (tete_aspirante_m11->CB_current_value)
#define m12 (tete_aspirante_m12->CB_current_value)
#define m13 (tete_aspirante_m13->CB_current_value)
#define m14 (tete_aspirante_m14->CB_current_value)
#define m21 (tete_aspirante_m21->CB_current_value)
#define m22 (tete_aspirante_m22->CB_current_value)
#define m23 (tete_aspirante_m23->CB_current_value)
#define m24 (tete_aspirante_m24->CB_current_value)
#define m31 (tete_aspirante_m31->CB_current_value)
#define m32 (tete_aspirante_m32->CB_current_value)
#define m33 (tete_aspirante_m33->CB_current_value)
#define m34 (tete_aspirante_m34->CB_current_value)
#define m41 (tete_aspirante_m41->CB_current_value)
#define m42 (tete_aspirante_m42->CB_current_value)
#define m43 (tete_aspirante_m43->CB_current_value)
#define m44 (tete_aspirante_m44->CB_current_value)
#define presenceProduit (tete_aspirante_presenceProduit->CB_current_value)
#define produitAspire (tete_aspirante_produitAspire->CB_current_value)
#define incrementPositionX (tete_aspirante_incrementPositionX->CB_current_value)
#define incrementPositionY (tete_aspirante_incrementPositionY->CB_current_value)
#define incrementPositionZ (tete_aspirante_incrementPositionZ->CB_current_value)
#define logPassage (tete_aspirante_logPassage->CB_current_value)
#define d_passage (tete_aspirante_d_passage->CB_current_value)
#define v_d_passage (tete_aspirante_v_d_passage->CB_current_value)


/************************ Components offsets ************************/


/********************* Initialization function **********************/

int _bibliotheque_epo__tete_aspirante_init(void)
{
	(self.Float+0)->CB_current_value = 1.0; /*m11*/
	(self.Float+5)->CB_current_value = 1.0; /*m22*/
	(self.Float+10)->CB_current_value = 1.0; /*m33*/
	(self.Float+15)->CB_current_value = 1.0; /*m44*/
	(self.Bool+2)->CB_current_value = 1; /*logPassage*/
	self.Bool+=5;
	self.Int+=1;
	self.Float+=19;


	return 0;
}


/************************ Behavior function *************************/

int bibliotheque_epo__tete_aspirante(void)
{
	if (exec_term_node(self_num)) {

		/*********************** Internals variables ************************/

		tete_aspirante_status_act_prod = self.Int+0;
		tete_aspirante_m11 = self.Float+0;
		tete_aspirante_m12 = self.Float+1;
		tete_aspirante_m13 = self.Float+2;
		tete_aspirante_m14 = self.Float+3;
		tete_aspirante_m21 = self.Float+4;
		tete_aspirante_m22 = self.Float+5;
		tete_aspirante_m23 = self.Float+6;
		tete_aspirante_m24 = self.Float+7;
		tete_aspirante_m31 = self.Float+8;
		tete_aspirante_m32 = self.Float+9;
		tete_aspirante_m33 = self.Float+10;
		tete_aspirante_m34 = self.Float+11;
		tete_aspirante_m41 = self.Float+12;
		tete_aspirante_m42 = self.Float+13;
		tete_aspirante_m43 = self.Float+14;
		tete_aspirante_m44 = self.Float+15;
		tete_aspirante_presenceProduit = self.Bool+0;
		tete_aspirante_produitAspire = self.Bool+1;
		tete_aspirante_incrementPositionX = self.Float+16;
		tete_aspirante_incrementPositionY = self.Float+17;
		tete_aspirante_incrementPositionZ = self.Float+18;
		tete_aspirante_logPassage = self.Bool+2;
		tete_aspirante_d_passage = self.Bool+3;
		tete_aspirante_v_d_passage = self.Bool+4;

		/********************* Pre-conditions execution *********************/

		/*no Pre-conditions*/

		/************************ Actor Myself init *************************/

		setMyselfFor(self_num);

		/************************ Behavior execution ************************/

		{
			/* -------------------------------------------------------------------------------------------------	*/
			/* Modèle de Comportement Opératif											*/
			/* Catégorie Acteurs													*/
			/* Techniques Nouvelles d'Informatique										*/
			/* Date de révision : Octobre 2002											*/
			/* -------------------------------------------------------------------------------------------------	*/
			/* Ce module représente une Tete Aspirante									*/
			/* -------------------------------------------------------------------------------------------------	*/

			/* 	Déplacement de laTete Aspirante 	*/
			if ((incPositionX != 0.0) || (incPositionY != 0.0) || (incPositionZ != 0.0))
				moveBy(myself, incPositionX, incPositionY, incPositionZ);


			/*	Capteur Prise en Cours	*/
			if (d_passage ) presence = v_d_passage;
			else
				presence=(presenceProduit ^ ! logPassage);


			/*	Echange des informations produits 	*/
			produitAspire=miseSousVide;
			presenceProduit=0;

			/* => infos de déplacement */
			incrementPositionX=incPositionX;
			incrementPositionY=incPositionY;
			incrementPositionZ=incPositionZ;
		}

		CB_post_bool(tete_aspirante_presence);

		/******************** Post-conditions execution *********************/

		/*no Post-conditions*/
	}

	/*************************** self update ****************************/

	self.Bool += 5;
	self.Int += 1;
	self.Float += 19;

	return 0;
}

