Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Page Content

Table of Contents
minLevel1
maxLevel6
include
outlinefalse
indent
styledefault
excludePage Content
typelist
class
printablefalse

What are the advantages?

The new I/O interfaces allows enabling the visualisation visualization and editing of IO connections within the new UI, offering improved scalability, performance, and an enhanced user experience.

How to update old projects to new I/O interfaces

Starting from RT-LAB 2025.1, the migration is carried automatically when a project is opened.

...

  1. Open your project

  2. Follow the migration wizard instructions

    migrate_project_wiz1.pngImage Addedmigrate_project_wiz2.pngImage Addedmigrate_project_wiz3.pngImage Added


    Please back up your project by keeping the corresponding checkbox selected.

    backup.pngImage Added

  3. After clicking on the Finish button, the migration process is triggered. Next, depending on the outcome of the migration :

migration_success.pngImage Added

Your project can now be used with the new I/O Interfaces.

failed_not_compiled.pngImage Added
Info

Compiling the model is essential to ensure that all information required for automatic migration is available within the workspace.

...

Close the older RT-LAB version and start using the newer RT-LAB version.

...

Open your Workspace

...

Open your project

Follow the migration wizard instructions

...

Your project now can be used with the new I/O Interfaces!

...

Your project is opened with limited access: you can only edit and build it to complete the migration on the next opening.

migration_required.pngImage Added

Once all your models are successfully build, you may close and reopen it to complete migration.

model_compiled.pngImage Added

Migrated project into Dashboards

Dashboards can be opened by double-clicking on “Dashboards” in the RT-LAB Project Explorer.

...

Considerations

Once the project has been migrated to Dashboards,

  • (tick) Functionality of the Recorder remains the same.

  • (tick) Dynamic LabVIEW panels are still available for consultation, but do not interact with the simulation anymore. The Dashboards panels are now to be used instead of LabVIEW panels.

  • (tick) Configuration view of IO Interfaces remains in RT-LAB.

  • (minus) Aliases are no more supported.

  • (tick) All RT-LAB API calls remain compatible.

    • (warning) GetConnectionsDescription return may differ

      • For IO data points:

        • (minus) Field name is no longer present.

        • (plus) Field alias has been added, it is the IO data point UI name.

      • For model data points:

        • (minus) Field level, alias and name are no more present.

  • (star) Connections configuration:

    • (plus) Can be done via Dashboards

    • (minus) Is no longer accessible via the Configuration panel of RT-LAB.

    • (minus) Perform Autoconnections option is no more available in this version but can be used by API (for more details, please refer to Auto-Connection in RT-LAB)

Migration failure

If the project migration fails even after compiling your model(s), please read the <Project Path>/configurations/opalone/migration_report.log file and refer to the Known issues section.

If the issue persist please contact OPAL-RT support and provide the full project in a zip file or the following files

  1. The folder located at <Project Path>/configurations

  2. The file located at <Project Path>/Controller.logOpal Ones log files at C:/OPAL-RT/OpalOne/services/appserver/logs/appserver.log and C:/OPAL_RT/OpalOne/vX.Y.Z/server/logs/unicon.prod*.text.log

  3. The report generated by the diagnostic tool (which can be launched in RT-LAB via the menu Help > Run Diagnostic)

Migration report

The migration_report.log (under <Project Path>/configurations/opalone) should be generated no matter the migration failed or not.
If it’s not the case, it could be because the Controller.exe of the project was not properly closed before starting migration or if unicon.exe is not running.caused by an installation issue, please use the diagnostic tool (Help > Run Diagnostic) in this case and contact OPAL-RT support.

A migration report should content contains:

  • Information about IO Interfaces

...

Code Block
MIG -- Synchronisation of connections --
MIG 10 connections found.
MIG Connection between 'DNP3_Slave/sm_dnp3_slave/Analog_to_master/OpOutput/port1' and 'DNP3 Slave/Slaves/9FE36F43-E67A-407E-B047-38AD06272490/Analog inputs/656B6654-805D-478D-B74C-84C3B1CF553F'
MIG Connection between 'DNP3_Slave/sm_dnp3_slave/Analog_from_master/In1/Value' and 'DNP3 Slave/Slaves/9FE36F43-E67A-407E-B047-38AD06272490/Analog outputs/8E8AEAA4-8ED8-4F16-87B3-8AA56D609090'
...
MIG 10 connections to insert in database
INF IO DNP3 Slave assigned to DNP3 Slave/sm_dnp3_slave
MIG -- End synchronisation of connections --
  • Any error reported stop the migration process. It may be related to one of the previous sections, ie.

error on IO interface synchronization:

Code Block
ERR InsertBlocks error: 'error message'

error on connections:

Code Block
ERR Invalid connection from 'path1' to 'path2'
ERR The migration cannot be completed as some connections remain unresolved. Please correct any incorrect connections before proceeding with the migration.
Code Block
ERR FAILED to insert IO assignments 'error message'
Code Block
ERR FAILED to create connections 'error message'

Known issues

Use of new I/O interfaces not possible because of unresolved connections

If in a project there are unresolved connections, the migration cannot be done.

...

  • Errors on connections may be reported but are not critical to complete migration.

They concern unresolved connections that can be observed in the Configuration panel in RT-LAB version prior to 2025.1 when the top-level connection count is inconsistent with the sum of the connections present at the data point level. The following image illustrates what unresolved connections may look like.

...

Contrastingly, in the next image, all connections are resolved.

image-20240118-155625.pngImage Addedimage-20240118-161314.pngImage Modified

...

In case of DNP3 Slave the best things to do is

  1. Export connections by using RT-LAB API

Code Block
languagepy
r.OpenProject('projectName')
r.ExportConnections('connections.csv')
  1. Separate exported files in 2 files

    1. One for DNP3 Slave connections

    2. One for the other connections

Code Block
languagepy
Separate connections.csv file in two files: 
- connections_dnp3_slave_connections.csv
- connections_wo_dnp3_slave_connections.csv
  1. Remove all existing connections in the Project

Code Block
languagepy
r.DeleteConnection('*','*')
  1. Import files containing all connections except the one related to DNP3 Slave

Code Block
languagepy
r.ImportConnections('connections_wo_dnp3_slave_connections.csv')
Note

If you have LabVIEW panels please, open them before doing those steps.

  1. Update and import DNP3 Slave connections

Path has change from ‘DNP3 Slave/Analog inputs/Analog input 0’ to 'DNP3 Slave/Slaves/Slave_1/Analog inputs/Analog input 0'

Update all path and use CreateConnection RtlabApi call to create connections with new path

Example:

  • Content of connections_dnp3_slave_connections.csv

Code Block
languagepy
Connection Type,Datapoint 1: Primary ID,Datapoint 1: Secondary ID,Datapoint 1: Type,Datapoint 2: Primary ID,Datapoint 2: Secondary ID,Datapoint 2: Type
Model <--> IO,Analog_to_master[0],multi_drv/SS_DNP3/sm_dnp3_slave/Analog_to_master/OpOutput/port1[0],signal (out),DNP3 Slave/Analog inputs/Analog input 0,DNP3 Slave/Analog inputs/348F0769-87DB-469D-8CE2-D3F1763B995B,in
Model <--> IO,Analog_to_master[1],multi_drv/SS_DNP3/sm_dnp3_slave/Analog_to_master/OpOutput/port1[1],signal (out),DNP3 Slave/Analog inputs/Analog input 1,DNP3 Slave/Analog inputs/CACBB340-0117-4AC5-9385-29A621D4E2AC,in
Model <--> IO,Binary_to_master[0],multi_drv/SS_DNP3/sm_dnp3_slave/Binary_to_master/OpOutput/port1[0],signal (out),DNP3 Slave/Binary inputs/Binary input 0,DNP3 Slave/Binary inputs/DE660488-BA57-4916-84B7-6740AB557979,in
Model <--> IO,Binary_to_master[1],multi_drv/SS_DNP3/sm_dnp3_slave/Binary_to_master/OpOutput/port1[1],signal (out),DNP3 Slave/Binary inputs/Binary input 1,DNP3 Slave/Binary inputs/7898A36B-1C49-4318-916A-86E9DBB557FD,in
Model <--> IO,Binary_from_master[0],multi_drv/SS_DNP3/sm_dnp3_slave/Binary_from_master/In1/Value[0],parameter (in/out),DNP3 Slave/Binary outputs/Binary output 0,DNP3 Slave/Binary outputs/B64579C4-7995-4D9E-B861-BD6089F7CBC5,out
Model <--> IO,Binary_from_master[1],multi_drv/SS_DNP3/sm_dnp3_slave/Binary_from_master/In1/Value[1],parameter (in/out),DNP3 Slave/Binary outputs/Binary output 1,DNP3 Slave/Binary outputs/13C5944F-01E1-4CA1-A16B-DB36C18088D4,out
Model <--> IO,Analog_from_master[0],multi_drv/SS_DNP3/sm_dnp3_slave/Analog_from_master/In1/Value[0],parameter (in/out),DNP3 Slave/Analog outputs/Analog output 0,DNP3 Slave/Analog outputs/46D11140-359A-4763-922D-F79825342B69,out
Model <--> IO,Analog_from_master[1],multi_drv/SS_DNP3/sm_dnp3_slave/Analog_from_master/In1/Value[1],parameter (in/out),DNP3 Slave/Analog outputs/Analog output 1,DNP3 Slave/Analog outputs/A120F4DF-F4C4-4B37-9469-1332D6CE29B6,out
  • New files generated dnp3_connections_path_updated.csv

Take 3rd column (Datapoint 1: Secondary ID)

Take 5th column (Datapoint 2: Primary ID)

Add in the column containing path of IOs Slaves/Slave_1 if your data points are related to Slave_1 of DNP3 Slave configurations

...

Code Block
languagepy
multi_drv/SS_DNP3/sm_dnp3_slave/Analog_to_master/OpOutput/port1[0],DNP3 Slave/Slaves/Slave_1/Analog inputs/Analog input 0
multi_drv/SS_DNP3/sm_dnp3_slave/Analog_to_master/OpOutput/port1[1],DNP3 Slave/Slaves/Slave_1/Analog inputs/Analog input 1
multi_drv/SS_DNP3/sm_dnp3_slave/Binary_to_master/OpOutput/port1[0],DNP3 Slave/Slaves/Slave_1/Binary inputs/Binary input 0
multi_drv/SS_DNP3/sm_dnp3_slave/Binary_to_master/OpOutput/port1[1],DNP3 Slave/Slaves/Slave_1/Binary inputs/Binary input 1
multi_drv/SS_DNP3/sm_dnp3_slave/Binary_from_master/In1/Value[0],DNP3 Slave/Slaves/Slave_1/Binary outputs/Binary output 0
multi_drv/SS_DNP3/sm_dnp3_slave/Binary_from_master/In1/Value[1],DNP3 Slave/Slaves/Slave_1/Binary outputs/Binary output 1
multi_drv/SS_DNP3/sm_dnp3_slave/Analog_from_master/In1/Value[0],DNP3 Slave/Slaves/Slave_1/Analog outputs/Analog output 0
multi_drv/SS_DNP3/sm_dnp3_slave/Analog_from_master/In1/Value[1],DNP3 Slave/Slaves/Slave_1/Analog outputs/Analog output 1
  • Create new connections

From python command line in RT-LAB

...

languagepy

...

With the new IO interfaces, these connections cannot be restored but are logged in the migration report. You need to update your IO configuration and/or recreate these connections.

...

The connection paths concerned are listed at the end of the report:

Code Block
WRN Please note that the following connections can't be etablished:
WRN ??? Invalid connection between MuSE_OP4510V2C_OP4520R_OP4200R/SM_Master/RemoteIOs_OP4612/Digital_In/Remote_OP4612_DigitalIn_Ch00-07/In1/Value[0:7] and OPAL-RT Board/Slot 2A - Digital in/Channels 0 - 7 (Static)[0:7]
WRN ??? Invalid connection between MuSE_OP4510V2C_OP4520R_OP4200R/SM_Master/RemoteIOs_OP4612/Digital_In/Remote_OP4612_DigitalIn_Ch08-15/In1/Value[0:7] and OPAL-RT Board/Slot 2A - Digital in/Channels 8 - 15 (Static)[0:7]
...
WRN 13 invalid connections

  • Errors on datapoints may be reported but are not critical to complete migration, it should be the case if these datapoints are involved in invalid connections as mentioned above

Code Block
ERR Invalid datapoint OPAL-RT Board/Slot 2A - Digital in/Channels 0 - 7 (Static)[0:7]
ERR Invalid datapoint OPAL-RT Board/Slot 2A - Digital in/Channels 8 - 15 (Static)[0:7]

  • Any kind of critical error may stop the migration process. In these special cases, you may try to rebuild your model(s) and reopen your project to relaunch migration. If the problem persists, please contact OPAL-RT support.