Alarm is active, false -> Alarm not active AddInfo: STRING; // if <> empty -> additional Info that is transfered together with alarm END_VAR VAR_OUTPUT END_VAR VAR _alarm : FB_TcAlarm; _initDone : BOOL; _rTrigRaise : R_TRIG; _fTrigRaise : F_TRIG; _fbSourceInfo : FB_TcSourceInfo; _fbJson : FB_JsonSaxWriter; _sJsonDoc : STRING(255); END_VAR ]]> 0 THEN _fbSourceInfo.sName := 'PLC'; _alarm.CreateEx(Event, FALSE, _fbSourceInfo ); _initDone := TRUE; END_IF // raise alarm _rTrigRaise(clk := Raise); IF _rTrigRaise.Q AND NOT _alarm.bRaised THEN IF LEN(AddInfo) > 0 THEN _fbJson.ResetDocument(); _fbJson.StartObject(); _fbJson.AddKey('AddInfo'); _fbJson.AddString(AddInfo); _fbJson.EndObject(); _sJsonDoc := _fbJson.GetDocument(); _alarm.SetJsonAttribute(_sJsonDoc); ELSE _alarm.SetJsonAttribute(''); END_IF _alarm.Raise(0); END_IF // clear alarm _fTrigRaise(clk := Raise); IF _fTrigRaise.Q AND _alarm.bRaised THEN _alarm.Clear(0, FALSE); END_IF]]>