Input: 

sTopic : STRING(255);
xtrigger : BOOL;

Output:

sSubscribeData : STRING(255);
xError : BOOL;

Type: Functionblock

Responsible: Magnus


MQTT Functionblock that subscribes to topics from the MQTT-Server running at a laptop. This makes near realtime updates from external sources available at the Wago-PLC. 

Code Overview
FUNCTION_BLOCK MQTTSubscriber
VAR_INPUT
	sTopic : STRING(255);
    xtrigger : BOOL;
END_VAR
VAR_OUTPUT
	sSubscribeData : STRING(255);
	xError : BOOL;
END_VAR
VAR
	
	eQualityOfService : eQualityOfService := 1;
	mqttSub : wagoappcloud.FbSubscribeMQTT_2(econnection := econnectionid.Connection1);
	dwSize : DWORD;
    aData : ARRAY[0..100] OF BYTE;
    xRetain : BOOL := FALSE;
    
    xBusy : BOOL := FALSE;
	xSubscribe : BOOL;
	xDataReceived : BOOL;
	// First split x from the rest, then y from z.
	xString : STRING(255);
	tempString : STRING(255);
	yString : STRING(255);
	zString : STRING(255);
	firstString : STRING(255);
	remainingString : STRING(255);
	
	count : INT := 0;
	myMessages : ARRAY[0..50] OF ARRAY [0..2] OF LREAL;
	myString : STRING;
	
END_VAR

mqttSub(
	xSubscribe:= xSubscribe, 
	sTopic:= sTopic, 
	eQoS:= eQualityOfService, 
	aPayloadData:= aData, 
	xBusy=>xBusy , 
	xError=> xError,  
	xDataReceived=> xDataReceived, 
	dwRxNBytes=> dwSize, 
);

wagosysplainmem.MemCopy(pDest:=ADR(sSubscribedata), pSource:=ADR(aData), udiSize:=dwSize);


  • No labels