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: 2020-09-14 04:27 PM . Last Modified: 2023-05-03 12:10 AM
Hi,
I am trying to edit trends in bulk on a ClearSCADA server that has two databases (just for dev, not running full time this way). We can connect to the first instance running on the default port (5481) just fine but I cannot seem to get onto the second instance even when we specify the system name and host name. I assume we need to specify the port somehow.
using (Connection connection = new Connection(_systemName))
{
connection.Connect(_hostName); // I cannot specify port on this line? Should be able to, no? Simple Client doesn't have more arguments for this function...
WriteVerbose("Connected to ClearSCADA");
WriteVerbose(string.Format("Try to get ID for object '{0}'", ObjFullName));
string templateIdQuery = string.Format("SELECT ID, FULLNAME FROM CTEMPLATE WHERE FULLNAME='{0}'",
ObjFullName);
int templateId = -1;
using (var query = connection.Server.PrepareQuery(templateIdQuery, new QueryParseParameters()))
{
var results = query.ExecuteSync(new QueryExecuteParameters());
if (results.Rows.Count == 0)
{
throw new Exception("Did not find template");
}
WriteVerbose(string.Format("Query returned {0} rows", results.Rows.Count));
templateId = (int)results.Rows.ElementAt(0).Data[0];
WriteVerbose(string.Format("ID for '{0}' is {1}", ObjFullName, templateId));
}
// ... more code here...
}
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: 2020-09-14 05:50 PM . Last Modified: 2020-09-14 07:07 PM
There is an overload for the Connection.Connect() which takes a ServerNode object.
So instead of
connection.Connect(_hostName);
try (untested)
var srvNode = new ServerNode(ConnectionType.Standard, _hostName, _portNum);
connection.Connect(srvNode);
You could inline them into just the one line if you wanted.. although there might be a few more tickboxes that you want to adjust on the ServerNode object (like whether to use Compression, what Timeout settings to use, etc).
EDIT: Replaced use of 'auto' (C++) for 'var' (C#)
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: 2020-09-14 06:36 PM . Last Modified: 2020-09-14 06:37 PM
That is really close! I ended up having to tweak a little bit for my app (the auto keyword didn't work for me):
using (Connection connection = new Connection(_systemName))
{
ServerNode srvNode = new ServerNode(ConnectionType.Standard, _hostName, Int32.Parse(_portNumber));
connection.Connect(srvNode);
// code here...
}
Thanks Bevan!
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: 2020-09-14 05:50 PM . Last Modified: 2020-09-14 07:07 PM
There is an overload for the Connection.Connect() which takes a ServerNode object.
So instead of
connection.Connect(_hostName);
try (untested)
var srvNode = new ServerNode(ConnectionType.Standard, _hostName, _portNum);
connection.Connect(srvNode);
You could inline them into just the one line if you wanted.. although there might be a few more tickboxes that you want to adjust on the ServerNode object (like whether to use Compression, what Timeout settings to use, etc).
EDIT: Replaced use of 'auto' (C++) for 'var' (C#)
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: 2020-09-14 06:36 PM . Last Modified: 2020-09-14 06:37 PM
That is really close! I ended up having to tweak a little bit for my app (the auto keyword didn't work for me):
using (Connection connection = new Connection(_systemName))
{
ServerNode srvNode = new ServerNode(ConnectionType.Standard, _hostName, Int32.Parse(_portNumber));
connection.Connect(srvNode);
// code here...
}
Thanks Bevan!
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: 2020-09-14 07:06 PM
Sorry on the 'auto'.. that's me slipping between languages too fluidly.
In C# it should have been 'var'
It just means, don't make me explicitly list the type here, deduce it from the right hand value.
i.e. = new ServerNode() clearly returns a ServerNode, so I shouldn't have to write ServerNode node = new ServerNode()
The compiler can work that out, so (in C++) I could just write:
auto node = new ServerNode()
and in C#
var node = new ServerNode()
I think I prefer the auto keyword myself, but I believe that C# used it elsewhere for a different meaning
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.