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

View File

@@ -0,0 +1,204 @@
{
"$schema": "../../TcHmiFramework/Schema/ControlDescription.Schema.json",
"apiVersion": 1,
"name": "TcHmiImage",
"namespace": "TcHmi.Controls.Beckhoff",
"displayName": "Image",
"version": {
"full": "14.4.1.0",
"major": 14,
"minor": 4,
"build": 1,
"revision": 0
},
"visible": true,
"themeable": "Standard",
"base": "TcHmi.Controls.System.TcHmiControl",
"description": "Shows an Image.",
"defaultDesignerEvent": ".onPressed",
"properties": {
"containerControl": false,
"geometry": {
"width": 300,
"height": 150
}
},
"icons": [
{
"name": "Icons/16x16.png",
"width": 16,
"height": 16
}
],
"template": "Template.html",
"dependencyFiles": [
{
"name": "Style.css",
"type": "Stylesheet",
"description": ""
},
{
"name": "../dist/TcHmiImage/TcHmiImage.esm.js",
"type": "EsModule",
"description": "Contains all the main logic as ES module."
}
],
"themes": {},
"attributes": [
{
"name": "data-tchmi-width-mode",
"propertyName": "WidthMode",
"propertySetterName": "setWidthMode",
"propertyGetterName": "getWidthMode",
"displayName": "Width Mode",
"visible": true,
"themeable": "Advanced",
"displayPriority": 40,
"type": "tchmi:framework#/definitions/SizeModeWithContent",
"category": "Layout",
"description": "Defines if the width is taken from the width value, calculated from left and right (parent) or taken from the image size or calculated from the height keeping the aspect ratio if height is fixed.",
"readOnly": false,
"bindable": true,
"defaultBindingMode": "OneWay",
"heritable": true,
"defaultValue": null,
"defaultValueInternal": "Value"
},
{
"name": "data-tchmi-height-mode",
"propertyName": "HeightMode",
"displayPriority": 40,
"propertySetterName": "setHeightMode",
"propertyGetterName": "getHeightMode",
"displayName": "Height Mode",
"visible": true,
"themeable": "Advanced",
"type": "tchmi:framework#/definitions/SizeModeWithContent",
"category": "Layout",
"description": "Defines if the height is taken from the height value, calculated from top and bottom (parent) or taken from the image size or calculated from the width keeping the aspect ratio if width is fixed.",
"readOnly": false,
"bindable": true,
"defaultBindingMode": "OneWay",
"heritable": true,
"defaultValue": null,
"defaultValueInternal": "Value"
},
{
"name": "data-tchmi-src",
"propertyName": "Src",
"propertySetterName": "setSrc",
"propertyGetterName": "getSrc",
"displayName": "Src",
"visible": true,
"themeable": "Standard",
"displayPriority": 10,
"type": "tchmi:framework#/definitions/Path",
"category": "Common",
"description": "The image URL.",
"searchTerms": [
"getSource",
"setSource",
"source",
"getImage",
"setImage",
"image",
"getPicture",
"setPicture",
"picture"
],
"readOnly": false,
"bindable": true,
"defaultBindingMode": "OneWay",
"heritable": true,
"defaultValue": null,
"defaultValueInternal": ""
},
{
"name": "data-tchmi-alt",
"propertyName": "Alt",
"propertySetterName": "setAlt",
"propertyGetterName": "getAlt",
"displayName": "Alt",
"visible": true,
"themeable": "Advanced",
"displayPriority": 60,
"type": "tchmi:general#/definitions/String",
"category": "Common",
"description": "Replacement text for use if images are not available.",
"readOnly": false,
"bindable": true,
"defaultBindingMode": "OneWay",
"heritable": true,
"defaultValue": null,
"defaultValueInternal": ""
},
{
"name": "data-tchmi-original-width",
"propertyName": "OriginalWidth",
"propertyGetterName": "getOriginalWidth",
"displayName": "Original Width",
"visible": true,
"displayPriority": 200,
"type": "tchmi:general#/definitions/Number",
"category": "Common",
"description": "The original width of the image resource before sizing or 0 if no media is available.",
"readOnly": true,
"bindable": false,
"defaultBindingMode": "OneWay",
"heritable": true
},
{
"name": "data-tchmi-original-height",
"propertyName": "OriginalHeight",
"propertyGetterName": "getOriginalHeight",
"displayName": "Original Height",
"visible": true,
"displayPriority": 200,
"type": "tchmi:general#/definitions/Number",
"category": "Common",
"description": "The original height of the image resource before sizing or 0 if no media is available.",
"readOnly": true,
"bindable": false,
"defaultBindingMode": "OneWay",
"heritable": true
}
],
"functions": [],
"events": [
{
"name": ".onLoad",
"displayName": ".onLoad",
"visible": true,
"displayPriority": 30,
"category": "Control",
"description": "The load event is fired when the image was loaded successfully.",
"heritable": true,
"arguments": [
{
"type": "tchmi:framework#/definitions/DOMEvent",
"description": "The Event object of the underlying load dom event."
}
]
},
{
"name": ".onError",
"displayName": ".onError",
"visible": true,
"displayPriority": 30,
"category": "Control",
"description": "The error event is fired when the image was not loaded successfully.",
"heritable": true,
"arguments": [
{
"type": "tchmi:framework#/definitions/DOMErrorEvent",
"description": "The ErrorEvent object of the underlying error dom event."
}
]
}
],
"dataTypes": [
{
"schema": "Schema/Types.Schema.json"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -0,0 +1,15 @@
{
"$schema": "http://json-schema.org/draft-04/schema",
"definitions": {
"TcHmi.Controls.Beckhoff.TcHmiImage": {
"$schema": "http://json-schema.org/draft-04/schema",
"type": "object",
"frameworkInstanceOf": "TcHmi.Controls.System.TcHmiControl",
"frameworkControlType": "TcHmiImage",
"frameworkControlNamespace": "TcHmi.Controls.Beckhoff"
},
"TcHmiImage": {
"$ref": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiImage"
}
}
}

View File

@@ -0,0 +1,33 @@
/** Styles for all themes */
/* Style for the main element */
.TcHmi_Controls_Beckhoff_TcHmiImage,
.tchmi-image {
/* Prevent overflow if the border radius is huge */
overflow: hidden;
}
.TcHmi_Controls_Beckhoff_TcHmiImage-template,
.tchmi-image-template {
position: relative;
width: 100%;
height: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiImage-template-content,
.tchmi-image-template-content {
position: absolute;
width: 100%;
height: 100%;
}
.TcHmi_Controls_Beckhoff_TcHmiImage-template-content[src=''],
.tchmi-image-template-content[src=''] {
display: none;
}
/* class TcHmi_Controls_System_TcHmiControl-disabled will be set/unset in the system */
.TcHmi_Controls_Beckhoff_TcHmiImage.TcHmi_Controls_System_TcHmiControl-disabled,
.tchmi-image.tchmi-control-disabled {
opacity: 0.4 !important;
}

View File

@@ -0,0 +1,137 @@
// Compatibility file for non-module typescript compiles without adjustments.
// Use the following line for modern code (needs adjustments to tsconfig.json#configOptions/paths)
// import { TcHmiControl } from "Beckhoff.TwinCAT.HMI.Framework/index.esm.js";
// ***************************************************************************
declare class TcHmiImage extends TcHmi.Controls.System.TcHmiControl {
#private;
constructor(element: JQuery, pcElement: JQuery, attrs: TcHmi.Controls.ControlAttributeList);
/** Reference to the underlying html img element */
protected __elementImage: HTMLImageElement;
/**
* Internal reference to the attribute "tchmi-src"
* Possible Values: Relative path to the target image file based on the project directory as root.
*/
protected __src: string | null | undefined;
/**
* Internal reference to the attribute "tchmi-alt"
*/
protected __alt: string | undefined;
private __runtimeWidthNeededForHeight;
private __runtimeHeightNeededForWidth;
protected __onResizedEventDestroyEvent: TcHmi.DestroyFunction | null;
protected __asyncWorkData: IControlSpecificData;
/**
* If raised, the control object exists in control cache and constructor of each inheritation level was called.
* This function is only to be used by the System. Other function calls are not intended.
*/
__previnit(): void;
/**
* If raised, all attributes have been set to it's default or dom values.
* This function is only to be used by the System. Other function calls are not intended.
*/
__init(): void;
/**
* Is called by the system after the control instance gets part of the current DOM.
* This function is only to be used by the System. Other function calls are not intended.
*/
__attach(): void;
/**
* Is called by the system after the control instance is no longer part of the current DOM.
* This function is only to be used by the System. Other function calls are not intended.
*/
__detach(): void;
/**
* Destroy the current control instance.
* Will be called automatically if system destroys control!
*/
destroy(): void;
protected __onResized(_event: TcHmi.EventProvider.Event, _control: TcHmiControl.Control): void;
protected __doAsyncWork(timestamp?: number): void;
/**
* Processes the current width and width unit.
*/
__processWidth(): void;
/**
* Processes the current height and height unit.
*/
__processHeight(): void;
/**
* Sets the value of the width mode attribute.
* @param valueNew The new width mode value..
*/
setWidthMode(valueNew: TcHmi.SizeModeWithContent | null): void;
/**
* Sets the value of the height mode attribute.
* @param valueNew The new height mode value..
*/
setHeightMode(valueNew: TcHmi.SizeModeWithContent | null): void;
__getContentWidth(): null | number;
__getContentHeight(): null | number;
/**
* @returns The original width of the image.
*/
getOriginalWidth(): number;
/**
* @returns The original height of the image.
*/
getOriginalHeight(): number;
/**
* Loads Image if access is now possible
*/
__processAccessConfig(): void;
/**
* Loads Image if access is now possible
*/
__processIsEnabled(): void;
/**
* Sets the src attribute to a new value.
* @param valueNew The new value for the src attribute;
*/
setSrc(valueNew: string | null): void;
/**
* @returns The current value of the src attribute.
*/
getSrc(): string | null | undefined;
/**
* Processes the current value of attribute src.
*/
protected __processSrc(): void;
/**
* Sets the alt attribute to a new value.
* @param valueNew The new value for the alt attribute;
*/
setAlt(valueNew: string | null): void;
/**
* @returns The current value of the alt attribute.
*/
getAlt(): string | undefined;
/**
* Processes the current value of attribute alt.
*/
protected __processAlt(): void;
/**
* Is raised if the load event is raised
*/
protected __onLoad(event: Event): void;
/**
* Is raised if the error event is raised
*/
protected __onError(event: ErrorEvent): void;
}
export interface IControlSpecificData extends TcHmi.Controls.System.TcHmiControl.IControlSpecificData {
'System.TcHmiImage.resized': boolean;
}
export { TcHmiImage as Control };
declare const _TcHmiImage: typeof TcHmiImage;
type tTcHmiImage = TcHmiImage;
type tIControlSpecificData = IControlSpecificData;
declare global {
namespace TcHmi.Controls.Beckhoff {
const TcHmiImage: typeof _TcHmiImage;
type TcHmiImage = tTcHmiImage;
namespace TcHmiImage {
type IControlSpecificData = tIControlSpecificData;
}
}
}

View File

@@ -0,0 +1,3 @@
<div class="TcHmi_Controls_Beckhoff_TcHmiImage-template tchmi-image-template tchmi-box">
<img class="TcHmi_Controls_Beckhoff_TcHmiImage-template-content tchmi-image-template-content" alt src />
</div>