EcoStruxure Geo SCADA Expert Forum
Schneider Electric support forum about installation, configuration, integration and troubleshooting of EcoStruxure Geo SCADA Expert (ClearSCADA, ViewX, WebX).
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-11 12:34 AM . Last Modified: 2025-04-11 01:31 AM
Hello everybody,
i am working on a new GeoScada project and it requires redundant servers. So i configured 2 servers as a Hot standby pair. I have to communicate with Siemens S7-1214 plc's with CP1243 Telecontrol Module. This works fine over IEC 60870-5-104 and single server, but how to do it on the Hot-standby pair? Servers are on Win Server 2025. The two servers obviously have different IP's and the PLC's communicate over 1IP. Things i tried, that don't work:
1. Tried Network load balancing - i don't know why, saw is somewhere, that way i am creating a single virtual IP, but it doesnt work, probably because the NLB doesn't know who is the active master and may route the traffic to the standby server, so the comm is not working.
2. Tried sending data from the PLC's to the two server IP's. Doesn't work, for two reasons:
- the standby server is not communicating with the plc, because it is in standby mode. That means that the plc's will constantly buffer data and the buffer is constantly full. The connection to the Main server is fine, but there is no buffer left, so i am losing data on network failure. That way i am losing the best feature of IEC 60870-5-104 which is buffering over comm failure (which is absolutely required by the client)
- i am loosing half of my buffer anyways, because i have 2 connections
- This is a bad method anyways, since even if the standby server was accepting connections if i lose the connection to one server the buffer will fill up anyways. 1 ip is the way to go, but i don't know how to do it.
How to do a redundant connection to the server pair, so the plc's send data to only 1 ip and the redundancy works?
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-11 04:40 PM . Last Modified: 2025-04-11 04:41 PM
There is a tag in the database on the root group call "ServerIsMain" which you can access via ODBC, OPC, .NET API calls, etc. You also have scxcmd (in C:\Program Files (x86)\Schneider Electric\ClearSCADA\) that you can use, "scxcmd showstate" will return the server's state. Might need to specify other parameters depending on your server setup like a username and password, check out "scxcmd /?".
Both options will work through PowerShell which is probably what you'd need to use for manipulating IPs in 2025.
You will need to add a secondary IP to the NIC (or if a separate subnet could use a second NIC). Changing the "real" IP address that Geo SCADA uses to sync between servers and provide access to clients won't work too well.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-11 04:48 AM . Last Modified: 2025-04-11 04:51 AM
I don't know IEC 60870-5-104 so can't help with any specifics on that, but I have used some NLBs.
Usually you need to configure some health check/monitor for the NLB so you should be able to configure it to monitor whatever the driver listen port is to see which is open to know which one to send the traffic to. Certain drivers like DNP3 run on the Standby too, so possible the 60870 one does too, but a quick check for the DNP3 driver the listen port is only opened on the Main
On DNP3 there is a setting on the channel called allow connection from any host, assuming there is the same on the 60870 channel you might need to enable that as the IP you configure in Geo SCADA to connect to the PLC will be different to the one the PLC connects to and there might be some validation on that that gets in the way.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-11 07:20 AM
The Channel in GeoScada for IEC 104 doesn't support "Accept connections from any host"
About the health monitor for the NLB, i will research into that next week, great suggestion.
I also have another idea that might work - is there a tag or something which shows which station is Main and which is Standby? I can use this to actively change the ip of the computer with a shell command so the Main has the correct ip to communicate and i can assign some spare ip to the standby.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-11 04:40 PM . Last Modified: 2025-04-11 04:41 PM
There is a tag in the database on the root group call "ServerIsMain" which you can access via ODBC, OPC, .NET API calls, etc. You also have scxcmd (in C:\Program Files (x86)\Schneider Electric\ClearSCADA\) that you can use, "scxcmd showstate" will return the server's state. Might need to specify other parameters depending on your server setup like a username and password, check out "scxcmd /?".
Both options will work through PowerShell which is probably what you'd need to use for manipulating IPs in 2025.
You will need to add a secondary IP to the NIC (or if a separate subnet could use a second NIC). Changing the "real" IP address that Geo SCADA uses to sync between servers and provide access to clients won't work too well.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-14 01:10 AM
Didn't figured it out how to do NLB health check on windows. So i made a simple powershell script that checks with scxcmd if this is the Main server and swaps the ip with the target ip that the plc expects, or if it isn't Main, then it just replaces is with a spare ip. That happens cyclically, every 15sec. I tested it and it seems to work good. I don't know if this will be my final solution, but it seems better than buying two communication modules on every cpu, instead of one. I already have 2 NIC's on the servers, so the comm between them and the clients is not affected. I might add 3rd NIC for redundant comm between the servers, though. Thank you, very much for the help.
while ($true) {
try {
# Define the full path to SCXcmd.exe
$scxCmdPath = 'C:\Program Files (x86)\Schneider Electric\ClearSCADA\SCXcmd.exe'
# Run the command with the "status" argument
$output = & "$scxCmdPath" status
# Determine the desired IP address based on the command output
if ($output -match "Main") {
$desiredIP = "192.168.0.2"
} else {
$desiredIP = "192.168.0.3"
}
# Get the current IP assigned to the adapter "PLANTBUS"
$adapterIP = (Get-NetIPAddress -InterfaceAlias "PLANTBUS" -AddressFamily IPv4 -PrefixOrigin Manual -ErrorAction SilentlyContinue).IPAddress
if ($adapterIP -ne $desiredIP) {
Write-Host "Changing IP to $desiredIP"
netsh interface ip set address name="PLANTBUS" static $desiredIP 255.255.255.0
} else {
Write-Host "IP already set to $desiredIP, no change needed"
}
} catch {
Write-Error "An error occurred: $_"
}
Start-Sleep -Seconds 15
}
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-14 01:19 AM
Glad you got it working, does seem crazy that in 2025 you have to do something like this but I guess you're in the hands of what those PLCs support!
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-04-14 04:51 PM
Had some thoughts over night:
Link copied. Please paste this link to share this article on your social media post.
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.
With achievable small steps, users progress and continually feel satisfaction in task accomplishment.
Usetiful Onboarding Checklist remembers the progress of every user, allowing them to take bite-sized journeys and continue where they left.
of