Applies To:
  • CitectSCADA 7.0

The"admin tools" page does not display the name of the IOserver I am running, when I am selecting multi-process mode.  

When running in multi-process mode, calling ServerInfoEx("Server",0,"IOServer") on a page does not return the IO server name.
This will raise a hardware alarm: "Foreground cicode cannot block - ServerInfoEx"

The ServerInfoEx function ensures that information about servers is redirected to the appropriate process.
Unfortunately if it is called from the foreground (like on the "admin tools" page) the redirect fails.

A quick work around this is not to call this function from foreground cicode.

In practice, you could for instance create a button, and enter in the "up command":

message("IO Server",ServerInfoEx("Server",0,"IOServer"),1)

Calling this function from a button ensures the task will be executed in background.

The function then works fine, and the IOServer name will be returned correctly.

You can call the function in a different way, but you need to make sure this is running as a background task.


the ServerInfoEX("Server",0,"IOServer") function call will return a value, only when it is called on the IOserver machine.

This is by design:

Calling ServerInfoEx("Server",0,"IOServer") will basically return the name of the IOserver that is on the current machine.

If there is no IOServer on this machine (eg display client), an empty string will be returned.

If you wish to know which IOserver a client process is connected to, you should call IOdeviceInfo("<your device name>", 17)

This will return (copy from the help file):

17 - The I/O Server the client is using to communicate to this device. Will be Standby if the Primary is down.