Workstation Status Driver I/O Addressing 
A workstation status driver tag monitors attributes of a named workstation. Use associated I/O tags to retrieve and display data about the workstation.
Updated values will be returned at the scan interval of the I/O tag.
In order to access information about the workstation being monitored by a workstation status driver tag, follow these steps:
- Create a workstation status driver tag. Set the Workstation Name drop-down list to the name of the workstation you wish to monitor. (You can create one workstation status driver tag for each workstation you wish to monitor.)
- Create one Analog Input tag for each piece of data you wish to obtain from the workstation being monitored. (You can create multiple Analog Input tags and associate them with a single workstation status driver tag.)
- Use the I/O Device field for each Analog Input tag to associate the analog input with the workstation status driver tag.
- Set the Address field of each Analog Input tag to one of the available strings.
VTScada provides the Workstation Address Select dialog ( Address Assist / Address Select) to help you build these addresses. In any tag that uses a Workstation Status driver, the I/O panel of the configuration dialog will provide a button beside the Address field:
Click this to open the Address Select dialog.
Workstation Address Select.
The "Expression" field is available only when "Other >> Custom expression" is selected.
Troubleshooting
Values do not appear for anything other than battery checks
It is likely that the Windows performance counter needs to be reset on this machine. Test by opening a command prompt with administrative privileges and typing PERFMON. If this opens with an error message, close the performance monitor and type LODCTR /R
Note that the /R must be in uppercase. If you did not open the command prompt with administrative privileges, this command will fail with error 5.
Restart the workstation.
Values don't update when running VTScada as a Service
If running as a service under a regular user account, then to access Workstation Status Driver values e.g. CPU, the account must be a member of the local "Performance Monitor Users" group.
If you intend to measure the amount of memory being used by VTScada, the PrivateBytes metric offers a reasonable approximation of this, being the sum of the amount of physical memory allocated, including paged data.
The VirtualMemory metric is the least accurate measure of actual memory in use since it refers to reserved space rather than used space.
| Options |
Address Field Value |
Information Returned from Workstation |
| Performance |
| Processing Load |
Expression:ProcessingLoad() |
Returns the current VTScada processing load in percentage |
| CPU |
| Average CPU |
AverageCPU |
Running average of total system CPU |
| System CPU |
SystemCPU |
System CPU - all processes
100% means that all logical processors are being used to their fullest. (In versions of VTScada prior to 12.1, VTSCPU was capped at 1 divided by the number of logical processors.)
|
| VTScada CPU usage |
VTSCPU |
CPU used by VTScada only.
100% means that all logical processors are being used to their fullest. (In versions of VTScada prior to 12.1, VTSCPU was capped at 1 divided by the number of logical processors.)
|
| Battery |
| Battery level |
BatteryLevel |
The percentage of the battery level remaining |
| Battery lifetime |
BatteryLifetime |
An estimation of the remaining battery life, in seconds |
| Power status |
PowerStatus |
0 == on battery 1 == on A/C 2 == on back-up power
|
| Battery state - High |
BatteryState:High |
1 if the battery's power state is high |
| Battery state - Low |
BatteryState:Low |
1 if the battery's power state is low |
| Battery state - Critical |
BatteryState:Critical |
1 if the battery's power state is critical |
| Battery state - Charging |
BatteryState:Charging |
1 if the battery is charging |
| Battery state - No Battery |
BatteryState:NoBattery |
1 if no battery is found |
| Memory |
| VTScada total memory |
PrivateBytes |
The total memory actually in use by the process, both physically and in the page file. Does not include shared memory such as that in shared DLLs. |
| OS used memory |
SystemUsedMemoryBytes |
Amount of committed memory currently being used by system in bytes. |
| OS used memory % |
SystemUsedMemoryPercentage |
Amount of committed memory currently being used by system in percentage. |
| OS total memory |
SystemTotalMemoryBytes |
Total committed memory available on system in bytes. |
| OS available memory |
SystemAvailableMemoryBytes |
Amount of unused RAM on the system |
| OS unused RAM |
SystemAvailablePhysicalMemoryBytes |
Amount of RAM that is available for use by applications and processes |
| VTScada Memory as per VTScada |
Expression:Memory() |
Calls the Memory function, returning the current amount of memory acquired for VTScada from the operating system heap on the named workstation. |
| VTScada memory as per OS |
Memory |
VTScada memory use in bytes, as seen by Windows. Does not decrease as memory is released. In general, both Expression:Memory() and PrivateBytes will provide more useful measurements. |
| VTScada paged memory |
PageFileBytes |
The total number of bytes that have been committed to the process, whether in physical memory or not. May include memory in shared DLLs.
This value provides the best reflection of how much memory VTScada needs while running your application.
|
| VTScada virtual memory |
VirtualMemory |
Virtual memory (hard drive space used as memory) allocated to VTScada, but not necessarily in use. Does not decrease as memory is released. Measured in bytes.
This does not provide an accurate view of memory that is actually in use. Page file size is allocated in blocks on an "in case needed" basis. The size of those blocks will be larger on a 64-bit system than on a 32-bit system.
|
| Disk |
| Free disk space on drive |
FreeDiskSpace |
Free disk spaces (bytes) for a logical disk that is addressable with a drive letter. (*)
You must append the letter for the drive to be monitored to FreeDiskSpace (e.g. FreeDiskSpaceC for drive C, or FreeDiskSpaceD for drive D.
|
| Total bytes per second |
IOBPS |
Rate at which the process is reading and writing bytes in I/O operations. This property counts all I/O activity generated by the process to include file, network, and device I/Os. |
| RPC metrics |
| Local RPC queue length |
RPCLocalQLength |
The current length of the local FIFO that processes all RPCs. High queue length and low Local RPC queue delay time(see RPCLocalQTime) indicates a very busy system that is managing to keep up with RPC production but has very little spare capacity. |
| Local RPC queue delay time |
RPCLocalQTime |
The time it currently takes an RPC from being created to being processed. The value is in seconds. |
| Remote machine RPC transmission delay |
RPCRemoteQDelay:{machine} |
e.g. RPCRemoteDelay:ScadaBackup. The last delay between queuing an RPC for transmission and the RPC being transmitted. The value is in seconds. |
| Other |
| Custom expression |
Expression:AnyScriptFunction() |
Call any script-only function or expression. This will fail if you attempt to use a steady-state only function. For example, Expression:Now(1) % 100 will fail but Expression:Seconds() % 100 will work. |
| VTScada GDI objects |
GDIObjects |
GDI objects used by VTS |
| VTScada handles |
Handles |
Handles in use by VTS |
| VTScada threads |
Threads |
Threads being used by VTS |
For Remote machine RPC transmission delay you must supply the name of the remote machine. When this option is selected, The Expression changes to Remote Machine and becomes enabled.

Trihedral and VTScada are registered trade marks of Trihedral Engineering Limited
© Trihedral Engineering Limited 1987- 2026 All rights reserved.