Tag: HMI

  • Ignition and CMOT Dibbler Hydro

    Ignition and CMOT Dibbler Hydro

    Fun with Tags 🏷️

    A recent discussion about an issue at a hydro power plant inspired me to start a side project and test what Inductive Automation Ignition can really do.

    Project goal

    • Implement active power production schedules (CIMXML IEC 61970) for each generating unit, with minimal modification of current PLC logic

    Approach

    • Main goal is to implement an xml parser to store CIMXML data in an SQL database, to display this data in a meaningful manner, and to write the setpoints to the OPC tags as per schedule from CIMXML
    • Used an old AC800M (Compact Control Builder M 6.1.0-0) project that I did some 10 years ago to simulate the powerplant (all drivers and process feedbacks already simulated within the PLC logic, done for FAT purposes). This project already had NDC setpoints implemented (originally coming from NDC via IEC 60870-5-104) so these were used as targets for xml setpoints.
    • Simulated powerplant is similar to the real-world power plant that inspired the project (5 Pelton units, 40MW each)
    • Replicated original Symphony Plus SCADA symbols and displays from the donor project in Ignition in order to have a single HMI point of control. Everything is fully templatized (scripts, symbols, unit displays)
    • Added drivers and process values simulation missing in PLC using Ignition’s scripting
    • Implemented power balancing with two photovoltaic plants. Any active unit can be selected for balancing – its active power setpoint is dynamically corrected by the combined production of the two PVs

    Environment 💻

    • Virtual machine on VMWare Workstation 17 (4 cores of Ryzen 7 7840HS cores, 6GB DDR5)
      • Windows 10 Pro
      • ABB Compact Control Builder M 6.1.0-0
      • 6* ABB Softcontroller (AC800M simulation, one for each unit + one common controller)
      • ABB AC800M OPC server
      • Ignition 8.3.3 gateway, Vision client, OPCDA connector, internal historian with 17000 tags, SQLLite database with schedule data

    End Result 🥳

    Script scans source folder and loads new xml files to the schedule database. Correctly processed files are renamed to “OK”
    • Fully functional hydro powerplant with SCADA – from standstill to synchronization on 132kV, complete with all auxiliary systems – bearing oil pumps, transformers etc… Sadly, it consumes energy instead of producing it 😁
    • CIMXML is automatically read from a folder and mapped to unit OPC setpoints. Units in remote mode (NDC) will use the CIMXML setpoint
    • Schedule period and resolution is defined in xml file – xml parser is flexible enough to handle any resolution and period
    • Dynamic schedule tables for each unit, colour coded and fed from a single schedule database
    • Three security levels
      • Admin – full control
      • Operator – operations
      • Supervisor – operations + schedule editing
    • PV-hydro balancing logic per unit
    • Complete audit trail for all actions (operations and configuration)
    Idle to Synchronization
    Manual table edit and switching balancing unit
    SP change at scheduled time

    Lessons learned 🎓

    • Used Vision instead of Perspective without any particular reason – same look and feel can be achieved with Perspective. Important stuff is running in Gateway scripts and transaction groups anyway
    • OPCAE is not supported – fortunately, Ignition’s alarming capabilities are very good and it’s easy to collect all alarm settings from CBM and parse it to JSON to import to Ignition. In another ecosystem (without a tool like CBM Open Interface) or without easy access to PLC logic it would require a 3rd party tool to get the alarms
    • The project is highly customizable – number of units, type of plant, CIMXML structure etc. It can even sit alongside some other SCADA and just deal with the xmls and OPC

    If you’d like to explore projects like this – with real power plants 😉 – feel free to reach out.