Merge branch 'release/1.3.4'

This commit is contained in:
2026-03-13 13:44:41 +01:00
4 changed files with 115 additions and 79 deletions

View File

@@ -136,62 +136,9 @@
</System> </System>
<Plc> <Plc>
<Project GUID="{4E62D9E7-436C-457D-8DC4-82D2FEF91C96}" Name="BasicComponents" PrjFilePath="BasicComponents\BasicComponents.plcproj" TmcFilePath="BasicComponents\BasicComponents.tmc" ReloadTmc="true" AmsPort="851" FileArchiveSettings="#x000e" CopyTmcToTarget="true" CopyTpyToTarget="false" SymbolicMapping="true"> <Project GUID="{4E62D9E7-436C-457D-8DC4-82D2FEF91C96}" Name="BasicComponents" PrjFilePath="BasicComponents\BasicComponents.plcproj" TmcFilePath="BasicComponents\BasicComponents.tmc" ReloadTmc="true" AmsPort="851" FileArchiveSettings="#x000e" CopyTmcToTarget="true" CopyTpyToTarget="false" SymbolicMapping="true">
<Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{63E07965-E818-C034-FD63-DBA12806D3FA}" TmcPath="BasicComponents\BasicComponents.tmc"> <Instance Id="#x08502000" TcSmClass="TComPlcObjDef" KeepUnrestoredLinks="2" TmcHash="{CC57F9F8-FD4D-8A3D-E8DE-220E6C379AE4}" TmcPath="BasicComponents\BasicComponents.tmc">
<Name>BasicComponents Instance</Name> <Name>BasicComponents Instance</Name>
<CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID> <CLSID ClassFactory="TcPlc30">{08500001-0000-0000-F000-000000000064}</CLSID>
<Vars VarGrpType="2" AreaNo="1">
<Name>PlcTask Outputs</Name>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
</Vars>
<Vars VarGrpType="1"> <Vars VarGrpType="1">
<Name>PlcTask Inputs</Name> <Name>PlcTask Inputs</Name>
<Var> <Var>
@@ -487,6 +434,59 @@
<Type>BOOL</Type> <Type>BOOL</Type>
</Var> </Var>
</Vars> </Vars>
<Vars VarGrpType="2" AreaNo="1">
<Name>PlcTask Outputs</Name>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestOpen._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimeoutTestClose._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerOpen._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValve_TimoutTriggerClose._fbValveTimeout.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xOpenValve</Name>
<Comment><![CDATA[ Use xOpenValve for normally closed valves]]></Comment>
<Type>BOOL</Type>
</Var>
<Var>
<Name>PRG_MAIN._fbValveTestHMI._fbValveOC.xCloseValve</Name>
<Comment><![CDATA[ Use xCloseValve for normally open valves]]></Comment>
<Type>BOOL</Type>
</Var>
</Vars>
<Contexts> <Contexts>
<Context> <Context>
<Id>0</Id> <Id>0</Id>

Binary file not shown.

View File

@@ -21,7 +21,7 @@
<GlobalVersionStructureIncluded>false</GlobalVersionStructureIncluded> <GlobalVersionStructureIncluded>false</GlobalVersionStructureIncluded>
<Company>Heisig GmbH</Company> <Company>Heisig GmbH</Company>
<Title>BaseComponents</Title> <Title>BaseComponents</Title>
<ProjectVersion>1.3.3</ProjectVersion> <ProjectVersion>1.3.4</ProjectVersion>
<DefaultNamespace>BC</DefaultNamespace> <DefaultNamespace>BC</DefaultNamespace>
<Author>M.Heisig</Author> <Author>M.Heisig</Author>
<Description>Basic components fb's (Valves, AI, AO, Motors, etc.)</Description> <Description>Basic components fb's (Valves, AI, AO, Motors, etc.)</Description>

View File

@@ -212,9 +212,6 @@ IF _fbHalt.Error THEN
_xError := TRUE; _xError := TRUE;
END_IF END_IF
// Can the axis perform a new move command
_xCanExecNewCmd := (NOT _xBusy) AND _fbPower.Status AND (NOT _xError);
// ==================== // ====================
// Handle state machine // Handle state machine
// ==================== // ====================
@@ -224,6 +221,7 @@ CASE _eState OF
IF xEnable THEN IF xEnable THEN
_xEnable := TRUE; _xEnable := TRUE;
_xBusy := TRUE; _xBusy := TRUE;
_xDone := FALSE;
_eState := E_AXIS_PTP_STATE.WAIT_FOR_ENABLE; _eState := E_AXIS_PTP_STATE.WAIT_FOR_ENABLE;
END_IF END_IF
@@ -248,18 +246,15 @@ CASE _eState OF
E_AXIS_PTP_STATE.ENABLED: E_AXIS_PTP_STATE.ENABLED:
_xDone := FALSE;
IF _xExecuteMoveAbs THEN IF _xExecuteMoveAbs THEN
_xExecuteMoveAbs := FALSE; _xExecuteMoveAbs := FALSE;
_xBusy := TRUE;
_xStartMoveAbsolute := TRUE; _xStartMoveAbsolute := TRUE;
_eState := E_AXIS_PTP_STATE.MOVING_ABSOLUTE; _eState := E_AXIS_PTP_STATE.MOVING_ABSOLUTE;
END_IF END_IF
IF _xExecuteMoveRel THEN IF _xExecuteMoveRel THEN
_xExecuteMoveRel := FALSE; _xExecuteMoveRel := FALSE;
_xBusy := TRUE;
_xStartMoveRelative := TRUE; _xStartMoveRelative := TRUE;
_eState := E_AXIS_PTP_STATE.MOVING_RELATIVE; _eState := E_AXIS_PTP_STATE.MOVING_RELATIVE;
END_IF END_IF
@@ -267,27 +262,25 @@ CASE _eState OF
IF _xExecuteHoming THEN IF _xExecuteHoming THEN
_xExecuteHoming := FALSE; _xExecuteHoming := FALSE;
_xStartHomeing := TRUE; _xStartHomeing := TRUE;
_xBusy := TRUE;
_eState := E_AXIS_PTP_STATE.HOMING; _eState := E_AXIS_PTP_STATE.HOMING;
END_IF END_IF
IF _xExecuteMoveVelocity THEN IF _xExecuteMoveVelocity THEN
_xExecuteMoveVelocity := FALSE; _xExecuteMoveVelocity := FALSE;
_xStartMoveVelocity := TRUE; _xStartMoveVelocity := TRUE;
_xBusy := TRUE;
_eState := E_AXIS_PTP_STATE.MOVING_VELOCITY; _eState := E_AXIS_PTP_STATE.MOVING_VELOCITY;
END_IF END_IF
IF _xExecuteMoveModulo THEN IF _xExecuteMoveModulo THEN
_xExecuteMoveModulo := FALSE; _xExecuteMoveModulo := FALSE;
_xStartMoveModulo := TRUE; _xStartMoveModulo := TRUE;
_xBusy := TRUE;
_eState := E_AXIS_PTP_STATE.MOVING_MODULO; _eState := E_AXIS_PTP_STATE.MOVING_MODULO;
END_IF END_IF
IF (NOT xEnable) AND (NOT _xError) THEN IF (NOT xEnable) AND (NOT _xError) THEN
_xEnable := FALSE; _xEnable := FALSE;
_xBusy := TRUE; _xBusy := TRUE;
_xDone := FALSE;
_eState := E_AXIS_PTP_STATE.WAIT_FOR_DISABLE; _eState := E_AXIS_PTP_STATE.WAIT_FOR_DISABLE;
END_IF END_IF
@@ -452,6 +445,8 @@ CASE _eState OF
_xError := TRUE; _xError := TRUE;
END_CASE END_CASE
// Can the axis perform a new move command
_xCanExecNewCmd := (NOT _xBusy) AND _fbPower.Status AND (NOT _xError);
// Copy internal buffers to outputs // Copy internal buffers to outputs
xEnabled := _fbPower.Status; xEnabled := _fbPower.Status;
@@ -469,6 +464,10 @@ END_VAR]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[IF _xBusy THEN <ST><![CDATA[IF _xBusy THEN
_xExecuteHalt := TRUE; _xExecuteHalt := TRUE;
_xDone := FALSE;
xDone := FALSE;
_xBusy := TRUE;
xBusy := TRUE;
END_IF]]></ST> END_IF]]></ST>
</Implementation> </Implementation>
</Method> </Method>
@@ -480,10 +479,17 @@ VAR_INPUT
END_VAR]]></Declaration> END_VAR]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[IF _xCanExecNewCmd THEN <ST><![CDATA[IF _xCanExecNewCmd THEN
_xBusy := TRUE; _xCanExecNewCmd := FALSE;
_lrHomingPos := lrHomingPosition; _lrHomingPos := lrHomingPosition;
_eHomingMode := eHomingMode; _eHomingMode := eHomingMode;
_xExecuteHoming := TRUE; _xExecuteHoming := TRUE;
_xDone := FALSE;
xDone := FALSE;
_xBusy := TRUE;
xBusy := TRUE;
M_Homing := TRUE; M_Homing := TRUE;
ELSE ELSE
M_Homing := FALSE; M_Homing := FALSE;
@@ -497,9 +503,16 @@ VAR_INPUT
END_VAR]]></Declaration> END_VAR]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[IF _xCanExecNewCmd THEN <ST><![CDATA[IF _xCanExecNewCmd THEN
_xBusy := TRUE; _xCanExecNewCmd := FALSE;
_lrTargetPosition := lrTargetPos; _lrTargetPosition := lrTargetPos;
_xExecuteMoveAbs := TRUE; _xExecuteMoveAbs := TRUE;
_xDone := FALSE;
xDone := FALSE;
_xBusy := TRUE;
xBusy := TRUE;
M_MoveAbs := TRUE; M_MoveAbs := TRUE;
ELSE ELSE
M_MoveAbs := FALSE; M_MoveAbs := FALSE;
@@ -515,10 +528,17 @@ VAR_INPUT
END_VAR]]></Declaration> END_VAR]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[IF _xCanExecNewCmd THEN <ST><![CDATA[IF _xCanExecNewCmd THEN
_xBusy := TRUE; _xCanExecNewCmd := FALSE;
_lrTargetPosition := lrTargetPos; _lrTargetPosition := lrTargetPos;
_eMoveDirection := eMoveDirection; _eMoveDirection := eMoveDirection;
_xExecuteMoveModulo := TRUE; _xExecuteMoveModulo := TRUE;
_xDone := FALSE;
xDone := FALSE;
_xBusy := TRUE;
xBusy := TRUE;
M_MoveModulo := TRUE; M_MoveModulo := TRUE;
ELSE ELSE
M_MoveModulo := FALSE; M_MoveModulo := FALSE;
@@ -532,9 +552,17 @@ VAR_INPUT
END_VAR]]></Declaration> END_VAR]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[IF _xCanExecNewCmd THEN <ST><![CDATA[IF _xCanExecNewCmd THEN
_xCanExecNewCmd := FALSE;
_xBusy := TRUE; _xBusy := TRUE;
_lrRelativeDistance := lrRelDist; _lrRelativeDistance := lrRelDist;
_xExecuteMoveRel:= TRUE; _xExecuteMoveRel:= TRUE;
_xDone := FALSE;
xDone := FALSE;
_xBusy := TRUE;
xBusy := TRUE;
M_MoveRel := TRUE; M_MoveRel := TRUE;
ELSE ELSE
M_MoveRel := FALSE; M_MoveRel := FALSE;
@@ -549,9 +577,17 @@ END_VAR
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
<ST><![CDATA[IF _xCanExecNewCmd THEN <ST><![CDATA[IF _xCanExecNewCmd THEN
_xCanExecNewCmd := FALSE;
_xBusy := TRUE; _xBusy := TRUE;
_xExecuteMoveVelocity := TRUE; _xExecuteMoveVelocity := TRUE;
_eMoveDirection := eDirection; _eMoveDirection := eDirection;
_xDone := FALSE;
xDone := FALSE;
_xBusy := TRUE;
xBusy := TRUE;
M_MoveVelocity := TRUE; M_MoveVelocity := TRUE;
ELSE ELSE
M_MoveVelocity := FALSE; M_MoveVelocity := FALSE;