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:

  1. 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.)
  2. 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.)
  3. Use the I/O Device field for each Analog Input tag to associate the analog input with the workstation status driver tag.
  4. 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:

I/O Address field with tool to open the Address Select dialog

Click this to open the Address Select dialog.

Available options include CPU, Battery, Memory, Disk, RPC monitoring and Other options including custom expressions

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.
You must supply the name of the remote machine. The name will appear in the Address Field.