Read Me
======================== LICENSES ========================
/*
* Copyright (C) 2013-2023 Pavel Charvat
*
* This file is part of IEDExplorer.
*
* IEDExplorer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* IEDExplorer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with IEDExplorer. If not, see <http://www.gnu.org/licenses/>.
*/
IEDExplorer uses Binary Notes ASN.1 software library:
/*
* Copyright 2006 Abdulla G. Abdurakhmanov (abdulla.abdurakhmanov@gmail.com).
*
* Licensed under the LGPL, Version 2 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.gnu.org/copyleft/lgpl.html
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* With any your questions welcome to my e-mail
* or blog at http://abdulla-a.blogspot.com.
*/
======================== IEDExplorer ========================
The IEDExplorer project has been created in my free time in order to learn the IEC61850 protocol.
The result is the only (as I have seen over Internet) pure .net managed MMS stack (not complete yet)
and a very basic IEC61850 MMS client implementation.
The code is NOT in production quality, written by a non-professional programmer:
- it completely lacks tests
- it uses Binary Notes implementation of MMS ASN.1 encoding/decoding, which is relatively
slow in the C# flavour, thus not really suitable for a serious usage
- it has a simplistic UI and UI bindings (needs some refactoring)
- IEC61850 is modelled in a very simple manner, and model is incomplete (refactoring needed)
- the MMS client side only has been implemented
On the other side:
- it works (at least for me on some test setups)
- it has already helped me in some situations in debugging 61850 communications
- it has a big potential for improvement
- it can be a free alternative to some commercial test utilities
- it runs under Windows and under Linux/Mono
The project is looking for enthusiastic programmers who want to explore the mysterious
world of IEC61850 protocol.
Rev 0.1 2013/05/29
The first release 0.1 is an "as is" copy of the last development.
Rev 0.2 2013/11/01
The second release 0.2 : some enhacements in using DNS results/IP address. Most recent IP list.
Rev 0.3 2014/03/19
Some changes to make libiec61850 based server communication working.
Rev 0.4 2014/03/21
Reading variables from libiec61850 server working. Accepting reports without variable references.
Rev 0.5 2014/10/24
RP blocks have own tree.
Added NodeRP.cs
Boolean sent with 0x01.
Commands as a structure - working prototype for single commands direct.
Logging level combo.
Inspecting ied without defined lists possible, for example some libiec61850 samples.
Support for reading Arrays.
Rev 0.6 2014/11/04
New UI - begin with new libraries. Command Dialog - continue
Rev 0.7
Packet capture finished. New UI.
Rev 0.71 2014/12/07
SCL File View added thanks to Joel Kaiser.
Rev 0.72 2015/01/27
ISO layers are fully implemented now - ported from libiec61850. Thanks to the original author Michael Zillgith.
It is possible to set parameters for ISO COTP, Session and Presentation layers.
SCL View enhanced, resp. added some features from Joel Kaiser's version.
Rev 0.73 2015/02/17
Minor debug release / File Directory dialogs
Rev 0.74 2015/04/10
Minor debug release / ISO Session initialization
Rev 0.75 2015/10/21
* ISO COTP implemented sending of long data
* Report inclusion string - improved reading of reports
* New RCB Activation Dialog with Right/click on (U)RCB
* UI insulation (some internal refactoring)
* Support for buffered reports
* Reading of values with variable list
* File handling - icons
* Auto update for data window
* Delete NVL action - bugfix
* Enabled concurrent queries - InvokeId dictionary transactions queue
* Multithreading enabled for Write
* LogView context menu re-enabled (victim of internal refactoring)
Rev 0.76 2015/11/11
* Autoupdate - removed bug when reading higher level nodes (IED, LD, LN)
* Better readibility of octet_string values (converted to hex)
* Save Data button for IED Data view - save data view incl. values to TXT file for reference
Rev 0.77 2016/01/18
* SCSM_MMS: InvokeId - autoPurge (internal functionality)
Stop Autorefresh (cyclic read) on unsuitable nodes (mostly in IEC View)
* Saving CFG - split dialog, saveModel methods.
Bug correction - threading issue in Scsm_MMS_Worker.cs. Seen on the VMs.
Iec tree member nodes marked
* Saving libiec61850 model file (CFG) - the feature is not yet fully finished
* IEC structure view - tree.
* reading binary_time + forgotten icon
* Refresh data button in IED data view
* Short fix DA/DO Type
* small modification in TCP/RW
* IEC data model - some first ideas
* Collapse/Expand in tree. Some more DA/DO logic.
Rev 0.77b 2016/02/04
(Service release)
* Writing of unsigned and integer values
* Test XML DOM parser for SCL Parser and View
* SCL Parser and View - more IEDs from SCD can be read in. Some improvement in parser, parser made non-static
* Small correction in variables precedence in RCB activation dialog. Icon for EXE made explicit.
Rev 0.78 experimental SCLServer release 2016/04/23
This release is an experimental release with a new feature:
IEC61850 SERVER representing data from a loaded SCL file = SCL Server
SCL Server uses libiec61850.dll and its .net extension libiec61850dotnet.dll
Both libraries are embedded in the .exe
How to use the feature:
Load a valid SCL file.
SCL Server can be run by a right-click on the IED name in the SCL tree view, select Run SCLServer
Values in the SCL Server can be changed manually only a.t.m. - right click in the SCL View Window
Changed values should be visible for all connected IEC61850 clients via reads and reporting.
GOOSE messaging and sampled values are not implemented.
SCLServer is in ALPHA experimental state!!!
SCLServer may be separated into an independent exe in the future!!!
Shortened commit review:
* SCLParserDOM2.cs - new review of SCL paresr
* SCL server enhancements, debugging - writing values
* Editing values in SCL Server model.
* Inclusive reporting with configured TrgOps.
* Tcp - disconnect recogniition
* SCLServer - initial values
* SCLView - changing values (manually)
* initial values from SCL
* SCL Arrays handling
* sub data objects from SCL
* CSL Parser - SDOs, arrays
* Enhancing SCL Server and SCL Parser
* SCLServer, SCLParserDOM.cs - unfinished. BERDecoder change - Vadim Evseev.
* SCLServer
* IEC61850.Server
* Embedding iec61850.dll and iec61850dotnet.dll. Test client in SclServer.cs.
* SCL view: DOs to LNs, icons
* SCL read into iec structure
* Watch View initial
* AutoUpdateStoppedDialog.cs
* SCLParserDOM.cs
* Viewing SCL files - SCL View
* Handling of dynamic DataSets finished
Rev 0.79 experimental SCLServer & GOOSE release 2017/03/05
This release is an experimental release with a new feature:
GOOSE functions.
* Integration of Mireks features:
- Goose Sender + Data Editor
- Goose Explorer
- Polling list
- Reports list (still ongoing)
Features are mostly UNTESTED.
- Env optimizations
* Poll View Renamed and made permanent without affecting application closing
* Some changes for resding files, a choice not to read data model values on startup
* Purge Mireks commits - delete binary files
* Correction to sending command from contextmenu on Data node
* + Goose explorer
+ Goose sender
+ Report event viewer
+ PoolViewer with Drag'N'Drop
* Workaround for initial READs
Service release 0.79b 2017/05/09
- reading SCL files
- Owner RCB field readable
- more TCP errors catched
Service release 0.79c 2017/06/22
- Copy names from IedDataView
- File directory listing enhanced
Service release 0.79d 2017/06/26
- Timestamp quality bits listing
- List GOOSE interfaces - Windows texts
Service release 0.79e 2019/01/10
* Read Test flag from CommandDialog
* NodeDO.cs: base type for NodeDO should be NodeData for keep working Enable All RCB and for ActivateNVL
* Iec61859Controller.cs: ActivateNVL is uncommented
* EntryID is a 8 byte length value I've added possiblity to write 8byte 00-00-00-00-00-00-00-00
value to server to reset EntryID in BRCB
* added GooseCnt
* added File Delete command
* autoreconnect feature (corrected)
* Stop pooling if PoolView form is closed
* Restored feature to edit file name before GetFile and GetFileList to test server behavior
* extended information about Quality of data and Time
* Added parsing of embedded structured data, Logging Write Response
* Writing float commands
* Iso connection reuse
* bitstring write
* datetime write
* Cosmetics
* Find Form Update
* Find dialog
* Time format (milliseconds) - leading zeroes
* Service release 0.79d 2017/06/26
* List GOOSE interfaces - Windows texts
* cosmetics
* List GOOSE interfaces
* Copy names from IedDataView
* File directory listing enhanced
Service release 0.79f 2019/02/28
* Move to .net CLR ver 4.5
* Better Write response diagnostic support
* LastApplError unconfirmed PDU diagnostics support
* SBO(w) Commands supported (Select / Operate by hand or in an automatic sequence)
* Better Control Service diagnostics support
Service release 0.79g 2019/07/17
* Check bits in command dialogs now working
Service release 0.79h 2019/10/08
* Mireks contribution:
* I've created InnoSetup project to create Setup.exe. For that reason I've added to project file INNO_SETUP define for contitional compilation.
Logger.cs and MainWindow.cs are affected.
This changes also alows to start multiple instances of IEDExplorer I've replaced tmpFile with random filename and IniFiles I've moved to LocalUserAppDataPath,
but this is only active with INNO_SETUP defined in project file
Scsm_MMS.cs: Added parsing of structured data (i.e. Tr, Str) in ReportView.
OctetString can't be stored as object(string) because of following error:
byte[] bin = { 0x58, 0x1f, 0x61, 0x5d, 0xc6, 0,0,0 };
object DataValue = System.Text.ASCIIEncoding.ASCII.GetString(bin);
byte[] bout = System.Text.ASCIIEncoding.ASCII.GetBytes((String)DataValue);
bin != bout
for byte octet values > 0x7F after conversion with GetString and reverse GetBytes values are not properly converted.
I've changed to storing octetstring as byte[].
NodeData.StringValue and NodeRCB.EntryID properties are modified. I have tested this for EntryID.
EditValue dialog is also changed to fit this problem.
Service release 0.79i 2019/11/02
Ticket resolved: #16 GooseSender: VLAN: VID and Priority settings don't work
GOOSE Sender: When I set VLAN flag in GooseSender , VID and Priority do not follow the settings but remain fixed (VID = 50, Priority = 1).
Fields Priority, CFI and VID are now followed when building packet.
Service release 0.79j 2020/03/28
- Server DataObjects not sorted (keep ICD/SCD order)
- Enhancements thanks to Mirek Sobczak
* IniFileManager.cs try/catch block when ini file is corrupted
* GooseControl.* NumericUpDown don't needs to confirmed with Enter Key
* Scsm_MMS.cs seconds variable in Timestamp now is usigned acording to IEC61850 v2
* .gitignore contains additional file types to ignore. this helps during git push
* IedTreeView.cs - Enable All RCB is splited into Enable All URCB and Enable All BRCB
* MainWindow.cs - version info 'i' -> 'j'
* New InnoSetup IEDExplorer_setup.exe
Service release 0.79k 2020/08/24
- Enhancement: SCL data marked with CDC name from SCL file (specifically suitable for SIEMENS TOOLBOX II/SICAM data input)
Service release 0.79l 2021/02/10
BugFix to GOOSE timestamp issue from 2020-10-23. Timestamp increases only after new event/state comes
GOOSE: timestamp in ethernet frame now in UTC
Remark: new version is added to https://sourceforge.net/p/iedexplorer/code/ci/master/tree/InnoSetup/SetupDir/IEDExplorer_setup.exe
Service release 0.79m 2021/04/27
Better control of Read behaviour.
Reading of iec61850bean based servers enabled, when Read Values (on startup) and Read with Specification are both switched OFF
Service release 0.79n 2021/11/12
Report View added support for general adn dirGeneral DA and for cVal
Corrected regression imported from GOOSE code - malfunction in SCL files read-in.
Still needs tests.
Command handling SBO vs. SBOw acc. to standard, not tested yet
Service release 0.79o 2022/04/14
Report View added support for MMXN$x$mag values
AboutDialog prints it self compilation date
Service release 0.79p 2022/08/10
To RcbActivateDialog are added two checkBoxes to set or clear all "send checkboxes". Useful if someone wants to send only one value.
Service release 0.79q 2022/08/10
To RcbActivateDialog are added two checkBoxes to set or clear all "send checkboxes". Useful if someone wants to send only one value.
Now looks on RCB type Buffered or Unbuffere
Service release 0.79r 2022/08/31
Bug in decoding description attribute in Reports View
Service release 0.79s 2022/12/20
Enable creating new DataSet in a LD without fixed datasets
Function Communication AutoRestart by default OFF to avoid side effects
Some dialogs (Command, RCB Activation) centered on main window
Release 0.80 2023/02/06
Version 0.80
Listing of DataSet variables in IED data view
Using .Net 4.5.2 instead of 4.5
Service Release 0.80a 2023/10/30
Parameterized MMS Max PDU size due to some servers issuing big PDUs
Using .Net 4.8 instead of 4.5.2
Service Release 0.80b 2024/08/29
Catched some errors on SCL File redaing (initialization of values)
SCL Server - bitstring write enabled
Service Release 0.80c 2024/11/19
Catched some errors in command dialogue initialization - Log entry instead of a crash
Service Release 0.80d 2025/03/07
ResvTms UInt -> Int
Service Release 0.80e 2025/04/18
Bug in activation ReportControlBlocks for all existing Datasets
Deactivation All ReportControlBlocks Set to false 'Resv' also
ReportView correction in decoding measuring for cVal.mag.f and mag.f
LogError when GooseSender or GooseExplorer can't be open (Npcap driver is not installed or installed not in WinPcap mode).