/* ********************************************************* */ component message; pin in bit info_boite ; variable float datatimer0 = 0; variable int dataold_in0 = 0; variable int out0 ; pin in bit info_estop ; variable float datatimer1 = 0; variable int dataold_in1 = 0; variable int out1 ; pin in bit info_limite ; variable float datatimer2 = 0; variable int dataold_in2 = 0; variable int out2 ; pin in bit info_deflub ; variable float datatimer3 = 0; variable int dataold_in3 = 0; variable int out3 ; pin in bit info_disj ; variable float datatimer4 = 0; variable int dataold_in4 = 0; variable int out4 ; pin in bit info_i2t ; variable float datatimer5 = 0; variable int dataold_in5 = 0; variable int out5 ; pin in bit info_axe4 ; variable float datatimer6 = 0; variable int dataold_in6 = 0; variable int out6 ; pin in bit info_thaux ; variable float datatimer7 = 0; variable int dataold_in7 = 0; variable int out7 ; pin in bit info_alim_avance ; variable float datatimer8 = 0; variable int dataold_in8 = 0; variable int out8 ; pin in bit info_ready_avance ; variable float datatimer9 = 0; variable int dataold_in9 = 0; variable int out9 ; pin in bit info_defvdf ; variable float datatimer10 = 0; variable int dataold_in10 = 0; variable int out10 ; pin in bit info_onlub ; variable float datatimer11 = 0; variable int dataold_in11 = 0; variable int out11 ; pin in bit info_essai ; variable float datatimer12 = 0; variable int dataold_in12 = 0; variable int out12 ; pin in float tempo ; /* setp message.0.tempo 2e-4 */ function _; license "GPL"; ;; FUNCTION(_) { int old0,old1,old2,old3,old4,old5,old6,old7,old8,old9,old10,old11,old12, trigger0,trigger1,trigger2,trigger3,trigger4,trigger5,trigger6,trigger7,trigger8,trigger9,trigger10,trigger11,trigger12 ; /* monostable non-retrigerable => 1 pulse unique, meme si new reste à 1 */ /* info_boite info_estop info_limite info_deflub info_disj info_i2t info_axe4 info_thaux info_alim_avance info_ready_avance info_defvdf info_onlub info_essai */ old0 = dataold_in0; trigger0 = 0; /* detect edges */ if ( info_boite && (!old0) ) trigger0 = 1; dataold_in0 = info_boite; /* is a pulse already running? */ if ( datatimer0 > 0.0 ) { datatimer0 -= fperiod; } /* decrement timer */ if ( datatimer0 < 0.0 ) datatimer0 = 0.0; if ( trigger0 ) datatimer0 = tempo; /* (re)start pulse */ if ( datatimer0 > 0.0 ) out0 = 1; /* drive outputs */ else out0 = 0; old1 = dataold_in1; trigger1 = 0; if ( info_estop && (!old1) ) trigger1 = 1; dataold_in1 = info_estop; if ( datatimer1 > 0.0 ) { datatimer1 -= fperiod; } if ( datatimer1 < 0.0 ) datatimer1 = 0.0; if ( trigger1 ) datatimer1 = tempo; if ( datatimer1 > 0.0 ) out1 = 1; else out1 = 0; old2 = dataold_in2; trigger2 = 0; if ( info_limite && (!old2) ) trigger2 = 1; dataold_in2 = info_limite; if ( datatimer2 > 0.0 ) { datatimer2 -= fperiod; } if ( datatimer2 < 0.0 ) datatimer2 = 0.0; if ( trigger2 ) datatimer2 = tempo; if ( datatimer2 > 0.0 ) out2 = 1; else out2 = 0; old3 = dataold_in3; trigger3 = 0; if ( info_deflub && (!old3) ) trigger3 = 1; dataold_in3 = info_deflub; if ( datatimer3 > 0.0 ) { datatimer3 -= fperiod; } if ( datatimer3 < 0.0 ) datatimer3 = 0.0; if ( trigger3 ) datatimer3 = tempo; if ( datatimer3 > 0.0 ) out3 = 1; else out3 = 0; old4 = dataold_in4; trigger4 = 0; if ( info_disj && (!old4) ) trigger4 = 1; dataold_in4 = info_disj; if ( datatimer4 > 0.0 ) { datatimer4 -= fperiod; } if ( datatimer4 < 0.0 ) datatimer4 = 0.0; if ( trigger4 ) datatimer4 = tempo; if ( datatimer4 > 0.0 ) out4 = 1; else out4 = 0; old5 = dataold_in5; trigger5 = 0; if ( info_i2t && (!old5) ) trigger5 = 1; dataold_in5 = info_i2t; if ( datatimer5 > 0.0 ) { datatimer5 -= fperiod; } if ( datatimer5 < 0.0 ) datatimer5 = 0.0; if ( trigger5 ) datatimer5 = tempo; if ( datatimer5 > 0.0 ) out5 = 1; else out5 = 0; old6 = dataold_in6; trigger6 = 0; if ( info_axe4 && (!old6) ) trigger6 = 1; dataold_in6 = info_axe4; if ( datatimer6 > 0.0 ) { datatimer6 -= fperiod; } if ( datatimer6 < 0.0 ) datatimer6 = 0.0; if ( trigger6 ) datatimer6 = tempo; if ( datatimer6 > 0.0 ) out6 = 1; else out6 = 0; old7 = dataold_in7; trigger7 = 0; if ( info_thaux && (!old7) ) trigger7 = 1; dataold_in7 = info_thaux; if ( datatimer7 > 0.0 ) { datatimer7 -= fperiod; } if ( datatimer7 < 0.0 ) datatimer7 = 0.0; if ( trigger7 ) datatimer7 = tempo; if ( datatimer7 > 0.0 ) out7 = 1; else out7 = 0; old8 = dataold_in8; trigger8 = 0; if ( info_alim_avance && (!old8) ) trigger8 = 1; dataold_in8 = info_alim_avance; if ( datatimer8 > 0.0 ) { datatimer8 -= fperiod; } if ( datatimer8 < 0.0 ) datatimer8 = 0.0; if ( trigger8 ) datatimer8 = tempo; if ( datatimer8 > 0.0 ) out8 = 1; else out8 = 0; old9 = dataold_in9; trigger9 = 0; if ( info_ready_avance && (!old9) ) trigger9 = 1; dataold_in9 = info_ready_avance; if ( datatimer9 > 0.0 ) { datatimer9 -= fperiod; } if ( datatimer9 < 0.0 ) datatimer9 = 0.0; if ( trigger9 ) datatimer9 = tempo; if ( datatimer9 > 0.0 ) out9 = 1; else out9 = 0; old10 = dataold_in10; trigger10 = 0; if ( info_defvdf && (!old10) ) trigger10 = 1; dataold_in10 = info_defvdf; if ( datatimer10 > 0.0 ) { datatimer10 -= fperiod; } if ( datatimer10 < 0.0 ) datatimer10 = 0.0; if ( trigger10 ) datatimer10 = tempo; if ( datatimer10 > 0.0 ) out10 = 1; else out10 = 0; old11 = dataold_in11; trigger11 = 0; if ( info_onlub && (!old11) ) trigger11 = 1; dataold_in11 = info_onlub; if ( datatimer11 > 0.0 ) { datatimer11 -= fperiod; } if ( datatimer11 < 0.0 ) datatimer11 = 0.0; if ( trigger11 ) datatimer11 = tempo; if ( datatimer11 > 0.0 ) out11 = 1; else out11 = 0; old12 = dataold_in12; trigger12 = 0; if ( info_essai && (!old12) ) trigger12 = 1; dataold_in12 = info_essai; if ( datatimer12 > 0.0 ) { datatimer12 -= fperiod; } if ( datatimer12 < 0.0 ) datatimer12 = 0.0; if ( trigger12 ) datatimer12 = tempo; if ( datatimer12 > 0.0 ) out12 = 1; else out12 = 0; if (out0) rtapi_print_msg (RTAPI_MSG_ERR, "CHANGEMENT RAPPORT BOITE IMPOSSIBLE"); if (out1) rtapi_print_msg (RTAPI_MSG_ERR, "ARRET D'URGENCE FILAIRE ACTIONNE"); if (out2) rtapi_print_msg (RTAPI_MSG_ERR, "GRAVE FRANCHISSEMENT D'UNE LIMITE D'AXE"); if (out3) rtapi_print_msg (RTAPI_MSG_ERR, "DEFAUT GRAISSAGE CENTRALISE"); if (out4) rtapi_print_msg (RTAPI_MSG_ERR, "DISJONCTION POMPE HYDRAULIQUE OU REFRIGERANT"); if (out5) rtapi_print_msg (RTAPI_MSG_ERR, "SURCHARGE I2T ENTRAINEMENT AVANCE"); if (out6) rtapi_print_msg (RTAPI_MSG_ERR, "SURCHARGE ENTRAINEMENT AXE 4"); if (out7) rtapi_print_msg (RTAPI_MSG_ERR, "SURCHAUFFE STABILISATEUR ou ENTRAINEMENT AVANCE ou MOTEUR BROCHE"); if (out8) rtapi_print_msg (RTAPI_MSG_ERR, "ENTRAINEMENT AVANCE NON ALIMENTE"); if (out9) rtapi_print_msg (RTAPI_MSG_ERR, "ENTRAINEMENT AVANCE NON PRET"); if (out10) rtapi_print_msg (RTAPI_MSG_ERR, "VDF NON ALIMENTE OU EN SECURITE"); if (out11) rtapi_print_msg (RTAPI_MSG_ERR, "CYCLE GRAISSAGE CENTRALISE"); if (out12) rtapi_print_msg (RTAPI_MSG_ERR, "ESSAI MESSAGE"); } /* ********************************************************* */