[r802]: / trunk / mqttsparkplug / mqttsparkplug-example / Device_1 / Plc Logic / Application2_1 / Edge2 / svnobj  Maximize  Restore  History

Download this file

98 lines (95 with data), 27.0 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
PROGRAM Edge2
VAR
    Init                : BOOL := TRUE;
    
    EoNConnectionState  : Sparkplug.SparkplugSessionStateType;
    MyDevice1           : Sparkplug.FB_Device;
    MyDevice2           : Sparkplug.FB_Device;
    MyDevice3           : Sparkplug.FB_Device;
    PluggedIntoEoN      : BOOL;
    MyDevice2State      : Sparkplug.SparkplugSessionStateType;
    PlugIt              : BOOL := TRUE;
    ServerUrl           : STRING;
    KeepAlive           : UINT;
    Username            : WSTRING := "";
    UseTLS              : BOOL := FALSE;
    hCert               : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE; // Handle to the client certificate (optional) only used if UseTLS is TRUE
    NodeName            : WSTRING := "EdgeOfNetworkNode2";
    publishPeriod       : UINT    := 500; //  milliseconds interval so 1000 = 1s 
    //Encapsulates all the data neccessaray to handle/check  encrypted tcp connections
    //Static initialization, as shown in the following code snippet;
    //VAR
    //    myTLSContext : NBS.TLSContext := (
    //        sUseCaseName:='NBSTest',
    //        ciCertInfo:=ciCertInfo,
    //    );
    commonName : STRING  := 'MyRasPi';
    ciCertInfo : Sparkplug.MQTT.NBS.CERT_INFO := (psInfo := ADR( commonName ),
                                                   udiSize := TO_UDINT(LEN( commonName )));
    sHostname : Sparkplug.MQTT.NBS.HOSTNAME;
                                                   
    myTLS: Sparkplug.MQTT.NBS.TLSContext := (sUseCaseName := sUseCaseName, 
                                              ePurpose := ePurpose, 
                                              sHostname := sHostname, 
                                              udiVerificationMode := udiVerificationMode);                                             
    GenerateDataPeriod  : TIME;
    GenerateDataTimer   : TON;
    Str                 : ChangingString;
    //These are specific for registering certificates at test.mqtt.org
    RegisterCSR                    : Web_Client.WebClient;
    httpPost                       : WSTRING(2048);
    wsCSRorClientCertOut           : WSTRING(2048);
	TON_DelayStartup               : TON := (PT := T#5S);
Scenario();
GenerateDataTimer( IN := NOT GenerateDataTimer.Q,
                   PT := GenerateDataPeriod,
                   ET => GenerateDataElapsed );
IF GenerateDataTimer.Q THEN
    GenerateEoNData();
    GenerateDeviceData();
END_IF
TON_DelayStartup(IN:= TRUE);
         PrimaryHostID          := "CODESYSPrimaryHost", //"Sparky", , // Please change this to your own PrimaryHostID!
         KeepAlive              := KeepAlive,
         CleanSession           := CleanSession,
         Username               := Username,
         Password               := Password,
         UseTLS                 := UseTLS,
         hCert                  := hCert,
         GroupId                := GroupId,
         NodeName               := NodeName,
         publishPeriod          := publishPeriod,
//         ITLSContextProvider    := ItfTLSContext, // We provide a reference to an instance of TLSContext
         IASyncPropertyProvider := ,
         arSparkplugDateTime    := SparkPlugBSimpleTypes.arSparkplugDateTime_EoN,
         arSparkplugDouble      := SparkPlugBSimpleTypes.arSparkplugDouble_EoN,
         arSparkplugInt16       := SparkPlugBSimpleTypes.arSparkplugInt16_EoN,
         arSparkplugInt64       := SparkPlugBSimpleTypes.arSparkplugInt64_EoN,
         arSparkplugUInt16      := SparkPlugBSimpleTypes.arSparkplugUInt16_EoN,
         arSparkplugUInt64      := SparkPlugBSimpleTypes.arSparkplugUInt64_EoN,
         arSparkplugText        := SparkPlugBSimpleTypes.arSparkplugText_EoN,
    //It generates a CSR and sends it to test.mosquitto.org to be signed
           arSparkplugBoolean  := SparkPlugBSimpleTypes.arSparkplugBoolean_D1,
           arSparkplugFloat    := SparkPlugBSimpleTypes.arSparkplugFloat_D1,
           arSparkplugInt8     := SparkPlugBSimpleTypes.arSparkplugInt8_D1,
           arSparkplugInt32    := SparkPlugBSimpleTypes.arSparkplugInt32_D1,
           arSparkplugUInt8    := SparkPlugBSimpleTypes.arSparkplugUInt8_D1,
           arSparkplugUInt32   := SparkPlugBSimpleTypes.arSparkplugUInt32_D1,
           arSparkplugUUID     := SparkPlugBSimpleTypes.arSparkplugUUID_D1,
           arSparkplugString   := SparkPlugBSimpleTypes.arSparkplugString_D1 );
MyDevice2( DeviceName          := "SomeDevice002",
           DeviceHealthy       := Device2Healthy,
           SessionState        => MyDevice2State,
           arSparkplugDateTime := SparkPlugBSimpleTypes.arSparkplugDateTime_D2,
           arSparkplugDouble   := SparkPlugBSimpleTypes.arSparkplugDouble_D2,
           arSparkplugInt16    := SparkPlugBSimpleTypes.arSparkplugInt16_D2,
           arSparkplugInt64    := SparkPlugBSimpleTypes.arSparkplugInt64_D2,
           arSparkplugUInt16   := SparkPlugBSimpleTypes.arSparkplugUInt16_D2,
           arSparkplugUInt64   := SparkPlugBSimpleTypes.arSparkplugUInt64_D2,
           arSparkplugText     := SparkPlugBSimpleTypes.arSparkplugText_D2,
           arSparkplugBoolean  := SparkPlugBSimpleTypes.arSparkplugBoolean_D3,
           arSparkplugFloat    := SparkPlugBSimpleTypes.arSparkplugFloat_D3,
           arSparkplugInt8     := SparkPlugBSimpleTypes.arSparkplugInt8_D3,
           arSparkplugInt32    := SparkPlugBSimpleTypes.arSparkplugInt32_D3,
           arSparkplugUInt8    := SparkPlugBSimpleTypes.arSparkplugUInt8_D3,
           arSparkplugUInt32   := SparkPlugBSimpleTypes.arSparkplugUInt32_D3,
           arSparkplugUUID     := SparkPlugBSimpleTypes.arSparkplugUUID_D3,
           arSparkplugString   := SparkPlugBSimpleTypes.arSparkplugString_D3 );