Diff of /project/sparkplug™_mqtt_edge_and_host-stack_b9741afd/function_blocks_8ad6e219/fb_sparkplugbsimple_c978db11/fb_sparkplugbsimple_b276ae31/b276ae31a54c4d6f8b78cab400d0ac12.object [d0f23c] .. [a2c721]  Maximize  Restore

Switch to side-by-side view

--- a/project/sparkplug™_mqtt_edge_and_host-stack_b9741afd/function_blocks_8ad6e219/fb_sparkplugbsimple_c978db11/fb_sparkplugbsimple_b276ae31/b276ae31a54c4d6f8b78cab400d0ac12.object
+++ b/project/sparkplug™_mqtt_edge_and_host-stack_b9741afd/function_blocks_8ad6e219/fb_sparkplugbsimple_c978db11/fb_sparkplugbsimple_b276ae31/b276ae31a54c4d6f8b78cab400d0ac12.object
@@ -1 +1 @@
-{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)b276ae31-a54c-4d6f-8b78-cab400d0ac12","ParentGuid":"(Guid)00000000-0000-0000-0000-000000000000","Name":"(string)FB_SparkplugBSimple","Properties":{"@Type":"2c41fa04:IDictionary","@Value":[{"@Key":"(Guid)24568a24-c491-472c-a21f-ee5d33859fab","@Value":{"@Type":"24568a24","@Value":{"MemoryReserveForOnlineChange":"(int)0","ExcludeFromBuild":"(bool)False","External":"(bool)False","EnableSystemCall":"(bool)False","CompilerDefines":"(string)","LinkAlways":"(bool)False","Undefines":{"@Type":"[string]","@Value":[]}}}},{"@Key":"(Guid)829a18f2-c514-4f6e-9634-1df173429203","@Value":{"@Type":"829a18f2","@Value":{"ParentObjects":{"@Type":"fa2ee218:IDictionary","@Value":[{"@Key":"(Guid)21af5390-2942-461a-bf89-951aaf6999f1","@Value":"(Guid)c978db11-2d73-4525-b89e-1dd43367678a"}]}}}}]},"TypeGuid":"(Guid)6f9dac99-8de1-4efc-8465-68ac443b7d08","EmbeddedTypeGuids":{"@Type":"[Guid]","@Value":["(Guid)a9ed5b7e-75c5-4651-af16-d2c27e98cb94","(Guid)3b83b776-fb25-43b8-99f2-3c507c9143fc"]}}},"TypeInfos":{"24568a24":"{24568a24-c491-472c-a21f-ee5d33859fab}","2c41fa04":"{2c41fa04-1834-41c1-816e-303c7aa2c05b}","81297157":"{81297157-7ec9-45ce-845e-84cab2b88ade}","829a18f2":"{829a18f2-c514-4f6e-9634-1df173429203}","bool":"System.Boolean","fa2ee218":"{fa2ee218-a39b-4b6d-b249-49dbddbd168a}","Guid":"System.Guid","int":"System.Int32","string":"System.String"}},"object":{"Graph":{"@Type":"6f9dac99","@Value":{"SpecialFunc":{"@Type":"0db3d7bb:Enum","@Value":"None"},"Implementation":{"@Type":"3b83b776","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)2331","Tag":null,"Text":"(string)_Encoder(xEnable := _Encode,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2332","Tag":null,"Text":"(string)    protobufBlobSize := _EncodedBlobSize,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2333","Tag":null,"Text":"(string)    myProtobufBlob := _EncodedBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2334","Tag":null,"Text":"(string)    xDone => _EncodeDone,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2335","Tag":null,"Text":"(string)    xBusy => _EncodeBusy,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2336","Tag":null,"Text":"(string)    xError => _EncodeError,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2337","Tag":null,"Text":"(string)    eError => _Encode_eError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2338","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2339","Tag":null,"Text":"(string)_Decoder(xEnable := _Decode,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2340","Tag":null,"Text":"(string)    protobufBlobSize := _DecodeBlobSize,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2341","Tag":null,"Text":"(string)    myProtobufBlob := _DecodeBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2342","Tag":null,"Text":"(string)    xDone => _DecodeDone,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2343","Tag":null,"Text":"(string)    xBusy => _DecodeBusy,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2344","Tag":null,"Text":"(string)    xError => _DecodeError,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2345","Tag":null,"Text":"(string)    eError => _Decode_eError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2346","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1513","Tag":null,"Text":"(string)Diag();"}}]}}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)2280","Tag":null,"Text":"(string)(*"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2281","Tag":null,"Text":"(string)\tProvides SparkplugB Protobuf2   Encoding and Decoding of Messages or Protobufs"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2282","Tag":null,"Text":"(string)    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2283","Tag":null,"Text":"(string)    According to wikipedia: "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2284","Tag":null,"Text":"(string)    Protocol Buffers is a method of serializing structured data."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2285","Tag":null,"Text":"(string)    It is useful in developing programs to communicate with each other over a network or for storing data."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2286","Tag":null,"Text":"(string)    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2287","Tag":null,"Text":"(string)    Protobuf Encoding / Decoding is fast and provides a \"compression ratio\" of circa 2:1 in good to 3:1 in optimum conditions."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2288","Tag":null,"Text":"(string)    It achieves this (by design) via \"varint encoding\" - a variable-length encoding for integer data that means small values use less space."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2289","Tag":null,"Text":"(string)    Note that protobuf2 does not compress the data in a traditional sense via a zip/gzip type of encoding, which is not described in the spec"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2290","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2291","Tag":null,"Text":"(string)    Estimates, no guarantees whatsover are implied;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2292","Tag":null,"Text":"(string)        • Encoding => 1000 units could become 333 units after encoding, "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2293","Tag":null,"Text":"(string)          but a score of 2:1 (= 500 units after encoding) is considered good."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2294","Tag":null,"Text":"(string)        • Decoding => 333 encoded units could become 1000 decoded units optimally, "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2295","Tag":null,"Text":"(string)          but a score of 2:1 (= 666 units after decoding) is considered good."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2296","Tag":null,"Text":"(string)    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2297","Tag":null,"Text":"(string)    Source : https://cdn2.hubspot.net/hubfs/2335443/Johnathan-Hottell-IIoT-Protocol-Benchmarks.pdf"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2298","Tag":null,"Text":"(string)    P48 states : "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2299","Tag":null,"Text":"(string)        Final Takeaways "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2300","Tag":null,"Text":"(string)        • The most bandwidth savings comes from report by exception."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2301","Tag":null,"Text":"(string)        • Sparkplug compresses 3x."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2302","Tag":null,"Text":"(string)        • Trading Modbus for MQTT Sparkplug on exception can result in ~75% to ~99.5% network bandwithsavings "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2303","Tag":null,"Text":"(string)          but it will depend on your application, number of points, criticality of the data, and other factors(!)            "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2304","Tag":null,"Text":"(string)        • Network bandwidth savings is always an estimate until you actually implement and test in the real world..."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2305","Tag":null,"Text":"(string)   "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2306","Tag":null,"Text":"(string)*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2307","Tag":null,"Text":"(string){attribute 'hide'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2308","Tag":null,"Text":"(string)FUNCTION_BLOCK FB_SparkplugBSimple"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2309","Tag":null,"Text":"(string)VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2310","Tag":null,"Text":"(string)    _Encoder : FB_PayloadSimpleEncoder;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2311","Tag":null,"Text":"(string)    _EncodedBlob : ARRAY[0..MQTT.MQTTParam.g_udiMaxPayloadSize] OF BYTE; // Protobuf serilized blob, Max Blob Size of 64 KByte "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2312","Tag":null,"Text":"(string)    _EncodedBlobSize : DINT; // Size of the blob after a succesful encoding"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2313","Tag":null,"Text":"(string)    _NextSeqNum : ULINT := 0; //next sequence number (0..255)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2314","Tag":null,"Text":"(string)    _NextBdSeq : ULINT := 0; //next birth/death sequence number (0..255)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2315","Tag":null,"Text":"(string)    _EncodeDiag : STRING;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2316","Tag":null,"Text":"(string)    _DecodeDiag : STRING;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2317","Tag":null,"Text":"(string)    _TimeStamp : T_DateTime;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2318","Tag":null,"Text":"(string)    _Encode : BOOL := FALSE; // Start Encoding if Enable = TRUE, Stops encoding if enable = FALSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2319","Tag":null,"Text":"(string)    _EncodeDone : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2320","Tag":null,"Text":"(string)    _EncodeBusy : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2321","Tag":null,"Text":"(string)    _EncodeError : BOOL; // Based on CBML.LCon, but will automatically be reset if xEncode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2322","Tag":null,"Text":"(string)    _Encode_eError : ERROR; // Enumerated Encoding Error    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2323","Tag":null,"Text":"(string)    _Decoder : FB_PayloadSimpleDecoder;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2324","Tag":null,"Text":"(string)    _Decode : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2325","Tag":null,"Text":"(string)    _DecodeBlobSize : DINT; // Size of the blob after a succesful encoding "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2326","Tag":null,"Text":"(string)    _DecodeBlob : ARRAY[0..MQTT.MQTTParam.g_udiMaxPayloadSize] OF BYTE; // Protobuf serilized blob, Max Blob Size of 64 KByte  "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2327","Tag":null,"Text":"(string)    _DecodeDone : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2328","Tag":null,"Text":"(string)    _DecodeBusy : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2329","Tag":null,"Text":"(string)    _DecodeError : BOOL; // Based on CBML.LCon, but will automatically be reset if xEncode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2330","Tag":null,"Text":"(string)    _Decode_eError : ERROR; // Enumerated Encoding Error                                     "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1798","Tag":null,"Text":"(string)END_VAR"}}]}}}}},"UniqueIdGenerator":"(string)2346","POULevel":{"@Type":"8e575c5b:Enum","@Value":"Standard"},"ChildObjectGuids":{"@Type":"ArrayList:IList","@Value":[]},"AddAttributeSubsequent":"(bool)False"}},"TypeInfos":{"0db3d7bb":"{0db3d7bb-cde0-4416-9a7b-ce49a0124323}","3b83b776":"{3b83b776-fb25-43b8-99f2-3c507c9143fc}","6f9dac99":"{6f9dac99-8de1-4efc-8465-68ac443b7d08}","8e575c5b":"{8e575c5b-1d37-49c6-941b-5c0ec7874787}","a5de0b0b":"{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}","a9ed5b7e":"{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}","ArrayList":"System.Collections.ArrayList","bool":"System.Boolean","f3878285":"{f3878285-8e4f-490b-bb1b-9acbb7eb04db}","long":"System.Int64","string":"System.String"}}},"FormatVersion":"1.0"}
\ No newline at end of file
+{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)b276ae31-a54c-4d6f-8b78-cab400d0ac12","ParentGuid":"(Guid)00000000-0000-0000-0000-000000000000","Name":"(string)FB_SparkplugBSimple","Properties":{"@Type":"2c41fa04:IDictionary","@Value":[{"@Key":"(Guid)24568a24-c491-472c-a21f-ee5d33859fab","@Value":{"@Type":"24568a24","@Value":{"MemoryReserveForOnlineChange":"(int)0","ExcludeFromBuild":"(bool)False","External":"(bool)False","EnableSystemCall":"(bool)False","CompilerDefines":"(string)","LinkAlways":"(bool)False","Undefines":{"@Type":"[string]","@Value":[]}}}},{"@Key":"(Guid)829a18f2-c514-4f6e-9634-1df173429203","@Value":{"@Type":"829a18f2","@Value":{"ParentObjects":{"@Type":"fa2ee218:IDictionary","@Value":[{"@Key":"(Guid)21af5390-2942-461a-bf89-951aaf6999f1","@Value":"(Guid)c978db11-2d73-4525-b89e-1dd43367678a"}]}}}}]},"TypeGuid":"(Guid)6f9dac99-8de1-4efc-8465-68ac443b7d08","EmbeddedTypeGuids":{"@Type":"[Guid]","@Value":["(Guid)a9ed5b7e-75c5-4651-af16-d2c27e98cb94","(Guid)3b83b776-fb25-43b8-99f2-3c507c9143fc"]}}},"TypeInfos":{"24568a24":"{24568a24-c491-472c-a21f-ee5d33859fab}","2c41fa04":"{2c41fa04-1834-41c1-816e-303c7aa2c05b}","81297157":"{81297157-7ec9-45ce-845e-84cab2b88ade}","829a18f2":"{829a18f2-c514-4f6e-9634-1df173429203}","bool":"System.Boolean","fa2ee218":"{fa2ee218-a39b-4b6d-b249-49dbddbd168a}","Guid":"System.Guid","int":"System.Int32","string":"System.String"}},"object":{"Graph":{"@Type":"6f9dac99","@Value":{"SpecialFunc":{"@Type":"0db3d7bb:Enum","@Value":"None"},"Implementation":{"@Type":"3b83b776","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)2347","Tag":null,"Text":"(string)_Encoder(xEnable := _Encode,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2348","Tag":null,"Text":"(string)         protobufBlobSize := _EncodedBlobSize,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2349","Tag":null,"Text":"(string)         myProtobufBlob := _EncodedBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2350","Tag":null,"Text":"(string)         xDone => _EncodeDone,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2351","Tag":null,"Text":"(string)         xBusy => _EncodeBusy,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2352","Tag":null,"Text":"(string)         xError => _EncodeError,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2353","Tag":null,"Text":"(string)         eError => _Encode_eError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2354","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2355","Tag":null,"Text":"(string)_Decoder(xEnable := _Decode,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2356","Tag":null,"Text":"(string)         protobufBlobSize := _DecodeBlobSize,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2357","Tag":null,"Text":"(string)         myProtobufBlob := _DecodeBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2358","Tag":null,"Text":"(string)         xDone => _DecodeDone,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2359","Tag":null,"Text":"(string)         xBusy => _DecodeBusy,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2360","Tag":null,"Text":"(string)         xError => _DecodeError,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2361","Tag":null,"Text":"(string)         eError => _Decode_eError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2362","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1513","Tag":null,"Text":"(string)Diag();"}}]}}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)2280","Tag":null,"Text":"(string)(*"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2281","Tag":null,"Text":"(string)\tProvides SparkplugB Protobuf2   Encoding and Decoding of Messages or Protobufs"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2282","Tag":null,"Text":"(string)    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2283","Tag":null,"Text":"(string)    According to wikipedia: "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2284","Tag":null,"Text":"(string)    Protocol Buffers is a method of serializing structured data."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2285","Tag":null,"Text":"(string)    It is useful in developing programs to communicate with each other over a network or for storing data."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2286","Tag":null,"Text":"(string)    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2287","Tag":null,"Text":"(string)    Protobuf Encoding / Decoding is fast and provides a \"compression ratio\" of circa 2:1 in good to 3:1 in optimum conditions."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2288","Tag":null,"Text":"(string)    It achieves this (by design) via \"varint encoding\" - a variable-length encoding for integer data that means small values use less space."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2289","Tag":null,"Text":"(string)    Note that protobuf2 does not compress the data in a traditional sense via a zip/gzip type of encoding, which is not described in the spec"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2290","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2291","Tag":null,"Text":"(string)    Estimates, no guarantees whatsover are implied;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2292","Tag":null,"Text":"(string)        • Encoding => 1000 units could become 333 units after encoding, "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2293","Tag":null,"Text":"(string)          but a score of 2:1 (= 500 units after encoding) is considered good."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2294","Tag":null,"Text":"(string)        • Decoding => 333 encoded units could become 1000 decoded units optimally, "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2295","Tag":null,"Text":"(string)          but a score of 2:1 (= 666 units after decoding) is considered good."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2296","Tag":null,"Text":"(string)    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2297","Tag":null,"Text":"(string)    Source : https://cdn2.hubspot.net/hubfs/2335443/Johnathan-Hottell-IIoT-Protocol-Benchmarks.pdf"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2298","Tag":null,"Text":"(string)    P48 states : "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2299","Tag":null,"Text":"(string)        Final Takeaways "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2300","Tag":null,"Text":"(string)        • The most bandwidth savings comes from report by exception."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2301","Tag":null,"Text":"(string)        • Sparkplug compresses 3x."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2302","Tag":null,"Text":"(string)        • Trading Modbus for MQTT Sparkplug on exception can result in ~75% to ~99.5% network bandwithsavings "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2303","Tag":null,"Text":"(string)          but it will depend on your application, number of points, criticality of the data, and other factors(!)            "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2304","Tag":null,"Text":"(string)        • Network bandwidth savings is always an estimate until you actually implement and test in the real world..."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2305","Tag":null,"Text":"(string)   "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2306","Tag":null,"Text":"(string)*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2307","Tag":null,"Text":"(string){attribute 'hide'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2308","Tag":null,"Text":"(string)FUNCTION_BLOCK FB_SparkplugBSimple"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2309","Tag":null,"Text":"(string)VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2310","Tag":null,"Text":"(string)    _Encoder : FB_PayloadSimpleEncoder;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2311","Tag":null,"Text":"(string)    _EncodedBlob : ARRAY[0..MQTT.MQTTParam.g_udiMaxPayloadSize] OF BYTE; // Protobuf serilized blob, Max Blob Size of 64 KByte "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2312","Tag":null,"Text":"(string)    _EncodedBlobSize : DINT; // Size of the blob after a succesful encoding"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2313","Tag":null,"Text":"(string)    _NextSeqNum : ULINT := 0; //next sequence number (0..255)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2314","Tag":null,"Text":"(string)    _NextBdSeq : ULINT := 0; //next birth/death sequence number (0..255)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2315","Tag":null,"Text":"(string)    _EncodeDiag : STRING;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2316","Tag":null,"Text":"(string)    _DecodeDiag : STRING;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2317","Tag":null,"Text":"(string)    _TimeStamp : T_DateTime;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2318","Tag":null,"Text":"(string)    _Encode : BOOL := FALSE; // Start Encoding if Enable = TRUE, Stops encoding if enable = FALSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2319","Tag":null,"Text":"(string)    _EncodeDone : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2320","Tag":null,"Text":"(string)    _EncodeBusy : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2321","Tag":null,"Text":"(string)    _EncodeError : BOOL; // Based on CBML.LCon, but will automatically be reset if xEncode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2322","Tag":null,"Text":"(string)    _Encode_eError : ERROR; // Enumerated Encoding Error    "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2323","Tag":null,"Text":"(string)    _Decoder : FB_PayloadSimpleDecoder;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2324","Tag":null,"Text":"(string)    _Decode : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2325","Tag":null,"Text":"(string)    _DecodeBlobSize : DINT; // Size of the blob after a succesful encoding "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2326","Tag":null,"Text":"(string)    _DecodeBlob : ARRAY[0..MQTT.MQTTParam.g_udiMaxPayloadSize] OF BYTE; // Protobuf serilized blob, Max Blob Size of 64 KByte  "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2327","Tag":null,"Text":"(string)    _DecodeDone : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2328","Tag":null,"Text":"(string)    _DecodeBusy : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2329","Tag":null,"Text":"(string)    _DecodeError : BOOL; // Based on CBML.LCon, but will automatically be reset if xEncode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)2330","Tag":null,"Text":"(string)    _Decode_eError : ERROR; // Enumerated Encoding Error                                     "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1798","Tag":null,"Text":"(string)END_VAR"}}]}}}}},"UniqueIdGenerator":"(string)2362","POULevel":{"@Type":"8e575c5b:Enum","@Value":"Standard"},"ChildObjectGuids":{"@Type":"ArrayList:IList","@Value":[]},"AddAttributeSubsequent":"(bool)False"}},"TypeInfos":{"0db3d7bb":"{0db3d7bb-cde0-4416-9a7b-ce49a0124323}","3b83b776":"{3b83b776-fb25-43b8-99f2-3c507c9143fc}","6f9dac99":"{6f9dac99-8de1-4efc-8465-68ac443b7d08}","8e575c5b":"{8e575c5b-1d37-49c6-941b-5c0ec7874787}","a5de0b0b":"{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}","a9ed5b7e":"{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}","ArrayList":"System.Collections.ArrayList","bool":"System.Boolean","f3878285":"{f3878285-8e4f-490b-bb1b-9acbb7eb04db}","long":"System.Int64","string":"System.String"}}},"FormatVersion":"1.0"}
\ No newline at end of file