Skip to content
Snippets Groups Projects
Commit 79c8af16 authored by Jens Meyer's avatar Jens Meyer
Browse files

Added attribute SafetyChainOK and

command ResumeAfterSafetyInterlock.
parent 0ca4f870
No related branches found
No related tags found
No related merge requests found
......@@ -325,6 +325,7 @@ class TomoSampleChanger(Device):
SamplePosition = attribute(
dtype='DevString',
label="Sample position",
)
SampleLoaded = attribute(
......@@ -340,10 +341,18 @@ class TomoSampleChanger(Device):
ParkingPosition = attribute(
dtype='DevBoolean',
label="Parking position",
)
RemoteMode = attribute(
dtype='DevBoolean',
label="Remote mode",
)
SafetyChainOK = attribute(
dtype='DevBoolean',
label="Safety chain OK",
doc="The safety interlock is active when an emergency stop button was pressed or the hutch is not seached and closed. \nWhen the safety interlock is active, robot movements are allowed only in manual operation mode.",
)
AirPressureOK = attribute(
......@@ -366,7 +375,7 @@ class TomoSampleChanger(Device):
RobotLibraryName = attribute(
dtype='DevString',
label="Robot Library Name",
label="Robot library name",
)
# ---------------
......@@ -500,6 +509,12 @@ class TomoSampleChanger(Device):
# PROTECTED REGION END # // TomoSampleChanger.RemoteMode_read
def read_SafetyChainOK(self):
# PROTECTED REGION ID(TomoSampleChanger.SafetyChainOK_read) ENABLED START #
"""Return the SafetyChainOK attribute."""
return self.__safety_chain_ok
# PROTECTED REGION END # // TomoSampleChanger.SafetyChainOK_read
def read_AirPressureOK(self):
# PROTECTED REGION ID(TomoSampleChanger.AirPressureOK_read) ENABLED START #
......@@ -855,9 +870,35 @@ class TomoSampleChanger(Device):
:return:None
"""
pass
self.robot.isAligned = True
# PROTECTED REGION END # // TomoSampleChanger.IsAligned
def is_IsAligned_allowed(self):
# PROTECTED REGION ID(TomoSampleChanger.is_IsAligned_allowed) ENABLED START #
return self.get_state() not in [DevState.MOVING,DevState.RUNNING,DevState.FAULT,DevState.DISABLE]
# PROTECTED REGION END # // TomoSampleChanger.is_IsAligned_allowed
@command(
)
@DebugIt()
def ResumeAfterSafetyInterlock(self):
# PROTECTED REGION ID(TomoSampleChanger.ResumeAfterSafetyInterlock) ENABLED START #
"""
Resume a paused movement after a
safety intelock during a movement.
:return:None
"""
pass
# PROTECTED REGION END # // TomoSampleChanger.ResumeAfterSafetyInterlock
def is_ResumeAfterSafetyInterlock_allowed(self):
# PROTECTED REGION ID(TomoSampleChanger.is_ResumeAfterSafetyInterlock_allowed) ENABLED START #
return self.get_state() not in [DevState.ON,DevState.MOVING,DevState.FAULT,DevState.DISABLE]
# PROTECTED REGION END # // TomoSampleChanger.is_ResumeAfterSafetyInterlock_allowed
# ----------
# Run server
# ----------
......
......@@ -42,6 +42,7 @@
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>FAULT</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
......@@ -54,6 +55,7 @@
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>FAULT</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
......@@ -66,6 +68,7 @@
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>FAULT</excludedStates>
</commands>
<commands name="Abort" description="Abort all running robot motions" execMethod="abort" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
......@@ -87,6 +90,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>ON</excludedStates>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
<commands name="ForceParkingPosition" description="Go back to the safe parking position form anywhere. &#xA;Attention: Should only be done after a verification that nothing can be &#xA;damaged by the movement. The command can olny be executed in local mode!" execMethod="force_parking_position" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
......@@ -99,6 +103,7 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>ON</excludedStates>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
<commands name="ManualUnload" description="You need to unload the sample manually. This command delets any registered loaded sample!" execMethod="manual_unload" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
......@@ -110,6 +115,7 @@
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
</commands>
<commands name="OpenGripper" description="Open the gripper" execMethod="open_gripper" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
<argin description="">
......@@ -120,6 +126,7 @@
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
<commands name="CloseGripper" description="Close the gripper" execMethod="close_gripper" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
......@@ -131,6 +138,7 @@
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
<commands name="IsAligned" description="Forces the alignment flag to be set to True! Can be used after a server re-start &#xA;to avoid executing a new alignment procedure." execMethod="is_aligned" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
......@@ -141,6 +149,23 @@
<type xsi:type="pogoDsl:VoidType"/>
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>MOVING</excludedStates>
<excludedStates>RUNNING</excludedStates>
<excludedStates>FAULT</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
<commands name="ResumeAfterSafetyInterlock" description="Resume a paused movement after a &#xA;safety intelock during a movement." execMethod="resume_after_safety_interlock" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
<argin description="">
<type xsi:type="pogoDsl:VoidType"/>
</argin>
<argout description="">
<type xsi:type="pogoDsl:VoidType"/>
</argout>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<excludedStates>ON</excludedStates>
<excludedStates>MOVING</excludedStates>
<excludedStates>FAULT</excludedStates>
<excludedStates>DISABLE</excludedStates>
</commands>
<attributes name="SamplePosition" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/>
......@@ -148,7 +173,7 @@
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
<properties description="" label="Sample position" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="SampleLoaded" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/>
......@@ -172,7 +197,7 @@
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
<properties description="" label="Parking position" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="RemoteMode" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/>
......@@ -180,7 +205,15 @@
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
<properties description="" label="Remote mode" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="SafetyChainOK" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/>
<changeEvent fire="false" libCheckCriteria="false"/>
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="The safety interlock is active when an emergency stop button was pressed or the hutch is not seached and closed. &#xA;When the safety interlock is active, robot movements are allowed only in manual operation mode." label="Safety chain OK" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="AirPressureOK" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/>
......@@ -212,7 +245,7 @@
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="" label="Robot Library Name" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
<properties description="" label="Robot library name" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<states name="ON" description="Ready to move">
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment