Some refactoring after static code analysis
This commit is contained in:
@@ -12,12 +12,12 @@ VAR_IN_OUT
|
||||
END_VAR
|
||||
VAR
|
||||
// Card inputs
|
||||
_stStatus AT %I* : ST_SerialStatus;
|
||||
_byDataIn AT %I* : ARRAY[0..21] OF BYTE;
|
||||
stStatus AT %I* : ST_SerialStatus;
|
||||
//abyDataIn AT %I* : ARRAY[0..21] OF BYTE;
|
||||
|
||||
// Card outputs
|
||||
_stCtrl AT %Q* : ST_SerialCrl;
|
||||
_byDataOut AT %Q* : ARRAY[0..21] OF BYTE;
|
||||
stCtrl AT %Q* : ST_SerialCrl;
|
||||
abyDataOut AT %Q* : ARRAY[0..21] OF BYTE;
|
||||
|
||||
// Internal temp setpoint
|
||||
_rTempSetpoint : REAL;
|
||||
@@ -25,9 +25,6 @@ VAR
|
||||
// Send trigger
|
||||
_xSend : BOOL;
|
||||
|
||||
// Send temp test
|
||||
_xTempTest : BOOL;
|
||||
|
||||
// Init trigger
|
||||
_xInit : BOOL;
|
||||
END_VAR
|
||||
@@ -48,21 +45,21 @@ END_IF
|
||||
// Init card on first run
|
||||
IF _xInit THEN
|
||||
_xInit := FALSE;
|
||||
_stCtrl.bInitRequest := 1;
|
||||
stCtrl.bInitRequest := 1;
|
||||
END_IF
|
||||
|
||||
IF _stStatus.bInitAccepted THEN
|
||||
_stCtrl.bInitRequest := 0;
|
||||
IF stStatus.bInitAccepted THEN
|
||||
stCtrl.bInitRequest := 0;
|
||||
END_IF
|
||||
|
||||
// Send
|
||||
IF _xSend THEN
|
||||
_xSend := FALSE;
|
||||
_stCtrl.bTransmitRequest := 1;
|
||||
stCtrl.bTransmitRequest := 1;
|
||||
END_IF
|
||||
|
||||
IF _stStatus.bTransmitAccepted THEN
|
||||
_stCtrl.bTransmitRequest := 0;
|
||||
IF stStatus.bTransmitAccepted THEN
|
||||
stCtrl.bTransmitRequest := 0;
|
||||
END_IF
|
||||
|
||||
// Debug test
|
||||
@@ -91,10 +88,19 @@ VAR
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Calculate sum
|
||||
<ST><![CDATA[// Check end index
|
||||
IF uiEndIndex > 21 THEN
|
||||
byHigh := 0;
|
||||
byLow := 0;
|
||||
RETURN;
|
||||
END_IF
|
||||
|
||||
// Calculate sum
|
||||
{analysis -81}
|
||||
FOR _uiCounter := uiStartIndex TO uiEndIndex DO
|
||||
_dwChecksum := _dwChecksum + _byDataOut[_uiCounter];
|
||||
_dwChecksum := _dwChecksum + abyDataOut[_uiCounter];
|
||||
END_FOR
|
||||
{analysis +81}
|
||||
|
||||
// Use lower bytes
|
||||
_byHigh := SHR(_dwChecksum.%B0 AND 16#F0, 4);
|
||||
@@ -115,36 +121,31 @@ VAR_INPUT
|
||||
END_VAR
|
||||
VAR
|
||||
_dwTemp : DWORD;
|
||||
_sTemp : STRING(4);
|
||||
|
||||
_byHigh : BYTE;
|
||||
_byLow : BYTE;
|
||||
_sHexString : STRING(4);
|
||||
|
||||
_sTemp : STRING;
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[// Convert temperature
|
||||
_dwTemp := REAL_TO_DWORD(rTemp * 10)*10;
|
||||
_dwTemp := REAL_TO_DWORD(rTemp * 10 )*10;
|
||||
_sTemp := DWORD_TO_STRING(_dwTemp);
|
||||
|
||||
_byDataOut[0] := 16#02; // STX
|
||||
_byDataOut[1] := 16#31; // Command code
|
||||
_byDataOut[2] := _sTemp[0];
|
||||
_byDataOut[3] := _sTemp[1];
|
||||
_byDataOut[4] := _sTemp[2];
|
||||
_byDataOut[5] := _sTemp[3];
|
||||
_byDataOut[6] := 16#03; // ETX
|
||||
abyDataOut[0] := 16#02; // STX
|
||||
abyDataOut[1] := 16#31; // Command code
|
||||
abyDataOut[2] := _sTemp[0];
|
||||
abyDataOut[3] := _sTemp[1];
|
||||
abyDataOut[4] := _sTemp[2];
|
||||
abyDataOut[5] := _sTemp[3];
|
||||
abyDataOut[6] := 16#03; // ETX
|
||||
|
||||
M_CalcChecksum(
|
||||
uiStartIndex:= 1,
|
||||
uiEndIndex:= 5,
|
||||
byHigh=> _byDataOut[7],
|
||||
byLow=> _byDataOut[8]);
|
||||
byHigh=> abyDataOut[7],
|
||||
byLow=> abyDataOut[8]);
|
||||
|
||||
_byDataOut[9] := 16#0D; // <CR>
|
||||
abyDataOut[9] := 16#0D; // <CR>
|
||||
|
||||
_stCtrl.byOutputLength := 10;]]></ST>
|
||||
stCtrl.byOutputLength := 10;]]></ST>
|
||||
</Implementation>
|
||||
</Method>
|
||||
</POU>
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
VAR_INPUT
|
||||
xEnable : BOOL;
|
||||
rTargetTemp : REAL;
|
||||
rDeadBand : REAL := 5.0;
|
||||
|
||||
xConfirmAlarms : BOOL;
|
||||
END_VAR
|
||||
@@ -17,10 +16,10 @@ VAR_IN_OUT
|
||||
stHMIInterface : ST_HCPlateHMIInterface;
|
||||
END_VAR
|
||||
VAR
|
||||
_xEnableHotplate AT %Q* : BOOL;
|
||||
xEnableHotplate AT %Q* : BOOL;
|
||||
|
||||
_axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
|
||||
_tonSlotTimer : ARRAY[0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF TON;
|
||||
// _axSlotFree : ARRAY [0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF BOOL;
|
||||
// _atonSlotTimer : ARRAY[0..(GVL_HeatCoolConfig.HEAT_COOL_PLATES_NUM_SLOTS - 1)] OF TON;
|
||||
|
||||
// Temp sensor
|
||||
_fbTempSensor : FB_AnalogInput('Temp sensor');
|
||||
@@ -39,10 +38,7 @@ VAR
|
||||
timHardwareSignalLevelOff := T#1S));
|
||||
|
||||
_fbPITempControl : FB_PI;
|
||||
_xSaturatedUpper : BOOL;
|
||||
_xSaturatedLower : BOOL;
|
||||
_rMV : REAL;
|
||||
_fbPulsOut : TP;
|
||||
_fbLimit : FB_Limit;
|
||||
_fbPWMOut : FB_PWM;
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
@@ -73,28 +69,18 @@ _fbPITempControl(
|
||||
rKp:= 6,
|
||||
rTn:= 0,
|
||||
xEnable:= stHMIInterface.xEnable,
|
||||
xSaturatedUpper:= _xSaturatedUpper,
|
||||
xSaturatedLower:= _xSaturatedLower,
|
||||
rMV=> _rMV);
|
||||
rMV=> _fbLimit.rIn);
|
||||
|
||||
IF _rMV >= 100.0 THEN
|
||||
_rMV := 100.0;
|
||||
_xSaturatedUpper := TRUE;
|
||||
ELSE
|
||||
_xSaturatedUpper := FALSE;
|
||||
END_IF
|
||||
|
||||
IF _rMV <=0 THEN
|
||||
_rMV := 0.0;
|
||||
_xSaturatedLower := TRUE;
|
||||
ELSE
|
||||
_xSaturatedLower := FALSE;
|
||||
END_IF
|
||||
_fbLimit(
|
||||
rMin:= 0,
|
||||
rMax:= 100.0,
|
||||
rOut=> _fbPWMOut.rPWM,
|
||||
xClampedUpper=> _fbPITempControl.xSaturatedUpper,
|
||||
xClampedLower=> _fbPITempControl.xSaturatedLower);
|
||||
|
||||
_fbPWMOut(
|
||||
rPWM:= _rMV,
|
||||
timPeriod:= T#10S,
|
||||
xOutput=> _xEnableHotplate);
|
||||
xOutput=> xEnableHotplate);
|
||||
|
||||
// Output HMI Interface
|
||||
stHMIInterface.rPV := _fbTempSensor.rScaledValue;
|
||||
|
||||
@@ -14,7 +14,13 @@ VAR
|
||||
END_VAR
|
||||
]]></Declaration>
|
||||
<Implementation>
|
||||
<ST><![CDATA[_tonTimer(IN := TRUE, PT := timPeriod);
|
||||
<ST><![CDATA[// Check for possible division by zero
|
||||
IF TIME_TO_REAL(timPeriod) = 0 THEN
|
||||
xOutput := FALSE;
|
||||
RETURN;
|
||||
END_IF
|
||||
|
||||
_tonTimer(IN := TRUE, PT := timPeriod);
|
||||
IF _tonTimer.Q THEN
|
||||
_tonTimer(IN := FALSE);
|
||||
END_IF
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
<TcPlcObject Version="1.1.0.1">
|
||||
<GVL Name="GVL_HeatCoolConfig" Id="{865917de-a2fa-49b0-b682-05395fd01971}">
|
||||
<Declaration><![CDATA[{attribute 'qualified_only'}
|
||||
{attribute 'naming' := 'off'}
|
||||
{attribute 'analysis' := '-43'}
|
||||
VAR_GLOBAL CONSTANT
|
||||
HEAT_COOL_PLATES_NUM_SLOTS : UINT := 9;
|
||||
END_VAR]]></Declaration>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<TcPlcObject Version="1.1.0.1">
|
||||
<DUT Name="ST_SerialCrl" Id="{02e99166-5c76-4fb3-84cc-719c63e20136}">
|
||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||
{attribute 'analysis' := '-33'}
|
||||
TYPE ST_SerialCrl :
|
||||
STRUCT
|
||||
bTransmitRequest : BIT;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<TcPlcObject Version="1.1.0.1">
|
||||
<DUT Name="ST_SerialStatus" Id="{e37399e0-7acb-4d91-826f-26258cabab1c}">
|
||||
<Declaration><![CDATA[{attribute 'pack_mode' := '1'}
|
||||
{attribute 'analysis' := '-33'}
|
||||
TYPE ST_SerialStatus :
|
||||
STRUCT
|
||||
bTransmitAccepted : BIT;
|
||||
|
||||
Reference in New Issue
Block a user