Fixed Modbus register access
This commit is contained in:
@@ -37,13 +37,16 @@ VAR_OUTPUT
|
||||
// String completely off
|
||||
xOff : BOOL;
|
||||
|
||||
// All safetyinterlocks are ok
|
||||
xSafetyIntlksOk : BOOL;
|
||||
|
||||
xError : BOOL;
|
||||
xWarning : BOOL;
|
||||
END_VAR
|
||||
VAR
|
||||
_fbModule1 : FB_Module(CONCAT(_sName, 'Module 1'));
|
||||
_fbModule2 : FB_Module(CONCAT(_sName, 'Module 2'));
|
||||
_fbModule3 : FB_Module(CONCAT(_sName, 'Module 3'));
|
||||
_fbModule1 : FB_Module('Module 1');
|
||||
_fbModule2 : FB_Module('Module 2');
|
||||
_fbModule3 : FB_Module('Module 3');
|
||||
|
||||
// All modules are ready
|
||||
_xAllModulesReady : BOOL;
|
||||
@@ -54,6 +57,12 @@ VAR
|
||||
// Flag for module balance checking
|
||||
_xBalanceOk : BOOL;
|
||||
|
||||
// Modules out of balance alarm message
|
||||
_fbModulesOutOfBalanceAlarm : Fb_TcAlarm;
|
||||
|
||||
// Safetyinterlocks pending alarm
|
||||
_fbSafetyInterlocksNotOkAlarm : FB_TcAlarm;
|
||||
|
||||
// String name
|
||||
_sName : STRING;
|
||||
END_VAR
|
||||
@@ -62,6 +71,9 @@ END_VAR
|
||||
<ST><![CDATA[// Reset error flag
|
||||
xError := FALSE;
|
||||
|
||||
// Reset safety interlocks flag
|
||||
xSafetyIntlksOk := TRUE;
|
||||
|
||||
// ===============================
|
||||
// Module 1
|
||||
// ===============================
|
||||
@@ -81,6 +93,10 @@ IF _fbModule1.xError THEN
|
||||
xError := TRUE;
|
||||
END_IF
|
||||
|
||||
IF NOT _fbModule1.xSafetyIntlksOk THEN
|
||||
xSafetyIntlksOk := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Module 2
|
||||
@@ -101,6 +117,10 @@ IF _fbModule2.xError THEN
|
||||
xError := TRUE;
|
||||
END_IF
|
||||
|
||||
IF NOT _fbModule2.xSafetyIntlksOk THEN
|
||||
xSafetyIntlksOk := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Module 3
|
||||
@@ -121,6 +141,22 @@ IF _fbModule3.xError THEN
|
||||
xError := TRUE;
|
||||
END_IF
|
||||
|
||||
IF NOT _fbModule3.xSafetyIntlksOk THEN
|
||||
xSafetyIntlksOk := FALSE;
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Handle safety interlock alarm
|
||||
// ===============================
|
||||
IF NOT xSafetyIntlksOk AND NOT _fbSafetyInterlocksNotOkAlarm.bRaised THEN
|
||||
_fbSafetyInterlocksNotOkAlarm.Raise(0);
|
||||
END_IF
|
||||
|
||||
IF xSafetyIntlksOk AND _fbSafetyInterlocksNotOkAlarm.bRaised THEN
|
||||
_fbSafetyInterlocksNotOkAlarm.Clear(0, TRUE);
|
||||
END_IF
|
||||
|
||||
|
||||
// ===============================
|
||||
// Modules ready check
|
||||
@@ -179,6 +215,21 @@ IF _xAllModulesReady AND (NOT _xBalanceOk) THEN
|
||||
xError := TRUE;
|
||||
END_IF
|
||||
|
||||
// Raise error
|
||||
IF (NOT _xBalanceOk) AND (NOT _fbModulesOutOfBalanceAlarm.bRaised) THEN
|
||||
_fbModulesOutOfBalanceAlarm.Raise(0);
|
||||
END_IF
|
||||
|
||||
// Clear error
|
||||
IF _xBalanceOk AND _fbModulesOutOfBalanceAlarm.bRaised THEN
|
||||
_fbModulesOutOfBalanceAlarm.Clear(0, FALSE);
|
||||
END_IF
|
||||
|
||||
// Confirm error
|
||||
IF _fbModulesOutOfBalanceAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND xConfirmAlarms THEN
|
||||
_fbModulesOutOfBalanceAlarm.Confirm(0);
|
||||
END_IF
|
||||
|
||||
// ===============================
|
||||
// String ready validation check
|
||||
// ===============================
|
||||
@@ -198,12 +249,56 @@ VAR_INPUT
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[_sName := sName;]]></ST>
|
||||
<ST><![CDATA[_sName := sName;
|
||||
|
||||
// Set names for modules
|
||||
_fbModule1.Name := Concat(_sName, ' - Module 1');
|
||||
_fbModule2.Name := Concat(_sName, ' - Module 2');
|
||||
_fbModule3.Name := Concat(_sName, ' - Module 3');
|
||||
|
||||
// Create out of balance alarm
|
||||
_fbModulesOutOfBalanceAlarm.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.StringImbalance, bWithConfirmation := TRUE, 0);
|
||||
_fbModulesOutOfBalanceAlarm.ipArguments.Clear().AddString(_sName);
|
||||
|
||||
// Create safetyinterlocks active alarm
|
||||
_fbSafetyInterlocksNotOkAlarm.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.SafetyIntlksActive, bWithConfirmation := FALSE, 0);
|
||||
_fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
<Property Name="Name" Id="{19fcb6d4-fd4b-49f9-9791-1e4c931b9e69}">
|
||||
<Declaration><![CDATA[PROPERTY Name : String]]></Declaration>
|
||||
<Get Name="Get" Id="{a4b6ba34-8ad9-46b1-939c-45cef957fd9a}">
|
||||
<Declaration><![CDATA[VAR
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[Name := _sName;]]></ST>
|
||||
</Implementation>
|
||||
</Get>
|
||||
<Set Name="Set" Id="{c32997c5-bac4-4ef0-bc87-edcbbb2e542f}">
|
||||
<Declaration><![CDATA[VAR
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[_sName := Name;
|
||||
|
||||
// Set modules names
|
||||
_fbModule1.Name := CONCAT(_sName, ' - Module 1');
|
||||
_fbModule2.Name := CONCAT(_sName, ' - Module 2');
|
||||
_fbModule3.Name := CONCAT(_sName, ' - Module 3');
|
||||
|
||||
// Create alarm messages
|
||||
_fbModulesOutOfBalanceAlarm.ipArguments.Clear().AddString(_sName);
|
||||
_fbSafetyInterlocksNotOkAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
|
||||
</Implementation>
|
||||
</Set>
|
||||
</Property>
|
||||
<LineIds Name="FB_String">
|
||||
<LineId Id="266" Count="0" />
|
||||
<LineId Id="268" Count="0" />
|
||||
<LineId Id="335" Count="0" />
|
||||
<LineId Id="334" Count="0" />
|
||||
<LineId Id="336" Count="0" />
|
||||
<LineId Id="267" Count="0" />
|
||||
<LineId Id="69" Count="0" />
|
||||
<LineId Id="67" Count="1" />
|
||||
@@ -217,14 +312,26 @@ END_VAR
|
||||
<LineId Id="66" Count="0" />
|
||||
<LineId Id="63" Count="0" />
|
||||
<LineId Id="59" Count="2" />
|
||||
<LineId Id="338" Count="0" />
|
||||
<LineId Id="337" Count="0" />
|
||||
<LineId Id="339" Count="1" />
|
||||
<LineId Id="71" Count="5" />
|
||||
<LineId Id="141" Count="0" />
|
||||
<LineId Id="77" Count="11" />
|
||||
<LineId Id="70" Count="0" />
|
||||
<LineId Id="342" Count="2" />
|
||||
<LineId Id="341" Count="0" />
|
||||
<LineId Id="90" Count="5" />
|
||||
<LineId Id="142" Count="0" />
|
||||
<LineId Id="96" Count="11" />
|
||||
<LineId Id="89" Count="0" />
|
||||
<LineId Id="346" Count="2" />
|
||||
<LineId Id="345" Count="0" />
|
||||
<LineId Id="433" Count="1" />
|
||||
<LineId Id="432" Count="0" />
|
||||
<LineId Id="435" Count="4" />
|
||||
<LineId Id="441" Count="2" />
|
||||
<LineId Id="440" Count="0" />
|
||||
<LineId Id="183" Count="5" />
|
||||
<LineId Id="245" Count="4" />
|
||||
<LineId Id="244" Count="0" />
|
||||
@@ -249,12 +356,38 @@ END_VAR
|
||||
<LineId Id="212" Count="0" />
|
||||
<LineId Id="237" Count="1" />
|
||||
<LineId Id="236" Count="0" />
|
||||
<LineId Id="215" Count="11" />
|
||||
<LineId Id="215" Count="5" />
|
||||
<LineId Id="353" Count="13" />
|
||||
<LineId Id="352" Count="0" />
|
||||
<LineId Id="221" Count="5" />
|
||||
<LineId Id="239" Count="1" />
|
||||
<LineId Id="214" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_String.FB_init">
|
||||
<LineId Id="7" Count="0" />
|
||||
<LineId Id="33" Count="0" />
|
||||
<LineId Id="32" Count="0" />
|
||||
<LineId Id="34" Count="2" />
|
||||
<LineId Id="16" Count="0" />
|
||||
<LineId Id="15" Count="0" />
|
||||
<LineId Id="17" Count="0" />
|
||||
<LineId Id="20" Count="0" />
|
||||
<LineId Id="31" Count="0" />
|
||||
<LineId Id="29" Count="1" />
|
||||
<LineId Id="28" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_String.Name.Get">
|
||||
<LineId Id="2" Count="0" />
|
||||
</LineIds>
|
||||
<LineIds Name="FB_String.Name.Set">
|
||||
<LineId Id="2" Count="0" />
|
||||
<LineId Id="9" Count="0" />
|
||||
<LineId Id="6" Count="2" />
|
||||
<LineId Id="5" Count="0" />
|
||||
<LineId Id="13" Count="0" />
|
||||
<LineId Id="11" Count="0" />
|
||||
<LineId Id="10" Count="0" />
|
||||
<LineId Id="12" Count="0" />
|
||||
</LineIds>
|
||||
</POU>
|
||||
</TcPlcObject>
|
||||
Reference in New Issue
Block a user