InTouch/Archestra/SCD5200 Tag Checker

I have recently been working on a project to upgrade our InTouch SCADA to ArchestrA.  This has a number of challenges, but a big one is how to be sure that you got all the right tag names going to the correct IO.  We use DNP and SCD5200 RTUs almost exclusively for large sites, so I have started writing a tool that parses all of our SCD5200 RTU configurations, our InTouch tag database, and the ArchestrA database and produces a spreadsheet with a comparison of all tags and addresses.  It can take also take a map file that maps RTU names to ArchestrA areas to InTouch topic names.  You can then review this report to compare any glaring differences - still a time consuming process but damn site quicker than doing it manually.  The tool is fairly functional at present and parses all my data correctly, but I've no doubt that there are a lot of edge cases not taken care of yet.

Source is on Github.

| January 25th, 2017 | Posted in Foxboro, SCADA |

4 Responses to “InTouch/Archestra/SCD5200 Tag Checker”

  1. Dale Brewster Says:

    Hi there, we wrote a tool to import intouch tags into SP attributes if your're interested.

  2. HamishC Says:

    Yea mate always interested, got the source online somewhere or is it closed?

  3. Maurice Butler Says:

    I'll try again in the correct place, as we use the di object for redundant fail over things are slightly different, I have merged you area logic into mine

    SELECT greferring3.tag_name as Area, greferring1.tag_name + '.' + pinst.primitive_name AS BaseObject_Tag, LEFT(ar.reference_string, CHARINDEX('.', ar.reference_string) - 1) AS ConnectionObject,
    RIGHT(ar.reference_string, LEN(ar.reference_string) - CHARINDEX('.', ar.reference_string)) AS AccessString
    FROM dbo.attribute_reference AS ar
    INNER JOIN
    dbo.gobject AS greferring1 ON ar.package_id = greferring1.checked_in_package_id
    INNER JOIN
    dbo.primitive_instance AS pinst ON ar.package_id = pinst.package_id AND pinst.mx_primitive_id = ar.referring_mx_primitive_id
    INNER JOIN
    gobject greferring2 on ar.gobject_id = greferring2.gobject_id
    INNER JOIN
    gobject greferring3 on greferring2.area_gobject_id = greferring3.gobject_id
    WHERE (ar.resolved_gobject_id > 0) AND (ar.is_valid = 0) AND (ar.resolved_mx_primitive_id = 0)

  4. HamishC Says:

    Thanks for sharing! I'd be interested to see the setup you guys have over there sometime, sounds like interesting stuff from what I hear.

Leave a Reply