Started kuka robot integration with hardware

- Modified PackML state machine to be able to disable unused states
- Added PackTag datatypes for recipe handling
- Started recipe parameter description in json file
- Added schema file for recipe json
- Added state machine drawing for packml
This commit is contained in:
2026-01-30 09:09:30 +01:00
parent 3946e45c65
commit 67ba80893f
44 changed files with 2006 additions and 1366 deletions

10
doc/.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"json.schemas": [
{
"fileMatch": [
"./recipe_data.json"
],
"url": "./recipe_data_schema.json"
}
]
}

285
doc/StateMachines.drawio Normal file
View File

@@ -0,0 +1,285 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.3.0 Chrome/140.0.7339.249 Electron/38.7.2 Safari/537.36" version="29.3.0" pages="2">
<diagram name="Complete_SM" id="ftpb_kXLDtCrtDVQ6dMH">
<mxGraphModel dx="1301" dy="896" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="MSPdzodM52y7OSiT-G8--59" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="" vertex="1">
<mxGeometry height="400" width="800" x="40" y="80" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--41" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--40">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--4" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Stopped" vertex="1">
<mxGeometry height="40" width="80" x="80" y="520" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--56" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--55">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--5" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Stopping" vertex="1">
<mxGeometry height="40" width="80" x="240" y="520" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--16" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--15" parent="1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="30" width="30" x="105" y="670" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--58" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--55">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="440" y="580" />
<mxPoint x="200" y="580" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--50" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Clearing" vertex="1">
<mxGeometry height="40" width="80" x="400" y="520" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--53" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="MSPdzodM52y7OSiT-G8--52">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--51" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Aborting" vertex="1">
<mxGeometry height="40" width="80" x="680" y="520" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--54" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" target="MSPdzodM52y7OSiT-G8--50">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--52" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Aborted" vertex="1">
<mxGeometry height="40" width="80" x="560" y="520" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--57" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--4">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--55" parent="1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="190" y="530" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--60" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--59" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.3;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;" target="MSPdzodM52y7OSiT-G8--5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--49" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.981;exitY=0.298;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitPerimeter=0;" target="MSPdzodM52y7OSiT-G8--36">
<mxGeometry relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--48" parent="1" style="rounded=1;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="200" width="160" x="340" y="200" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--47" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1.008;exitY=0.098;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;" target="MSPdzodM52y7OSiT-G8--32">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--44" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="" vertex="1">
<mxGeometry height="160" width="120" x="360" y="220" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--11" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--2" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Idle" vertex="1">
<mxGeometry height="40" width="80" x="80" y="240" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--8" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--7" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Resetting" vertex="1">
<mxGeometry height="40" width="80" x="80" y="320" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--23" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--9" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Starting" vertex="1">
<mxGeometry height="40" width="80" x="200" y="240" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--21" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="MSPdzodM52y7OSiT-G8--18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--3" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Execute" vertex="1">
<mxGeometry height="40" width="80" x="380" y="240" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--25" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--24">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--14" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Suspended" vertex="1">
<mxGeometry height="40" width="80" x="380" y="320" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--19" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--14">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--18" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Suspending" vertex="1">
<mxGeometry height="40" width="80" x="520" y="320" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--28" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--22" parent="1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="310" y="250" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--27" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--24" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Unsuspending" vertex="1">
<mxGeometry height="40" width="80" x="240" y="320" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--29" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--33">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--30" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Held" vertex="1">
<mxGeometry height="40" width="80" x="380" y="120" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--31" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--30">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--32" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Holding" vertex="1">
<mxGeometry height="40" width="80" x="520" y="120" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--34" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--22">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--33" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Unholding" vertex="1">
<mxGeometry height="40" width="80" x="240" y="120" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--39" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--38">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--36" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Completing" vertex="1">
<mxGeometry height="40" width="80" x="600" y="240" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--43" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--40">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="760" y="440" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--38" parent="1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Completed" vertex="1">
<mxGeometry height="40" width="80" x="720" y="240" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--42" edge="1" parent="1" source="MSPdzodM52y7OSiT-G8--40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="MSPdzodM52y7OSiT-G8--7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="MSPdzodM52y7OSiT-G8--40" parent="1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="110" y="430" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram name="Kuka_Robot" id="H1vC8POeMy0M4dT3gOif">
<mxGraphModel dx="1106" dy="762" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-0" />
<mxCell id="Z4hdVuXi7llSv1JNwN2g-1" parent="Z4hdVuXi7llSv1JNwN2g-0" />
<mxCell id="kZ-qJAZda7UxfiRZ7m-w-1" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-17" parent="Z4hdVuXi7llSv1JNwN2g-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="" vertex="1">
<mxGeometry height="400" width="800" x="40" y="80" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-2" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-49">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-3" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Stopped" vertex="1">
<mxGeometry height="40" width="80" x="80" y="520" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-6" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-7" parent="Z4hdVuXi7llSv1JNwN2g-1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="30" width="30" x="105" y="670" as="geometry" />
</mxCell>
<mxCell id="kZ-qJAZda7UxfiRZ7m-w-0" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;">
<mxGeometry relative="1" as="geometry">
<mxPoint x="280" y="540" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-13" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Aborted" vertex="1">
<mxGeometry height="40" width="80" x="560" y="520" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-16" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.3;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-3">
<mxGeometry relative="1" as="geometry">
<mxPoint x="280" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-19" parent="Z4hdVuXi7llSv1JNwN2g-1" style="rounded=1;whiteSpace=wrap;html=1;" value="" vertex="1">
<mxGeometry height="200" width="160" x="340" y="200" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-20" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1.008;exitY=0.098;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;exitPerimeter=0;" target="Z4hdVuXi7llSv1JNwN2g-41">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-21" parent="Z4hdVuXi7llSv1JNwN2g-1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" value="" vertex="1">
<mxGeometry height="160" width="120" x="360" y="220" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-22" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-27">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-23" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Idle" vertex="1">
<mxGeometry height="40" width="80" x="80" y="240" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-24" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-23">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-25" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Resetting" vertex="1">
<mxGeometry height="40" width="80" x="80" y="320" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-26" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-35">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-27" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Starting" vertex="1">
<mxGeometry height="40" width="80" x="200" y="240" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-28" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" target="Z4hdVuXi7llSv1JNwN2g-33">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-29" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Execute" vertex="1">
<mxGeometry height="40" width="80" x="380" y="240" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-30" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-31" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Suspended" vertex="1">
<mxGeometry height="40" width="80" x="380" y="320" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-32" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-31">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-33" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Suspending" vertex="1">
<mxGeometry height="40" width="80" x="520" y="320" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-34" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-29">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-35" parent="Z4hdVuXi7llSv1JNwN2g-1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="310" y="250" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-36" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-35">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-37" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Unsuspending" vertex="1">
<mxGeometry height="40" width="80" x="240" y="320" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-38" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-43">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-39" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Held" vertex="1">
<mxGeometry height="40" width="80" x="380" y="120" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-40" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-39">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-41" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Holding" vertex="1">
<mxGeometry height="40" width="80" x="520" y="120" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-42" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-35">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-43" parent="Z4hdVuXi7llSv1JNwN2g-1" style="html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;whiteSpace=wrap;" value="Unholding" vertex="1">
<mxGeometry height="40" width="80" x="240" y="120" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-48" edge="1" parent="Z4hdVuXi7llSv1JNwN2g-1" source="Z4hdVuXi7llSv1JNwN2g-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="Z4hdVuXi7llSv1JNwN2g-25">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="Z4hdVuXi7llSv1JNwN2g-49" parent="Z4hdVuXi7llSv1JNwN2g-1" style="ellipse;fillColor=strokeColor;html=1;" value="" vertex="1">
<mxGeometry height="20" width="20" x="110" y="430" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

63
doc/recipe_data.json Normal file
View File

@@ -0,0 +1,63 @@
{
"metadata": {
"version": "1.0",
"description": "Beschreibung der Rezeptparameter",
"maxParams": 5
},
"processVariables": {
"real": [
{
"index": 0,
"id": 1,
"name": "Temperatur",
"unit": "degC",
"min": 0.0,
"max": 60.5
},
{
"index": 1,
"id": 2,
"name": "Dummy 1",
"unit": "mm",
"min": 0.0,
"max": 100.0
}
],
"string": [
{
"index": "0",
"id": 4,
"name": "Dummy string",
"unit": ""
}
],
"lreal": [
{
"index": 0,
"id": 5,
"name": "Test lreal",
"unit": "um",
"min": -123000.3,
"max": 450000.264
}
],
"dint": [
{
"index": 0,
"id": 6,
"name": "Greifer Nummer",
"unit": "",
"min": 1,
"max": 3
},
{
"index": 1,
"id": 7,
"name": "Teller nummer",
"unit": "",
"min": 1,
"max": 3
}
]
}
}

View File

@@ -0,0 +1,87 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "PackTagV3ProcessVariablesSSOT",
"type": "object",
"required": ["metadata", "processVariables"],
"properties": {
"metadata": {
"type": "object",
"required": ["version", "description", "maxParams"],
"properties": {
"version": { "type": "string" },
"description": { "type": "string" },
"maxParams": { "type": "integer", "minimum": 1 }
},
"additionalProperties": false
},
"processVariables": {
"type": "object",
"properties": {
"real": {
"type": "array",
"items": {
"type": "object",
"required": ["index", "id", "name", "unit", "min", "max"],
"properties": {
"index": { "type": "integer", "minimum": 0 },
"id": { "type": "integer", "minimum": 0 },
"name": { "type": "string", "maxLength": 80 },
"unit": { "type": "string", "maxLength": 6 },
"min": { "type": "number" },
"max": { "type": "number" }
},
"additionalProperties": false
}
},
"lreal": {
"type": "array",
"items": {
"type": "object",
"required": ["index", "id", "name", "unit", "min", "max"],
"properties": {
"index": { "type": "integer", "minimum": 0 },
"id": { "type": "integer", "minimum": 0 },
"name": { "type": "string", "maxLength": 80 },
"unit": { "type": "string", "maxLength": 6 },
"min": { "type": "number" },
"max": { "type": "number" }
},
"additionalProperties": false
}
},
"dint": {
"type": "array",
"items": {
"type": "object",
"required": ["index", "id", "name", "unit", "min", "max"],
"properties": {
"index": { "type": "integer", "minimum": 0 },
"id": { "type": "integer", "minimum": 0 },
"name": { "type": "string", "maxLength": 80 },
"unit": { "type": "string", "maxLength": 6 },
"min": { "type": "integer" },
"max": { "type": "integer" }
},
"additionalProperties": false
}
},
"string": {
"type": "array",
"items": {
"type": "object",
"required": ["index", "id", "name", "unit"],
"properties": {
"index": { "type": [ "integer", "string" ] },
"id": { "type": "integer", "minimum": 0 },
"name": { "type": "string", "maxLength": 80 },
"unit": { "type": "string", "maxLength": 6 }
},
"additionalProperties": false
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}