FUNCTION_BLOCK "FB_I-Device_SendCarrier"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      xInTrigger : Bool;   // Trigger zum Senden
      xInAck : Bool;   // Bestätigung von Empfänger
      xInReset : Bool;
   END_VAR

   VAR_IN_OUT 
      stInOutData : "stCarrier";   // Daten zum Senden
      xOutReq : Bool;   // Neue Sendung für Empfänger
   END_VAR

   VAR 
      xTriggerOld : Bool;   // Flanke
      xBusy : Bool;   // Sendung aktiv
   END_VAR

   VAR_TEMP 
      stDataEmpty : "stCarrier";
   END_VAR


BEGIN
	IF #xInReset THEN
	    #xTriggerOld := FALSE;
	    #xBusy := FALSE;
	    #xOutReq := FALSE;
	    #stInOutData := #stDataEmpty;
	END_IF;
	
	IF #xInTrigger AND NOT #xTriggerOld THEN //Startsignal
	   // #xOutReq := TRUE; //Neue Sendung starten
	    #xBusy := TRUE; // Sendung aktiv
	END_IF;
	
	IF #xBusy THEN //Sendung aktiv
	    IF #stInOutData.nBarcode > 0 THEN
	        #xOutReq := TRUE;
	    END_IF;
	        
	     IF #xInAck THEN //Handshake von Empfänger 
	        #stInOutData := #stDataEmpty; //leeren
	        #xOutReq := FALSE; //Neue Sendung rücksetzen
	    END_IF;
	    
	    IF (NOT #xOutReq) AND (NOT #xInAck) AND #stInOutData.nBarcode > 0 THEN //Handshake fertig
	        #xBusy := FALSE; //Fertig
	    END_IF;
	END_IF;
	
	#xTriggerOld := #xInTrigger; //Flanke
	
END_FUNCTION_BLOCK

