OpenHistorian connections stop working after upgrading from V2.7 to V2.8 / V2.8night

I have upgraded the openHistorian from version 2.7 to 2.8 (and 2.8night).

I have connections with 2 devices:
1 SEL RTAC using DNP3
1 SEL 351S PMU

Both devices were running normally and receiving data before the upgrade.

I have installed the upgrade V2.8 and upgraded my previous database schema to the latest version.
All the configuration files are the same ( comm.xml, mapping.xml, etc)

After the update, both of the devices shows as offline in the openHistorian Manager → graph real time measurements. The devices are responding to ping command and I have tested the pmu with the connection tester.

Attached is the picture of the remote system console:

I have try to use the nightly version as well with no success.

Does anybody have any idea what could be the problem?

Try changing protocol to IEEE C37.118-2005, the 2011 protocol now attempts config frame 3 request by default.

Thanks Ritchie!

The PMU is online again after changing from IEEE C37.118-2011 to IEEE C37.118-2005.

Any idea what could be happening with the DNP3 connection?

I have used the command list in the Remote System Console, and I don’t see the RTAC_DNP3_SERVER listed:

ps: inputs ID 15, 16, 17 are not been used.

The DNP3 adapter changed with the current release to use the latest OpenDNP3 library.

You will need to run the DNP3ConfigGenerator.exe from the install folder, this will extract the required openSSL DLL’s now needed by the latest version of the OpenDNP3 library, i.e., libcrypto-1_1-x64.dll and libssl-1_1-x64.dll.

Also, the config format for the device and mapping files has changed a bit for the OpenDNP3 library, see the following:

  • Device.xml:
<?xml version="1.0" encoding="utf-8"?>
<MasterConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <client>
    <address>127.0.0.1</address>
    <port>20000</port>
    <minRetryMs>5000</minRetryMs>
    <maxRetryMs>60000</maxRetryMs>
    <reconnectDelayMs>2000</reconnectDelayMs>
    <level>15</level>
  </client>
  <master>
    <master>
      <timeSyncMode>None</timeSyncMode>
      <disableUnsolOnStartup>true</disableUnsolOnStartup>
      <unsolClassMask>
        <Class0>false</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </unsolClassMask>
      <startupIntegrityClassMask>
        <Class0>true</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </startupIntegrityClassMask>
      <integrityOnEventOverflowIIN>true</integrityOnEventOverflowIIN>
      <eventScanOnEventsAvailableClassMask>
        <Class0>false</Class0>
        <Class1>false</Class1>
        <Class2>false</Class2>
        <Class3>false</Class3>
      </eventScanOnEventsAvailableClassMask>
      <controlQualifierMode>always_two_bytes</controlQualifierMode>
      <TaskResponseTimeoutMilliseconds>5000</TaskResponseTimeoutMilliseconds>
      <TaskRetryPeriodMilliseconds>5000</TaskRetryPeriodMilliseconds>
      <TaskStartTimeoutMilliseconds>10000</TaskStartTimeoutMilliseconds>
    </master>
    <link>
      <isMaster>true</isMaster>
      <localAddr>1</localAddr>
      <remoteAddr>1024</remoteAddr>
      <ResponeTimeoutMilliseconds>1000</ResponeTimeoutMilliseconds>
      <KeepAliveTimeoutMilliseconds>60000</KeepAliveTimeoutMilliseconds>
    </link>
  </master>
</MasterConfiguration>
  • Mapping.xml:
<?xml version="1.0" encoding="Windows-1252"?>
<MeasurementMap xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <binaryMap>
    <Mapping>
      <tsfId>0</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </binaryMap>
  <doubleBitBinaryMap>
    <Mapping>
      <tsfId>1</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </doubleBitBinaryMap>
  <analogMap>
    <Mapping>
      <tsfId>2</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </analogMap>
  <counterMap>
    <Mapping>
      <tsfId>3</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </counterMap>
  <frozenCounterMap>
    <Mapping>
      <tsfId>4</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </frozenCounterMap>
  <controlStatusMap>
    <Mapping>
      <tsfId>5</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </controlStatusMap>
  <setpointStatusMap>
    <Mapping>
      <tsfId>6</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </setpointStatusMap>
</MeasurementMap>

Hi Ritchie, thanks again for your reppy!

I have followed the instructions:

  1. Executed the DNP3ConfigGenerator.exe (both files appeared in the folder libcrypto-1_1-x64.dll and libssl-1_1-x64.dll)

  2. Changed the format of the config and mapping file to the adapt to the new version of the library.
    In the config file, the only think that I have changed was the IP address. The port, local address, and remote address are the same that I am using. The other configurations I kept as default.
    In the mapping file, the only change was the first 2 lines I think.

After that, I have tried to restart the service and disable and enable the inputs, but the DNP3 communication does not receive the signals. See below the error I am getting now:

Any other thoughts?

Below you will find an example (IP obfuscated) that is working for me. Based on your “timeout waiting for response” messages", I would be tempted to say it’s firewall related. Perhaps you should make sure openHistorian.exe is added as an exception to the local Windows firewall - could be the exception was there for the older version, but not the newer one.

Thanks,
Ritchie

  • Device.xml:
<?xml version="1.0" encoding="utf-8"?>
<MasterConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <client>
    <address>192.168.10.12</address>
    <port>20000</port>
    <minRetryMs>5000</minRetryMs>
    <maxRetryMs>60000</maxRetryMs>
    <reconnectDelayMs>2000</reconnectDelayMs>
    <level>2</level>
  </client>
  <master>
    <master>
      <timeSyncMode>None</timeSyncMode>
      <disableUnsolOnStartup>true</disableUnsolOnStartup>
      <unsolClassMask>
        <Class0>true</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </unsolClassMask>
      <startupIntegrityClassMask>
        <Class0>true</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </startupIntegrityClassMask>
      <integrityOnEventOverflowIIN>true</integrityOnEventOverflowIIN>
      <eventScanOnEventsAvailableClassMask>
        <Class0>true</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </eventScanOnEventsAvailableClassMask>
      <controlQualifierMode>always_two_bytes</controlQualifierMode>
      <TaskResponseTimeoutMilliseconds>5000</TaskResponseTimeoutMilliseconds>
      <TaskRetryPeriodMilliseconds>5000</TaskRetryPeriodMilliseconds>
      <TaskStartTimeoutMilliseconds>10000</TaskStartTimeoutMilliseconds>
    </master>
    <link>
      <isMaster>true</isMaster>
      <localAddr>1</localAddr>
      <remoteAddr>1</remoteAddr>
      <ResponeTimeoutMilliseconds>1000</ResponeTimeoutMilliseconds>
      <KeepAliveTimeoutMilliseconds>60000</KeepAliveTimeoutMilliseconds>
    </link>
  </master>
</MasterConfiguration>
  • Mapping.xml:
<?xml version="1.0" encoding="Windows-1252"?>
<MeasurementMap xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <analogMap>
    <Mapping info="Vll ab">
      <tsfId>84</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
    <Mapping info="Vll bc">
      <tsfId>85</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>1</dnpIndex>
    </Mapping>
    <Mapping info="Vll ca">
      <tsfId>86</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>2</dnpIndex>
    </Mapping>
    <Mapping info="I a">
      <tsfId>87</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>3</dnpIndex>
    </Mapping>
    <Mapping info="I b">
      <tsfId>88</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>4</dnpIndex>
    </Mapping>
    <Mapping info="I c">
      <tsfId>89</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>5</dnpIndex>
    </Mapping>
    <Mapping info="kW tot">
      <tsfId>90</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>6</dnpIndex>
    </Mapping>
    <Mapping info="kVAR tot">
      <tsfId>91</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>7</dnpIndex>
    </Mapping>
    <Mapping info="Freq">
      <tsfId>92</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>8</dnpIndex>
    </Mapping>
  </analogMap>
  <!--
  <binaryMap>
    <Mapping>
      <tsfId>0</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </binaryMap>
  <doubleBitBinaryMap>
    <Mapping>
      <tsfId>1</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </doubleBitBinaryMap>
  <counterMap>
    <Mapping>
      <tsfId>3</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </counterMap>
  <frozenCounterMap>
    <Mapping>
      <tsfId>4</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </frozenCounterMap>
  <controlStatusMap>
    <Mapping>
      <tsfId>5</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </controlStatusMap>
  <setpointStatusMap>
    <Mapping>
      <tsfId>6</tsfId>
      <tsfSource>PPA</tsfSource>
      <dnpIndex>0</dnpIndex>
    </Mapping>
  </setpointStatusMap>
  -->
</MeasurementMap>

Hi Ritchie,

I have tried to add the openHistorian.exe to the inbound and outbound list, and to disable the firewall. None of the options worked. The system was working before the update and after the update the pmu connection is working fine. It seems that is only affecting the DNP3 connection.

Here is the current configuration. I have reduced the number of points of the mapping.xml, once I have too many points. IP address is different as well.

  • Device.xml :
<?xml version="1.0" encoding="utf-8"?>
<MasterConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <client>
	<address>192.168.1.1</address>
    <port>20000</port>
    <minRetryMs>5000</minRetryMs>
    <maxRetryMs>60000</maxRetryMs>	
    <reconnectDelayMs>2000</reconnectDelayMs>
    <level>2</level>
  </client>
  <master>
    <master>
      <timeSyncMode>None</timeSyncMode>
      <disableUnsolOnStartup>true</disableUnsolOnStartup>
      <unsolClassMask>
        <Class0>true</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </unsolClassMask>
      <startupIntegrityClassMask>
        <Class0>true</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </startupIntegrityClassMask>
      <integrityOnEventOverflowIIN>true</integrityOnEventOverflowIIN>
      <eventScanOnEventsAvailableClassMask>
        <Class0>true</Class0>
        <Class1>true</Class1>
        <Class2>true</Class2>
        <Class3>true</Class3>
      </eventScanOnEventsAvailableClassMask>
      <controlQualifierMode>always_two_bytes</controlQualifierMode>
      <TaskResponseTimeoutMilliseconds>5000</TaskResponseTimeoutMilliseconds>
      <TaskRetryPeriodMilliseconds>5000</TaskRetryPeriodMilliseconds>
      <TaskStartTimeoutMilliseconds>10000</TaskStartTimeoutMilliseconds>
    </master>
    <link>
      <isMaster>true</isMaster>
      <localAddr>1</localAddr>
      <remoteAddr>1024</remoteAddr>
      <ResponeTimeoutMilliseconds>1000</ResponeTimeoutMilliseconds>
      <KeepAliveTimeoutMilliseconds>60000</KeepAliveTimeoutMilliseconds>
    </link>
  </master>
</MasterConfiguration>
  • Mapping.xml :
<?xml version="1.0" encoding="Windows-1252"?>
<MeasurementMap xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <analogMap>
		<Mapping>
			<tsfId>632</tsfId>
			<tsfSource>RTAC</tsfSource>
			<dnpIndex>382</dnpIndex>
		</Mapping>
		<Mapping>
			<tsfId>633</tsfId>
			<tsfSource>RTAC</tsfSource>
			<dnpIndex>383</dnpIndex>
		</Mapping>
		<Mapping>
			<tsfId>634</tsfId>
			<tsfSource>RTAC</tsfSource>
			<dnpIndex>384</dnpIndex>
		</Mapping>
  </analogMap>
</MeasurementMap>
  • Connection String :
CommsFilePath=comms.xml; MappingFilePath=mapping2.xml;port=20000; maxSendQueueSize=-1; server=192.168.1.1; islistener=false; transportprotocol=tcp  

The connection with the RTAC is up, but I am still receiving 0 measurements. I have not changed anything related to the points IDs in the database ( not on purpose at least).

Any other ideas?

Is it possible that the mapped measurements do not exist after upgrade, or perhaps have have changed?

I would suspect measurements to be marked as PPA as source if they are being archived.

The time I have set up the openHistorian, I have created another instance called RTAC, once my signals were Modbus/DNP3 and not Phasors (PPA). Later I end up setting up all the points in the RTAC and not using the PPA instance.

I have checked the measurements and they are registered in the RTAC instance in the manager.

Is there a command to display more information or any log that i can check?