Creating a complete test environment in ArchestrA

I've been playing around a lot in ArchestrA lately, but have had the problem where my system is completely virtual and has no real connections to real devices.  So I decided to simulate real world devices by creating model objects, which attempts to mimic the behaviour of the real device.  The regular object has no idea that its talking to a simulated device instead of an actual device, so we can do a large amount of testing in the lab without ever having to connect a real device!

The following diagram gives an overview of how this works.


Normally our regular object talks to a device (shown in red) via the suitelink client object and DNP driver SSE.  In this case, the ArchestrA model object is pretending to be the device, and it also talks to the DNP driver via the suitelink client and is setup as a dnp slave.  The normal master object polls the slave as it would for the physical device.  The following image shows the DNP driver setup.


Now normally we would hope that you could just loop and ethernet socket back on itself for this, but unfortunately both the SSE master and slave drivers both act as servers and try to initiate IP connections (one might expect the slave to listen for a connection). So we need a small utility that listens for connections on two different ports, and then couriers the packets between them, this one will do nicely:

With the comms all sorted, lets look at our objects.   For this test, I have created a complete simulation of what you might expect to find in a substation - an HV bus with some disconnectors, two transformers and incoming circuit breakers, six feeder circuit breakers and a bus coupler circuit breaker. (Excuse the rudimentary graphics, they are a copy from an old InTouch application)



archestrasim-idederivationThe corresponding objects are shown to the left.  Each regular object has a corresponding model object which simulates the real world device.  Each model object has a set of controls that you can use to simulate different actions.  Logic is built in to the models to simulate changing currents, voltages and they also respond appropriately to commands eg an open circuit breaker command will result in the model changing the state of its circuit breaker closed status.



In summary, while we could just open up the object viewer and manipulate all the points manually to see graphics changes etc, this way also allows us to test our comms configuration, and more realistically simulate things like changing currents. You could even script scenarios for demonstration or training, without having to ever touch your original objects - just change address in your DNP configuration to point to your model objects!


| May 14th, 2013 | Posted in SCADA |

Leave a Reply