Senden und Empfangen

Daten senden

Im beiliegenden Beispielprogramm werden Daten über die serielle Schnittstelle im Sekundentakt gesendet und das Programm reagiert sofort auf ein eintreffendes Zeichen. 

Mögliche Fehler

Während eines SPS-Zyklus dürfen mehrere Zeichen gesendet werden, solange sie vom Sendepuffer aufgenommen werden können. Bei einem Überlauf des Sendepuffers wird der Busy-Ausgang des Sendebausteins nach dem Aufruf TRUE bleiben. Das letzte Zeichen wurde dann nicht gesendet und der Baustein muß im nächsten SPS-Zyklus mit unveränderten Eingangsdaten erneut aufgerufen werden.

Der Füllstand eines Puffers kann jederzeit ermittelt werden (z. B. TxBuffer.Count bzw. TxBuffer.FreeByte). 

PROGRAM MAIN
VAR
    ComControl: KL6ControlBC;
    Timer: TON;
    Receive: ReceiveByte;
    Send: SendByte;
    Rb: BYTE;
    Sb: BYTE;
END_VAR
ComControl( CoMin:=KL6InData,
            CoMout:=KL6OutData,
            TxBuffer:=TxBuffer,
            RxBuffer:=RxBuffer );

Timer(IN:=TRUE,PT:=T#1S );
IF Timer.Q THEN
    IF Sb=0 THEN
        Sb:=64;
    END IF
    Sb:=Sb+1;
    IF Sb>90 THEN
        Sb:=64;
    END IF
    Send(SendByte:=Sb, TxBuffer:=TxBuffer);
    Timer(IN:=FALSE);
END IF