Scripting for OPC DA/UA server

mohsh86

Member
Join Date
Aug 2020
Location
WA
Posts
2
Brief:
We're working on a project for a client who operates a gas field upstream of a LNG plant and needs to orchestrate some actions on its corresponding Wide Area Process Control Network

The plants and wells are distributed on areas, each area has wellheads feeding into a gas plant and water plant (for treatment). Eventually feeding that Gas to a long pipeline that goes to LNG terminal.

The requirement is to have a system that monitors the overall process for certain events, do calculation and/or selection of certain wellheads/controllers to invoke functions.

The control systems used are from many vendors, the challenge here is to consolidate that data from multiple vendors' controllers to process and take actions. There is a need to interface to a database as well to fetch some settings to be distributed on various control systems.

Existing SCADA, while it connects to many of those controllers, is not going to be used as the clients wants to have distinct system.

Looking around the web i couldn't see a better solution than Kepware (Matrikon for that matter but i'd rather stick with one package rather than 3 or 4 packages one for each protocol) to bind the data together.

Kepware provides a feature called advanced tags, where you can link tags (i.e. copy value from one controller to another controller through OPC once change triggered) and logic and math tags (AND/OR/Greater Than/Less Than) but they are very basic.

The plan is to make the solution as dynamic as possible. If say a new wellhead is introduced(on site, controller active, well is commissioned), a record gets created into the database, gets detected and put it into a pool where it can acted upon.

The only PLC that I've seen so far capable of OPC Client is Siemens S7-1500. Starting from FW 2.6, you can configure the PLC to act as an OPC UA Client, so it can talk to Kepware.

However, every time a new device is added to Kepware (was it manual or scripted/automated through their API), the Siemens needs to be reprogrammed to cater for that new device.

Question:
Is there any off the shelf software in the market that can interface with an OPC DA/UA server and perform sophisticated logic and manipulate the tags values on a dynamic basis?

Given the hundreds of devices (most of which have common tags), it should be capable of iterating through them to read/write based on a dynamic OPC tag name (by dynamic i mean the tag name changes at run time to match a list of wells rather than writing logic for every distinct tag)

Cheers, sorry bad layout, been a long day.
 
If you want a fully customizable SCADA software that plays really well with databases and OPC DA and UA, I'd take a look at Ignition from Inductive Automation.

You're still going to have to do a bunch of scripting and having a dynamic number of wells that would rely on someone "adding a site" correctly seems risky to me. I'd want to have a very clear specification of what a well needs in terms of control system, tag structure etc and maybe even build some validation functions into the Scada system for "adding a site", i.e. validating all tags return good quality data, testing that controls respond as expected, then set a flag in the database to indicate it is good to add into the mix.
 
Thanks for taking the time to look at this, i expected Ignition SCADA to be there.

The client already has a comprehensive set of procedures and MOC's that governs adding / commissioning a new well up to bring it up to the SCADA display.

While wells vary in their tag structures based on equipment on site, they've been programmed to have a common code base. And for the purpose of this project, only a small set of tags will be exposed for the OPC -> orchestrator to use.

lets assume you have 300 wells (XA001-WA100), (YA001-XA100) and (ZA001-ZA100). The name of these wells will be a in an SQL database, and can be dynamically fetched using Kepware's ODBC dynamic tables.

Dynamic table exposes a table max records, current record, each column and actions to move records around as an OPC tag facilitating any OPC client to iterate through and (hopefully), populate an array with "wellnames"

what am trying to achieve is, once a new well added to a database, the max record gets increased, OPC client iterate through that record and populate a new well. since well name is one the columns, the OPC client can dynamically access wells by name.

back the previous example, if the OPC client iterate through table and populates all wells name from XA001 to ZA100, each stored in an array of strings as a name, if the orechestrator needs to (say) reduce production on all wells, it will do something like:

for (int i = 1; i<= max_records;i++)
{
OPC_tagname= "wells."+well.name+".reduce_prod";
SET_BOOL(OPC_tagname,TRUE);
}

Before we jump to the risk of this, the database entries will be verified, well controllers will have "modes" that will either accept or or ignore commands from orechestrator, and the OPC UA connection will be whitelisted, user/pass and certificate protected.

am just looking for a flexible solution that would access OPC UA tags in a very flexible dynamic way.

Thanks!
 

Similar Topics

I work for an OEM. I am trying to develop a generic HMI program that will display an overview screen displaying between 2 and 6 "widgets"...
Replies
1
Views
1,306
Hey guys, I am new to vb scripting in TIA and had a small query. I need to view certain data from HMI in excel. After running a certain script I...
Replies
13
Views
2,590
I need to make a navigation to 1 of 2 pages based on the value of a DINT in the PLC. I need a statement in the script that basically says when...
Replies
18
Views
6,171
Is there any way to script driver configuration instead of using the rslinx gui? It would be nice to just have scripts i can run for whatever...
Replies
2
Views
1,605
Hello all. I have a Danish program that has a lot of AOI's that were created using structured text. There are a few arguments that I am not...
Replies
3
Views
1,413
Back
Top Bottom