Ich hatte heute gleich zwei Fahrzeuge mit dem selben Kennzeichen vor mir. Was hat es damit auf sich?
WP_20170112_09_46_37_Pro.jpg
WP_20170112_09_46_37_Pro.jpg
FUNCTION_BLOCK TCPServer_FB
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
tcpServ: TCP_Server;
receivedData : ARRAY [0..MAX_RECEIVE_TCP_SERVER] OF BYTE;
transmitData : ARRAY [0..MAX_SEND_TCP_SERVER] OF BYTE;
startSend : BOOL;
transmitCount : WORD;
receiveCount : DINT;
dataWrite: STRING;
index: DINT;
result : BOOL;
END_VAR
tcpServ(xEnable := TRUE,
wPortNumber := 2455,
ptSendData := ADR(transmitData),
diSendCount := transmitCount,
xStartSend := startSend,
aReceiveBuffer := receivedData,
diReceiveCount := receiveCount
);
IF tcpServ.diError > 1 THEN
dataWrite := 'Error';
dataWrite := CONCAT(dataWrite, DINT_TO_STRING(tcpServ.diError ));
dataWrite := CONCAT(dataWrite,ASCIIBYTE_TO_STRING(13)); (*CR*)
dataWrite := CONCAT(dataWrite,ASCIIBYTE_TO_STRING(10)); (*LF*)
CSV_writeData('S:\Logging\EthernetError.csv', LEN(dataWrite), ADR(dataWrite));
END_IF
IF receiveCount >= 10 AND tcpServ.xClientConnected = TRUE THEN
(*At least 6 bytes need to be received (minimum of Lemnatec Communication Protocol*)
dataWrite := 'Received Data: ' ;
dataWrite := DINT_TO_STRING(receiveCount);
dataWrite := CONCAT(dataWrite,ASCIIBYTE_TO_STRING(13)); (*CR*)
dataWrite := CONCAT(dataWrite,ASCIIBYTE_TO_STRING(10)); (*LF*)
CSV_writeData('S:\Logging\EthernetLog.csv', LEN(dataWrite), ADR(dataWrite));
IF receivedData[0] = cStartHeader AND receivedData[receiveCount-2] = cEndMessage THEN
(*Valid message header, process data*)
result := processCommand( (receivedData[1] + receivedData[2]*256), receivedData[3], (receivedData[6] + receivedData[7]*256), ADR(receivedData[8]) );
processResponse( (receivedData[1] + receivedData[2]*256), receivedData[3], ADR(transmitData[0]), ADR(transmitCount), BOOL_TO_BYTE(result));
startSend := TRUE;
END_IF
END_IF
IF receiveCount > 0 THEN
(*Clear receive buffer*)
dataWrite := 'Buffer clear' ;
dataWrite := CONCAT(dataWrite,ASCIIBYTE_TO_STRING(13)); (*CR*)
dataWrite := CONCAT(dataWrite,ASCIIBYTE_TO_STRING(10)); (*LF*)
CSV_writeData('S:\Logging\EthernetLog.csv', LEN(dataWrite), ADR(dataWrite));
FOR index := 0 TO receiveCount BY 1 DO
receivedData[index] := 0;
END_FOR
receiveCount := 0;
END_IF
PROGRAM PLC_PRGVAR
test : TCPServer_FB;
END_VAR
test();