Panel PC and Kiosk
This page describes how 2WinScada is used on industrial panel PCs (touch screen, Windows 10/11 IoT Enterprise LTSC, 4–8 GB RAM) and on wall displays. The Panel PC values are planning values; before a panel is commissioned, a 72-hour measurement must be made on the target hardware.
Supported uses
| Panel RAM | Role | Support |
|---|---|---|
| 2 GB | A browser that shows at most one 2WinScada server | Not supported for the 2WinScada stack. |
| 4 GB | Kiosk client of a central 2WinScada server | Yes, only as a client. 2WinScada is not installed on the panel. |
| 8 GB | Full stack on the panel: SQL Server Express, the archive database (QuestDB), IIS, the 2WinScada services and the kiosk browser | Yes, with the Panel PC (8 GB, full stack) preset and the limits below. 8 GB is the lower limit. |
Each kiosk screen counts as one user on the server.
Full stack on an 8 GB panel
Installing with the preset
On the wizard's Installation Paths page, select the Panel PC (8 GB, full stack) preset check box. In a new installation, the preset:
- selects the 4 GB system memory profile for QuestDB,
- enters 768 MB in the SQL Server max server memory field,
- clears MCP Server, RecordDeviceService and MQTT Publisher on the Components page. Select them again if the project needs them; each of them means a separate service and additional memory.
On the SQL Server page, select the Install local SQL Server Express check box. If the detected RAM is below 8 GB, the wizard asks for confirmation before it continues.
Repair and upgrade keep the recorded preset and the SQL Server memory limit. The installed QuestDB memory settings do not change during an upgrade.
In a silent installation, the preset is selected with /INSTALL_PRESET=panel. A silent installation without a component list installs only the API and the web interface. An explicitly given QuestDB profile, SQL Server memory limit and component list take precedence over the preset.
SQL Server memory limit
The SQL Server max server memory (MB, 0 = unchanged) field sets the maximum memory SQL Server can use.
- Setup applies the limit only to the SQL Server Express instance it installed itself. To apply it to an existing instance on this computer, the Also apply it to an existing SQL Server instance on this computer that Setup did not install option must be selected. It is not applied to a remote SQL Server.
- Setup records the old value; if the installation fails, the old value is restored.
- Repair and upgrade apply the limit again only when the field is changed. This way, a change made by hand by the database administrator is kept. To stop Setup from managing the limit, enter
0.
Memory budget
| Consumer | Planning value |
|---|---|
| Windows 10/11 IoT Enterprise LTSC and Defender | about 2 GB |
| SQL Server Express (768 MB limit and overhead) | about 1 GB |
| IIS, main API and Notification services | about 1–1.5 GB |
| Kiosk browser (Edge, single page) | about 0.5–1 GB |
| QuestDB, 4 GB profile | about 2 GB |
| Total | about 6.5–7.5 GB; no room is left for other software |
The QuestDB 4 GB profile is intended for small projects. With this profile, long-term trend and report queries run more slowly and stop with an error if they exceed the memory limit.
Project limits
- At most about 1,500 live tags and 500 archive tags.
- An archive period of 10 seconds or longer; total archive writes of at most 50 rows per second.
- At most 5 users (the kiosk screen and four remote sessions).
- A retention period of 1–3 months in the archive definitions.
- Only the components the project uses.
At the target load, measure the memory usage of each service and the SQL Server and QuestDB memory for 72 hours; there must be no continuous paging and QuestDB tables must not be suspended. For larger projects, see Capacity planning.
4 GB panel: kiosk client
Do not install 2WinScada on a 4 GB panel. On the panel, only run the kiosk script with the address of the central server:
.\Set-2WinScadaKiosk.ps1 -BaseUrl https://scada.example.local -Page MainThe panel must trust the server's HTTPS certificate. See HTTPS certificate.
Kiosk and automatic start
The scripts\panel\Set-2WinScadaKiosk.ps1 script in the installation package prepares the panel as a kiosk. Run the script in Windows PowerShell 5.1 opened as administrator. First use -WhatIf to see what will change. When run again, the script changes only the settings that differ.
.\Set-2WinScadaKiosk.ps1 -Page Main -WhatIf
.\Set-2WinScadaKiosk.ps1 -OperatorAccount Operator -CreateOperatorAccount -Page Main -ActiveHoursStart 5 -ActiveHoursEnd 22The script does the following:
- Uses a separate, non-administrator local Windows account for the kiosk.
-CreateOperatorAccountcreates this account; the password is typed at a secure prompt and is not stored by the script. - Creates the 2WinScada Kiosk scheduled task that starts when this account signs in. The task turns off the screen saver and the lock and keeps a single Edge window open; if the window closes or crashes, it is reopened within about ten seconds.
- Sets the kiosk address to
https://localhost/#/overview/<Page>?kiosk=1. The address can be changed with-BaseUrl,-Pageor-Url. - Makes sure Edge does not keep running in the background when the kiosk window closes.
- Turns off sleep and hibernation in the power plan and keeps the display on at all times.
- Sets the Windows Update active hours (default 6–23, at most 18 hours); Windows does not restart for updates during these hours. Schedule update restarts in a maintenance window.
- Turns off the Windows edge swipe gestures (
-KeepEdgeSwipeleaves them on). - Prepares the exclusion list of the write filter (UWF);
-ApplyUwfExclusionsapplies the exclusions. See Disk, UWF and power.
Session mode
Edge's kiosk mode starts a new, empty session (InPrivate) every time it opens. After a power cut, a Windows update or an Edge crash, such a kiosk shows the 2WinScada sign-in page and waits until someone signs in on the touch screen. For this reason, the script offers two modes:
- Default (persistent app window): Edge opens as a full-screen app window with a separate profile that belongs to the kiosk. Sign in once in the kiosk session; after a restart, the panel returns to the process page without asking for a sign-in until the 2WinScada session expires. If the panel starts before the server, the Server not reachable page appears instead of the sign-in page, and the process page opens when the server responds (see Recovery after an outage). There is no address bar, but some browser shortcuts are not blocked in this mode; do not leave a keyboard on the panel, or use Windows Keyboard Filter.
-InPrivateKiosk: Uses Edge's kiosk mode; browser shortcuts are also blocked. Choose it only where signing in after every restart is acceptable.
Automatic Windows sign-in
The script does not configure automatic sign-in to Windows. Do not use the registry AutoAdminLogon method, because it keeps the password in plain text. Instead, use the Sysinternals Autologon tool, which stores the password encrypted, or the Assigned Access feature. Assigned Access runs Edge in kiosk mode, that is, with a new session at every start; the scheduled task is not needed.
Touch keyboard
2WinScada has its own virtual keyboard. Turn it on once in the kiosk session; the preference is stored in the browser. So that two keyboards do not open at the same time, turn off the automatic opening of the Windows touch keyboard (Settings > Time & language > Typing > Touch keyboard). In the default mode, the preference is kept; with -InPrivateKiosk or Assigned Access, it is lost at every restart.
Kiosk address and ?kiosk=1
When ?kiosk=1 is added to the end of the page address, the viewer opens in kiosk mode:
- The top bar, the side menu, the footer and the viewer toolbar are hidden. Kiosk mode is kept when moving between pages.
- The browser's long-press menu, two-finger and double-tap zoom, text selection and swipe navigation are blocked. Text boxes, the virtual keyboard, sliders and other widgets keep working; the application's own context menus open.
- Kiosk mode does not change permissions; the permissions of the user signed in on the kiosk apply.
- A kiosk screen runs in touch mode: touch controls grow even when a mouse is attached to the panel.
Example address: https://localhost/#/overview/Main?kiosk=1
Because the top bar is hidden, a lost connection and devices without communication are reported in a strip at the bottom of the screen. See Connection strips.
Page rotation
If the kiosk screen should show several pages one after another, define a rotation on the Settings > Page Rotations screen and use the rotation's Kiosk Address as the kiosk address. The address ends with ?kiosk=1&rotation=<Rotation name>. Give it to the kiosk script with -Url; because of the & in the address, put the address in quotes:
.\Set-2WinScadaKiosk.ps1 -Url "https://scada.example.local/#/overview/Main?kiosk=1&rotation=Hall"Details: Page Rotations.
Fitting to the screen
The viewer stretches the page to the screen in both directions and does not keep the aspect ratio. Design panel pages at the panel's resolution, or at least with the same aspect ratio; for example 1024×768 (4:3), 1280×800 (16:10) or 1920×1080 (16:9). A page designed for another ratio looks stretched.
To start a new panel page, you can use the Operator Panel (Touch) starter template. For touch control sizes, the locked look, confirmation and two-step apply, see Touch Panels.
Kiosk account and password change
The 2WinScada session stored in the kiosk session belongs to the kiosk account. Give this account only the permissions the panel needs.
In a new installation: The sample monitoring account is created without a password. An administrator gives a temporary password with Password Reset on the Users tab. Sign in once with this account on the kiosk screen; set the permanent password on the Change your password screen. See Sample operator and monitoring accounts.
Kiosks upgraded to 2.10
With 2.10, accounts whose password was given by an administrator and accounts that came with older installations and whose password has never been changed are first taken to the Change your password screen when they sign in; nothing else can be done until the password is changed. Panel PCs and wall displays that sign in automatically wait on this screen when their session expires after the upgrade to 2.10.
Right after the upgrade, change the password of the account used on kiosk screens to a strong, personal password; if a password is saved in the browser, update it as well.
Session renewal and shared accounts
From 2.11 the browser keeps the key used to renew the session in a cookie that scripts on the page (including event code) cannot read. In the default mode the cookie is stored in the kiosk's Edge profile; after the panel restarts, the session opens without a sign-in as before. In -InPrivateKiosk mode and with Assigned Access the cookie is deleted at every restart.
The server keeps a single renewal key per account, and every sign-in renews this key. Of the devices that use the same account, only the device that signed in to the account last can therefore renew its session:
- If someone signs in with the same account on another device, the sessions on the earlier devices end. If several kiosk screens share one account, signing in again on one kiosk ends the session of the others.
- A screen whose session has ended stays open, but its session is refused at the next renewal: at the latest when the access period expires (4 hours by default) the screen opens the sign-in page and waits until someone signs in.
- Logout closes only the session of the browser where it is selected. If that browser is the device that signed in to the account last, the key is also invalidated on the server; the sessions of the other devices already ended with that sign-in. Signing out on a device that signed in earlier changes nothing on the server.
If possible, give each kiosk screen its own account; additional accounts count toward the number of users in the license. Do not sign in with kiosk accounts on other devices. After signing in again on a kiosk screen, also check the other screens that use the same account.
Kiosks upgraded to 2.11
Sessions opened before the upgrade keep working the old way until the next sign-in; during this time the renewal key stays in browser storage and signing out does not invalidate it on the server. For the protection to apply on kiosk screens as well, sign in once on every kiosk screen after the upgrade. If this is not done, the kiosk starts using the cookie with the first sign-in after its session expires. If several kiosks share one account, give the kiosks separate accounts before this sign-in; otherwise each new sign-in ends the session of the other kiosks.
Recovery after an outage
From 2.10.1, a kiosk screen returns to work by itself after a server restart, a network or power outage and a version update; nobody has to touch the panel.
| Situation | Kiosk screen |
|---|---|
| The server restarts or the network is cut | The live data connection keeps trying to reconnect without giving up: after 2, 5 and 10 seconds, then about every 30 seconds. Meanwhile the strip "The values on screen are not current." appears at the bottom of the screen with the outage duration; the screen keeps the last values and the last known alarms from before the outage; the alarm list and the alarm counts do not drop to 0, and they are marked as not current. When the connection is back, the values update again without a page reload and the alarm list is replaced by the server's current active alarms. While the server restarts, the alarm list can be empty for a short time until the startup finishes (see During a Connection Outage). |
| The server or the database does not respond for a while | The 2WinScada session is kept. The session ends only when the server refuses it, for example when the session has expired. |
| The panel started before the server | With a stored session (default mode), the Server not reachable page opens instead of the sign-in page: "Your session is kept. The requested page opens by itself as soon as the server responds." The page shows the time of the last attempt and opens the page in the kiosk address when the server responds. |
| The session has expired | The sign-in page opens. After signing in (and changing the password if required), the screen returns to the same kiosk address; kiosk mode and the page rotation are kept. |
| A new version was installed on the server | The kiosk notices the new version within about five minutes and reloads into it by itself once the screen has not been touched for 60 seconds. |
| The outage lasted longer than 10 minutes | When the connection is back, the kiosk reloads once. |
Screens that are not kiosks also reconnect during an outage and keep the session; for a new version, however, they do not reload by themselves but show the notice "A new version has been installed. Reload the page to use it." This way unsaved editor work is not lost.
Setup configures the web site so that the application page and the version information are not cached in the browser; when the kiosk reloads, the old version does not open.
HTTPS certificate
Edge in kiosk mode cannot bypass a certificate warning. The address the kiosk opens must be covered by a certificate the panel trusts:
- Full stack on the panel: Use the
https://localhostaddress only if the site certificate covers the namelocalhost; otherwise open the panel's primary address. Export Setup's self-signed certificate without the private key and import it only into this panel's Trusted Root Certification Authorities store. See Self-signed certificate. - Client panel: Trust the server's certificate, or the certificate authority that issued it, in the same way.
HTTPS also protects the session renewal cookie: on a page opened over HTTPS the cookie is sent only over an encrypted connection. On a kiosk screen opened over plain HTTP the cookie travels unencrypted on the network; use the HTTPS address as the kiosk address.
Disk, UWF and power
- Prefer an industrial SSD with a specified endurance (TBW) over eMMC, and monitor wear regularly.
- Keep archive writes small and the retention period short. The size of the QuestDB and service logs is limited by Setup.
- While Unified Write Filter (UWF) protects the system drive, every change that is not excluded is lost at restart. Exclude the following:
%ProgramData%\2WinScada(installation state, licenses, logs, backups and the default QuestDB data),- the QuestDB data folder, if it is elsewhere,
- the data, log and backup folders of the SQL Server instance and the SQL backup directory selected in Setup,
C:\inetpub\logs(or turn off IIS logging),- the Edge profile folder where the kiosk session is stored in the default mode (its path is described in the help installed with the product),
- the exclusions Microsoft documents for Windows Defender and Windows Update servicing.
- Run Setup, updates and the kiosk script while UWF is off or in servicing mode. The exclusions take effect after a restart.
- Use a UPS with a signal cable, or a panel with power-loss protection, so that Windows can shut down properly. On eMMC, a sudden power cut can damage the file system.
Commissioning checks
- Sign in once in the kiosk session, then restart Windows, and once also end Edge from Task Manager. With automatic sign-in in the default mode, the panel must return to the process page without asking for a sign-in. With
-InPrivateKioskor Assigned Access, returning to the sign-in page is the expected behavior. - The virtual keyboard preference is kept after a restart (default mode only).
- The kiosk address opens without a certificate warning.
- The kiosk account's password is strong and personal; the panel is not waiting on the password change screen.
- Nobody signs in with the kiosk account on another kiosk screen or device, or it is understood that every sign-in ends the session of the other screens that use the same account (see Session renewal and shared accounts).
- Restart the 2WinScada services while the kiosk is open: the connection strip appears at the bottom of the screen, disappears when the services are back, and the panel does not ask for a sign-in.
- Restart the panel while the server is off (default mode only): the Server not reachable page appears, and the kiosk page opens by itself when the server is on.
- If a page rotation is used, the rotation pages open one after another; a page the kiosk account cannot open is skipped.