/*2013-01-18T16:22:32-01:00*/

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

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

#include "capteur_debit.h"



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

CB_Index capteur_debit__num = 0;
CB_Mem_Float *capteur_debit_debitEntree;
CB_Mem_Float *capteur_debit_debitSortie;
CB_Mem_Float *capteur_debit_unite;
CB_Mem_Bool *capteur_debit_debitEnHeure;
CB_Mem_Bool *capteur_debit_debitEnMinute;
CB_Mem_Bool *capteur_debit_d_debit;
CB_Mem_Float *capteur_debit_v_d_debit;

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

#define debitEntree (capteur_debit_debitEntree->CB_current_value)
#define debitSortie (capteur_debit_debitSortie->CB_current_value)
#define unite (capteur_debit_unite->CB_current_value)
#define debitEnHeure (capteur_debit_debitEnHeure->CB_current_value)
#define debitEnMinute (capteur_debit_debitEnMinute->CB_current_value)
#define d_debit (capteur_debit_d_debit->CB_current_value)
#define v_d_debit (capteur_debit_v_d_debit->CB_current_value)


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


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

int _bibliotheque_epo__capteur_debit_init(void)
{
	(self.Bool+0)->CB_current_value = 1; /*debitEnHeure*/
	self.Bool+=3;
	self.Float+=2;


	return 0;
}


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

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

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

		capteur_debit_unite = self.Float+0;
		capteur_debit_debitEnHeure = self.Bool+0;
		capteur_debit_debitEnMinute = self.Bool+1;
		capteur_debit_d_debit = self.Bool+2;
		capteur_debit_v_d_debit = self.Float+1;

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

		/*no Pre-conditions*/

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

		{
			/* -----------------------------------------------------------------	*/
			/* Type : Modèle de Comportement Opératif					*/
			/* Catégorie :  Preactionneurs - batch					*/
			/* Auteur : Techniques Nouvelles d'Informatique				*/
			/* Date de révision : Octobre 2002						*/
			/* -----------------------------------------------------------------	*/
			/* mesure du debit en litre / min (à utiliser				*/
			/* avec le module calculdebit)						*/
			/* -----------------------------------------------------------------	*/

			if (debitEnHeure) unite = 3600.0;
			else if (debitEnMinute) unite = 60.0;
				else unite = 1.0;
			if (d_debit)
				debitSortie = v_d_debit;
			else
				debitSortie = (debitEntree / CLOCK_PERIOD * 1000000)  * unite;


		}

		CB_post_float(capteur_debit_debitSortie);

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

		/*no Post-conditions*/
	}

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

	self.Bool += 3;
	self.Float += 2;

	return 0;
}

