Added minimal functionality for Robot teaching

- Added minimal HMI
- Added possibility to open and close all chamber doors
This commit is contained in:
2026-01-17 09:20:39 +01:00
parent 9f058db2a3
commit 2d11c43579
2274 changed files with 912690 additions and 162 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

View File

@@ -0,0 +1,406 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"definitions": {
"ChartBarGraphColorList": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphColorList"
},
"ChartBarGraphDataDefinitionList": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphDataDefinitionList"
},
"ChartBarGraphPosition": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphPosition"
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart": {
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"frameworkInstanceOf": "TcHmi.Controls.System.TcHmiControl",
"frameworkControlType": "TcHmiBarChart",
"frameworkControlNamespace": "TcHmi.Controls.Beckhoff"
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphColorList": {
"title": "ChartBarGraphColorList",
"engineeringDefaultDatatype": 0,
"anyOf": [
{
"type": "array",
"items": {
"$ref": "tchmi:framework#/definitions/SolidColor"
}
},
{
"$ref": "tchmi:framework#/definitions/SolidColor"
}
]
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphDataDefinitionList": {
"title": "ChartBarGraphDataDefinitionList",
"engineeringDefaultDatatype": 0,
"anyOf": [
{
"type": "array",
"title": "Array<Array<number>>",
"items": {
"type": "array",
"items": {
"type": "number"
}
}
},
{
"type": "array",
"title": "Array<number>",
"items": {
"type": "number"
}
}
]
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphPosition": {
"title": "ChartBarGraphPosition",
"type": "string",
"enum": ["Left", "Right"],
"default": "Left"
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphDescriptionDefinitionList": {
"title": "ChartBarGraphDescriptionDefinitionList",
"type": "array",
"items": {
"type": "object",
"engineeringColumns": ["legendName"],
"propertiesMeta": [
{
"name": "barColor",
"displayName": "Bar Color",
"category": "Colors",
"displayPriority": 10,
"description": "Color for this bars",
"defaultValue": {
"color": "#2775be"
},
"defaultValueInternal": null
},
{
"name": "legendName",
"category": "General",
"displayName": "Legend Name",
"displayPriority": 10,
"description": "The name that is displayed in the legend.",
"defaultValue": null,
"defaultValueInternal": null
},
{
"name": "scaleFactor",
"category": "General",
"displayName": "Scale Factor",
"displayPriority": 10,
"description": "Scales all values with this scale factor.",
"defaultValue": null,
"defaultValueInternal": 1
},
{
"name": "colorRanges",
"category": "General",
"displayName": "Color Ranges",
"displayPriority": 10,
"description": "An array of colors to be used in different ranges.",
"defaultValue": null,
"defaultValueInternal": null
},
{
"name": "defaultVisibility",
"category": "General",
"displayName": "Default Visibility",
"displayPriority": 10,
"description": "Default value for visibility.",
"defaultValue": null,
"defaultValueInternal": true
}
],
"properties": {
"barColor": {
"$ref": "tchmi:framework#/definitions/SolidColor"
},
"legendName": {
"type": "string"
},
"scaleFactor": {
"type": "number"
},
"colorRanges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"color": {
"$ref": "tchmi:framework#/definitions/SolidColor"
},
"expression": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarColorFilter"
}
},
"additionalProperties": false
}
},
"defaultVisibility": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarColorFilter": {
"title": "ChartBarColorFilter",
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"path": {
"type": "string",
"enum": ["{value}"],
"default": "{value}"
},
"comparator": {
"type": "string",
"enum": ["==", "!=", "<", ">", "<=", ">="],
"default": "=="
},
"value": {
"type": "number"
}
},
"additionalProperties": false,
"required": ["path", "comparator", "value"]
},
{
"type": "object",
"properties": {
"logic": {
"enum": ["AND", "OR"],
"type": "string"
}
},
"required": ["logic"],
"additionalProperties": false
},
{
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarColorFilter"
}
]
}
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartBarGraphArrangement": {
"title": "ChartBarGraphArrangement",
"type": "string",
"enum": ["Overlapped", "Clustered", "Stacked"],
"default": "Overlapped"
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartAxisLabeling": {
"title": "ChartAxisLabeling",
"type": "string",
"enum": ["Number", "Scientific", "Auto"],
"default": "Number"
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartReferenceLineDefinition": {
"title": "ChartReferenceLineDefinition",
"type": "object",
"engineeringColumns": ["name", "value", "orientation"],
"propertiesMeta": [
{
"name": "show",
"category": "General",
"displayName": "Show",
"displayPriority": 10,
"description": "Describes whether the reference line is displayed.",
"defaultValue": null,
"defaultValueInternal": true
},
{
"name": "name",
"category": "General",
"displayName": "Name",
"displayPriority": 10,
"description": "Describes the name of the reference line.",
"defaultValue": null,
"defaultValueInternal": ""
},
{
"name": "orientation",
"category": "General",
"displayName": "Orientation",
"displayPriority": 10,
"description": "Describes whether the reference line is vertical or horizontal.",
"defaultValue": "Horizontal",
"defaultValueInternal": "Horizontal"
},
{
"name": "value",
"category": "General",
"displayName": "Value",
"displayPriority": 10,
"description": "Describes the value of the reference line.",
"defaultValue": null,
"defaultValueInternal": 0
},
{
"name": "valueUnit",
"category": "General",
"displayName": "Value Unit",
"displayPriority": 10,
"description": "Describes the unit of the value of the reference line (Value or %).",
"defaultValue": "Value",
"defaultValueInternal": "Value"
},
{
"name": "color",
"category": "Colors",
"displayName": "Color",
"displayPriority": 10,
"description": "Describes the color of the reference line.",
"defaultValue": "%tr%Control::TcHmi.Controls.Beckhoff.TcHmiBarChart::ReferenceLineColor%/tr%",
"defaultValueInternal": {
"color": "#4794da"
}
},
{
"name": "lineWidth",
"category": "General",
"displayName": "Line Width",
"displayPriority": 10,
"description": "Describes the line thickness of the reference line.",
"defaultValue": null,
"defaultValueInternal": 1
},
{
"name": "showLabel",
"category": "General",
"displayName": "Show Label",
"displayPriority": 10,
"description": "Describes whether the description of the reference line is displayed.",
"defaultValue": null,
"defaultValueInternal": true
},
{
"name": "labelHorizontalAlignment",
"category": "General",
"displayName": "Label Horizontal Alignment",
"displayPriority": 10,
"description": "Describes the horizontal alignment of the reference line description.",
"defaultValue": null,
"defaultValueInternal": "Right"
},
{
"name": "labelVerticalAlignment",
"category": "General",
"displayName": "Label Vertical Alignment",
"displayPriority": 10,
"description": "Describes the vertical alignment of the reference line description.",
"defaultValue": null,
"defaultValueInternal": "Top"
},
{
"name": "labelFontFamily",
"category": "General",
"displayName": "Label Font Family",
"displayPriority": 10,
"description": "Describes the font of the description of the reference line. Comma separated list of family name or keyword: 'serif', 'sans-serif', 'monospace'.",
"defaultValue": null,
"defaultValueInternal": null
},
{
"name": "labelFontSize",
"category": "General",
"displayName": "Label Font Size",
"displayPriority": 10,
"description": "Describes the font size of the description of the reference line.",
"defaultValue": null,
"defaultValueInternal": 12
},
{
"name": "labelFontSizeUnit",
"refTo": "labelFontSize",
"category": "General",
"displayName": "Label Font Size Unit",
"displayPriority": 10,
"description": "Describes the font size unit of the description of the reference line.",
"defaultValue": null,
"defaultValueInternal": "px"
},
{
"name": "labelFontWeight",
"category": "General",
"displayName": "Label Font Weight",
"displayPriority": 10,
"description": "Describes the font weight of the description of the reference line. 'Normal', 'Bold' (glyphs with more weight) or 'Auto' for inherited.",
"defaultValue": null,
"defaultValueInternal": "Auto"
}
],
"properties": {
"show": {
"type": "boolean"
},
"name": {
"type": "string"
},
"orientation": {
"type": "string",
"enum": ["Horizontal", "Vertical"]
},
"value": {
"type": "number"
},
"valueUnit": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.ChartReferenceLineValueUnit"
},
"color": {
"$ref": "tchmi:framework#/definitions/SolidColor"
},
"lineWidth": {
"type": "number"
},
"showLabel": {
"type": "boolean"
},
"labelHorizontalAlignment": {
"$ref": "tchmi:framework#/definitions/HorizontalAlignment"
},
"labelVerticalAlignment": {
"$ref": "tchmi:framework#/definitions/VerticalAlignment"
},
"labelFontFamily": {
"$ref": "tchmi:framework#/definitions/FontFamily"
},
"labelFontSize": {
"$ref": "tchmi:framework#/definitions/MeasurementValue"
},
"labelFontSizeUnit": {
"$ref": "tchmi:framework#/definitions/PixelUnit"
},
"labelFontWeight": {
"$ref": "tchmi:framework#/definitions/FontWeight"
}
},
"additionalProperties": false,
"required": ["name", "value", "orientation"]
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartReferenceLineDefinitionList": {
"$schema": "http://json-schema.org/draft-04/schema",
"title": "ChartReferenceLineDefinitionList",
"type": "array",
"items": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartReferenceLineDefinition"
}
},
"TcHmi.Controls.Beckhoff.TcHmiBarChart.ChartReferenceLinesPosition": {
"title": "ChartReferenceLinesPosition",
"type": "string",
"enum": ["Background", "Foreground"],
"default": "Background"
},
"TcHmiBarChart": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiBarChart"
}
}
}

View File

@@ -0,0 +1,67 @@
/** Styles for all themes */
/* Style for the main element */
.TcHmi_Controls_Beckhoff_TcHmiBarChart,
.tchmi-bar-chart {
/* Prevent overflow if the border radius is huge */
overflow: hidden;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template,
.tchmi-bar-chart-template {
position: absolute;
width: 100%;
height: 100%;
display: grid;
grid-template-rows: auto min-content;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-chart,
.tchmi-bar-chart-template-chart {
position: relative;
top: 0px;
margin: 5px;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend {
position: relative;
overflow: hidden;
white-space: nowrap;
margin: 5px;
margin-top: 0px;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-bottom {
bottom: 0px;
left: 0px;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-parent-element {
position: relative;
float: left;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-checkbox {
position: relative;
vertical-align: middle;
float: left;
margin: 3px;
width: 13px;
height: 13px;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-checkbox-color-element {
position: relative;
float: left;
height: 2px;
width: 10px;
margin-right: 5px;
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-checkbox-label {
position: relative;
float: left;
padding-right: 10px;
display: flex;
align-items: center;
}

View File

@@ -0,0 +1,6 @@
<div class="TcHmi_Controls_Beckhoff_TcHmiBarChart-template tchmi-bar-chart-template tchmi-box">
<div class="TcHmi_Controls_Beckhoff_TcHmiBarChart-template-chart tchmi-bar-chart-template-chart"></div>
<div
class="TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-bottom"
></div>
</div>

View File

@@ -0,0 +1,44 @@
{
"$schema": "../../../../TcHmiFramework/Schema/ThemeDescription.Schema.json",
"controlTypeValues": {
"TcHmi.Controls.Beckhoff.TcHmiBarChart": {
"attributes": {
"XLabelFontColor": {
"color": "#ffffff"
},
"XAxisColor": {
"color": "#ffffff"
},
"YLabelFontColor": {
"color": "#ffffff"
},
"YAxisColor": {
"color": "#ffffff"
},
"YAxisNameFontColor": {
"color": "#ffffff"
},
"GridBackgroundColor": {
"color": "#2b2b2c"
},
"GridLineColor": {
"color": "#ffffff"
},
"SubgridLineColor": {
"color": "#ffffff"
}
},
"themedResources": {
"DefaultGraphColor": {
"color": "#2775be"
},
"ReferenceLineColor": {
"color": "#ffffff"
},
"DefaultColorRangeColor": {
"color": "#ffffff"
}
}
}
}
}

View File

@@ -0,0 +1,8 @@
<svg version="1.1"
baseProfile="full"
width="30" height="30"
xmlns="http://www.w3.org/2000/svg">
<path d="M 9 18 L 13 22 L 22 9" fill="none" stroke="white" stroke-width="4" stroke-linecap="round" />
</svg>

After

Width:  |  Height:  |  Size: 225 B

View File

@@ -0,0 +1,37 @@
/** Styles for the theme: Base-Dark */
/* Style for the main element */
.TcHmi_Controls_Beckhoff_TcHmiBarChart,
.tchmi-bar-chart {
--tchmi-background: var(--tchmi-background-color-1);
--tchmi-background-part: var(--tchmi-background-color-3);
--tchmi-checkbox-background: var(--tchmi-background-color-4);
--tchmi-checkbox-background-checked: var(--tchmi-highlight-color-1);
--tchmi-color: var(--tchmi-foreground-color-1);
--tchmi-border-color: var(--tchmi-background-color-2);
background: var(--tchmi-background);
box-shadow: var(--tchmi-card-shadow);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-chart,
.tchmi-bar-chart-template-chart {
background: var(--tchmi-background-part);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend {
background: var(--tchmi-background-part);
color: var(--tchmi-color);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-checkbox {
appearance: none;
background: var(--tchmi-checkbox-background);
border: 1px solid var(--tchmi-border-color);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-checkbox:checked {
background:
url(Images/checkbox.svg) 13px 13px,
var(--tchmi-checkbox-background-checked);
background-size: 15px 15px;
}

View File

@@ -0,0 +1,47 @@
{
"$schema": "../../../../TcHmiFramework/Schema/ThemeDescription.Schema.json",
"controlTypeValues": {
"TcHmi.Controls.Beckhoff.TcHmiBarChart": {
"attributes": {
"XLabelFontColor": {
"color": "#4794da"
},
"XAxisColor": {
"color": "#4794da"
},
"XAxisNameFontColor": {
"color": "#4794da"
},
"YLabelFontColor": {
"color": "#4794da"
},
"YAxisColor": {
"color": "#4794da"
},
"YAxisNameFontColor": {
"color": "#4794da"
},
"GridBackgroundColor": {
"color": "#f2f2f2"
},
"GridLineColor": {
"color": "#4794da"
},
"SubgridLineColor": {
"color": "#4794da"
}
},
"themedResources": {
"DefaultGraphColor": {
"color": "#4794da"
},
"ReferenceLineColor": {
"color": "#4794da"
},
"DefaultColorRangeColor": {
"color": "#4794da"
}
}
}
}
}

View File

@@ -0,0 +1,8 @@
<svg version="1.1"
baseProfile="full"
width="30" height="30"
xmlns="http://www.w3.org/2000/svg">
<path d="M 9 18 L 13 22 L 22 9" fill="none" stroke="white" stroke-width="4" stroke-linecap="round" />
</svg>

After

Width:  |  Height:  |  Size: 225 B

View File

@@ -0,0 +1,37 @@
/** Styles for the theme: Base */
/* Style for the main element */
.TcHmi_Controls_Beckhoff_TcHmiBarChart,
.tchmi-bar-chart {
--tchmi-background: var(--tchmi-background-color-1);
--tchmi-background-part: var(--tchmi-background-color-1);
--tchmi-checkbox-background: var(--tchmi-background-color-4);
--tchmi-checkbox-background-checked: var(--tchmi-highlight-color-1);
--tchmi-color: var(--tchmi-highlight-color-1);
--tchmi-border-color: var(--tchmi-background-color-2);
background: var(--tchmi-background);
box-shadow: var(--tchmi-card-shadow);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-chart,
.tchmi-bar-chart-template-chart {
background: var(--tchmi-background-part);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend {
background: var(--tchmi-background-part);
color: var(--tchmi-color);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-checkbox {
appearance: none;
background: var(--tchmi-checkbox-background);
border: 1px solid var(--tchmi-border-color);
}
.TcHmi_Controls_Beckhoff_TcHmiBarChart-template-legend-checkbox:checked {
background:
url(Images/checkbox.svg) 13px 13px,
var(--tchmi-checkbox-background-checked);
background-size: 15px 15px;
}