Citect Redundancy - Status Graphic

jonny311

Member
Join Date
Apr 2005
Posts
9
I know this is a PLC forum, but I've seen some HMI issues brought forth here and have received good answers from the forum in the past.

Has anyone set Citect up in a redundant configuration and developed a graphic to indicate the online status of each server? The problem we are finding is that, when using IODeviceInfo() in a constantly-running cicode function to get device status, we are getting different return values as it runs on the individual servers. Basically, when both servers are up and running and we execute the code from the primary, we get a '1' back from each device, indicating that they are 'running'. When executing it on the secondary, we get a '1' from the primary and a '66' from the secondary, indicating that the secondary is in 'stand-by write' mode. When writing these values back to a tag for display purposes, this tag constantly toggles between '1' and '66' as the code executes on each machine.

We could just say if it's '1' or '66', just say it's '1', but we were thinking it would be more sound code to only run the code from the machine where the IOServer is active (to avoid different values). However, there doesn't seem to be a function to see which one is active! There is a hardware alarm indicating this, but we haven't found a way to access this (but at least this shows there's got to be a way).

Any ideas?
 
Nevermind, I figured it out. For anyone else out there who is searching for an answer, use the 'Type' of 17 in the IODeviceInfo() function. Also, don't use the ",P" or ",S" at the end of your device name. The help file describes this call as returning "The I/O Server the client is using to communicate to this device. Will be Standby if the Primary is down." They could have just said it returns "The active IOServer name for the given device." That would have saved me some time (although maybe that's my fault for overlooking that?).

Here is an example from our project. The first part of the IF statements check which server is running the function. This function runs in a cicode function called at startup....

FUNCTION devStatus();
WHILE true DO
IF (ServerInfo("Client", 0) = "Primary") AND (IODeviceInfo("IODevCC", 17, "Cluster") = "IOCC") THEN
PrimaryServerStatus = StrToInt(IODeviceInfo("IODevCC,P", 10, "Cluster"));
SecondaryServerStatus = StrToInt(IODeviceInfo("IODevCC,S", 10, "Cluster"));
END
IF (ServerInfo("Client", 0) = "Secondary") AND (IODeviceInfo("IODevCC", 17, "Cluster") = "IOCC2") THEN
PrimaryServerStatus = StrToInt(IODeviceInfo("IODevCC,P", 10, "Cluster"));
SecondaryServerStatus = StrToInt(IODeviceInfo("IODevCC,S", 10, "Cluster"));
END
END
SleepMS(5000);
END

(sorry for the formatting)
 

Similar Topics

Hi, I had a client upgraded their system to use a set of redundant PLC system with GE PLC CPE400, and a Citect 8.0 (2016) SCADA to get data with...
Replies
0
Views
1,448
Hi Friends, I'm working on a Redundancy discrepancy on our VijeoCitect SCADA, The Primary can not take over when the Secondary Server goes down...
Replies
0
Views
1,286
Dear Sir I am using Citect for my HMI in one project. Does anybody have done redundancy on citect? i have two server that i want to be redundant...
Replies
2
Views
2,164
Hello, I have a running project on Citect v5.42 and simatic net v6.4 I have created a new spare PC and loaded all software like Citect, station...
Replies
0
Views
68
Hello everyone, In a factory where we installed Citect 7.20 the computer began to show the first signs of end of life. They never considered...
Replies
0
Views
73
Back
Top Bottom