Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Input:

(NEEDS TO BE UPDATED WHEN I HAVE THE FUNCTION IN FRONT OF ME)

 

sTopic : STRING(255);
xtrigger : BOOL;

Output:

sSubscribeData : STRING(255);
xError : BOOL
v : ARRAY [0..2] OF LREAL;

Output:

norm : LREAL;
Info

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 Block
languageactionscript3
titleCode Overview
linenumberstrue
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);