For the comms.xml file, I essentially took the example file linked above and changed only the IP address to the address of my outstation device. I configured the outstation server to use DNP address 1024 to match what’s assigned here and to look for a master of address 1. Here is comms file:
<?xml version="1.0" encoding="utf-8"?>
<MasterConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<client>
<address>192.xxx.xxx.xxx</address>
<port>20000</port>
<minRetryMs>5000</minRetryMs>
<maxRetryMs>60000</maxRetryMs>
<level>15</level>
</client>
<master>
<master>
<fragSize>2048</fragSize>
<allowTimeSync>true</allowTimeSync>
<doUnsolOnStartup>false</doUnsolOnStartup>
<enableUnsol>true</enableUnsol>
<unsolClassMask>14</unsolClassMask>
<integrityPeriodMs>5000</integrityPeriodMs>
<taskRetryPeriodMs>5000</taskRetryPeriodMs>
</master>
<app>
<isMaster>true</isMaster>
<rspTimeoutMs>5000</rspTimeoutMs>
<numRetry>0</numRetry>
<fragSize>2048</fragSize>
</app>
<link>
<isMaster>true</isMaster>
<useConfirms>false</useConfirms>
<numRetry>0</numRetry>
<localAddr>1</localAddr>
<remoteAddr>1024</remoteAddr>
<timeoutMs>1000</timeoutMs>
</link>
</master>
</MasterConfiguration>
For the purposes of testing, I’m only attempting to poll 2 analog points. So for the mapping file, I removed everything from the example file but the analog section:
<?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>135</tsfId>
<tsfSource>PPA</tsfSource>
<dnpIndex>0</dnpIndex>
</Mapping>
<Mapping>
<tsfId>136</tsfId>
<tsfSource>PPA</tsfSource>
<dnpIndex>1</dnpIndex>
</Mapping>
</analogMap>
</MeasurementMap>
If I’m understanding the mapping file correctly, it should map the following:
- DNP AI0000 --> PPA:135
- DNP AI0001 --> PPA:136
PPA:135 & 136 are measurements I created as Current Magnitude & Current Phase Angle types
There was an error generated yesterday afternoon, but I can’t seem to duplicate it anymore, and I’m not certain exactly what generated it, as I was trying a lot of different configurations throughout the afternoon:
[5/21/2020 2:22:10 PM] Date and Time: 5/21/2020 2:22:10 PM
Machine Name: SEL
Machine IP: xx::xxx:xxx:xxx:xxx
Machine OS: Microsoft Windows NT 6.2.9200.0
Application Domain: openHistorian.exe
Assembly Codebase: C:/Program Files/openHistorian/openHistorian.exe
Assembly Full Name: openHistorian, Version=2.7.195.0, Culture=neutral, PublicKeyToken=null
Assembly Version: 2.7.195.0
Assembly Build Date: 5/5/2020 6:22:56 PM
.Net Runtime Version: 4.0.30319.42000
Exception Source: System
Exception Type: System.Net.HttpListenerException
Exception Message: An operation was attempted on a nonexistent network connection
Exception Target Site: WriteAsyncFast
---- Stack Trace ----
System.Net.WebSockets.WebSocketHttpListenerDuplexStream.WriteAsyncFast(eventArgs As HttpListenerAsyncEventArgs)
openHistorian.exe: N 00689
System.Net.WebSockets.<WriteAsyncCore>d__41.MoveNext()
openHistorian.exe: N 01323
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
openHistorian.exe: N 00032
System.Net.WebSockets.<SendFrameAsync>d__48.MoveNext()
openHistorian.exe: N 01218
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
openHistorian.exe: N 00032
System.Net.WebSockets.<Process>d__19.MoveNext()
openHistorian.exe: N 03862
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
openHistorian.exe: N 00032
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(task As Task)
openHistorian.exe: N 00062
System.Net.WebSockets.<CloseOutputAsyncCore>d__51.MoveNext()
openHistorian.exe: N 02191
There are a number of items on the “Add New Device Configuration” screen on the manager that I’m not sure how to interpret or how they should be set (i.e. Connect on Demand, Allow use of cached configuration, frames per second, etc) If you have descriptions of the options on that screen, or an example of how you configured that screen for DNP that may be helpful.
Thanks for taking a look at this!