Herunterladen Inhalt Inhalt Diese Seite drucken

Beckhoff EL600 Serie Dokumentation Seite 146

Serielle schnittstellenklemmen
Inhaltsverzeichnis

Werbung

Inbetriebnahme
Ausführungsteil:
(*==================================================================
Receive data
*)
CASE nState OF
0:
Timer(IN:=TRUE, PT:=T#0.5S); // Master Requests: Periodische Anfragen
IF Timer.Q THEN
// Setze ID ein:
aDataTX[0] := F_ADD_LIN_NODE_PARITY(bNodeId_SL1, bReqLen_SL1);
LastReceivedDataBytes[0] := aDataTX[0];
// Sende Anfrage an Slave 1 (get Data)
Send(pSendData:= ADR(aDataTX), Length:= 1,
TXbuffer:= TxBuffer_MASTER,
Busy => SendBusy, Error => SendErrorID);
Timer(IN:=FALSE); (* reset timer *)
IF NOT SendBusy THEN // Warten bis Senden abgeschlossen ist
nState := nState + 1;
END_IF
END_IF
1:
// Verzögerungszeit aus 1/Tbaud * Anzahl Bytes * (8 Datenbits + 2 Bit:start-Stop) * 1000ms
T_ReceiveDelay := REAL_TO_TIME((1/DINT_TO_REAL(nSetBaudrate)) * 33 * 1000); // .. für nur 1 Byte
Timer(IN:=TRUE, PT:=T_ReceiveDelay);
IF Timer.Q THEN
// Warten bis ID gesendet wurde
nState := nState + 1;
Timer(IN:=FALSE); (* reset timer *)
END_IF
2:
Receive(
pReceiveData:= ADR(aDataRX),
SizeReceiveData:= (nDataLen + 1),
RXbuffer:= RxBuffer_MASTER,
Timeout:= T#1S,
DataReceived=> DataReceived,
busy=> ReceiveBusy,
Error=> ReceiveErrorID,
RxTimeout=> ReceiveTimeout );
IF DataReceived THEN
//DataReceived := FALSE;
ReceiveCounter := ReceiveCounter + 1;
IF NOT ReceiveBusy THEN
// Vergleiche Checksumme
nRxChecksum := aDataRX[nDataLen];
nCalcChecksum := F_CALC_LIN_CHKSUM(pData := ADR(aDataRX), nLen := nDataLen);
IF(nRxChecksum = nCalcChecksum) THEN
//Antwort empfangen - lösche Datenpuffer:
memset(ADR(LastReceivedDataBytes[1]), 0, (SIZEOF(aDataRX)-1));
// Übernehme Daten wenn Checksumme OK
memcpy(ADR(LastReceivedDataBytes[1]), ADR(aDataRX), (nDataLen +1));
END_IF
nState := 0;
END_IF
ELSE
Timer(IN:=TRUE, PT:=T#0.1S); // Receive-Timeout 100 ms: Keine Daten
IF Timer.Q THEN
nState := 0;
END_IF
END_IF
END_CASE
(*==================================================================
*)
146
Version: 4.7
EL600x, EL602x

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis