├── VFFSDemo_HMI
├── Server
│ ├── TcHmiLua
│ │ ├── TcHmiLua.Config.remote.json
│ │ ├── TcHmiLua.Config.default.json
│ │ └── TcHmiLua.Storage.json
│ ├── TcHmiSqliteLogger
│ │ ├── TcHmiSqliteLogger.Config.remote.json
│ │ ├── TcHmiSqliteLogger.Storage.json
│ │ └── TcHmiSqliteLogger.Config.default.json
│ ├── TcHmiUserManagement
│ │ ├── TcHmiUserManagement.Config.remote.json
│ │ ├── TcHmiUserManagement.Storage.json
│ │ └── TcHmiUserManagement.Config.default.json
│ ├── TcHmiRecipeManagement
│ │ ├── TcHmiRecipeManagement.Config.remote.json
│ │ └── TcHmiRecipeManagement.Storage.json
│ ├── ADS
│ │ ├── ADS.Storage.json
│ │ ├── ADS.Config.remote.json
│ │ └── ADS.Config.default.json
│ ├── TcHmiSrv
│ │ ├── TcHmiSrv.Storage.json
│ │ └── TcHmiSrv.Config.remote.json
│ ├── TcHmiEventLogger
│ │ ├── TcHmiEventLogger.Storage.json
│ │ ├── TcHmiEventLogger.Config.remote.json
│ │ └── TcHmiEventLogger.Config.default.json
│ ├── .TcHmiEcDiagnostics
│ │ ├── TcHmiEcDiagnostics.Storage.json
│ │ ├── TcHmiEcDiagnostics.Config.remote.json
│ │ └── TcHmiEcDiagnostics.Config.default.json
│ └── TcHmiSqliteHistorize
│ │ ├── TcHmiSqliteHistorize.Storage.json
│ │ ├── TcHmiSqliteHistorize.Config.remote.json
│ │ └── TcHmiSqliteHistorize.Config.default.json
├── Images
│ ├── Favicon.ico
│ ├── Manifest
│ │ ├── launcher-icon-1x.png
│ │ ├── launcher-icon-2x.png
│ │ ├── launcher-icon-3x.png
│ │ ├── launcher-icon-4x.png
│ │ ├── launcher-icon-0-75x.png
│ │ └── launcher-icon-1-5x.png
│ ├── MachineOverviewImages
│ │ ├── Unwind.png
│ │ ├── Pullbelts.png
│ │ ├── CrossjawSeal.png
│ │ └── VFFS_Overview.png
│ ├── Beckhoff_Logo.svg
│ └── PLC
│ │ ├── plc-fallback.svg
│ │ ├── plc-config.svg
│ │ ├── plc-run.svg
│ │ ├── plc-stop.svg
│ │ └── plc-exeption.svg
├── Imports
│ └── Images
│ │ ├── Arrow-0.png
│ │ ├── ArrowDR.png
│ │ ├── ArrowDn.png
│ │ ├── ArrowLt.png
│ │ ├── ArrowUR.png
│ │ ├── ArrowUp.png
│ │ ├── ArrowLt_LongLong-0.png
│ │ ├── arrow-bar-down-white.svg
│ │ ├── arrow-bar-up-white.svg
│ │ ├── scope_start_active.svg
│ │ ├── scope_start_normal.svg
│ │ ├── scope_start_pressed.svg
│ │ ├── hand_operation_active.svg
│ │ ├── hand_operation_normal.svg
│ │ ├── hand_operation_pressed.svg
│ │ ├── stop_inactive.svg
│ │ ├── reset_achse_inactive.svg
│ │ ├── start_inactive.svg
│ │ ├── reset_achse_normal.svg
│ │ └── start_normal.svg
├── Fonts
│ ├── Roboto-Condensed-webfont.woff
│ └── Fonts.css
├── Themes
│ ├── Base
│ │ ├── Images
│ │ │ ├── Background.png
│ │ │ ├── Splash-320x534.png
│ │ │ ├── Splash-420x200.png
│ │ │ ├── Splash-800x600.png
│ │ │ └── Placeholder
│ │ │ │ ├── placeholder_pressed.svg
│ │ │ │ ├── placeholder_active.svg
│ │ │ │ └── placeholder_normal.svg
│ │ ├── TcHmi.Controls.ResponsiveNavigation.TcHmiNavigationBar
│ │ │ └── Images
│ │ │ │ └── menu.png
│ │ ├── Icons
│ │ │ ├── icons_previous_normal.svg
│ │ │ └── icons_previous_pressed.svg
│ │ ├── TcHmi.Controls.BaseTemplate.TcHmiNavigation
│ │ │ └── Icons
│ │ │ │ ├── icons_previous_normal.svg
│ │ │ │ └── icons_previous_pressed.svg
│ │ └── CustomControlClasses.css
│ ├── SPT-Base
│ │ ├── Images
│ │ │ ├── Background.png
│ │ │ ├── Splash-320x534.png
│ │ │ ├── Splash-420x200.png
│ │ │ ├── Splash-800x600.png
│ │ │ ├── Settings
│ │ │ │ ├── SettingsOmacPackML_Active.png
│ │ │ │ └── SettingsOmacPackML_Normal.png
│ │ │ ├── Placeholder
│ │ │ │ ├── placeholder_pressed.svg
│ │ │ │ ├── placeholder_active.svg
│ │ │ │ ├── placeholder_normal.svg
│ │ │ │ ├── icons_home_active.svg
│ │ │ │ ├── icons_home_normal.svg
│ │ │ │ └── icons_home_pressed.svg
│ │ │ └── Events
│ │ │ │ ├── message_pressed.svg
│ │ │ │ ├── message_active.svg
│ │ │ │ └── message_normal.svg
│ │ ├── TcHmi.Controls.ResponsiveNavigation.TcHmiNavigationBar
│ │ │ └── Images
│ │ │ │ └── menu.png
│ │ ├── TcHmi.Controls.BaseTemplate.TcHmiNavigation
│ │ │ └── Icons
│ │ │ │ ├── icons_previous_normal.svg
│ │ │ │ └── icons_previous_pressed.svg
│ │ └── CustomControlClasses.css
│ └── Base-Dark
│ │ └── Images
│ │ ├── Background.png
│ │ ├── Splash-320x534.png
│ │ ├── Splash-420x200.png
│ │ ├── Splash-800x600.png
│ │ ├── Placeholder
│ │ ├── placeholder_active.svg
│ │ ├── placeholder_normal.svg
│ │ └── placeholder_pressed.svg
│ │ └── Beckhoff_Logo.svg
├── .tfignore
├── Localization
│ ├── de.localization
│ ├── de.tpl.localization
│ ├── en.localization
│ └── en.tpl.localization
├── .eslintrc.json
├── UserControls
│ ├── PackML
│ │ ├── PackML_ModeDisplay.usercontrol.json
│ │ ├── PackML_StateDisplay.usercontrol.json
│ │ ├── PackML_MainCycleControl.usercontrol.json
│ │ ├── PackML_BaseModule_Monitor.usercontrol.json
│ │ ├── PackML_BaseSubModule_Monitor.usercontrol.json
│ │ ├── PackML_StateDiagram.usercontrol.json
│ │ ├── PackML_BaseSubModule_Buttons2_Monitor.usercontrol.json
│ │ ├── PackML_BaseModule_Buttons_Monitor.usercontrol.json
│ │ ├── PackML_BaseModule_Buttons2_Monitor.usercontrol.json
│ │ ├── PackML_StateCommand.usercontrol.json
│ │ └── PackML_ModeCommand.usercontrol.json
│ ├── Components
│ │ ├── AxisBase_Monitor.usercontrol.json
│ │ ├── Cylinder_Monitor.usercontrol.json
│ │ ├── ComponentBase_Monitor.usercontrol.json
│ │ ├── DigitalSensor_Monitor.usercontrol.json
│ │ ├── ComponentBase_Monitor_Navigation.usercontrol.json
│ │ ├── AxisBase_Monitor_Navigation.usercontrol.json
│ │ ├── Cylinder_Monitor_Navigation.usercontrol.json
│ │ └── DigitalSensor_Monitor_Navigation.usercontrol.json
│ └── Utilities
│ │ ├── LabelWithIndicator.usercontrol.json
│ │ ├── ErrorIDDisplay.usercontrol.json
│ │ ├── LabelWithDataFeedback.usercontrol.json
│ │ ├── LabelWithNoFeedback.usercontrol.json
│ │ ├── LabelWithDataFeedback2Row.usercontrol.json
│ │ ├── LabelWithNoFeedback.usercontrol
│ │ ├── LabelWithDataFeedback.usercontrol
│ │ ├── LabelWithDataFeedback2Row.usercontrol
│ │ ├── LabelWithIndicator.usercontrol
│ │ └── ButtonWithIndicator.usercontrol.json
├── packages.xsd
├── SetEventBarFilter.function.json
├── RecipeFunctions
│ ├── UploadRecipe.function.json
│ ├── DownloadRecipe.function.json
│ ├── DeleteRecipe.function.json
│ ├── ConvertRecipeToDatagrid.function.json
│ ├── ListRecipesAsReferenceArray.function.json
│ ├── ConvertDatagridToRecipe.function.json
│ ├── UpdateDatagridFromTarget.function.json
│ ├── DeleteRecipe.js
│ ├── ListRecipesAsReferenceArray.js
│ ├── ConvertDatagridToRecipe.js
│ ├── ConvertRecipeToDatagrid.js
│ └── DownloadRecipe.js
├── tsconfig.tpl.json
├── tsconfig.json
├── packages.config
├── TrimDecimalNumber.js
├── NavigateToDetailPage.js
├── VFFSDemo_HMI.sln
├── Pages
│ ├── EquipmentModules
│ │ ├── Sealer
│ │ │ ├── Components
│ │ │ │ └── SealerAxis.content
│ │ │ └── Sealer_PackML.content
│ │ ├── PullWheels
│ │ │ ├── Components
│ │ │ │ ├── PullWheel_Right.content
│ │ │ │ ├── PullWheel_Left.content
│ │ │ │ └── Cylinder.content
│ │ │ └── PullWheels_PackML.content
│ │ └── Unwind
│ │ │ ├── Components
│ │ │ ├── UnwindAxis.content
│ │ │ └── Sensor.content
│ │ │ └── Unwind_PackML.content
│ ├── PackMLStateDiagram.content
│ └── Recipe
│ │ └── RecipeManagement.content
├── Properties
│ ├── tchmimanifest.json
│ ├── Default.tpl
│ └── tchmipublish.config.json
├── NavigateToDetailPage.function.json
├── SetEventBarFilter.js
├── TrimDecimalNumber.function.json
├── SetEventLoggerFilters.function.json
└── SetEventLoggerFilters.js
├── VFFS_HMI_Demo.pdf
├── README.md
└── LICENSE
/VFFSDemo_HMI/Server/TcHmiLua/TcHmiLua.Config.remote.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSqliteLogger/TcHmiSqliteLogger.Config.remote.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiUserManagement/TcHmiUserManagement.Config.remote.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiRecipeManagement/TcHmiRecipeManagement.Config.remote.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/VFFS_HMI_Demo.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFS_HMI_Demo.pdf
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiLua/TcHmiLua.Config.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "HTML_ERRORS": false,
3 | "SCRIPT_TIMEOUT": "PT10S"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/Favicon.ico
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/ADS/ADS.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.42",
3 | "guid": "5AE90DB9-B895-45AD-9B79-27A19FADCD86"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiLua/TcHmiLua.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.1",
3 | "guid": "EBCC019A-41B4-4ADA-9163-F9F34357B0B6"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSrv/TcHmiSrv.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.118",
3 | "guid": "1EE8B733-8328-488E-A4BA-C287BF8302E7"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/Arrow-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Imports/Images/Arrow-0.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/ArrowDR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Imports/Images/ArrowDR.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/ArrowDn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Imports/Images/ArrowDn.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/ArrowLt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Imports/Images/ArrowLt.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/ArrowUR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Imports/Images/ArrowUR.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/ArrowUp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Imports/Images/ArrowUp.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiEventLogger/TcHmiEventLogger.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.12",
3 | "guid": "63A51718-33F7-4F6B-851A-963E4F3F74BD"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSqliteLogger/TcHmiSqliteLogger.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.12",
3 | "guid": "CD0B1D03-27D7-4904-BEFF-3882D751757A"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Fonts/Roboto-Condensed-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Fonts/Roboto-Condensed-webfont.woff
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/.TcHmiEcDiagnostics/TcHmiEcDiagnostics.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.54",
3 | "guid": "5DC96C56-5913-4dbb-92A5-8557E1B87658"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSqliteHistorize/TcHmiSqliteHistorize.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.42",
3 | "guid": "EB1F70B7-D988-4EFE-8AB5-6D46DD4CED09"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiUserManagement/TcHmiUserManagement.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.8",
3 | "guid": "2E0817F0-DE05-42ED-BAFA-552D96B07127"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Images/Background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base/Images/Background.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Manifest/launcher-icon-1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/Manifest/launcher-icon-1x.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Manifest/launcher-icon-2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/Manifest/launcher-icon-2x.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Manifest/launcher-icon-3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/Manifest/launcher-icon-3x.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Manifest/launcher-icon-4x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/Manifest/launcher-icon-4x.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/ArrowLt_LongLong-0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Imports/Images/ArrowLt_LongLong-0.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiRecipeManagement/TcHmiRecipeManagement.Storage.json:
--------------------------------------------------------------------------------
1 | {
2 | "configVersion": "1.0.0.14",
3 | "guid": "202AA035-2258-492E-965D-DE1EA9D12D59"
4 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Images/Splash-320x534.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base/Images/Splash-320x534.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Images/Splash-420x200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base/Images/Splash-420x200.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Images/Splash-800x600.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base/Images/Splash-800x600.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/SPT-Base/Images/Background.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/MachineOverviewImages/Unwind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/MachineOverviewImages/Unwind.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Manifest/launcher-icon-0-75x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/Manifest/launcher-icon-0-75x.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Manifest/launcher-icon-1-5x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/Manifest/launcher-icon-1-5x.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base-Dark/Images/Background.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/MachineOverviewImages/Pullbelts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/MachineOverviewImages/Pullbelts.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Splash-320x534.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base-Dark/Images/Splash-320x534.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Splash-420x200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base-Dark/Images/Splash-420x200.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Splash-800x600.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base-Dark/Images/Splash-800x600.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Splash-320x534.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/SPT-Base/Images/Splash-320x534.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Splash-420x200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/SPT-Base/Images/Splash-420x200.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Splash-800x600.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/SPT-Base/Images/Splash-800x600.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/MachineOverviewImages/CrossjawSeal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/MachineOverviewImages/CrossjawSeal.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/MachineOverviewImages/VFFS_Overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Images/MachineOverviewImages/VFFS_Overview.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Settings/SettingsOmacPackML_Active.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/SPT-Base/Images/Settings/SettingsOmacPackML_Active.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Settings/SettingsOmacPackML_Normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/SPT-Base/Images/Settings/SettingsOmacPackML_Normal.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiEventLogger/TcHmiEventLogger.Config.remote.json:
--------------------------------------------------------------------------------
1 | {
2 | "TARGET_SYSTEMS": {
3 | "Local": {
4 | "ADDRESS": "127.0.0.1.1.1",
5 | "ENABLED": true
6 | }
7 | }
8 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiEventLogger/TcHmiEventLogger.Config.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "LIMIT_EVENT_COUNT": 1000,
3 | "TARGET_SYSTEMS": {
4 | "Local": {
5 | "ADDRESS": "127.0.0.1.1.1",
6 | "ENABLED": true
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/TcHmi.Controls.ResponsiveNavigation.TcHmiNavigationBar/Images/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/Base/TcHmi.Controls.ResponsiveNavigation.TcHmiNavigationBar/Images/menu.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/.TcHmiEcDiagnostics/TcHmiEcDiagnostics.Config.remote.json:
--------------------------------------------------------------------------------
1 | {
2 | "devices": {
3 | "Device1": {
4 | "enabled": true,
5 | "masterNetId": "0.0.0.0.2.1",
6 | "targetNetId": "0.0.0.0.1.1"
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/TcHmi.Controls.ResponsiveNavigation.TcHmiNavigationBar/Images/menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Beckhoff-USA-Community/PackML_HMI_Example/HEAD/VFFSDemo_HMI/Themes/SPT-Base/TcHmi.Controls.ResponsiveNavigation.TcHmiNavigationBar/Images/menu.png
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSqliteLogger/TcHmiSqliteLogger.Config.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "DEFAULT_LIST_LIMIT": 1000,
3 | "MAXENTRIES": 15000,
4 | "MAXENTRYLENGTH": 1024,
5 | "MODE": 1,
6 | "REDIRECT_DIAGNOSTICS_MESSAGES_TO_FILE": true,
7 | "VACUUM_ON_STARTUP": false
8 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/ADS/ADS.Config.remote.json:
--------------------------------------------------------------------------------
1 | {
2 | "RUNTIMES": {
3 | "PLC1": {
4 | "ENABLED": true,
5 | "NETID": "127.0.0.1.1.1",
6 | "PORT": 851,
7 | "SYMBOLS": {},
8 | "USE_WHITELISTING": false
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/.tfignore:
--------------------------------------------------------------------------------
1 | ## Ignore TwinCAT HMI temporary files, build results, and
2 | ## files generated by popular TwinCAT HMI add-ons.
3 |
4 | .engineering_servers/
5 | tchmipublish.journal.json
6 | liveview_*
7 | *.cache
8 | *.db-shm
9 | *.db-wal
10 | *.pid
11 | **/.hmiframework/
12 | **/.hmipkgs/
13 | **/*.d.ts
14 | **/*.js.map
15 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSrv/TcHmiSrv.Config.remote.json:
--------------------------------------------------------------------------------
1 | {
2 | "CERTIFICATEEXPIRATION": "P14000D",
3 | "REQUIREAUTH": 2,
4 | "VIRTUALDIRECTORIES": {
5 | "/": "www",
6 | "/Beckhoff.TwinCAT.HMI.EcDiagnosticsControl": "..\\..\\VFFSDemo_HMI\\Packages\\Beckhoff.TwinCAT.HMI.EcDiagnosticsControl.12.756.1\\runtimes\\native1.12-tchmi"
7 | }
8 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/arrow-bar-down-white.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/arrow-bar-up-white.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Images/Placeholder/placeholder_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Placeholder/placeholder_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Images/Placeholder/placeholder_active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Images/Placeholder/placeholder_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Placeholder/placeholder_active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Placeholder/placeholder_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Placeholder/placeholder_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Placeholder/placeholder_active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Placeholder/placeholder_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Placeholder
6 |
7 |
8 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Localization/de.localization:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/LocalizationDescription.Schema.json",
3 | "locale": "de",
4 | "localizedText": {
5 | "L_MachineOverview": "MachineOverview",
6 | "L_Events": "Meldungen",
7 | "L_Localization": "Lokalisierung",
8 | "L_Theme": "Farbschema",
9 | "L_Settings": "Einstellungen",
10 | "L_PullWheels": "Der Pull Wheels",
11 | "L_Sealer": "Die Sealer",
12 | "L_Sensor": "Das Sensor",
13 | "L_Unwind": "Das Unwind",
14 | "L_Blank": " "
15 | }
16 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Localization/de.tpl.localization:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/LocalizationDescription.Schema.json",
3 | "locale": "de",
4 | "localizedText": {
5 | "L_MachineOverview": "MachineOverview",
6 | "L_Events": "Meldungen",
7 | "L_Localization": "Lokalisierung",
8 | "L_Theme": "Farbschema",
9 | "L_Settings": "Einstellungen",
10 | "L_PullWheels": "Der Pull Wheels",
11 | "L_Sealer": "Die Sealer",
12 | "L_Sensor": "Das Sensor",
13 | "L_Unwind": "Das Unwind",
14 | "L_Blank": " "
15 | }
16 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Localization/en.localization:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/LocalizationDescription.Schema.json",
3 | "locale": "en",
4 | "localizedText": {
5 | "L_MachineOverview": "Machine Overview",
6 | "L_Events": "Events",
7 | "L_Localization": "Localization",
8 | "L_Theme": "Theme",
9 | "L_Settings": "Settings",
10 | "L_PullWheels": "Pull Wheels",
11 | "L_Sealer": "Sealer",
12 | "L_Sensor": "Sensor",
13 | "L_Unwind": "Unwind",
14 | "L_Home": "Home",
15 | "L_Blank": " ",
16 | "L_SealBar": "Seal Bar"
17 | }
18 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/eslintrc",
3 | "env": {
4 | "browser": true,
5 | "es6": true,
6 | "jquery": true
7 | },
8 | "parserOptions": {
9 | "ecmaVersion": 6,
10 | "sourceType": "script"
11 | },
12 | "rules": {
13 | "no-dupe-args": "error",
14 | "no-dupe-else-if": "error",
15 | "no-duplicate-case": "warn",
16 | "no-redeclare": "error",
17 | "no-unexpected-multiline": "error",
18 | "use-isnan": "error"
19 | },
20 | "overrides": [
21 | {
22 | "files": [ "*.ts", "*.tsx" ],
23 | "rules": {
24 |
25 | }
26 | }
27 | ]
28 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Localization/en.tpl.localization:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/LocalizationDescription.Schema.json",
3 | "locale": "en",
4 | "localizedText": {
5 | "L_MachineOverview": "Machine Overview",
6 | "L_Events": "Events",
7 | "L_Localization": "Localization",
8 | "L_Theme": "Theme",
9 | "L_Settings": "Settings",
10 | "L_PullWheels": "Pull Wheels",
11 | "L_Sealer": "Sealer",
12 | "L_Sensor": "Sensor",
13 | "L_Unwind": "Unwind",
14 | "L_Home": "Home",
15 | "L_Blank": " ",
16 | "L_SealBar": "Seal Bar"
17 | }
18 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/.TcHmiEcDiagnostics/TcHmiEcDiagnostics.Config.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "devices": {
3 | "Device1": {
4 | "enabled": true,
5 | "masterNetId": "0.0.0.0.2.1",
6 | "targetNetId": "0.0.0.0.1.1"
7 | }
8 | },
9 | "vendorsOverwrite": {
10 | "1": {
11 | "devices": [],
12 | "longName": "EtherCAT Technology Group",
13 | "shortName": "ETG"
14 | },
15 | "2": {
16 | "devices": [],
17 | "longName": "Beckhoff Automation GmbH & Co. KG",
18 | "shortName": "Beckhoff"
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Icons/icons_previous_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/Icons/icons_previous_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/TcHmi.Controls.BaseTemplate.TcHmiNavigation/Icons/icons_previous_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/TcHmi.Controls.BaseTemplate.TcHmiNavigation/Icons/icons_previous_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/TcHmi.Controls.BaseTemplate.TcHmiNavigation/Icons/icons_previous_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/TcHmi.Controls.BaseTemplate.TcHmiNavigation/Icons/icons_previous_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
8 |
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Introduction
2 | The purpose of this project is to serve as an example of how to setup a HMI project using the current PackML base framework it is provided publically under the License in the repository.
3 |
4 | This sample is created by Beckhoff Automation LLC., and is provided as-is under the MIT license.
5 |
6 | # Getting Started
7 | Once the Repository has been cloned the user will need to install project libraries.
8 |
9 | # Build and Test
10 | TwinCAT "Activate and restart".
11 |
12 | Deploy TwinCAT HMI Project
13 |
14 | If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files: the contain VFFS_Demo.pdf contained in this repository.
15 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_ModeDisplay.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-currentmode",
5 | "displayName": "CurrentMode",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.E_PMLUnitMode",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "CurrentMode",
15 | "propertySetterName": "setCurrentMode",
16 | "propertyGetterName": "getCurrentMode",
17 | "refTo": ""
18 | }
19 | ],
20 | "virtualRights": [],
21 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
22 | "description": ""
23 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_StateDisplay.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-currentstate",
5 | "displayName": "CurrentState",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.Tc3_PackML_V2.E_PMLState",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "CurrentState",
15 | "propertySetterName": "setCurrentState",
16 | "propertyGetterName": "getCurrentState",
17 | "refTo": ""
18 | }
19 | ],
20 | "virtualRights": [],
21 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
22 | "description": ""
23 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSqliteHistorize/TcHmiSqliteHistorize.Config.remote.json:
--------------------------------------------------------------------------------
1 | {
2 | "enableBackup": false,
3 | "historizedSymbolList": {
4 | "PLC1.MAIN.ProductionMonitor.ProductionData_HMI": {
5 | "interval": "PT1S",
6 | "maxEntries": 10000,
7 | "recordingEnabled": true,
8 | "rowLimit": 10000
9 | },
10 | "PLC1.MAIN.VFFSDemo.ProductionRate": {
11 | "interval": "PT1S",
12 | "maxEntries": 10000,
13 | "recordingEnabled": true,
14 | "rowLimit": 10000
15 | },
16 | "PLC1.MAIN.VFFSDemo.Sealer.SealBar._ActualTemperature": {
17 | "interval": "PT1S",
18 | "maxEntries": 10000,
19 | "recordingEnabled": true,
20 | "rowLimit": 100000
21 | }
22 | },
23 | "maxBackups": 1
24 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_MainCycleControl.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-packmlmodule",
5 | "displayName": "PackMLModule",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.ST_PackML_Control_Simplified",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "PackMLModule",
15 | "propertySetterName": "setPackMLModule",
16 | "propertyGetterName": "getPackMLModule",
17 | "refTo": ""
18 | }
19 | ],
20 | "virtualRights": [],
21 | "$schema": "../../PackML/Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
22 | "description": ""
23 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/packages.xsd:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/SetEventBarFilter.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "SetEventBarFilter",
4 | "namespace": "TcHmi.Functions.VFFSDemo_HMI",
5 | "displayName": "SetEventBarFilter",
6 | "description": "",
7 | "waitMode": "Synchronous",
8 | "category": "",
9 | "returnValue": {
10 | "type": "tchmi:general#/definitions/String"
11 | },
12 | "visible": true,
13 | "injectContextObject": false,
14 | "arguments": []
15 | },
16 | "$schema": "Packages/Beckhoff.TwinCAT.HMI.Framework.12.758.8/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json",
17 | "apiVersion": 1,
18 | "version": {
19 | "full": "0.0.0.0",
20 | "major": 0,
21 | "minor": 0,
22 | "revision": 0,
23 | "build": 0
24 | },
25 | "dependencyFiles": [
26 | {
27 | "name": "SetEventBarFilter.js",
28 | "type": "JavaScript",
29 | "description": ""
30 | }
31 | ]
32 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/UploadRecipe.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "UploadRecipe",
4 | "displayName": "UploadRecipe",
5 | "visible": true,
6 | "category": "Recipe",
7 | "waitMode": "Asynchronous",
8 | "injectContextObject": true,
9 | "description": "",
10 | "returnValue": {
11 | "type": "tchmi:general#/definitions/String"
12 | },
13 | "arguments": [
14 | {
15 | "name": "ctx",
16 | "displayName": "ctx",
17 | "type": "tchmi:framework#/definitions/ContextReference",
18 | "description": "Context Reference",
19 | "defaultValue": "",
20 | "required": true,
21 | "bindable": false,
22 | "restParameter": false,
23 | "asReference": false
24 | }
25 | ]
26 | },
27 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json"
28 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiSqliteHistorize/TcHmiSqliteHistorize.Config.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "commitInterval": "PT10S",
3 | "enableBackup": false,
4 | "historizedSymbolList": {
5 | "PLC1.MAIN.ProductionMonitor.ProductionData_HMI": {
6 | "interval": "PT1S",
7 | "maxEntries": 10000,
8 | "recordingEnabled": true,
9 | "rowLimit": 10000
10 | },
11 | "PLC1.MAIN.VFFSDemo.ProductionRate": {
12 | "interval": "PT1S",
13 | "maxEntries": 10000,
14 | "recordingEnabled": true,
15 | "rowLimit": 10000
16 | },
17 | "PLC1.MAIN.VFFSDemo.Sealer.SealBar._ActualTemperature": {
18 | "interval": "PT1S",
19 | "maxEntries": 10000,
20 | "recordingEnabled": true,
21 | "rowLimit": 100000
22 | }
23 | },
24 | "inMemory": false,
25 | "maxBackups": 1,
26 | "mode": 3,
27 | "vacuumOnStartup": false
28 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/tsconfig.tpl.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/tsconfig",
3 | "compileOnSave": true,
4 | "compilerOptions": {
5 | "module": "none",
6 | "target": "es6",
7 | "skipLibCheck": true,
8 | "lib": [
9 | "dom",
10 | "scripthost",
11 | "es6",
12 | "es2017.intl"
13 | ],
14 | "types": [],
15 | "declaration": true,
16 | "sourceMap": true,
17 | "noEmitOnError": true,
18 | "suppressImplicitAnyIndexErrors": true,
19 | "noImplicitAny": true,
20 | "noImplicitThis": true,
21 | "strictNullChecks": true,
22 | "noImplicitReturns": true,
23 | "strictFunctionTypes": false,
24 | "strictPropertyInitialization": false,
25 | "alwaysStrict": false
26 | },
27 | "exclude": [
28 | "$(Output).Path/"
29 | ],
30 | "include": [
31 | "$(Beckhoff.TwinCAT.HMI.Framework).InstallPath/TcHmi.d.ts"
32 | ]
33 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/tsconfig",
3 | "compileOnSave": true,
4 | "compilerOptions": {
5 | "module": "none",
6 | "target": "es6",
7 | "skipLibCheck": true,
8 | "lib": [
9 | "dom",
10 | "scripthost",
11 | "es6",
12 | "es2017.intl"
13 | ],
14 | "types": [],
15 | "declaration": true,
16 | "sourceMap": true,
17 | "noEmitOnError": true,
18 | "suppressImplicitAnyIndexErrors": true,
19 | "noImplicitAny": true,
20 | "noImplicitThis": true,
21 | "strictNullChecks": true,
22 | "noImplicitReturns": true,
23 | "strictFunctionTypes": false,
24 | "strictPropertyInitialization": false,
25 | "alwaysStrict": false
26 | },
27 | "exclude": [
28 | "bin/"
29 | ],
30 | "include": [
31 | "Packages/Beckhoff.TwinCAT.HMI.Framework.12.758.8/runtimes/native1.12-tchmi/TcHmi.d.ts"
32 | ]
33 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Fonts/Fonts.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: RobotoCondensed;
3 | src: url(Roboto-Condensed-webfont.woff);
4 | }
5 |
6 | /**
7 | Description about font inclusion in TcHmi
8 |
9 | As a default we include Roboto Condensed (in Fonts folder) as a webfont which will render latin, greek, vietnamese, cyrillic glyphs
10 |
11 | If Roboto does not render the glyphs we use some preinstalled fallback
12 | 'Microsoft YaHei' (Windows), 'Hiragino Sans GB' (Mac/iOS), 'Noto Sans CJK SC/TC' (Android), 'WenQuanYi Micro Hei' (Linux) renders chinese
13 | 'Meiryo' (Windows), 'Hiragino Kaku Gothic Pro' (Mac/iOS), 'Noto Sans CJK JP' (Android) renders japanese
14 |
15 | For other fonts you can add the woff files into the tchmi project and
16 | add a @font-face section yourself
17 | The noto family from google tries to cover all of the world, is free to use and fits nicely with roboto
18 | see https://www.google.com/get/noto/ and https://fonts.google.com/earlyaccess
19 |
20 | The font usage is defined in the main css file of the active theme (for example Themes/Base/Style.css).
21 | */
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Beckhoff Automation LLC
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/TrimDecimalNumber.js:
--------------------------------------------------------------------------------
1 | // Keep these lines for a best effort IntelliSense of Visual Studio 2017 and higher.
2 | ///
3 |
4 | (function (/** @type {globalThis.TcHmi} */ TcHmi) {
5 | var Functions;
6 | (function (/** @type {globalThis.TcHmi.Functions} */ Functions) {
7 | var VFFSDemo_HMI;
8 | (function (VFFSDemo_HMI) {
9 | function TrimDecimalNumber(NumberToTrim, DecimalPlaces) {
10 | let myFloat = parseFloat(NumberToTrim).toFixed(DecimalPlaces);
11 | return myFloat;
12 | //return Math.round((myFloat + Number.EPSILON) * 100) / 100
13 | //return Math.round((NumberToTrim + Number.EPSILON) * 100) / 100
14 | }
15 | VFFSDemo_HMI.TrimDecimalNumber = TrimDecimalNumber;
16 | })(VFFSDemo_HMI = Functions.VFFSDemo_HMI || (Functions.VFFSDemo_HMI = {}));
17 | Functions.registerFunctionEx('TrimDecimalNumber', 'TcHmi.Functions.VFFSDemo_HMI', VFFSDemo_HMI.TrimDecimalNumber);
18 | })(Functions = TcHmi.Functions || (TcHmi.Functions = {}));
19 | })(TcHmi);
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Events/message_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/NavigateToDetailPage.js:
--------------------------------------------------------------------------------
1 | // Keep these lines for a best effort IntelliSense of Visual Studio 2017 and higher.
2 | ///
3 |
4 | (function (/** @type {globalThis.TcHmi} */ TcHmi) {
5 | var Functions;
6 | (function (/** @type {globalThis.TcHmi.Functions} */ Functions) {
7 | var VFFSDemo_HMI;
8 | (function (VFFSDemo_HMI) {
9 | function NavigateToDetailPage(ContentPath) {
10 | if (ContentPath)
11 | {
12 | var mainRegion = TcHmi.Controls.get('Region_Center');
13 | if (mainRegion !== undefined) {
14 | mainRegion.setTargetContent(ContentPath);
15 | }
16 | }
17 |
18 | }
19 | VFFSDemo_HMI.NavigateToDetailPage = NavigateToDetailPage;
20 | })(VFFSDemo_HMI = Functions.VFFSDemo_HMI || (Functions.VFFSDemo_HMI = {}));
21 | Functions.registerFunctionEx('NavigateToDetailPage', 'TcHmi.Functions.VFFSDemo_HMI', VFFSDemo_HMI.NavigateToDetailPage);
22 | })(Functions = TcHmi.Functions || (TcHmi.Functions = {}));
23 | })(TcHmi);
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Events/message_active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Events/message_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base/CustomControlClasses.css:
--------------------------------------------------------------------------------
1 | .tchmi-class-remove-disabled-greyout.tchmi-control-disabled.TcHmi_Controls_System_TcHmiControl-disabled::after {
2 | background-color: rgba(0, 0, 0, 0);
3 | /*gets rid of gray-out overlay on disabled control*/
4 | }
5 |
6 | .tchmi-class-red-glowing {
7 | animation: 0.5s infinite alternate ease-out breathing-red-border;
8 | }
9 |
10 | .tchmi-class-blue-glowing {
11 | background-color: black;
12 | animation: 0.5s infinite alternate ease-out breathing-blue-border;
13 | }
14 |
15 |
16 | .tchmi-class-slideyboi {
17 | transition: all 0.2s ease;
18 | }
19 |
20 | @keyframes breathing-red-border {
21 | from {
22 | border-radius: 3px;
23 | box-shadow: 0 0 1px 1px red;
24 | box-shadow: 0 0 2px 2px red;
25 | box-shadow: 0 0 3px 3px red;
26 | }
27 |
28 | to {
29 | border-radius: 5px;
30 | box-shadow: 0 0 0px 0px red;
31 | }
32 | }
33 |
34 | @keyframes breathing-blue-border {
35 | from {
36 | border-radius: 3px;
37 | box-shadow: 0 0 1px 1px blue;
38 | box-shadow: 0 0 2px 2px blue;
39 | box-shadow: 0 0 3px 3px blue;
40 | }
41 |
42 | to {
43 | border-radius: 5px;
44 | box-shadow: 0 0 0px 0px blue;
45 | }
46 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/CustomControlClasses.css:
--------------------------------------------------------------------------------
1 | .tchmi-class-remove-disabled-greyout.tchmi-control-disabled.TcHmi_Controls_System_TcHmiControl-disabled::after {
2 | background-color: rgba(0, 0, 0, 0);
3 | /*gets rid of gray-out overlay on disabled control*/
4 | }
5 |
6 | .tchmi-class-red-glowing {
7 | animation: 0.5s infinite alternate ease-out breathing-red-border;
8 | }
9 |
10 | .tchmi-class-blue-glowing {
11 | background-color: black;
12 | animation: 0.5s infinite alternate ease-out breathing-blue-border;
13 | }
14 |
15 |
16 | .tchmi-class-slideyboi {
17 | transition: all 0.2s ease;
18 | }
19 |
20 | @keyframes breathing-red-border {
21 | from {
22 | border-radius: 3px;
23 | box-shadow: 0 0 1px 1px red;
24 | box-shadow: 0 0 2px 2px red;
25 | box-shadow: 0 0 3px 3px red;
26 | }
27 |
28 | to {
29 | border-radius: 5px;
30 | box-shadow: 0 0 0px 0px red;
31 | }
32 | }
33 |
34 | @keyframes breathing-blue-border {
35 | from {
36 | border-radius: 3px;
37 | box-shadow: 0 0 1px 1px blue;
38 | box-shadow: 0 0 2px 2px blue;
39 | box-shadow: 0 0 3px 3px blue;
40 | }
41 |
42 | to {
43 | border-radius: 5px;
44 | box-shadow: 0 0 0px 0px blue;
45 | }
46 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/scope_start_active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/scope_start_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/scope_start_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/VFFSDemo_HMI.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # TcXaeShell Solution File, Format Version 11.00
4 | VisualStudioVersion = 15.0.28307.1300
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FE7A1B72-C5B7-4D7C-BB7D-76384D4DE8E1}") = "VFFSDemo_HMI", "VFFSDemo_HMI.hmiproj", "{FE722124-D66F-4247-B554-AC54128931F1}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|TwinCAT HMI = Debug|TwinCAT HMI
11 | Release|TwinCAT HMI = Release|TwinCAT HMI
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {FE722124-D66F-4247-B554-AC54128931F1}.Debug|TwinCAT HMI.ActiveCfg = Debug|TwinCAT HMI
15 | {FE722124-D66F-4247-B554-AC54128931F1}.Debug|TwinCAT HMI.Build.0 = Debug|TwinCAT HMI
16 | {FE722124-D66F-4247-B554-AC54128931F1}.Release|TwinCAT HMI.ActiveCfg = Release|TwinCAT HMI
17 | {FE722124-D66F-4247-B554-AC54128931F1}.Release|TwinCAT HMI.Build.0 = Release|TwinCAT HMI
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {888C1D5F-9F24-437C-B014-B1EF5B095C79}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/DownloadRecipe.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "DownloadRecipe",
4 | "displayName": "DownloadRecipe",
5 | "visible": true,
6 | "category": "Recipe",
7 | "waitMode": "Asynchronous",
8 | "injectContextObject": true,
9 | "description": "",
10 | "returnValue": {
11 | "type": "tchmi:general#/definitions/String"
12 | },
13 | "arguments": [
14 | {
15 | "name": "ctx",
16 | "displayName": "ctx",
17 | "type": "tchmi:framework#/definitions/ContextReference",
18 | "description": "Context Reference",
19 | "defaultValue": "",
20 | "required": true,
21 | "bindable": false,
22 | "restParameter": false,
23 | "asReference": false
24 | },
25 | {
26 | "name": "recipeReference",
27 | "displayName": "recipeReference",
28 | "type": "tchmi:framework#/definitions/RecipeReference",
29 | "description": "Reference (path + '::' + name) of the recipe",
30 | "defaultValue": "",
31 | "required": true,
32 | "bindable": true,
33 | "restParameter": false,
34 | "asReference": false
35 | }
36 | ]
37 | },
38 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json"
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/AxisBase_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-axis",
5 | "displayName": "Axis",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_Components.ST_AxisBase_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Axis",
15 | "propertySetterName": "setAxis",
16 | "propertyGetterName": "getAxis",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-component",
21 | "displayName": "Component",
22 | "visible": true,
23 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "Component",
31 | "propertySetterName": "setComponent",
32 | "propertyGetterName": "getComponent",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_BaseModule_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-module",
5 | "displayName": "Module",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.ST_PackMLBaseModule_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Module",
15 | "propertySetterName": "setModule",
16 | "propertyGetterName": "getModule",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-detailpage",
21 | "displayName": "DetailPage",
22 | "visible": true,
23 | "type": "tchmi:framework#/definitions/ContentPath",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "DetailPage",
31 | "propertySetterName": "setDetailPage",
32 | "propertyGetterName": "getDetailPage",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_BaseSubModule_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-module",
5 | "displayName": "Module",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.ST_PackMLBaseModule_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Module",
15 | "propertySetterName": "setModule",
16 | "propertyGetterName": "getModule",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-detailpage",
21 | "displayName": "DetailPage",
22 | "visible": true,
23 | "type": "tchmi:framework#/definitions/ContentPath",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "DetailPage",
31 | "propertySetterName": "setDetailPage",
32 | "propertyGetterName": "getDetailPage",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/Sealer/Components/SealerAxis.content:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/Cylinder_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-cylinder",
5 | "displayName": "Cylinder",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.ST_Cylinder_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Cylinder",
15 | "propertySetterName": "setCylinder",
16 | "propertyGetterName": "getCylinder",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-component",
21 | "displayName": "Component",
22 | "visible": true,
23 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "Component",
31 | "propertySetterName": "setComponent",
32 | "propertyGetterName": "getComponent",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_StateDiagram.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-packmlmodule",
5 | "displayName": "PackMLModule",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.ST_PackML_Control",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "PackMLModule",
15 | "propertySetterName": "setPackMLModule",
16 | "propertyGetterName": "getPackMLModule",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-enablecontrol",
21 | "displayName": "EnableControl",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/BOOL",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "EnableControl",
31 | "propertySetterName": "setEnableControl",
32 | "propertyGetterName": "getEnableControl",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "../../PackML/Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Properties/tchmimanifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "http://json.schemastore.org/web-manifest",
3 | "name": "VFFSDemo_HMI",
4 | "short_name": "VFFSDemo_HMI",
5 | "icons": [
6 | {
7 | "src": "../Images/Manifest/launcher-icon-0-75x.png",
8 | "sizes": "36x36",
9 | "type": "image/png",
10 | "density": 0.75
11 | },
12 | {
13 | "src": "../Images/Manifest/launcher-icon-1x.png",
14 | "sizes": "48x48",
15 | "type": "image/png",
16 | "density": 1.0
17 | },
18 | {
19 | "src": "../Images/Manifest/launcher-icon-1-5x.png",
20 | "sizes": "72x72",
21 | "type": "image/png",
22 | "density": 1.5
23 | },
24 | {
25 | "src": "../Images/Manifest/launcher-icon-2x.png",
26 | "sizes": "96x96",
27 | "type": "image/png",
28 | "density": 2.0
29 | },
30 | {
31 | "src": "../Images/Manifest/launcher-icon-3x.png",
32 | "sizes": "144x144",
33 | "type": "image/png",
34 | "density": 3.0
35 | },
36 | {
37 | "src": "../Images/Manifest/launcher-icon-4x.png",
38 | "sizes": "192x192",
39 | "type": "image/png",
40 | "density": 4.0
41 | }
42 | ],
43 | "theme_color": "#9E9E9E",
44 | "background_color": "#9E9E9E",
45 | "start_url": "/Pages/LoginPage.html",
46 | "display": "standalone",
47 | "orientation": "portrait"
48 | }
49 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_BaseSubModule_Buttons2_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-module",
5 | "displayName": "Module",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.ST_PackMLBaseModule_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Module",
15 | "propertySetterName": "setModule",
16 | "propertyGetterName": "getModule",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-detailpage",
21 | "displayName": "DetailPage",
22 | "visible": true,
23 | "type": "tchmi:framework#/definitions/ContentPath",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "DetailPage",
31 | "propertySetterName": "setDetailPage",
32 | "propertyGetterName": "getDetailPage",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/ComponentBase_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-component",
5 | "displayName": "Component",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Component",
15 | "propertySetterName": "setComponent",
16 | "propertyGetterName": "getComponent",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-detailpage",
21 | "displayName": "DetailPage",
22 | "visible": true,
23 | "type": "tchmi:framework#/definitions/ContentPath",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "DetailPage",
31 | "propertySetterName": "setDetailPage",
32 | "propertyGetterName": "getDetailPage",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/DeleteRecipe.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "DeleteRecipe",
4 | "displayName": "DeleteRecipe",
5 | "visible": true,
6 | "category": "Recipe",
7 | "waitMode": "Asynchronous",
8 | "injectContextObject": true,
9 | "description": "Deletes a Recipe",
10 | "returnValue": {
11 | "type": "tchmi:general#/definitions/Number",
12 | "description": ""
13 | },
14 | "arguments": [
15 | {
16 | "name": "ctx",
17 | "displayName": "ctx",
18 | "type": "tchmi:framework#/definitions/ContextReference",
19 | "description": "Context Reference",
20 | "defaultValue": "",
21 | "required": true,
22 | "bindable": false,
23 | "restParameter": false,
24 | "asReference": false
25 | },
26 | {
27 | "name": "recipeReference",
28 | "displayName": "recipeReference",
29 | "type": "tchmi:framework#/definitions/RecipeReference",
30 | "description": "Reference (path + '::' + name) of the recipe",
31 | "defaultValue": "",
32 | "required": true,
33 | "bindable": true,
34 | "restParameter": false,
35 | "asReference": false
36 | }
37 | ]
38 | },
39 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json"
40 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/DigitalSensor_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-component",
5 | "displayName": "Component",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Component",
15 | "propertySetterName": "setComponent",
16 | "propertyGetterName": "getComponent",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-sensor",
21 | "displayName": "Sensor",
22 | "visible": true,
23 | "type": "tchmi:server#/definitions/PLC1.SPT_Components.ST_DigitalSensor_HMI",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "Sensor",
31 | "propertySetterName": "setSensor",
32 | "propertyGetterName": "getSensor",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/ComponentBase_Monitor_Navigation.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-component",
5 | "displayName": "Component",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Component",
15 | "propertySetterName": "setComponent",
16 | "propertyGetterName": "getComponent",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-detailpage",
21 | "displayName": "DetailPage",
22 | "visible": true,
23 | "type": "tchmi:framework#/definitions/ContentPath",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "DetailPage",
31 | "propertySetterName": "setDetailPage",
32 | "propertyGetterName": "getDetailPage",
33 | "refTo": ""
34 | }
35 | ],
36 | "virtualRights": [],
37 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
38 | "description": ""
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/ADS/ADS.Config.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "ENABLE_READ_BEFORE_WRITE": true,
3 | "IGNORED_PLC_ATTRIBUTES": [
4 | "DisplayMinValue",
5 | "DisplayMaxValue",
6 | "LowerBorder",
7 | "UpperBorder",
8 | "TcRpcEnable"
9 | ],
10 | "NEW_HANDLES_PER_SUM_REQUEST_LIMIT": 100,
11 | "RESPONSE_SIZE_LIMIT": 2097152,
12 | "RUNTIMES": {
13 | "PLC1": {
14 | "ENABLED": true,
15 | "NETID": "127.0.0.1.1.1",
16 | "PORT": 851,
17 | "SYMBOLS": {},
18 | "USE_WHITELISTING": false
19 | },
20 | "TcSysService": {
21 | "ENABLED": true,
22 | "NETID": "127.0.0.1.1.1",
23 | "PORT": 10000,
24 | "SYMBOLS": {},
25 | "USE_WHITELISTING": false
26 | }
27 | },
28 | "RUNTIME_STATE_CHECK_INTERVAL": "PT2S",
29 | "RUNTIME_STATE_CHECK_TIMEOUT": "PT5S",
30 | "SUM_REQUEST_LIMIT": 500,
31 | "TIMEOUT": "PT1S",
32 | "VISIBLE_RUNTIME_PORTS": [
33 | 301,
34 | 302,
35 | 303,
36 | 304,
37 | 350,
38 | 351,
39 | 352,
40 | 353,
41 | 354,
42 | 355,
43 | 501,
44 | 801,
45 | 811,
46 | 821,
47 | 831,
48 | 851,
49 | 852,
50 | 853,
51 | 854,
52 | 10000,
53 | 19800
54 | ]
55 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/ConvertRecipeToDatagrid.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "ConvertRecipeToDataGrid",
4 | "displayName": "ConvertRecipeToDataGrid",
5 | "visible": true,
6 | "category": "Recipe",
7 | "waitMode": "Asynchronous",
8 | "injectContextObject": true,
9 | "description": "Reads the recipe and fills the datagrid",
10 | "returnValue": {
11 | "type": "tchmi:general#/definitions/Array"
12 | },
13 | "arguments": [
14 | {
15 | "name": "ctx",
16 | "displayName": "ctx",
17 | "type": "tchmi:framework#/definitions/ContextReference",
18 | "description": "Context Reference",
19 | "defaultValue": "",
20 | "required": true,
21 | "bindable": false,
22 | "restParameter": false,
23 | "asReference": false
24 | },
25 | {
26 | "name": "recipeReference",
27 | "displayName": "recipeReference",
28 | "type": "tchmi:framework#/definitions/RecipeReference",
29 | "description": "Reference (path + '::' + name) of the recipe",
30 | "defaultValue": "",
31 | "required": true,
32 | "bindable": true,
33 | "restParameter": false,
34 | "asReference": false
35 | }
36 | ]
37 | },
38 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json"
39 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithIndicator.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-label",
5 | "displayName": "Label",
6 | "visible": true,
7 | "type": "tchmi:general#/definitions/String",
8 | "category": "",
9 | "description": "",
10 | "defaultValue": "TEST",
11 | "requiredOnCompile": false,
12 | "readOnly": false,
13 | "bindable": true,
14 | "heritable": true,
15 | "propertyName": "Label",
16 | "propertySetterName": "setLabel",
17 | "propertyGetterName": "getLabel",
18 | "refTo": ""
19 | },
20 | {
21 | "name": "data-tchmi-indicator",
22 | "displayName": "Indicator",
23 | "visible": true,
24 | "type": "tchmi:general#/definitions/Boolean",
25 | "category": "",
26 | "description": "",
27 | "defaultValue": false,
28 | "defaultValueInternal": false,
29 | "requiredOnCompile": false,
30 | "readOnly": false,
31 | "bindable": true,
32 | "heritable": true,
33 | "propertyName": "Indicator",
34 | "propertySetterName": "setIndicator",
35 | "propertyGetterName": "getIndicator",
36 | "refTo": ""
37 | }
38 | ],
39 | "virtualRights": [],
40 | "$schema": "./../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
41 | "description": ""
42 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/PullWheels/Components/PullWheel_Right.content:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/Unwind/Components/UnwindAxis.content:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/NavigateToDetailPage.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "NavigateToDetailPage",
4 | "namespace": "TcHmi.Functions.VFFSDemo_HMI",
5 | "displayName": "NavigateToDetailPage",
6 | "description": "",
7 | "waitMode": "Synchronous",
8 | "category": "",
9 | "returnValue": {
10 | "type": "tchmi:general#/definitions/Null"
11 | },
12 | "visible": true,
13 | "injectContextObject": false,
14 | "arguments": [
15 | {
16 | "name": "ContentPath",
17 | "displayName": "ContentPath",
18 | "type": "tchmi:framework#/definitions/ContentPath",
19 | "description": "This is an important Parameter which does... This text is used in a tooltip.",
20 | "defaultValue": "",
21 | "required": true,
22 | "bindable": true,
23 | "restParameter": false,
24 | "asReference": false,
25 | "allowControlAttributeBindingOptions": false
26 | }
27 | ]
28 | },
29 | "$schema": "Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json",
30 | "apiVersion": 1,
31 | "version": {
32 | "full": "0.0.0.0",
33 | "major": 0,
34 | "minor": 0,
35 | "revision": 0,
36 | "build": 0
37 | },
38 | "dependencyFiles": [
39 | {
40 | "name": "NavigateToDetailPage.js",
41 | "type": "JavaScript",
42 | "description": ""
43 | }
44 | ]
45 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/PullWheels/Components/PullWheel_Left.content:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/Unwind/Components/Sensor.content:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/PullWheels/Components/Cylinder.content:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/SetEventBarFilter.js:
--------------------------------------------------------------------------------
1 | // Keep these lines for a best effort IntelliSense of Visual Studio 2017 and higher.
2 | ///
3 |
4 | (function (/** @type {globalThis.TcHmi} */ TcHmi) {
5 | var Functions;
6 | (function (/** @type {globalThis.TcHmi.Functions} */ Functions) {
7 | var VFFSDemo_HMI;
8 | (function (VFFSDemo_HMI) {
9 | function SetEventBarFilter() {
10 | let eventGrid = TcHmi.Controls.get('TcHmiEventGrid_Events_1');
11 | let header = TcHmi.Controls.get('Header_Top');
12 |
13 | if (header) {
14 | let items = header.getHeaderItems();
15 | items.forEach((item) => {
16 | if (item.itemType === 'EventLine') {
17 | let control = item.control;
18 | eventGrid.setFilter(control.getFilter());
19 | }
20 | });
21 | }
22 |
23 |
24 | }
25 | VFFSDemo_HMI.SetEventBarFilter = SetEventBarFilter;
26 | })(VFFSDemo_HMI = Functions.VFFSDemo_HMI || (Functions.VFFSDemo_HMI = {}));
27 | })(Functions = TcHmi.Functions || (TcHmi.Functions = {}));
28 | })(TcHmi);
29 | TcHmi.Functions.registerFunctionEx('SetEventBarFilter', 'TcHmi.Functions.VFFSDemo_HMI', TcHmi.Functions.VFFSDemo_HMI.SetEventBarFilter);
30 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/hand_operation_active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
12 |
15 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/hand_operation_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
12 |
15 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/hand_operation_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
10 |
11 |
12 |
15 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/ListRecipesAsReferenceArray.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "ListRecipesAsReferenceArray",
4 | "displayName": "ListRecipesAsReferenceArray",
5 | "visible": true,
6 | "category": "Recipe",
7 | "waitMode": "Asynchronous",
8 | "injectContextObject": true,
9 | "description": "Parses a recipe folder and returns a string array with the RecipeReferences",
10 | "returnValue": {
11 | "type": "tchmi:general#/definitions/Array",
12 | "description": ""
13 | },
14 | "arguments": [
15 | {
16 | "name": "ctx",
17 | "displayName": "ctx",
18 | "type": "tchmi:framework#/definitions/ContextReference",
19 | "description": "Context Reference",
20 | "defaultValue": "",
21 | "required": true,
22 | "bindable": false,
23 | "restParameter": false,
24 | "asReference": false
25 | },
26 | {
27 | "name": "recipeList",
28 | "displayName": "recipeList",
29 | "type": "tchmi:server#/definitions/folderRecipe",
30 | "description": "Recipe symbol so the function is updated again when recipe list is changed",
31 | "defaultValue": "%s%TcHmiRecipeManagement.Config::recipeList%/s%",
32 | "required": true,
33 | "bindable": true,
34 | "restParameter": false,
35 | "asReference": false
36 | }
37 | ]
38 | },
39 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json"
40 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/Unwind/Unwind_PackML.content:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
14 |
15 |
16 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/TrimDecimalNumber.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "TrimDecimalNumber",
4 | "namespace": "TcHmi.Functions.VFFSDemo_HMI",
5 | "displayName": "TrimDecimalNumber",
6 | "description": "",
7 | "waitMode": "Synchronous",
8 | "category": "",
9 | "returnValue": {
10 | "type": "tchmi:general#/definitions/Number"
11 | },
12 | "visible": true,
13 | "injectContextObject": false,
14 | "arguments": [
15 | {
16 | "name": "NumberToTrim",
17 | "displayName": "NumberToTrim",
18 | "type": "tchmi:general#/definitions/String",
19 | "description": "",
20 | "defaultValue": "",
21 | "required": true,
22 | "bindable": true,
23 | "restParameter": false,
24 | "asReference": false,
25 | "allowControlAttributeBindingOptions": false
26 | },
27 | {
28 | "name": "DecimalPlaces",
29 | "displayName": "DecimalPlaces",
30 | "type": "tchmi:general#/definitions/Number",
31 | "description": "",
32 | "defaultValue": "",
33 | "required": true,
34 | "bindable": true,
35 | "restParameter": false,
36 | "asReference": false,
37 | "allowControlAttributeBindingOptions": false
38 | }
39 | ]
40 | },
41 | "$schema": "Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json",
42 | "apiVersion": 1,
43 | "version": {
44 | "full": "0.0.0.0",
45 | "major": 0,
46 | "minor": 0,
47 | "revision": 0,
48 | "build": 0
49 | },
50 | "dependencyFiles": [
51 | {
52 | "name": "TrimDecimalNumber.js",
53 | "type": "JavaScript",
54 | "description": ""
55 | }
56 | ]
57 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/stop_inactive.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
21 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/SetEventLoggerFilters.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "SetEventLoggerFilters",
4 | "namespace": "TcHmi.Functions.ILBD_HMI",
5 | "displayName": "SetEventLoggerFilters",
6 | "description": "",
7 | "waitMode": "Synchronous",
8 | "category": "",
9 | "returnValue": {
10 | "type": "tchmi:general#/definitions/String"
11 | },
12 | "visible": true,
13 | "injectContextObject": false,
14 | "arguments": [
15 | {
16 | "name": "EventGrid",
17 | "displayName": "EventGrid",
18 | "type": "tchmi:framework#/definitions/TcHmi.Controls.Beckhoff.TcHmiEventGrid",
19 | "description": "",
20 | "defaultValue": "",
21 | "required": true,
22 | "bindable": true,
23 | "restParameter": false,
24 | "asReference": false,
25 | "allowControlAttributeBindingOptions": false
26 | },
27 | {
28 | "name": "FilterPML",
29 | "displayName": "FilterPML",
30 | "type": "tchmi:general#/definitions/Boolean",
31 | "description": "",
32 | "defaultValue": false,
33 | "required": true,
34 | "bindable": true,
35 | "restParameter": false,
36 | "asReference": false,
37 | "allowControlAttributeBindingOptions": false
38 | }
39 | ]
40 | },
41 | "$schema": "Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json",
42 | "apiVersion": 1,
43 | "version": {
44 | "full": "0.0.0.0",
45 | "major": 0,
46 | "minor": 0,
47 | "revision": 0,
48 | "build": 0
49 | },
50 | "dependencyFiles": [
51 | {
52 | "name": "SetEventLoggerFilters.js",
53 | "type": "JavaScript",
54 | "description": ""
55 | }
56 | ]
57 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/ConvertDatagridToRecipe.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "ConvertDatagridToRecipe",
4 | "displayName": "ConvertDatagridToRecipe",
5 | "visible": true,
6 | "category": "Recipe",
7 | "waitMode": "Asynchronous",
8 | "injectContextObject": true,
9 | "description": "Parses the datagrid and updates the recipe",
10 | "returnValue": {
11 | "type": "tchmi:general#/definitions/Number"
12 | },
13 | "arguments": [
14 | {
15 | "name": "ctx",
16 | "displayName": "ctx",
17 | "type": "tchmi:framework#/definitions/ContextReference",
18 | "description": "Context Reference",
19 | "defaultValue": "",
20 | "required": true,
21 | "bindable": false,
22 | "restParameter": false,
23 | "asReference": false
24 | },
25 | {
26 | "name": "datagridControl",
27 | "displayName": "datagridControl",
28 | "type": "tchmi:framework#/definitions/Control",
29 | "description": "The datagrid to manipulate",
30 | "defaultValue": "",
31 | "required": true,
32 | "bindable": true,
33 | "restParameter": false,
34 | "asReference": false
35 | },
36 | {
37 | "name": "recipeReference",
38 | "displayName": "recipeReference",
39 | "type": "tchmi:framework#/definitions/RecipeReference",
40 | "description": "Reference (path + '::' + name) of the recipe",
41 | "defaultValue": "",
42 | "required": true,
43 | "bindable": true,
44 | "restParameter": false,
45 | "asReference": false
46 | }
47 | ]
48 | },
49 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json"
50 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/ErrorIDDisplay.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-string1",
5 | "displayName": "String1",
6 | "visible": true,
7 | "type": "tchmi:general#/definitions/String",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "String1",
15 | "propertySetterName": "setString1",
16 | "propertyGetterName": "getString1",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-string2",
21 | "displayName": "String2",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/String",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "String2",
31 | "propertySetterName": "setString2",
32 | "propertyGetterName": "getString2",
33 | "refTo": ""
34 | },
35 | {
36 | "name": "data-tchmi-selector",
37 | "displayName": "Selector",
38 | "visible": true,
39 | "type": "tchmi:general#/definitions/BOOL",
40 | "category": "",
41 | "description": "",
42 | "requiredOnCompile": false,
43 | "readOnly": false,
44 | "bindable": true,
45 | "heritable": true,
46 | "propertyName": "Selector",
47 | "propertySetterName": "setSelector",
48 | "propertyGetterName": "getSelector",
49 | "refTo": ""
50 | }
51 | ],
52 | "virtualRights": [],
53 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
54 | "description": ""
55 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/UpdateDatagridFromTarget.function.json:
--------------------------------------------------------------------------------
1 | {
2 | "function": {
3 | "name": "UpdateDatagridFromTarget",
4 | "displayName": "UpdateDatagridFromTarget",
5 | "visible": true,
6 | "category": "Recipe",
7 | "waitMode": "Asynchronous",
8 | "injectContextObject": true,
9 | "description": "Reads the current values and fills the datagrid newValue column",
10 | "returnValue": {
11 | "type": "tchmi:general#/definitions/Number"
12 | },
13 | "arguments": [
14 | {
15 | "name": "ctx",
16 | "displayName": "ctx",
17 | "type": "tchmi:framework#/definitions/ContextReference",
18 | "description": "Context Reference",
19 | "defaultValue": "",
20 | "required": true,
21 | "bindable": false,
22 | "restParameter": false,
23 | "asReference": false
24 | },
25 | {
26 | "name": "datagridControl",
27 | "displayName": "datagridControl",
28 | "type": "tchmi:framework#/definitions/Control",
29 | "description": "The datagrid to manipulate",
30 | "defaultValue": "",
31 | "required": true,
32 | "bindable": true,
33 | "restParameter": false,
34 | "asReference": false
35 | },
36 | {
37 | "name": "recipeReference",
38 | "displayName": "recipeReference",
39 | "type": "tchmi:framework#/definitions/RecipeReference",
40 | "description": "Reference (path + '::' + name) of the recipe",
41 | "defaultValue": "",
42 | "required": true,
43 | "bindable": true,
44 | "restParameter": false,
45 | "asReference": false
46 | }
47 | ]
48 | },
49 | "$schema": "../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.742.5/runtimes/native1.12-tchmi/Schema/FunctionDescription.Schema.json"
50 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/SetEventLoggerFilters.js:
--------------------------------------------------------------------------------
1 | // Keep these lines for a best effort IntelliSense of Visual Studio 2017 and higher.
2 | ///
3 |
4 | (function (/** @type {globalThis.TcHmi} */ TcHmi) {
5 | var Functions;
6 | (function (/** @type {globalThis.TcHmi.Functions} */ Functions) {
7 | var VFFSDemo_HMI;
8 | (function (VFFSDemo_HMI) {
9 | function SetEventLoggerFilters(EventGrid, FilterPML) {
10 | let currentFilter = EventGrid.getFilter();
11 |
12 | let filterItems = [];
13 | let filterResult = [];
14 |
15 | let andOperator = { logic: 'AND' };
16 | let eventRaisedFilter = { path: 'alarmState', comparator: '==', value: 0};
17 |
18 | if (FilterPML) {
19 | let pmlFilter = {};
20 | pmlFilter.path = 'params::eventClassName';
21 | pmlFilter.comparator = '!=';
22 | pmlFilter.value = 'PackML';
23 | filterItems.push(pmlFilter);
24 | }
25 |
26 | filterResult.push(eventRaisedFilter);
27 |
28 | filterItems.forEach(e => {
29 | filterResult.push(andOperator);
30 | filterResult.push(e);
31 | });
32 |
33 | EventGrid.setFilter(filterResult);
34 |
35 | }
36 | ILBD_HMI.SetEventLoggerFilters = SetEventLoggerFilters;
37 | })(ILBD_HMI = Functions.ILBD_HMI || (Functions.ILBD_HMI = {}));
38 | Functions.registerFunctionEx('SetEventLoggerFilters', 'TcHmi.Functions.ILBD_HMI', ILBD_HMI.SetEventLoggerFilters);
39 | })(Functions = TcHmi.Functions || (TcHmi.Functions = {}));
40 | })(TcHmi);
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/Sealer/Sealer_PackML.content:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
14 |
15 |
16 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/AxisBase_Monitor_Navigation.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-axis",
5 | "displayName": "Axis",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_Components.ST_AxisBase_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Axis",
15 | "propertySetterName": "setAxis",
16 | "propertyGetterName": "getAxis",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-component",
21 | "displayName": "Component",
22 | "visible": true,
23 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "Component",
31 | "propertySetterName": "setComponent",
32 | "propertyGetterName": "getComponent",
33 | "refTo": ""
34 | },
35 | {
36 | "name": "data-tchmi-detailpage",
37 | "displayName": "DetailPage",
38 | "visible": true,
39 | "type": "tchmi:framework#/definitions/ContentPath",
40 | "category": "",
41 | "description": "",
42 | "requiredOnCompile": false,
43 | "readOnly": false,
44 | "bindable": true,
45 | "heritable": true,
46 | "propertyName": "DetailPage",
47 | "propertySetterName": "setDetailPage",
48 | "propertyGetterName": "getDetailPage",
49 | "refTo": ""
50 | }
51 | ],
52 | "virtualRights": [],
53 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
54 | "description": ""
55 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/Cylinder_Monitor_Navigation.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-cylinder",
5 | "displayName": "Cylinder",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.ST_Cylinder_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Cylinder",
15 | "propertySetterName": "setCylinder",
16 | "propertyGetterName": "getCylinder",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-component",
21 | "displayName": "Component",
22 | "visible": true,
23 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "Component",
31 | "propertySetterName": "setComponent",
32 | "propertyGetterName": "getComponent",
33 | "refTo": ""
34 | },
35 | {
36 | "name": "data-tchmi-detailpage",
37 | "displayName": "DetailPage",
38 | "visible": true,
39 | "type": "tchmi:framework#/definitions/ContentPath",
40 | "category": "",
41 | "description": "",
42 | "requiredOnCompile": false,
43 | "readOnly": false,
44 | "bindable": true,
45 | "heritable": true,
46 | "propertyName": "DetailPage",
47 | "propertySetterName": "setDetailPage",
48 | "propertyGetterName": "getDetailPage",
49 | "refTo": ""
50 | }
51 | ],
52 | "virtualRights": [],
53 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
54 | "description": ""
55 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/PackMLStateDiagram.content:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
14 |
15 |
16 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Components/DigitalSensor_Monitor_Navigation.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-component",
5 | "displayName": "Component",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_ComponentBase.ST_ComponentBase_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Component",
15 | "propertySetterName": "setComponent",
16 | "propertyGetterName": "getComponent",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-sensor",
21 | "displayName": "Sensor",
22 | "visible": true,
23 | "type": "tchmi:server#/definitions/PLC1.SPT_Components.ST_DigitalSensor_HMI",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "Sensor",
31 | "propertySetterName": "setSensor",
32 | "propertyGetterName": "getSensor",
33 | "refTo": ""
34 | },
35 | {
36 | "name": "data-tchmi-detailpage",
37 | "displayName": "DetailPage",
38 | "visible": true,
39 | "type": "tchmi:framework#/definitions/ContentPath",
40 | "category": "",
41 | "description": "",
42 | "requiredOnCompile": false,
43 | "readOnly": false,
44 | "bindable": true,
45 | "heritable": true,
46 | "propertyName": "DetailPage",
47 | "propertySetterName": "setDetailPage",
48 | "propertyGetterName": "getDetailPage",
49 | "refTo": ""
50 | }
51 | ],
52 | "virtualRights": [],
53 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
54 | "description": ""
55 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_BaseModule_Buttons_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-module",
5 | "displayName": "Module",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.ST_PackMLBaseModule_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Module",
15 | "propertySetterName": "setModule",
16 | "propertyGetterName": "getModule",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-detailpage",
21 | "displayName": "DetailPage",
22 | "visible": true,
23 | "type": "tchmi:framework#/definitions/ContentPath",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "DetailPage",
31 | "propertySetterName": "setDetailPage",
32 | "propertyGetterName": "getDetailPage",
33 | "refTo": ""
34 | },
35 | {
36 | "name": "data-tchmi-simplecontrol",
37 | "displayName": "SimpleControl",
38 | "visible": true,
39 | "type": "tchmi:server#/definitions/PLC1.ST_PackML_Control_Simplified",
40 | "category": "",
41 | "description": "",
42 | "requiredOnCompile": false,
43 | "readOnly": false,
44 | "bindable": true,
45 | "heritable": true,
46 | "propertyName": "SimpleControl",
47 | "propertySetterName": "setSimpleControl",
48 | "propertyGetterName": "getSimpleControl",
49 | "refTo": ""
50 | }
51 | ],
52 | "virtualRights": [],
53 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
54 | "description": ""
55 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_BaseModule_Buttons2_Monitor.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-module",
5 | "displayName": "Module",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.ST_PackMLBaseModule_HMI",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Module",
15 | "propertySetterName": "setModule",
16 | "propertyGetterName": "getModule",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-detailpage",
21 | "displayName": "DetailPage",
22 | "visible": true,
23 | "type": "tchmi:framework#/definitions/ContentPath",
24 | "category": "",
25 | "description": "",
26 | "requiredOnCompile": false,
27 | "readOnly": false,
28 | "bindable": true,
29 | "heritable": true,
30 | "propertyName": "DetailPage",
31 | "propertySetterName": "setDetailPage",
32 | "propertyGetterName": "getDetailPage",
33 | "refTo": ""
34 | },
35 | {
36 | "name": "data-tchmi-simplecontrol",
37 | "displayName": "SimpleControl",
38 | "visible": true,
39 | "type": "tchmi:server#/definitions/PLC1.ST_PackML_Control_Simplified",
40 | "category": "",
41 | "description": "",
42 | "requiredOnCompile": false,
43 | "readOnly": false,
44 | "bindable": true,
45 | "heritable": true,
46 | "propertyName": "SimpleControl",
47 | "propertySetterName": "setSimpleControl",
48 | "propertyGetterName": "getSimpleControl",
49 | "refTo": ""
50 | }
51 | ],
52 | "virtualRights": [],
53 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
54 | "description": ""
55 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/EquipmentModules/PullWheels/PullWheels_PackML.content:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
14 |
15 |
16 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/reset_achse_inactive.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
20 |
21 |
22 |
24 |
25 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/start_inactive.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
18 |
20 |
21 |
22 |
24 |
25 |
27 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Properties/Default.tpl:
--------------------------------------------------------------------------------
1 | -- Designer --
2 |
3 |
4 |
5 | {{TITLE}}
6 |
7 |
8 |
9 |
23 | {{GLOBAL_JS_INCLUDES}}
24 |
25 |
26 | {{VIEWLEVEL}}
27 |
28 |
29 | -- /Designer --
30 |
31 | -- LiveView_and_Build --
32 |
33 |
42 |
43 |
44 | {{TITLE}}
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 | {{GLOBAL_JS_INCLUDES}}
54 |
55 |
56 |
57 | TwinCAT HMI needs to execute JavaScript Code in the browser.
58 | Please enable JavaScript in this browser to use the HMI.
59 |
60 | {{VIEWLEVEL}}
61 |
62 |
63 | -- /LiveView_and_Build --
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_StateCommand.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-currentstate",
5 | "displayName": "CurrentState",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.Tc3_PackML_V2.E_PMLState",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "CurrentState",
15 | "propertySetterName": "setCurrentState",
16 | "propertyGetterName": "getCurrentState",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-enable",
21 | "displayName": "Enable",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/BOOL",
24 | "category": "",
25 | "description": "",
26 | "defaultValue": false,
27 | "defaultValueInternal": false,
28 | "requiredOnCompile": false,
29 | "readOnly": false,
30 | "bindable": true,
31 | "heritable": true,
32 | "propertyName": "Enable",
33 | "propertySetterName": "setEnable",
34 | "propertyGetterName": "getEnable",
35 | "refTo": ""
36 | },
37 | {
38 | "name": "data-tchmi-statecommand",
39 | "displayName": "StateCommand",
40 | "visible": true,
41 | "type": "tchmi:server#/definitions/PLC1.Tc3_PackML_V2.E_PMLCommand",
42 | "category": "",
43 | "description": "",
44 | "requiredOnCompile": false,
45 | "readOnly": false,
46 | "bindable": true,
47 | "heritable": true,
48 | "propertyName": "StateCommand",
49 | "propertySetterName": "setStateCommand",
50 | "propertyGetterName": "getStateCommand",
51 | "refTo": ""
52 | }
53 | ],
54 | "virtualRights": [],
55 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
56 | "description": ""
57 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/Beckhoff_Logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/Base-Dark/Images/Beckhoff_Logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Properties/tchmipublish.config.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "serverExtensions": [
4 | {
5 | "publishServerExtension": true,
6 | "name": "ADS"
7 | },
8 | {
9 | "publishServerExtension": true,
10 | "name": "TcHmiEventLogger"
11 | },
12 | {
13 | "publishServerExtension": true,
14 | "name": "TcHmiLua"
15 | },
16 | {
17 | "publishServerExtension": true,
18 | "name": "TcHmiRecipeManagement"
19 | },
20 | {
21 | "publishServerExtension": true,
22 | "name": "TcHmiSqliteHistorize"
23 | },
24 | {
25 | "publishServerExtension": true,
26 | "name": "TcHmiSqliteLogger"
27 | },
28 | {
29 | "publishServerExtension": true,
30 | "name": "TcHmiSrv"
31 | },
32 | {
33 | "publishServerExtension": true,
34 | "name": "TcHmiUserManagement"
35 | }
36 | ],
37 | "isNew": false,
38 | "profileName": "Desktop",
39 | "publishMode": "TcHmi",
40 | "targetDirectory": "",
41 | "server": "",
42 | "sitePath": "",
43 | "destinationUrl": "",
44 | "passiveMode": true,
45 | "savePassword": true,
46 | "deleteAllFilesBeforePublish": false,
47 | "deleteExtensionDataBeforePublish": false,
48 | "alwaysPublishLocalServerConfiguration": true,
49 | "temporaryPublishWithoutServerConfiguration": false,
50 | "abortOnErrors": true,
51 | "createPublishLog": false,
52 | "userName": "",
53 | "encryptedPassword": "",
54 | "encryptedTcHmiServerPassword": "Jdu/cbveb5hLU2ByFZUSZg==",
55 | "tcHmiServerHost": "127.0.0.1",
56 | "tcHmiServerPort": "1010",
57 | "socketTimeout": "60",
58 | "clientCertificateCN": "",
59 | "tcHmiUseTLS": false,
60 | "useClientCertificate": false,
61 | "launchBrowserAfterPublish": true,
62 | "createVirtualDirectoriesOnTargetSystem": false,
63 | "tcHmiServerUserName": "__SystemAdministrator",
64 | "tcHmiDestinationUrl": "http://127.0.0.1:1010",
65 | "publishConfiguration": "remote",
66 | "tcHmiSavePassword": true,
67 | "tcHmiIgnoreCertificateErrors": true
68 | }
69 | ]
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Server/TcHmiUserManagement/TcHmiUserManagement.Config.default.json:
--------------------------------------------------------------------------------
1 | {
2 | "USERS": {
3 | "Admin1": {
4 | "ALGORITHM": 1,
5 | "ENABLED": true,
6 | "PASSWORD": "c5b8d2a05980ad0d38c4a0322eec2cfa05e7517e443cbbc982ae9f79b1ca111a32cfd97bd3ecad4cfb915151019f8ec6d3517165a992f2548e38f42c59cfdaa7",
7 | "SALT": "WvtGDD0nnzPrnzMBUWO6HqcmaPtOLk6n2U1Yjxq9YlRdWYLfY6V6DHjD62d5bvu5vwxED360nw1nM9RV8reNYA=="
8 | },
9 | "Maintenance1": {
10 | "ALGORITHM": 1,
11 | "ENABLED": true,
12 | "PASSWORD": "2fd982af0f9d0577b2937849e0d0dbb48ca798327a35a590ba244e096aa6df68a0a5e6ae40a9a3b5dfb6f29008ea7aaaa57ac5a6dd96877e65eb5b57881231d4",
13 | "SALT": "Dx6tCQx1G3tVJjNY6irSI3bfOSMJltud1XpTOjdkKXhjw1xE+15nSCL2f3Oevzq/QfBlmgsr2nqS5E+ofGjDWg=="
14 | },
15 | "Operator1": {
16 | "ALGORITHM": 1,
17 | "ENABLED": true,
18 | "PASSWORD": "f4c9ca4050cae2555cc89a5addaca96c2666a9f699cd31c194f8c5597af11ad32f04c795174bd514b0e1c6a5acfa5f16ad18e44df499f04c5cb4fcacfad2ddda",
19 | "SALT": "T0FWrC1bbwckFgWxn6+0gVSdmobjrb3QIGWSRM8GBxyFnhiLmwNSZt+llguMkly+A1x3ER3GtYGBdH39uRVR8Q=="
20 | },
21 | "SetupTech1": {
22 | "ALGORITHM": 1,
23 | "ENABLED": true,
24 | "PASSWORD": "80f13f69fbc0279b1764d3cd89f303161f16c2830c37e3a1f86c9c9e82ae16d9f9f07d85191638add31bf92b35b8892fb3d3e0af30c82a62ed0cad3592fbeead",
25 | "SALT": "RcnblKO1PdjfYQ6wwSjxqqdlysLA0kKuAcQZKwSAhA/OxaqUIX09BF5ffH2fSnmj8G4kQDp3IcSoiXmEvViXTw=="
26 | },
27 | "__SystemAdministrator": {
28 | "ALGORITHM": 1,
29 | "ENABLED": true,
30 | "PASSWORD": "e019d075706891c0e730ca84de9241ed6d66474fda4afe6d5f31b0ae3f673820a9938b9dcca90b8ea62e35e82de8fb7d7d09c67cc367ab563ddafea256a2f921",
31 | "SALT": "O13STettIuZIQnCLNstH5hEsbgGZ0fMon5yEzw5WvNNd0ElSxHKpHLhmMLgOGqnwgF2qtlhbc/8akgfBGlrDsg=="
32 | },
33 | "__SystemGuest": {
34 | "ALGORITHM": 0,
35 | "ENABLED": true,
36 | "PASSWORD": "",
37 | "SALT": ""
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/DeleteRecipe.js:
--------------------------------------------------------------------------------
1 | // Keep this lines for a best effort IntelliSense of Visual Studio 2017.
2 | ///
3 | ///
4 | ///
5 |
6 | // Keep this lines for a best effort IntelliSense of Visual Studio 2013/2015.
7 | ///
8 | ///
9 |
10 | (function (TcHmi) {
11 |
12 | var DeleteRecipe = function (ctx, recipeReference) {
13 | if (!recipeReference) {
14 | // Stop (not abort) with null (binding without a value) or empty string
15 | ctx.success();
16 |
17 | return; // We are running async so the return value is not used
18 | }
19 | TcHmi.Server.RecipeManagement.deleteRecipe(recipeReference, null, function (data) {
20 | if (!data.error) {
21 | TcHmi.Log.info('Recipe ' + recipeReference + ' deleted successfull.');
22 | // Inform the system that we are done
23 | ctx.success();
24 |
25 | return; // We are running async so the return value is not used
26 | } else {
27 | // Inform the system that we are done but had an error
28 | ctx.error(data.error, {
29 | code: data.error,
30 | message: TcHmi.Errors[data.error],
31 | reason: 'Function: DeleteRecipe, Recipe ' + recipeReference + ' deletion failed',
32 | domain: 'Function',
33 | errors: (data.details ? [data.details] : undefined)
34 | });
35 | return; // We are running async so the return value is not used
36 | }
37 | });
38 |
39 | return; // We are running async so the return value is not used
40 | };
41 |
42 | TcHmi.Functions.registerFunction('DeleteRecipe', DeleteRecipe);
43 | })(TcHmi);
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithDataFeedback.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-label",
5 | "displayName": "Label",
6 | "visible": true,
7 | "type": "tchmi:general#/definitions/String",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Label",
15 | "propertySetterName": "setLabel",
16 | "propertyGetterName": "getLabel",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-data",
21 | "displayName": "Data",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/String",
24 | "category": "",
25 | "description": "",
26 | "defaultValue": "",
27 | "defaultValueInternal": "",
28 | "requiredOnCompile": false,
29 | "readOnly": false,
30 | "bindable": true,
31 | "heritable": true,
32 | "propertyName": "Data",
33 | "propertySetterName": "setData",
34 | "propertyGetterName": "getData",
35 | "refTo": ""
36 | },
37 | {
38 | "name": "data-tchmi-unit",
39 | "displayName": "Unit",
40 | "visible": true,
41 | "type": "tchmi:general#/definitions/String",
42 | "category": "",
43 | "description": "",
44 | "requiredOnCompile": false,
45 | "readOnly": false,
46 | "bindable": true,
47 | "heritable": true,
48 | "propertyName": "Unit",
49 | "propertySetterName": "setUnit",
50 | "propertyGetterName": "getUnit",
51 | "refTo": ""
52 | },
53 | {
54 | "name": "data-tchmi-decimalplaces",
55 | "displayName": "DecimalPlaces",
56 | "visible": true,
57 | "type": "tchmi:general#/definitions/Number",
58 | "category": "",
59 | "description": "",
60 | "defaultValue": 1.0,
61 | "defaultValueInternal": 1.0,
62 | "requiredOnCompile": false,
63 | "readOnly": false,
64 | "bindable": true,
65 | "heritable": true,
66 | "propertyName": "DecimalPlaces",
67 | "propertySetterName": "setDecimalPlaces",
68 | "propertyGetterName": "getDecimalPlaces",
69 | "refTo": ""
70 | }
71 | ],
72 | "virtualRights": [],
73 | "$schema": "./../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
74 | "description": ""
75 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithNoFeedback.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-label",
5 | "displayName": "Label",
6 | "visible": true,
7 | "type": "tchmi:general#/definitions/String",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Label",
15 | "propertySetterName": "setLabel",
16 | "propertyGetterName": "getLabel",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-data",
21 | "displayName": "Data",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/String",
24 | "category": "",
25 | "description": "",
26 | "defaultValue": "",
27 | "defaultValueInternal": "",
28 | "requiredOnCompile": false,
29 | "readOnly": false,
30 | "bindable": true,
31 | "heritable": true,
32 | "propertyName": "Data",
33 | "propertySetterName": "setData",
34 | "propertyGetterName": "getData",
35 | "refTo": ""
36 | },
37 | {
38 | "name": "data-tchmi-unit",
39 | "displayName": "Unit",
40 | "visible": true,
41 | "type": "tchmi:general#/definitions/String",
42 | "category": "",
43 | "description": "",
44 | "requiredOnCompile": false,
45 | "readOnly": false,
46 | "bindable": true,
47 | "heritable": true,
48 | "propertyName": "Unit",
49 | "propertySetterName": "setUnit",
50 | "propertyGetterName": "getUnit",
51 | "refTo": ""
52 | },
53 | {
54 | "name": "data-tchmi-decimalplaces",
55 | "displayName": "DecimalPlaces",
56 | "visible": true,
57 | "type": "tchmi:general#/definitions/Number",
58 | "category": "",
59 | "description": "",
60 | "defaultValue": 1.0,
61 | "defaultValueInternal": 1.0,
62 | "requiredOnCompile": false,
63 | "readOnly": false,
64 | "bindable": true,
65 | "heritable": true,
66 | "propertyName": "DecimalPlaces",
67 | "propertySetterName": "setDecimalPlaces",
68 | "propertyGetterName": "getDecimalPlaces",
69 | "refTo": ""
70 | }
71 | ],
72 | "virtualRights": [],
73 | "$schema": "./../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
74 | "description": ""
75 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithDataFeedback2Row.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-label",
5 | "displayName": "Label",
6 | "visible": true,
7 | "type": "tchmi:general#/definitions/String",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Label",
15 | "propertySetterName": "setLabel",
16 | "propertyGetterName": "getLabel",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-data",
21 | "displayName": "Data",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/String",
24 | "category": "",
25 | "description": "",
26 | "defaultValue": "",
27 | "defaultValueInternal": "",
28 | "requiredOnCompile": false,
29 | "readOnly": false,
30 | "bindable": true,
31 | "heritable": true,
32 | "propertyName": "Data",
33 | "propertySetterName": "setData",
34 | "propertyGetterName": "getData",
35 | "refTo": ""
36 | },
37 | {
38 | "name": "data-tchmi-unit",
39 | "displayName": "Unit",
40 | "visible": true,
41 | "type": "tchmi:general#/definitions/String",
42 | "category": "",
43 | "description": "",
44 | "requiredOnCompile": false,
45 | "readOnly": false,
46 | "bindable": true,
47 | "heritable": true,
48 | "propertyName": "Unit",
49 | "propertySetterName": "setUnit",
50 | "propertyGetterName": "getUnit",
51 | "refTo": ""
52 | },
53 | {
54 | "name": "data-tchmi-decimalplaces",
55 | "displayName": "DecimalPlaces",
56 | "visible": true,
57 | "type": "tchmi:general#/definitions/Number",
58 | "category": "",
59 | "description": "",
60 | "defaultValue": 1.0,
61 | "defaultValueInternal": 1.0,
62 | "requiredOnCompile": false,
63 | "readOnly": false,
64 | "bindable": true,
65 | "heritable": true,
66 | "propertyName": "DecimalPlaces",
67 | "propertySetterName": "setDecimalPlaces",
68 | "propertyGetterName": "getDecimalPlaces",
69 | "refTo": ""
70 | }
71 | ],
72 | "virtualRights": [],
73 | "$schema": "./../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
74 | "description": ""
75 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/PLC/plc-fallback.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icons/tc/plc-active
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/PackML/PackML_ModeCommand.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-currentmode",
5 | "displayName": "CurrentMode",
6 | "visible": true,
7 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.E_PMLUnitMode",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "CurrentMode",
15 | "propertySetterName": "setCurrentMode",
16 | "propertyGetterName": "getCurrentMode",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-enable",
21 | "displayName": "Enable",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/BOOL",
24 | "category": "",
25 | "description": "",
26 | "defaultValue": false,
27 | "defaultValueInternal": false,
28 | "requiredOnCompile": false,
29 | "readOnly": false,
30 | "bindable": true,
31 | "heritable": true,
32 | "propertyName": "Enable",
33 | "propertySetterName": "setEnable",
34 | "propertyGetterName": "getEnable",
35 | "refTo": ""
36 | },
37 | {
38 | "name": "data-tchmi-modecommand",
39 | "displayName": "ModeCommand",
40 | "visible": true,
41 | "type": "tchmi:server#/definitions/PLC1.SPT_PackMLBase.E_PMLUnitMode",
42 | "category": "",
43 | "description": "",
44 | "requiredOnCompile": false,
45 | "readOnly": false,
46 | "bindable": true,
47 | "heritable": true,
48 | "propertyName": "ModeCommand",
49 | "propertySetterName": "setModeCommand",
50 | "propertyGetterName": "getModeCommand",
51 | "refTo": ""
52 | },
53 | {
54 | "name": "data-tchmi-modenames",
55 | "displayName": "ModeNames",
56 | "visible": true,
57 | "type": "tchmi:server#/definitions/PLC1.ARRAY_0..31_OF-STRING-80",
58 | "category": "",
59 | "description": "",
60 | "requiredOnCompile": false,
61 | "readOnly": false,
62 | "bindable": true,
63 | "heritable": true,
64 | "propertyName": "ModeNames",
65 | "propertySetterName": "setModeNames",
66 | "propertyGetterName": "getModeNames",
67 | "refTo": ""
68 | }
69 | ],
70 | "virtualRights": [],
71 | "$schema": "./../../../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.752.0/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
72 | "description": ""
73 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/ListRecipesAsReferenceArray.js:
--------------------------------------------------------------------------------
1 | // Keep this lines for a best effort IntelliSense of Visual Studio 2017.
2 | ///
3 | ///
4 | ///
5 |
6 | // Keep this lines for a best effort IntelliSense of Visual Studio 2013/2015.
7 | ///
8 | ///
9 |
10 | (function (TcHmi) {
11 |
12 | var ListRecipesAsReferenceArray = function (ctx, recipeList) {
13 | if (!recipeList) {
14 | // Inform the system that we are done and have a dummy result
15 | ctx.success([]);
16 | return; // We are running async so the return value is not used
17 | }
18 | // Build a flat array out of the recursive object
19 | var result = [];
20 |
21 | // Checks recursive all properties of the recipe folder and remember recipes
22 | var iterateRecipes = function (currentPath, recipeFolder) {
23 | for (var subPath in recipeFolder) {
24 | var currentName = (currentPath ? currentPath + '::' : '') + subPath;
25 | var recipeOrRecipeFolder = recipeFolder[subPath];
26 |
27 | if (
28 | typeof recipeOrRecipeFolder.recipeTypeName === 'string'
29 | && recipeOrRecipeFolder.values !== null
30 | && typeof recipeOrRecipeFolder.values === 'object'
31 | ) {
32 | // Add to array when we have reached an recipe (which has to contain a recipeTypeName and a values object)
33 | result.push(currentName);
34 | } else {
35 | // no recipe found, go deeper
36 | iterateRecipes(currentName, recipeOrRecipeFolder);
37 | }
38 | }
39 | }
40 | // Start iteration at the root of the object
41 | iterateRecipes('', recipeList);
42 | // Inform the system that we are done and have a result
43 | ctx.success(result);
44 | return; // We are running async so the return value is not used
45 | };
46 |
47 | TcHmi.Functions.registerFunction('ListRecipesAsReferenceArray', ListRecipesAsReferenceArray);
48 | })(TcHmi);
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/PLC/plc-config.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icons/tc/plc-active
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/PLC/plc-run.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icons/tc/plc-active
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/PLC/plc-stop.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icons/tc/plc-active
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Images/PLC/plc-exeption.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | icons/tc/plc-active
5 | Created with Sketch.
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Placeholder/icons_home_active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Placeholder/icons_home_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Themes/SPT-Base/Images/Placeholder/icons_home_pressed.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithNoFeedback.usercontrol:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
24 |
25 |
26 |
46 |
47 |
52 |
53 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithDataFeedback.usercontrol:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
24 |
25 |
26 |
46 |
47 |
52 |
53 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithDataFeedback2Row.usercontrol:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
20 |
21 |
26 |
27 |
28 |
29 |
30 |
35 |
36 |
48 |
49 |
50 |
70 |
71 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/LabelWithIndicator.usercontrol:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
77 |
78 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/UserControls/Utilities/ButtonWithIndicator.usercontrol.json:
--------------------------------------------------------------------------------
1 | {
2 | "parameters": [
3 | {
4 | "name": "data-tchmi-label",
5 | "displayName": "Label",
6 | "visible": true,
7 | "type": "tchmi:general#/definitions/String",
8 | "category": "",
9 | "description": "",
10 | "requiredOnCompile": false,
11 | "readOnly": false,
12 | "bindable": true,
13 | "heritable": true,
14 | "propertyName": "Label",
15 | "propertySetterName": "setLabel",
16 | "propertyGetterName": "getLabel",
17 | "refTo": ""
18 | },
19 | {
20 | "name": "data-tchmi-enabled",
21 | "displayName": "Enabled",
22 | "visible": true,
23 | "type": "tchmi:general#/definitions/Boolean",
24 | "category": "",
25 | "description": "",
26 | "defaultValue": false,
27 | "defaultValueInternal": false,
28 | "requiredOnCompile": false,
29 | "readOnly": false,
30 | "bindable": true,
31 | "heritable": true,
32 | "propertyName": "Enabled",
33 | "propertySetterName": "setEnabled",
34 | "propertyGetterName": "getEnabled",
35 | "refTo": ""
36 | },
37 | {
38 | "name": "data-tchmi-buttonstate",
39 | "displayName": "ButtonState",
40 | "visible": true,
41 | "type": "tchmi:general#/definitions/Boolean",
42 | "category": "",
43 | "description": "",
44 | "defaultValue": false,
45 | "defaultValueInternal": false,
46 | "requiredOnCompile": false,
47 | "readOnly": false,
48 | "bindable": true,
49 | "heritable": true,
50 | "propertyName": "ButtonState",
51 | "propertySetterName": "setButtonState",
52 | "propertyGetterName": "getButtonState",
53 | "refTo": ""
54 | },
55 | {
56 | "name": "data-tchmi-indicatorstate",
57 | "displayName": "IndicatorState",
58 | "visible": true,
59 | "type": "tchmi:general#/definitions/Boolean",
60 | "category": "",
61 | "description": "",
62 | "defaultValue": false,
63 | "defaultValueInternal": false,
64 | "requiredOnCompile": false,
65 | "readOnly": false,
66 | "bindable": true,
67 | "heritable": true,
68 | "propertyName": "IndicatorState",
69 | "propertySetterName": "setIndicatorState",
70 | "propertyGetterName": "getIndicatorState",
71 | "refTo": ""
72 | },
73 | {
74 | "name": "data-tchmi-indicatorcolor",
75 | "displayName": "IndicatorColor",
76 | "visible": true,
77 | "type": "tchmi:framework#/definitions/SolidColor",
78 | "category": "",
79 | "description": "",
80 | "defaultValue": null,
81 | "defaultValueInternal": null,
82 | "requiredOnCompile": false,
83 | "readOnly": false,
84 | "bindable": true,
85 | "heritable": true,
86 | "propertyName": "IndicatorColor",
87 | "propertySetterName": "setIndicatorColor",
88 | "propertyGetterName": "getIndicatorColor",
89 | "refTo": ""
90 | }
91 | ],
92 | "virtualRights": [],
93 | "$schema": "./../../Packages/Beckhoff.TwinCAT.HMI.Framework.12.756.1/runtimes/native1.12-tchmi/Schema/UserControlConfig.Schema.json",
94 | "description": ""
95 | }
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Pages/Recipe/RecipeManagement.content:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
12 |
13 |
75 |
76 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/ConvertDatagridToRecipe.js:
--------------------------------------------------------------------------------
1 | // Keep this lines for a best effort IntelliSense of Visual Studio 2017.
2 | ///
3 | ///
4 | ///
5 |
6 | // Keep this lines for a best effort IntelliSense of Visual Studio 2013/2015.
7 | ///
8 | ///
9 |
10 | (function (TcHmi) {
11 |
12 | var ConvertDatagridToRecipe = function (ctx,datagridControl,recipeReference) {
13 | if (!recipeReference) {
14 | // Stop (not abort) with null (binding without a value) or empty string
15 | ctx.success();
16 |
17 | return; // We are running async so the return value is not used
18 | }
19 | if (!datagridControl) {
20 | // Stop (not abort) with null (binding without a value)
21 | ctx.success();
22 |
23 | return; // We are running async so the return value is not used
24 | }
25 | // Fetches the current datagrid data
26 | var srcData = datagridControl.getSrcData();
27 | if (!srcData || !Array.isArray(srcData)) {
28 | // Inform the system that we are done
29 | ctx.success();
30 |
31 | return; // We are running async so the return value is not used
32 | }
33 | // Build up the dictionary with the correct values
34 | let newValue = {};
35 | for (let i = 0; i < srcData.length; i++) {
36 | if (!srcData[i].memberName) {
37 | continue;
38 | }
39 | newValue[srcData[i].memberName] = srcData[i].newValue;
40 | }
41 | // Call server to update recipe
42 | TcHmi.Server.RecipeManagement.updateRecipe(recipeReference, null, newValue, function (data) {
43 | if (data.error) {
44 | // Inform the system that we are done but had an error
45 | ctx.error(data.error, {
46 | code: data.error,
47 | message: TcHmi.Errors[data.error],
48 | reason: 'Function: ConvertDatagridToRecipe, Recipe ' + recipeReference + ' update failed',
49 | domain: 'Function',
50 | errors: (data.details ? [data.details] : undefined)
51 | });
52 |
53 | return; // We are running async so the return value is not used
54 | } else {
55 | // Inform the system that we are done
56 | ctx.success();
57 |
58 | return; // We are running async so the return value is not used
59 | }
60 | });
61 |
62 | return; // We are running async so the return value is not used
63 | };
64 |
65 | TcHmi.Functions.registerFunction('ConvertDatagridToRecipe', ConvertDatagridToRecipe);
66 | })(TcHmi);
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/ConvertRecipeToDatagrid.js:
--------------------------------------------------------------------------------
1 | // Keep this lines for a best effort IntelliSense of Visual Studio 2017.
2 | ///
3 | ///
4 | ///
5 |
6 | // Keep this lines for a best effort IntelliSense of Visual Studio 2013/2015.
7 | ///
8 | ///
9 |
10 | (function (TcHmi) {
11 |
12 | var ConvertRecipeToDataGrid = function (ctx,recipeReference) {
13 | if (!recipeReference) {
14 | // Stop (not abort) with null (binding without a value) or empty string
15 | ctx.success(null); // setting null, as the setter of the datagrid must be called with the default
16 |
17 | return; // We are running async so the return value is not used
18 | }
19 |
20 | // Call server to fetch recipe
21 | TcHmi.Server.RecipeManagement.getRecipe(recipeReference, null, function (data) {
22 | if (data.error) {
23 | // Inform the system that we are done but had an error
24 | ctx.error(data.error, {
25 | code: data.error,
26 | message: TcHmi.Errors[data.error],
27 | reason: 'Function: ConvertRecipeToDataGrid, Recipe ' + recipeReference + ' fetching failed',
28 | domain: 'Function',
29 | errors: (data.details ? [data.details] : undefined)
30 | });
31 |
32 | return; // We are running async so the return value is not used
33 | } else {
34 | // Check if the format of the recipe is known
35 | if (!data.value || !data.value.values) {
36 | // Inform the system that we are done but had an error
37 | ctx.error(TcHmi.Errors.E_PARAMETER_INVALID, {
38 | code: TcHmi.Errors.E_PARAMETER_INVALID,
39 | message: TcHmi.Errors[TcHmi.Errors.E_PARAMETER_INVALID],
40 | reason: 'Function: ConvertRecipeToDataGrid, Recipe ' + recipeReference + ' had wrong data format',
41 | domain: 'Function'
42 | });
43 |
44 | return; // We are running async so the return value is not used
45 | }
46 | // Build up an array for the datagrid data (must match the SrcColumn of the datagrid)
47 | var result = [];
48 | for (var memberName in data.value.values) {
49 | result.push({
50 | memberName: memberName,
51 | value: data.value.values[memberName],
52 | newValue: data.value.values[memberName]
53 | });
54 | }
55 | // Inform the system that we are done and have a result
56 | ctx.success(result);
57 |
58 | return; // We are running async so the return value is not used
59 | }
60 | });
61 |
62 | return; // We are running async so the return value is not used
63 | };
64 |
65 | TcHmi.Functions.registerFunction('ConvertRecipeToDataGrid', ConvertRecipeToDataGrid);
66 | })(TcHmi);
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/reset_achse_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
9 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
43 |
45 |
46 |
47 |
49 |
50 |
52 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/Imports/Images/start_normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
8 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
43 |
45 |
46 |
47 |
49 |
50 |
52 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/VFFSDemo_HMI/RecipeFunctions/DownloadRecipe.js:
--------------------------------------------------------------------------------
1 | // Keep this lines for a best effort IntelliSense of Visual Studio 2017.
2 | ///
3 | ///
4 | ///
5 |
6 | // Keep this lines for a best effort IntelliSense of Visual Studio 2013/2015.
7 | ///
8 | ///
9 |
10 | (function (TcHmi) {
11 |
12 | /**
13 | *
14 | * @param {TcHmi.Context} ctx
15 | * @param {string} recipeReference
16 | */
17 | var DownloadRecipe = function (ctx, recipeReference) {
18 | if (!recipeReference) {
19 | // Stop (not abort) with null (binding without a value) or empty string
20 | ctx.success();
21 |
22 | return; // We are running async so the return value is not used
23 | }
24 |
25 | TcHmi.Server.readSymbol("TcHmiRecipeManagement.Config::recipeList::" + recipeReference, function (data) {
26 | if (data.error) {
27 | // Inform the system that we are done but had an error
28 | ctx.error(data.error, {
29 | code: data.error,
30 | message: TcHmi.Errors[data.error],
31 | reason: 'Function: DownloadRecipe, Recipe ' + recipeReference + ' fetching failed',
32 | domain: 'Function',
33 | errors: (data.details ? [data.details] : undefined)
34 | });
35 |
36 | return; // We are running async so the return value is not used
37 | } else {
38 | // Create a dummy HTMLAnchorElement
39 | var downloaderAElement = document.createElement('a');
40 |
41 | // Define a nice download name
42 | downloaderAElement.download = recipeReference.replace(/::/g, '_') + '.json';
43 |
44 | // Do not manipulate the incoming object
45 | let jsonExport = tchmi_clone_object(data.response);
46 |
47 | // Convert to an export
48 | jsonExport.commands[0].writeValue = jsonExport.commands[0].readValue;
49 | delete jsonExport.commands[0].readValue;
50 | delete jsonExport.sessionId;
51 | delete jsonExport.id;
52 |
53 | // Prepare "download" content
54 | downloaderAElement.href = 'data:application/json;utf8,' +
55 | JSON.stringify(jsonExport, null, 2);
56 | // Hide dummy element to prevent visual impact
57 | downloaderAElement.style.display = 'none';
58 | // Append dummy element, so even Firefox allows a simulated click.
59 | document.body.appendChild(downloaderAElement);
60 | // Simulate a click. Works probably only if this action is triggered by a user interaction (not on load or symbol change)
61 | downloaderAElement.click();
62 | // Remove dummy element
63 | document.body.removeChild(downloaderAElement);
64 |
65 | // Inform the system that we are done
66 | ctx.success();
67 | return; // We are running async so the return value is not used
68 | }
69 | });
70 |
71 | return; // We are running async so the return value is not used
72 | };
73 |
74 | TcHmi.Functions.registerFunction('DownloadRecipe', DownloadRecipe);
75 | })(TcHmi);
--------------------------------------------------------------------------------