Welcome to the new Schneider Electric Community

It's your place to connect with experts and peers, get continuous support, and share knowledge.

  • Explore the new navigation for even easier access to your community.
  • Bookmark and use our new, easy-to-remember address (community.se.com).
  • Get ready for more content and an improved experience.

Contact SchneiderCommunity.Support@se.com if you have any questions.

Close
Invite a Co-worker
Send a co-worker an invite to the Exchange portal.Just enter their email address and we’ll connect them to register. After joining, they will belong to the same company.
Send Invite Cancel
84248members
353348posts

Connect Visual Studio ClearScada.Client.Simple to Second CS Instance

EcoStruxure Geo SCADA Expert Forum

Find out how SCADA systems and networks, like EcoStruxure Geo SCADA Expert, help industrial organizations maintaining efficiency, processing data for smarter decision making with IoT, RTU and PLC devices.

Solved
du5tin
Lieutenant
Lieutenant
0 Likes
3
949

Connect Visual Studio ClearScada.Client.Simple to Second CS Instance

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...

}

 

Tags (1)

Accepted Solutions
BevanWeiss
Spock
Spock
0 Likes
2
945

Re: Connect Visual Studio ClearScada.Client.Simple to Second CS Instance

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#)


Lead Control Systems Engineer for Alliance Automation (VIC).
All opinions are my own and do not represent the opinions or policies of my employer, or of my cat..

See Answer In Context

Tags (1)
du5tin
Lieutenant
Lieutenant
0 Likes
1
940

Re: Connect Visual Studio ClearScada.Client.Simple to Second CS Instance

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!

See Answer In Context

Tags (1)
3 Replies 3
BevanWeiss
Spock
Spock
0 Likes
2
946

Re: Connect Visual Studio ClearScada.Client.Simple to Second CS Instance

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#)


Lead Control Systems Engineer for Alliance Automation (VIC).
All opinions are my own and do not represent the opinions or policies of my employer, or of my cat..
Tags (1)
du5tin
Lieutenant
Lieutenant
0 Likes
1
941

Re: Connect Visual Studio ClearScada.Client.Simple to Second CS Instance

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!

Tags (1)
BevanWeiss
Spock
Spock
0 Likes
0
934

Re: Connect Visual Studio ClearScada.Client.Simple to Second CS Instance

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 


Lead Control Systems Engineer for Alliance Automation (VIC).
All opinions are my own and do not represent the opinions or policies of my employer, or of my cat..
Tags (1)