FRM Ed 2 Dynamic Addition
FRM Ed 2 Dynamic Addition
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using IEDConfigurationTool.CustomControls;
using System.Xml;
using System.Data;
using System.IO;
using System.Data.SqlServerCe;
using System.Drawing.Printing;
using WeifenLuo.WinFormsUI.Docking;
namespace IEDConfigurationTool
/// <summary>
/// Form for tabbed display for GOOSE subscription, Control blocks etc
/// </summary>
/// <summary>
/// Constructor
/// </summary>
public frmEd2DynamicAddition()
InitializeComponent();
base.iedDev = LablelClass.iedDevice;
[DllImport("user32.dll")]
static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
/// <summary>
/// </summary>
label9.Text = iedDev.IEDDeviceOrginalName;
label10.Text = iedDev.IEDDeviceInstanceName;
if (iedDev == null)
return;
SetGrpText();
Load61850Configuration();
Global.OnIEC61850ConfigReload += new
Global.IEC61850ConfigReloadEventArgs(Global_OnIEC61850ConfigReload);
LoadimageListGooseLibrary();
LoadImageListIEDItems();
btnRetreive.Enabled = Global.CurrentUser.RetrieveConfigurations;
//sendCIDToolStripMenuItem.Enabled = Global.CurrentUser.DownloadConfigurations;
tsRemoveMapping.Enabled = Global.CurrentUser.IEC61850Configuration;
tspDatasetMoveUp.Enabled = Global.CurrentUser.IEC61850Configuration;
tspDatasetMoveDown.Enabled = Global.CurrentUser.IEC61850Configuration;
tspDatasetItemDelete.Enabled = Global.CurrentUser.IEC61850Configuration;
iedProperties.Enabled= Global.CurrentUser.IEC61850Configuration;
startupProperties.Enabled= Global.CurrentUser.IEC61850Configuration;
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
}
tabMain.TabPages.Remove(pageProperties);
/// <summary>
/// </summary>
void Disablebuttons()
btnAddDataSet.Enabled = false;
btnEditDs.Enabled = false;
btnAddLog.Enabled = false;
btnNewRCB.Enabled = false;
btnDeleteDataset.Enabled = false;
btnDeleteRCB.Enabled = false;
btnDeleteGOCB.Enabled = false;
btnDeleteLog.Enabled = false;
btnEditGOCB.Enabled = false;
btnEditLog.Enabled = false;
btnEditRCB.Enabled = false;
btnNewGOCB.Enabled = false;
btnCloneDataset.Enabled = false;
}
/// <summary>
/// </summary>
void Load61850Configuration()
if (iedDev.SCLConfiguration == null)
return;
if (iedDev.SCLConfiguration.IEDs.Count == 0)
return;
iedProperties.SelectedObject = iedDev.SCLConfiguration.IEDs[0];
if (iedDev.SCLConfiguration.IEDs[0].StartUpSettings == null)
if (iedDev.SCLConfiguration.IEDs[0].MUStartUpSettings == null)
if(iedDev.SCLConfiguration.IEDs[0].SMVStartUpSettings==null)
}
startupProperties.SelectedObject = iedDev.SCLConfiguration.IEDs[0].StartUpSettings;
FillGoosePublisherDetails("");
FillSubscriberInputs();
FillGooseSubscriberDetails();
FillReportControlBlocks("");
FillLogControlBlocks("");
FillDataSets("");
IEDConfigurationTool.DisplayUtil.FillLDevices(cmbLogicalDevices,
base.iedDev.SCLConfiguration.IEDs[0]);
/// <summary>
/// </summary>
try
catch { }
/// <summary>
/// </summary>
try
catch { }
/// <summary>
/// This function renames old IED name to new IED name in treeview
/// </summary>
{
for (int i = 0; i < treeView.Nodes.Count; i++)
if (treeView.Nodes[i].Text.Split('.')[0] == OldName)
treeView.Nodes[i].Text = NewName ;
/// <summary>
/// </summary>
void SetGrpText()
iedProperties.SelectedObject = iedDev.SCLConfiguration.IEDs[0];
startupProperties.SelectedObject = iedDev.SCLConfiguration.IEDs[0].StartUpSettings;
BrowsableAttribute attribute =
(BrowsableAttribute)descriptor.Attributes[typeof(BrowsableAttribute)];
if (fieldtoChange != null)
fieldtoChange.SetValue(attribute,isBrowsable);
startupProperties.Refresh();
/// <summary>
/// </summary>
/// <param name="OldIEDName"></param>
Invoke((MethodInvoker)SetGrpText);
/// <summary>
/// </summary>
imageListGooseLibrary.Images.Add(Properties.Resources.G);
imageListGooseLibrary.Images.Add(Properties.Resources.DS);
imageListGooseLibrary.Images.Add(Properties.Resources.DS);
imageListGooseLibrary.Images.Add(Properties.Resources.DO);
imageListGooseLibrary.Images.Add(Properties.Resources.DO);
imageListGooseLibrary.Images.Add(Properties.Resources.boff);
imageListGooseLibrary.Images.Add(Properties.Resources.bon);
imageListGooseLibrary.Images.Add(Properties.Resources.tOff);
imageListGooseLibrary.Images.Add(Properties.Resources.tOn);
imageListGooseLibrary.Images.Add(Properties.Resources.Qoff);
imageListGooseLibrary.Images.Add(Properties.Resources.Qon);
imageListGooseLibrary.Images.Add(Properties.Resources.fOff);
imageListGooseLibrary.Images.Add(Properties.Resources.fOn);
imageListGooseLibrary.Images.Add(Properties.Resources.iOff);
imageListGooseLibrary.Images.Add(Properties.Resources.iOn);
imageListGooseLibrary.Images.Add(Properties.Resources.Eoff);
imageListGooseLibrary.Images.Add(Properties.Resources.EOn);
imageListGooseLibrary.Images.Add(Properties.Resources.Coff);
imageListGooseLibrary.Images.Add(Properties.Resources.coon);
imageListGooseLibrary.Images.Add(Properties.Resources.Struct);
imageListGooseLibrary.Images.Add(Properties.Resources.Struct);
imageListGooseLibrary.Images.Add(Properties.Resources.ooff);
imageListGooseLibrary.Images.Add(Properties.Resources.oOn);
imageListGooseLibrary.Images.Add(Properties.Resources.Soff);
imageListGooseLibrary.Images.Add(Properties.Resources.Son);
imageListGooseLibrary.Images.Add(Properties.Resources.dpoff);
imageListGooseLibrary.Images.Add(Properties.Resources.dpon);
imageListGooseLibrary.Images.Add(Properties.Resources.tcoff);
imageListGooseLibrary.Images.Add(Properties.Resources.tcon);
imageListGooseLibrary.Images.Add(Properties.Resources.etoff);
imageListGooseLibrary.Images.Add(Properties.Resources.eton);
imageListGooseLibrary.Images.Add(Properties.Resources.uoff);
imageListGooseLibrary.Images.Add(Properties.Resources.uon);
imageListGooseLibrary.Images.Add(Properties.Resources.unoff);
imageListGooseLibrary.Images.Add(Properties.Resources.unon);
imageListGooseLibrary.Images.Add(Properties.Resources.LN);
imageListGooseLibrary.Images.Add(Properties.Resources.FC);
imageListGooseLibrary.Images.Add(Properties.Resources.fcd);
imageListGooseLibrary.Images.Add(Properties.Resources.fcdoff);
imageListGooseLibrary.Images.Add(Properties.Resources.fcdon);
imageListGooseLibrary.Images.Add(Properties.Resources.IED);
//imageListGooseLibrary.Images.Add(Properties.Resources.smv);
/// <summary>
/// </summary>
imagelistIEDDataItems.Images.Add(Properties.Resources.G);
imagelistIEDDataItems.Images.Add(Properties.Resources.DS);
imagelistIEDDataItems.Images.Add(Properties.Resources.DS);
imagelistIEDDataItems.Images.Add(Properties.Resources.DO);
imagelistIEDDataItems.Images.Add(Properties.Resources.DO);
imagelistIEDDataItems.Images.Add(Properties.Resources.b);
imagelistIEDDataItems.Images.Add(Properties.Resources.b);
imagelistIEDDataItems.Images.Add(Properties.Resources.T);
imagelistIEDDataItems.Images.Add(Properties.Resources.T);
imagelistIEDDataItems.Images.Add(Properties.Resources.Q);
imagelistIEDDataItems.Images.Add(Properties.Resources.Q);
imagelistIEDDataItems.Images.Add(Properties.Resources.F);
imagelistIEDDataItems.Images.Add(Properties.Resources.F);
imagelistIEDDataItems.Images.Add(Properties.Resources.I);
imagelistIEDDataItems.Images.Add(Properties.Resources.I);
imagelistIEDDataItems.Images.Add(Properties.Resources.E);
imagelistIEDDataItems.Images.Add(Properties.Resources.E);
imagelistIEDDataItems.Images.Add(Properties.Resources.C);
imagelistIEDDataItems.Images.Add(Properties.Resources.C);
imagelistIEDDataItems.Images.Add(Properties.Resources.Struct);
imagelistIEDDataItems.Images.Add(Properties.Resources.Struct);
imagelistIEDDataItems.Images.Add(Properties.Resources.O);
imagelistIEDDataItems.Images.Add(Properties.Resources.O);
imagelistIEDDataItems.Images.Add(Properties.Resources.S);
imagelistIEDDataItems.Images.Add(Properties.Resources.S);
imagelistIEDDataItems.Images.Add(Properties.Resources.dp);
imagelistIEDDataItems.Images.Add(Properties.Resources.dp);
imagelistIEDDataItems.Images.Add(Properties.Resources.tc);
imagelistIEDDataItems.Images.Add(Properties.Resources.tc);
imagelistIEDDataItems.Images.Add(Properties.Resources.et);
imagelistIEDDataItems.Images.Add(Properties.Resources.et);
imagelistIEDDataItems.Images.Add(Properties.Resources.u);
imagelistIEDDataItems.Images.Add(Properties.Resources.u);
imagelistIEDDataItems.Images.Add(Properties.Resources.unknown);
imagelistIEDDataItems.Images.Add(Properties.Resources.unknown);
imagelistIEDDataItems.Images.Add(Properties.Resources.LN);
imagelistIEDDataItems.Images.Add(Properties.Resources.FC);
imagelistIEDDataItems.Images.Add(Properties.Resources.fcd);
imagelistIEDDataItems.Images.Add(Properties.Resources.BR);
imagelistIEDDataItems.Images.Add(Properties.Resources.UR);
imagelistIEDDataItems.Images.Add(Properties.Resources.IED);
imagelistIEDDataItems.Images.Add(Properties.Resources.smv);
imagelistIEDDataItems.Images.Add(Properties.Resources.DS);
imagelistIEDDataItems.Images.Add(Properties.Resources.DS);
/// <summary>
/// OnIEDAdded event handler of Global
/// </summary>
try
catch { }
/// <summary>
/// </summary>
if (ied == null)
return;
/// <summary>
try
// lstDigitalSubscribers.Items.Clear();
// lstAngSubscribers.Items.Clear();
if (base.iedDev.SCLConfiguration == null)
return;
if (base.iedDev.SCLConfiguration.IEDs.Count == 0)
return;
if (iedDev.SCLConfiguration.IEDs[0] != null)
if (sub != null)
// AddItemToSubScriberList(sub[j], lstDigitalSubscribers);
sub = iedDev.SCLConfiguration.IEDs[0].AccessPoints[0].AnalogFloatIEC61850Inputs;
if (sub != null)
{
// AddItemToSubScriberList(sub[j], lstAngSubscribers);
catch { }
/// <summary>
/// </summary>
strLN = vi.Path.Split('$')[0];
if (item != null)
item.Tag = vi;
if (vi.IsMapped)
else
item.SubItems.Add(new ListViewItem.ListViewSubItem(item, ""));
lstView.Items.Add(item);
bool FillGOOSEPub=false;
/// <summary>
/// </summary>
try
lstViewGOOSEPublisherConf.Items.Clear();
if (base.iedDev.SCLConfiguration == null)
return;
if (base.iedDev.SCLConfiguration.IEDs.Count == 0)
return;
LablelClass.ied = ied;
if (ied != null)
if (PublisherGoose != null)
ListViewItem item;
for (int i = 0; i < PublisherGoose.Count; i++)
FillGOOSEPub = true;
item.Checked = PublisherGoose[i].IsPublisher;
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].CBLDeviceName + ".LLN0." + PublisherGoose[i].DataSetName));
else
if (lstViewGOOSEPublisherConf.Columns[j].Tag != null)
if (lstViewGOOSEPublisherConf.Columns[j].Tag.ToString() == "MAC")
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].MACAddress));
{
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].VLANID));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].APPIDComm));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].ID));
else if (lstViewGOOSEPublisherConf.Columns[j].Tag.ToString() ==
"VLANPRIORITY")
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].VLANPRIORITY));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].desc));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].confRev));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].MaxTime.ToString()));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].MinTime.ToString()));
//item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
PublisherGoose[i].IsPublisher ? "Yes" : "No"));
item.Tag = PublisherGoose[i];
lstViewGOOSEPublisherConf.Items.Add(item);
if (!PublisherGoose[i].IsPublisher)
if (lstViewGOOSEPublisherConf.Items.Count > 0)
{
btnPrintGOCB.Enabled = true;
btnDeleteGOCB.Enabled = true;
btnEditGOCB.Enabled = true;
btnEditGOCBDataset.Enabled = true;
if (ItemToSelect == "")
lstViewGOOSEPublisherConf.Items[0].Selected = true;
else
if (lstViewGOOSEPublisherConf.Items[i].Text == ItemToSelect)
lstViewGOOSEPublisherConf.Items[i].Selected = true;
lstViewGOOSEPublisherConf.Items[i].EnsureVisible();
break;
else
btnPrintGOCB.Enabled = false;
btnDeleteGOCB.Enabled = false;
btnEditGOCB.Enabled = false;
btnEditGOCBDataset.Enabled = false;
catch { }
finally
FillGOOSEPub = false;
/// <summary>
/// </summary>
try
lstViewGOOSESubscriberConf.Items.Clear();
if (base.iedDev.SCLConfiguration == null)
return;
if (base.iedDev.SCLConfiguration.IEDs.Count == 0)
return;
if (ied.AccessPoints[0].BooleanIEC61850Inputs != null)
AddGOOSESubscriber(ied.AccessPoints[0].BooleanIEC61850Inputs);
if (ied.AccessPoints[0].AnalogFloatIEC61850Inputs != null)
AddGOOSESubscriber(ied.AccessPoints[0].AnalogFloatIEC61850Inputs);
if (lstViewGOOSESubscriberConf.Items.Count > 0)
lstViewGOOSESubscriberConf.Items[0].Selected = true;
btnEditsubscriber.Enabled = true;
else
btnEditsubscriber.Enabled = false;
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
catch(Exception ex)
{
LoggerUtil.Instance.WriteToLog(ex.Message + "\t" + ex.StackTrace);
/// <summary>
/// </summary>
Skip = false;
if (VI[i].IsMapped)
lstViewGOOSESubscriberConf.Items[j].SubItems[1].Text == VI[i].MappedLDevice)
Skip = true;
break;
}
if (!Skip)
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
VI[i].MappedMACAddress));
try
if (WorkSpace.CurrentProject.IEDDeviceCollection[VI[i].MappedIED] != null)
IED iedmapped =
WorkSpace.CurrentProject.IEDDeviceCollection[VI[i].MappedIED].SCLConfiguration.IEDs[0];
if (iedmapped != null)
if (ldev != null)
if (gse != null)
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
gse.MACAddress));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
gse.APPIDComm));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
gse.VLANPRIORITY));
catch { }
lstViewGOOSESubscriberConf.Items.Add(item);
/// <summary>
/// </summary>
try
lstRCB.Items.Clear();
FillRCBPub = true;
if (base.iedDev.SCLConfiguration == null)
return;
if (base.iedDev.SCLConfiguration.IEDs.Count == 0)
return;
if (ied != null)
//Buffered Reports
AddReportControlBlocksToLst(rcbList);
rcbList = ied.AccessPoints[0].GetAllReportControlBlocks(false);
AddReportControlBlocksToLst(rcbList);
if (rcbList != null)
if (lstRCB.Items.Count > 0)
btnPrintRCB.Enabled = true;
btnDeleteRCB.Enabled = true;
btnEditRCB.Enabled = true;
btnEditRCBDataset.Enabled = true;
if (ItemToSelect == "")
lstRCB.Items[0].Selected = true;
else
{
if (lstRCB.Items[i].Text == ItemToSelect)
lstRCB.Items[i].Selected = true;
lstRCB.Items[i].EnsureVisible();
break;
else
btnPrintRCB.Enabled = false;
btnDeleteRCB.Enabled = false;
btnEditRCB.Enabled = false;
btnEditRCBDataset.Enabled = false;
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
}
finally
FillRCBPub = false;
/// <summary>
/// </summary>
ListViewItem item;
item.Checked = rcbList[i].IsPublisher;
else
}
for (int j = 0; j < lstRCB.Columns.Count; j++)
if (lstRCB.Columns[j].Tag != null)
if (lstRCB.Columns[j].Tag.ToString() == "ID")
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].BufferTime.ToString()));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].IntegrityPeriod.ToString()));
{
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].NoOfInstances.ToString()));
item.SubItems.Add(new
ListViewItem.ListViewSubItem(item,IEC61850Utililty.getBinaryFormatForRCBOptionsFields(rcbList[i].
OptFields)));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
IEC61850Utililty.getBinaryFormatForRCBTriggerOptions(rcbList[i].TrgOps)));
item.Tag = rcbList[i];
lstRCB.Items.Add(item);
if (!rcbList[i].IsPublisher)
{
item.ForeColor = Color.FromArgb(172, 168, 153);
/// <summary>
/// </summary>
try
lstLogControlBlocks.Items.Clear();
FilllogPub = true;
if (base.iedDev.SCLConfiguration == null)
return;
if (base.iedDev.SCLConfiguration.IEDs.Count == 0)
return;
if (ied != null)
//Buffered Reports
{
ListViewItem item = new ListViewItem(rcbList[i].CBLDeviceName + "." + rcbList[i].prefix
+ rcbList[i].lnClass + rcbList[i].inst + "." + rcbList[i].name, 0);
item.Checked = rcbList[i].IsPublisher;
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].CBLDeviceName + "." + rcbList[i].prefix + rcbList[i].lnClass + rcbList[i].inst + "." +
rcbList[i].DataSetName));
else
if (lstLogControlBlocks.Columns[j].Tag != null)
if (lstLogControlBlocks.Columns[j].Tag.ToString() == "ID")
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].LogName));
{
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].IntegrityPeriod.ToString()));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
IEC61850Utililty.getBinaryFormatForRCBTriggerOptions(rcbList[i].TrgOps)));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].LogEnable.ToString()));
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
rcbList[i].ReasonCode.ToString()));
}
}
item.Tag = rcbList[i];
lstLogControlBlocks.Items.Add(item);
if (!rcbList[i].IsPublisher)
if (rcbList != null)
if (lstLogControlBlocks.Items.Count > 0)
btnPrintLog.Enabled = true;
// btnDeletel.Enabled = true;
btnPrintLog.Enabled = true;
btnEditDsLog.Enabled = true;
if (ItemToSelect == "")
lstLogControlBlocks.Items[0].Selected = true;
else
if (lstLogControlBlocks.Items[i].Text == ItemToSelect)
{
lstLogControlBlocks.Items[i].Selected = true;
lstLogControlBlocks.Items[i].EnsureVisible();
break;
else
btnPrintLog.Enabled = false;
// btnDeleteRCB.Enabled = false;
btnPrintLog.Enabled = false;
btnEditDsLog.Enabled = false;
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
finally
{
FilllogPub = false;
/// <summary>
/// </summary>
try
lstDataSets.Items.Clear();
trvDataSet.Nodes.Clear();
if (base.iedDev.SCLConfiguration == null)
return;
if (base.iedDev.SCLConfiguration.IEDs.Count == 0)
return;
if (ied != null)
FillDataset = true;
if (datasets != null)
item.SubItems.Add(new ListViewItem.ListViewSubItem(item,
datasets[i].Description));
item.Tag = datasets[i];
item.ImageIndex = 1;
if (ldev != null)
if (refgoose == "")
refgoose += val;
else
refrencedCB = ldev.GetRCBReferencesofDataset(datasets[i].DataSetName,
datasets[i].prefix + datasets[i].lnClass + datasets[i].lninst);
if (refrcb == "")
refrcb += val;
else
refrencedCB = ldev.GetSMVReferencesofDataset(datasets[i].DataSetName,
datasets[i].prefix + datasets[i].lnClass + datasets[i].lninst);
if (refsmv == "")
refsmv += val;
else
lstDataSets.Items.Add(item);
}
}
if (TextSelect != "")
if (lstDataSets.Items[i].Text == TextSelect)
lstDataSets.Items[i].Selected = true;
lstDataSets.Items[i].EnsureVisible();
btnDeleteDataset.Enabled = true;
btnCloneDataset.Enabled = true;
btnEditDs.Enabled = true;
return;
if (lstDataSets.Items.Count > 0)
lstDataSets.Items[0].Selected = true;
btnEditDs.Enabled = true;
btnDeleteDataset.Enabled = true;
btnCloneDataset.Enabled = true;
else
{
btnEditDs.Enabled = false;
btnDeleteDataset.Enabled = false;
btnCloneDataset.Enabled = false;
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
finally
FillDataset = false;
/// <summary>
/// </summary>
{
try
trvDataSet.Nodes.Clear();
if (lstDataSets.SelectedItems.Count == 1)
DataSet ds = (DataSet)lstDataSets.SelectedItems[0].Tag;
if (ds != null)
if (ds.Items.Count > 0)
trvDataSet.BeginUpdate();
trvDataSet.Nodes[0].Expand();
trvDataSet.EndUpdate();
trvDataSet.Refresh();
if (sender != null)
SetLdeviceSelected(ds.DataSetLDeviceName);
else
}
}
catch { }
/// <summary>
/// </summary>
if (cmbLogicalDevices.Items[i].ToString() == ldevice)
cmbLogicalDevices.SelectedIndex = i;
break;
/// <summary>
/// </summary>
try
this.Cursor = Cursors.WaitCursor;
DisplayUtil.FillIEDDataItems(trvIEDDataItems, base.iedDev.SCLConfiguration.IEDs[0],
cmbLogicalDevices.Text);
this.Cursor = Cursors.Default;
/// <summary>
/// </summary>
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (Level >= 2)
if (ied != null)
{
trvIEDDataItems.PaintSelectedNodes();
trvIEDDataItems.SelectedNode = (TreeNode)e.Item;
IEDDataItemDrag = true;
this.Cursor = Cursors.Default;
trvIEDDataItems.DoDragDrop(trvIEDDataItems.SelectedNodes, DragDropEffects.Copy);
catch { }
/// <summary>
/// </summary>
/// <returns></returns>
GetScrollPos((int)treeView.Handle, SB_HORZ),
GetScrollPos((int)treeView.Handle, SB_VERT));
/// </summary>
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
/// <summary>
/// </summary>
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (lstDataSets.SelectedItems.Count == 0)
return;
DataSet ds = (DataSet)lstDataSets.SelectedItems[0].Tag;
if (ds == null)
return;
DataSetAdded = false;
IEDDataItemDrag = false;
System.Collections.ArrayList nodeList =
e.Data.GetData(typeof(System.Collections.ArrayList)) as System.Collections.ArrayList;
int Cursize = 0;
if (nodeParent == null)
nodeParent = (TreeNode)node;
nodeParent = nodeParent.Parent;
fcdaList.Add(DataSetEditUtil.CreateFCDAElement((TreeNode)node,
cmbLogicalDevices.Text));
while (nodeParent.Level != 0)
fcdaListParent.Add(DataSetEditUtil.CreateFCDAElement((TreeNode)nodeParent,
cmbLogicalDevices.Text));
nodeParent = nodeParent.Parent;
nodeParent = (TreeNode)node;
foreach (TreeNode nodec in nodeParent.Nodes)
FindChildNodeFCDA(nodec, fcdaListChild);
return;
return;
Cursize = IEC61850Utililty.GetSizeOfDataSet(ds);
return;
{
MessageBox.Show("Data item('" + strPath1 + "') inside the selected \nfcda
element('" + strCurrentFCDA + "') is present in another \ndataset '" + dss.DataSetLDeviceName +
".LLN0." + dss.DataSetName + "' which is refrenced by a GOOSE.", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
return;
return;
int size = 0;
size += IEC61850Utililty.GetSizeofFCDA(fcda);
if (Cursize + size > IEC61850Utililty.MaxAllowedDataSetSizeForGOOSE)
return;
return;
int size = 0;
size += IEC61850Utililty.GetSizeofFCDA(fcda);
return;
}
}
if (ds != null)
if (fcda != null)
DataSetAdded = true;
ds.Items.Add(fcda);
Global.ProjectSaveRequired = true;
else
break;
}
}
if (DataSetAdded)
lstDataSets_SelectedIndexChanged(null, null);
if (trvDataSet.Nodes.Count > 0)
if (trvDataSet.Nodes[0].Nodes.Count > 0)
trvDataSet.Nodes[0].Nodes[trvDataSet.Nodes[0].Nodes.Count - 1].EnsureVisible();
dragInDataset = false;
DataSetAdded = false;
if (nodeDestination.Level == 0)
return;
nodeDestination.ForeColor = Color.Black;
// System.Collections.ArrayList nodeList =
e.Data.GetData(typeof(System.Collections.ArrayList)) as System.Collections.ArrayList;
if (trvDataSet.SelectedNodes.Contains(nodeDestination))
return;
}
if (trvDataSet.SelectedNodes.Count == 0)
return;
trvDataSet.skipSelect = true;
int index = 0;
if (node.Index == 0)
return;
//{
ds.Items.RemoveAt(node.Index);
index = nodeDestination.Index;
ds.Items.Insert(index, dobject);
trvDataSet.Nodes[0].Nodes.RemoveAt(node.Index);
trvDataSet.Nodes[0].Nodes.Insert(index, node);
Global.ProjectSaveRequired = true;
DataSetAdded = true;
//}
}
else if (nodeDestination.Index > nodeFirst.Index)
if (node.Index == node.Parent.Nodes.Count - 1)
return;
//{
ds.Items.RemoveAt(node.Index);
index = nodeDestination.Index;
ds.Items.Insert(index, dobject);
trvDataSet.Nodes[0].Nodes.RemoveAt(node.Index);
trvDataSet.Nodes[0].Nodes.Insert(index, node);
Global.ProjectSaveRequired = true;
DataSetAdded = true;
// }
trvDataSet.SelectedNode = trvDataSet.Nodes[0].Nodes[index];
if (DataSetAdded)
iedSel.AccessPoints[0].UpdateDataset(ds.DataSetName, ds.DataSetLDeviceName,
ds.prefix + ds.lnClass + ds.lninst, ds);
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeGSE(iedSel);
Global.NotifyReloadIEDGOOSENode(iedSel);
this.Cursor = Cursors.Default;
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeSMV(iedSel);
Global.NotifyReloadIEDSmvNode(iedSel);
this.Cursor = Cursors.Default;
// UpdateReportDataset(ds);
// ResetNodeForeColor(trvDataSet.Nodes[0].Nodes);
/// <summary>
/// Gets the list of DataSets referenced by GOOSE except the specified one
/// </summary>
/// <returns></returns>
IED ied;
ied = base.iedDev.SCLConfiguration.IEDs[0];
if (ied != null)
if (ds.DataSetName != DSSkip)
dsResult.Add(ds);
return dsResult;
}
/// <summary>
/// </summary>
try
fcdaListChild.Add(DataSetEditUtil.CreateFCDAElement(node, cmbLogicalDevices.Text));
FindChildNodeFCDA(nodeChild, fcdaListChild);
catch { }
/// <summary>
/// Click event handler of btnEditGOCB. Pops up the form for editing a GOOSE control block.
/// </summary>
{
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
//if (trvProject.SelectedNode.Level == 2)
if (lstViewGOOSEPublisherConf.SelectedItems.Count == 1)
frmedit.cblock = (GSEControl)lstViewGOOSEPublisherConf.SelectedItems[0].Tag;
frmedit.ied = base.iedDev.SCLConfiguration.IEDs[0];
frmedit.edit = true;
FillGoosePublisherDetails(lstViewGOOSEPublisherConf.SelectedItems[0].Text);
// GooseSubTabIEDName = "";
if (beforeedit.DataSetName != frmedit.cblock.DataSetName)
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeGSE(frmedit.ied);
Global.NotifyReloadIEDGOOSENode(frmedit.ied);
Global.ProjectSaveRequired = true;
if (frmedit != null)
frmedit.Dispose();
else
catch { }
finally
this.Cursor = Cursors.Default;
/// <summary>
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
btnEditGOCB_Click(null, null);
/// <summary>
/// Click event handler of btnEditRCB.Pops up the form for editing a Report control block.
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (lstRCB.SelectedItems.Count == 1)
frmrcb.ied = base.iedDev.SCLConfiguration.IEDs[0];
frmrcb.bedit = true;
frmrcb.rcbEdit = (ReportControlBlock)lstRCB.SelectedItems[0].Tag;
if (frmrcb.ied != null)
FillReportControlBlocks(lstRCB.SelectedItems[0].Text );
this.Cursor = Cursors.Default;
Global.ProjectSaveRequired = true;
/// <summary>
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
btnEditRCB_Click(null, null);
}
/// <summary>
/// Click event handler of btnNewRCB.Pops up the form for adding a Report control block.
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
frmrcb.ied = base.iedDev.SCLConfiguration.IEDs[0];
frmrcb.bedit = false;
if (frmrcb.ied != null)
if (frmrcb.ShowDialog() == DialogResult.OK)
FillReportControlBlocks(frmrcb.AddedRCB);
Global.ProjectSaveRequired = true;
if (frmrcb != null)
frmrcb.Dispose();
/// <summary>
/// Click event handler of btnDeleteRCB. Deletes the selected Report control block
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (lstRCB.SelectedItems.Count == 0)
return;
return;
if (ied != null)
{
if (lstRCB.SelectedItems[i].Tag != null)
if (rpt != null)
if (rpt.Orginal)
MessageBox.Show("You can not delete the original Report control block '" +
rpt.name + "'.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
continue;
if (ldev != null)
bRcbDelete = true;
}
if (bRcbDelete)
FillReportControlBlocks("");
Global.ProjectSaveRequired = true;
/// <summary>
/// Click event handler of btnNewGOCB.Pops up form for adding GOOSE control block.
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
frmLDevice.ied = base.iedDev.SCLConfiguration.IEDs[0];
if (frmLDevice.ied != null)
if (frmLDevice.ShowDialog() == DialogResult.OK)
{
frmEditGOOSE frmGSE = new frmEditGOOSE();
frmGSE.edit = false;
frmGSE.ied = frmLDevice.ied;
frmGSE.LDevice = frmLDevice.LDeivce;
if (ldev != null)
if (frmGSE.ShowDialog() == DialogResult.OK)
FillGoosePublisherDetails("");
// GooseSubTabIEDName = "";
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeGSE(frmGSE.ied);
FillDataSets(lstDataSets.SelectedItems.Count > 0 ?
lstDataSets.SelectedItems[0].Text : "");
this.Cursor = Cursors.Default;
Global.ProjectSaveRequired = true;
Global.NotifyReloadIEDGOOSENode(frmGSE.ied);
if (frmGSE != null)
frmGSE.Dispose();
}
if (frmLDevice != null)
frmLDevice.Dispose();
/// <summary>
/// </summary>
Global.OnUpdateGOOSELibrary -= (Global_OnIEDAdded);
Global.OnRenameIED -= (Global_OnRenameIED);
if (iedDev != null)
iedDev.OnIEDRenamed -= (iedDev_OnIEDRenamed);
/// <summary>
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
frmadd.ied = iedDev.SCLConfiguration.IEDs[0];
if (frmadd.ied != null)
//{
// return;
//}
if (frmadd.ShowDialog() == DialogResult.OK)
FillDataSets(frmadd.DataSetRef);
Global.ProjectSaveRequired = true;
if (frmadd != null)
frmadd.Dispose();
/// <summary>
/// </summary>
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (lstDataSets.SelectedItems.Count == 0)
return;
if (ied != null)
return;
{
DataSet ds = ied.AccessPoints[0].GetDataSet(lstDataSets.SelectedItems[i].Text.Split('.')
[0], lstDataSets.SelectedItems[i].Text.Split('.')[2], lstDataSets.SelectedItems[i].Text.Split('.')[1]);
if (ds != null)
if (ds.Orginal)
continue;
if (ldev != null)
if (strReference == "")
else
if (strReference == "")
entry = false;
else
if (entry)
entry = false;
else
entry = true;
if (strReference == "")
else
if (entry)
entry = false;
else
if (strReference != "")
if (!DoNotShowMsg)
if (frmMsg.ShowDialog() == DialogResult.OK)
DoNotShowMsg = frmMsg.DoNotShow;
}
}
continue;
if (ldev.RemoveDataSet(ds.DataSetName, strName[1]))
DsDeleted = true;
Global.ProjectSaveRequired = true;
if (DsDeleted)
FillDataSets("");
catch { }
/// <summary>
/// </summary>
/// <param name="sender"></param>
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (lstViewGOOSEPublisherConf.SelectedItems.Count > 0)
if (ied != null)
if (MessageBox.Show("Do you want to delete the selected GOOSE Control Block/s from
'" + ied.IEDInstanceName + "'?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== DialogResult.No)
return;
if (lstViewGOOSEPublisherConf.SelectedItems[i].Tag != null)
if (gse.Orginal)
MessageBox.Show("You can not delete the original GOOSE control block '" +
gse.name + "'.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
continue;
if (!DoNotShowMsg)
frmMsg.displayCheckBox = lstViewGOOSEPublisherConf.SelectedItems.Count
> 1 ? true : false;
if (frmMsg.ShowDialog() == DialogResult.OK)
DoNotShowMsg = frmMsg.DoNotShow;
continue;
if (ldev != null)
{
if (ldev.RemoveGSEControlBlock(gse.name))
deleteGOOSE = true;
Global.ProjectSaveRequired = true;
if (deleteGOOSE)
//this.Cursor = Cursors.WaitCursor;
//IED_Config_Tool.V4.DisplayUtil.UpdateIEDNodeGSE(IED_Config_Tool.V4.ProjectUtil.project.IEDs[IE
D_Config_Tool.V4.ProjectUtil.SelectedIEDName]);
FillDataSets(lstDataSets.SelectedItems.Count > 0 ?
lstDataSets.SelectedItems[0].Text : "");
this.Cursor = Cursors.Default;
//try
//{
// if (lstViewGOOSEPublisherConf.SelectedItems[0].Index <
lstViewGOOSEPublisherConf.Items.Count - 1)
// {
// strSelect =
lstViewGOOSEPublisherConf.Items[lstViewGOOSEPublisherConf.SelectedItems[0].Index + 1].Text;
// }
//}
//catch { }
FillGoosePublisherDetails(strSelect);
DisplayUtil.UpdateIEDNodeGSE(ied);
Global.NotifyReloadIEDGOOSENode(ied);
else
catch { }
/// <summary>
/// Click event handler of btnEditGOCBDataset to navigate to dataset page with dataset of
GOOSE control block selected.
/// </summary>
if (lstViewGOOSEPublisherConf.SelectedItems.Count == 1)
if (lstViewGOOSEPublisherConf.SelectedItems[0].Tag is GSEControl )
if (tabMain.TabPages[i].Name == "pageDatasets")
tabMain.SelectedIndex = i;
IEC61850Utililty.SetSelectItem(fulldsName, lstDataSets);
/// <summary>
/// Click event handler of btnEditRCBDataset to navigate to dataset page with dataset of Report
control block selected.
/// </summary>
{
return;
if (rcb.DataSetName != null)
if (tabMain.TabPages[i].Name == "pageDatasets")
tabMain.SelectedIndex = i;
IEC61850Utililty.SetSelectItem(fulldsName, lstDataSets);
/// <summary>
/// </summary>
try
btnEditRCBDataset.Enabled = false;
btnDeleteRCB.Enabled = false;
btnEditRCB.Enabled = false;
return;
if (lstRCB.SelectedItems.Count > 0)
btnDeleteRCB.Enabled = true;
if (lstRCB.SelectedItems.Count == 1)
btnEditRCBDataset.Enabled = true;
btnEditRCB.Enabled = true;
else
btnEditRCB.Enabled = false;
btnEditRCBDataset.Enabled = false;
else
btnDeleteRCB.Enabled = false;
btnEditRCB.Enabled = false;
btnEditRCBDataset.Enabled = false;
}
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
catch { }
/// <summary>
/// </summary>
try
if (item == null)
btnEditGOCBDataset.Enabled = false;
btnDeleteGOCB.Enabled = false;
btnEditGOCB.Enabled = false;
return;
if (lstViewGOOSEPublisherConf.SelectedItems.Count > 0)
{
btnDeleteGOCB.Enabled = true;
if (lstViewGOOSEPublisherConf.SelectedItems.Count == 1)
btnEditGOCBDataset.Enabled = true;
btnEditGOCB.Enabled = true;
else
btnEditGOCB.Enabled = false;
btnEditGOCBDataset.Enabled = false;
else
btnDeleteGOCB.Enabled = false;
btnEditGOCB.Enabled = false;
btnEditGOCBDataset.Enabled = false;
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
catch { }
}
/// <summary>
/// </summary>
if (item == null)
btnEditDs.Enabled = false;
btnDeleteDataset.Enabled = false;
btnCloneDataset.Enabled = false;
trvDataSet.Nodes.Clear();
return;
if (lstDataSets.SelectedItems.Count == 1)
btnEditDs.Enabled = true;
btnCloneDataset.Enabled = true;
btnDeleteDataset.Enabled = true;
else
btnEditDs.Enabled = false;
btnCloneDataset.Enabled = false;
if (lstDataSets.SelectedItems.Count == 0)
btnDeleteDataset.Enabled = false;
else
btnDeleteDataset.Enabled = true;
if (!Global.CurrentUser.IEC61850Configuration)
Disablebuttons();
/// <summary>
/// </summary>
if (lstDataSets.SelectedItems.Count == 0)
return;
if (lstDataSets.SelectedItems[0].Text != "")
frmadd.ied = iedDev.SCLConfiguration.IEDs[0];
if (frmadd.ied != null)
{
//if (frmadd.ied.AccessPoints[0].GetAllDataSets().Count >= 48)
//{
// return;
//}
frmadd.Clone = true;
frmadd.DataSetToClone =
frmadd.ied.AccessPoints[0].GetDataSet(lstDataSets.SelectedItems[0].Text.Split('.')[0],
lstDataSets.SelectedItems[0].Text.Split('.')[2], lstDataSets.SelectedItems[0].Text.Split('.')[1]);//
IED_Config_Tool.V4.ProjectUtil.GetDataSet(IED_Config_Tool.V4.ProjectUtil.SelectedIEDName,
lstDataSets.SelectedItems[0].Text);
if (frmadd.ShowDialog() == DialogResult.OK)
FillDataSets(frmadd.DataSetRef);
Global.ProjectSaveRequired = true;
if (frmadd != null)
frmadd.Dispose();
/// <summary>
/// </summary>
VI vi = new VI();
System.Windows.Forms.ListViewItem.ListViewSubItem subitemDestination =
lstView.HitTest(lstView.PointToClient(new Point(e.X, e.Y))).SubItem;
if (e.Data.GetDataPresent(typeof(TreeNode)))
if (lstView.Items.Count > 0)
lstView.IsDragValid = true;
e.Effect = DragDropEffects.Copy;
else
lstView.IsDragValid = false;
e.Effect = DragDropEffects.None;
/// <summary>
/// </summary>
{
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
listView.Invalidate();
if (e.Data.GetDataPresent(typeof(TreeNode)))
while (nodeParent.Level != 0)
nodeParent = nodeParent.Parent;
/* if (ied != null)
if (listView ==lstDigitalSubscribers)
if (ied.AccessPoints[0].BooleanIEC61850Inputs.Count == 0)
if (ied.AccessPoints[0].AnalogFloatIEC61850Inputs.Count == 0)
return;
}*/
if (nodeParent.Text.Split('.')[0] == iedDev.SCLConfiguration.IEDs[0].IEDInstanceName )
return;
if (itemDestination != null)
DoGooseMapping(nodeSource, itemDestination);
FillGooseSubscriberDetails();
}
catch(Exception ex)
/// <summary>
/// </summary>
while (nodeParent.Level != 1)
nodeParent = nodeParent.Parent;
while (nodeFCDA.Level != 3)
nodeFCDA = nodeFCDA.Parent;
GSEControl cb = (GSEControl)nodeParent.Tag;
DA da = null;
if (nodeSource.Tag is DA)
da = (DA)nodeSource.Tag;
objectType = da.bType;
bda = (BDA)nodeSource.Tag;
objectType = bda.bType;
fcda = (FCDA)nodeSource.Tag;
if (fcda.DORef.Count == 1)
if (fcda.DORef[0].doType.DAItems.Count == 1)
objectType = GetDataTypeFromDOType(fcda.DORef[0].doType);
if (ied == null)
return;
}
VI vi = (VI)itemDestination.Tag;
if (!vi.IsMapped)
if (vi.bType == objectType)
vi.MappedDataSet = cb.DataSetName;
vi.MappedGOOSE = cb.name;
vi.MappedLDevice = cb.CBLDeviceName;
vi.MappedIED = nodeParent.Parent.Text;
vi.MappedPath = IEC61850Utililty.ConvertNodePathToDaPath(nodeSource.FullPath);
//nodeSource.FullPath; //vi.MappedIED + "." + vi.MappedLDevice + "." + vi.MappedGOOSE + "\\" +
vi.MappedDataSet + "\\" + da.Path.Substring(da.Path.IndexOf('/')+1);
vi.IsMapped = true;
vi.MappedValue = objectValue;
if (nodeFCDA.Tag != null)
if (nodeFCDA.Tag is FCDA)
vi.MappedFCDA = (FCDA)nodeFCDA.Tag;
//vi.CB = (IED_Config_Tool.V4.GSEControl)cb.Clone();
itemDestination.SubItems.Add(new ListViewItem.ListViewSubItem(itemDestination,
vi.MappedPath));
Global.NotifyLogWindow(vi.MappedPath + " mapped to " + itemDestination.Text + " (" +
vi.Path + ")" + " of IED " + ied.IEDInstanceName );
itemDestination.SubItems[1].Text = vi.MappedPath;
nodeSource.ImageIndex = 39;
nodeSource.SelectedImageIndex = 39;
Global.ProjectSaveRequired = true ;
else
if (nodeSource.Tag is DA)
MessageBox.Show(da.name + " 's Data type ('" + da.bType + "') does not match with " +
vi.Name + " 's " + "Data type ('" + vi.bType + "').", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
Global.NotifyLogWindow(da.name + " 's Data type ('" + da.bType + "') does not match
with " + vi.Name + " 's " + "Data type ('" + vi.bType + "').");
{
MessageBox.Show(bda.name + " 's Data type ('" + bda.bType + "') does not match with
" + vi.Name + " 's " + "Data type ('" + vi.bType + "').", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
Global.NotifyLogWindow(bda.name + " 's Data type ('" + bda.bType + "') does not
match with " + vi.Name + " 's " + "Data type ('" + vi.bType + "').");
else
/// <summary>
/// </summary>
/// <returns></returns>
if (doType.DAItems.Count > 0)
if (doType.DAItems[0] is DA)
if (((DA)doType.DAItems[0]).bType == "Struct")
strType = GetDataTypeFromDAType(((DA)doType.DAItems[0]).daType);
else
strType = ((DA)doType.DAItems[0]).bType;
strType = GetDataTypeFromDOType(((SDO)doType.DAItems[0]).doType);
return strType;
/// <summary>
/// Gets the datatype from DAType
/// </summary>
/// <returns></returns>
if (daType.BDAItems.Count > 0)
if (daType.BDAItems[0].bType == "Struct")
strType = GetDataTypeFromDAType(daType.BDAItems[0].daType);
else
strType = daType.BDAItems[0].bType;
return strType;
ListViewItem itemselected;
int iSel = 0;
/// <summary>
/// <returns></returns>
VI vi = (VI)lstView.SelectedItems[i].Tag;
if (vi.IsMapped)
return true;
return false;
/// <summary>
/// </summary>
try
if (e.Button == MouseButtons.Left)
System.Windows.Forms.ListViewItem item =
((CustomListView)sender).HitTest(e.Location).Item;
if (item != null)
{
if (item.Tag != null)
if (trc.Contains(e.Location))
VI vi = (VI)item.Tag;
catch { }
/// <summary>
/// </summary>
if (e.Control)
if (e.KeyCode == Keys.A)
DisplayUtil.SelectAllItems(((ListView)sender));
}
}
/// <summary>
/// </summary>
/// <returns></returns>
try
if (scl == null)
return false;
if (ied == null)
return false ;
}
//ied.IPAddress = WorkSpace.CurrentProject.IEDDeviceCollection[IEDName].IPAddress;
if (ied.IEDFileContents.Trim() != "")
try
xdoc.LoadXml(ProjectUtil.DecompressText(ied.IEDFileContents));
catch
MessageBox.Show("Loading IED file contents for " + IEDName + " failed.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return false ;
else
return false;
if (!ValidateMappingReference(ied,ied.AccessPoints[0].BooleanIEC61850Inputs))
return false ;
}
if (!ValidateMappingReference(ied, ied.AccessPoints[0].AnalogFloatIEC61850Inputs))
return false;
if (!ValidateSMVMappingReference(ied))
return false;
ExportCIDUtil.UpdateDataSetInfo(xdoc, ied);
ExportCIDUtil.UpdateLogControlBlockInfo(xdoc, ied);
ExportCIDUtil.UpdateReportControlBlockInfo(xdoc, ied);
ExportCIDUtil.UpdateGooseControlBlockInfo(xdoc, ied);
ExportCIDUtil.UpdateSMVControlBlockInfo(xdoc, ied);
ExportCIDUtil.ClearOtherIEDPrivateInfoAndUpdateIP(xdoc, scl);
xdoc.Save(File);
return true ;
}
catch (Exception ex)
Global.NotifyLogWindow(ex.Message);
return false ;
/// <summary>
/// </summary>
/// <returns></returns>
if (ied == null)
return false;
if (vi.IsMapped)
if (iedev != null)
GSEControl gsemapped =
iedev.SCLConfiguration.IEDs[0].AccessPoints[0].GetGSEControl(vi.MappedGOOSE,
vi.MappedLDevice);
if (gsemapped == null)
return false;
else
if (node != null)
if (nodeda == null)
return false;
else
return false;
return true;
/// <summary>
/// </summary>
if (ied == null)
return false;
if (iedev != null)
if (stream.MappedCB != null)
SMVControl smvmapped =
iedev.SCLConfiguration.IEDs[0].AccessPoints[0].GetSMVControl(stream.MappedCB.name,
stream.MappedCB.CBLDeviceName);
if (smvmapped == null)
return false;
if (smvmapped.DataSetName != stream.MappedCB.DataSetName)
return false;
else
{
return false;
return true;
/// <summary>
/// Click event handler of sendCIDToolStripMenuItem . Sends the CID file to device
/// </summary>
if (iedDev == null)
return;
if (iedDev.SCLConfiguration == null)
return;
if (iedDev.SCLConfiguration.IEDs[0].IniFileContents == null ||
iedDev.SCLConfiguration.IEDs[0].IniFileContents.Trim() == "")
{
return;
if (!ProjectUtil.ValidateIEDFtpCommunicationProperties(iedDev))
return;
if (!ProjectUtil.IsTargetDeviceExpected(iedDev.IEDDeviceOrginalName, iedDev.IPAddress))
return;
ProjectUtil.CreateNecessaryFolders();
if (!serializeIED.Serialize(Global.UserDataFolder + "\\Temp\\sclconfig.scl",
iedDev.SCLConfiguration))
return;
iedDev.SCLConfiguration.IEDs[0].StartUpSettings.IEDName =
iedDev.IEDDeviceInstanceName;
iedDev.SCLConfiguration.IEDs[0].StartUpSettings.SCLFileName =
iedDev.IEDDeviceOrginalName + ".scd";
return;
if (!ProjectUtil.ExportIniMapFile(Global.UserDataFolder + "\\Temp\\" +
iedDev.IEDDeviceOrginalName + ".ini", iedDev.SCLConfiguration.IEDs[0]))
MessageBox.Show("Exporting ini file failed.See log window for more details", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
if (System.IO.File.Exists(Global.UserDataFolder + "\\Temp\\StartUp.ini"))
if (System.IO.File.Exists(Global.UserDataFolder + "\\Temp\\" +
iedDev.IEDDeviceOrginalName + ".ini"))
if (iedDev.IEDDeviceOrginalName == "MU")
if (!ProjectUtil.ExportMUStartupFile(Global.UserDataFolder + "\\Temp\\MUStartUp.ini",
iedDev.SCLConfiguration.IEDs[0]))
{
MessageBox.Show("Exporting MUStartUp file failed.See log window for more details",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
if (System.IO.File.Exists(Global.UserDataFolder + "\\Temp\\MUStartUp.ini"))
else
if (iedDev.SCLConfiguration.IEDs[0].AccessPoints[0].smvStream.Count == 1)
if (iedDev.SCLConfiguration.IEDs[0].AccessPoints[0].smvStream[0].IsMapped)
smvSubscribed = true;
remotesmvied =
WorkSpace.CurrentProject.IEDDeviceCollection[iedDev.SCLConfiguration.IEDs[0].AccessPoints[0].sm
vStream[0].MappedIED];
if (remotesmvied != null)
//
remotesmvied.SCLConfiguration.IEDs[0].AccessPoints[0].GetSMVControl(iedDev.SCLConfiguration.IE
Ds[0].AccessPoints[0].smvStream[0].
if (ExportCIDFile(remotesmvied.IEDDeviceInstanceName, Global.UserDataFolder +
"\\Temp\\" + remotesmvied.IEDDeviceOrginalName + ".scd", true))
else
return;
iedDev.SCLConfiguration.IEDs[0].SMVStartUpSettings.SCLFileName = remotesmvied !=
null ? Global.FtpDirectory + remotesmvied.IEDDeviceOrginalName + ".scd" : "UNKNOWN";
iedDev.SCLConfiguration.IEDs[0].SMVStartUpSettings.IEDName = remotesmvied !=
null ? remotesmvied.IEDDeviceInstanceName : "UNKNOWN";
iedDev.SCLConfiguration.IEDs[0].SMVStartUpSettings.AccessPointName =
remotesmvied != null ? remotesmvied.SCLConfiguration.IEDs[0].AccessPoints[0].name :
"UNKNOWN";
iedDev.SCLConfiguration.IEDs[0].SMVStartUpSettings.RemoteSMVID =
iedDev.SCLConfiguration.IEDs[0].AccessPoints[0].smvStream[0].IsMapped ?
iedDev.SCLConfiguration.IEDs[0].AccessPoints[0].smvStream[0].MappedCB.ID : "NO_SV_MAPPING";
// grdSmvStartup.SelectedObject =
iedDev.SCLConfiguration.IEDs[0].SMVStartUpSettings;
if (!ProjectUtil.ExportSMVStartupFile(Global.UserDataFolder + "\\Temp\\
SMVStartUp.ini", iedDev.SCLConfiguration.IEDs[0]))
if (System.IO.File.Exists(Global.UserDataFolder + "\\Temp\\SMVStartUp.ini"))
ProjectUtil.WriteAppRestartFile(Global.UserDataFolder + "\\Temp\\svmap.cfg",
smvSubscribed ? "1" : "0");
if (System.IO.File.Exists(Global.UserDataFolder + "\\Temp\\svmap.cfg"))
//Notify Firmware
if (!iedDev.IsOnline)
MainForm.ConnectToFirmware(iedDev);
if (iedDev.IsOnline)
iedDev.WriteToSharedMemIndex(Global.IEC_61850_CONFIG_TO_FIRMWARE, "INT",
"1");
System.Threading.Thread.Sleep(200);
if (!wasIEDOnline)
iedDev.DisConnect();
}
else
// ProjectUtil.WriteAppRestartFile(Global.UserDataFolder + "\\Temp\\
ApplicationChange.cfg", "SOFTRESTART,61850APP\nSNTP," + iedDev.SNTPServerAddress);
ProjectUtil.WriteAppRestartFile(Global.UserDataFolder + "\\Temp\\
ApplicationChange.cfg", "SOFTRESTART,61850APP\nSNTP1," + iedDev.SNTPServerAddress + "\
nSNTP2," + iedDev.SNTP2ServerAddress);
else
/// <summary>
/// </summary>
//ResetNodeForeColore(trvDataSet.Nodes[0].Nodes );
if (node.PrevVisibleNode != null)
node.PrevVisibleNode.ForeColor = Color.Black;
if (node.NextVisibleNode != null)
node.NextVisibleNode.ForeColor = Color.Black;
if (node != null)
if (node.Level != 0)
{
node.ForeColor = Color.Red;
nodeLastRed = node;
TreeNode nodeLastRed;
/// <summary>
/// </summary>
if (nodeLastRed != null)
// CtrlPressed = false;
nodeLastRed.ForeColor = Color.Black;
if (trvDataSet.Nodes.Count > 0)
ResetNodeForeColor(trvDataSet.Nodes[0].Nodes);
/// <summary>
/// </summary>
node.ForeColor = Color.Black;
/// <summary>
/// </summary>
if (e.Button == MouseButtons.Right)
if (ied != null)
trvDataSet.SelectedNode = e.Node;
if (e.Node.Level == 1)
trvDataSet.ContextMenuStrip = DatasetContextMenu;
if (trvDataSet.SelectedNodes.Count > 1)
tspDatasetMoveDown.Enabled = false;
tspDatasetMoveUp.Enabled = false;
}
else
if (Global.CurrentUser.IEC61850Configuration)
tspDatasetMoveDown.Enabled = true;
tspDatasetMoveUp.Enabled = true;
else
trvDataSet.ContextMenuStrip = null;
/// <summary>
/// </summary>
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
// Util.editTracking
if (Level == 1)
if (ied != null)
trvDataSet.PaintSelectedNodes();
trvDataSet.SelectedNode = (TreeNode)e.Item;
dragInDataset = true;
this.Cursor = Cursors.Default;
trvDataSet.DoDragDrop(trvDataSet.SelectedNodes, DragDropEffects.Copy);
// project.LocalGooseScrollBarPosition = point;
catch { }
/// <summary>
/// </summary>
CtrlPressed = e.Control;
}
/// <summary>
/// </summary>
CtrlPressed = e.Control;
if (e.KeyCode == Keys.Delete)
if (trvDataSet.SelectedNode != null)
if (trvDataSet.SelectedNode.Level == 1)
tspDatasetItemDelete_Click(null, null);
/// <summary>
/// </summary>
{
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (trvDataSet.SelectedNode.Level == 1)
if (ied == null)
return;
DataSet ds = ied.AccessPoints[0].GetDataSet(lstDataSets.SelectedItems[0].Text.Split('.')
[0], lstDataSets.SelectedItems[0].Text.Split('.')[2], lstDataSets.SelectedItems[0].Text.Split('.')[1]);
if (ds != null)
trvDataSet.skipSelect = true;
if (strSplit.Length == 2)
IED iedIn;
if (iedDev.IEDDeviceInstanceName !=
WorkSpace.CurrentProject.IEDDeviceCollection[x].IEDDeviceInstanceName)
if
(WorkSpace.CurrentProject.IEDDeviceCollection[x].SCLConfiguration.IEDs.Count > 0)
iedIn =
WorkSpace.CurrentProject.IEDDeviceCollection[x].SCLConfiguration.IEDs[0];
if (iedIn.AccessPoints[0].BooleanIEC61850Inputs[ipcnt].IsMapped)
if (CheckTreeNodeForMapping(iedDev.IEDDeviceInstanceName,
goosenode, iedIn.AccessPoints[0].BooleanIEC61850Inputs[ipcnt].MappedPath,
(TreeNode)trvDataSet.SelectedNodes[i]))
{
MappedRef =
iedIn.AccessPoints[0].BooleanIEC61850Inputs[ipcnt].Name + " of " + iedIn.IEDInstanceName;
IsMapped = true;
if (IsMapped)
continue;
if (ds.Items.Count == 1)
MessageBox.Show("You can not delete all the fcda elements of this dataset \n
since it is referenced by GOOSE '" + gooseRef + "'", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
//UpdateCapabilityMeters(ds);
return;
{
if (ds.Items.Count == 1)
MessageBox.Show("You can not delete all the fcda elements of this dataset \n
since it is referenced by Report Control Block '" + gooseRef + "'", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
// UpdateCapabilityMeters(ds);
return;
if (ds.Items.Contains((FCDA)((TreeNode)trvDataSet.SelectedNodes[i]).Tag))
ds.Items.Remove((FCDA)((TreeNode)trvDataSet.SelectedNodes[i]).Tag);
trvDataSet.Nodes[0].Nodes.Remove((TreeNode)trvDataSet.SelectedNodes[i]);
delete = true;
Global.ProjectSaveRequired = true;
// IEDConfigTabIEDName = "";
// GooseSubTabIEDName = "";
if (delete)
//IED_Config_Tool.V4.ProjectUtil.project.IEDs[IED_Config_Tool.V4.ProjectUtil.SelectedIEDName].Acc
essPoints[0].UpdateDataset(ds.DataSetName, ds.DataSetLDeviceName, ds.prefix + ds.lnClass +
ds.lninst, ds);
{
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeGSE(ied );
Global.NotifyReloadIEDGOOSENode(ied);
this.Cursor = Cursors.Default;
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeSMV(ied );
Global.NotifyReloadIEDSmvNode(ied);
this.Cursor = Cursors.Default;
//UpdateReportDataset(ds);
// UpdateCapabilityMeters(ds);
trvDataSet.SelectedNodes.Clear();
trvDataSet.SelectedNodes.Add(trvDataSet.SelectedNode);
trvDataSet.SetLastNode(trvDataSet.SelectedNode);
trvDataSet.PaintSelectedNodes();
/// <summary>
/// </summary>
/// <returns></returns>
if (node.Nodes.Count == 0)
return true;
else
return true;
return false;
}
/// <summary>
/// </summary>
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (ied == null)
return;
if (trvDataSet.SelectedNode.Level == 1)
if (dataset != null)
trvDataSet.skipSelect = true;
int index = 0;
for (int i = 0; i < trvDataSet.SelectedNodes.Count; i++)
if (node.Index == 0)
return;
if (node.Index > 0)
dataset.Items.RemoveAt(node.Index);
index = node.Index - 1;
dataset.Items.Insert(index, dobject);
trvDataSet.Nodes[0].Nodes.RemoveAt(node.Index);
trvDataSet.Nodes[0].Nodes.Insert(index, node);
Global.ProjectSaveRequired = true;
ied.AccessPoints[0].UpdateDataset(dataset.DataSetName,
dataset.DataSetLDeviceName, dataset.prefix + dataset.lnClass + dataset.lninst, dataset);
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeGSE(ied);
Global.NotifyReloadIEDGOOSENode(ied);
this.Cursor = Cursors.Default;
{
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeSMV(ied);
Global.NotifyReloadIEDSmvNode(ied);
this.Cursor = Cursors.Default;
//UpdateReportDataset(dataset);
trvDataSet.SelectedNode = trvDataSet.Nodes[0].Nodes[index];
//trvDataSet.skipSelect = false;
finally
trvDataSet.skipSelect = false;
/// <summary>
/// </summary>
try
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (ied == null)
return;
if (trvDataSet.SelectedNode.Level == 1)
if (dataset != null)
trvDataSet.skipSelect = true;
int index = 0;
if (node.Index == node.Parent.Nodes.Count - 1)
return;
dataset.Items.RemoveAt(node.Index);
index = node.Index + 1;
dataset.Items.Insert(index, dobject);
trvDataSet.Nodes[0].Nodes.RemoveAt(node.Index);
trvDataSet.Nodes[0].Nodes.Insert(index, node);
Global.ProjectSaveRequired = true;
ied.AccessPoints[0].UpdateDataset(dataset.DataSetName,
dataset.DataSetLDeviceName, dataset.prefix + dataset.lnClass + dataset.lninst, dataset);
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeGSE(ied);
Global.NotifyReloadIEDGOOSENode(ied);
this.Cursor = Cursors.Default;
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeSMV(ied);
Global.NotifyReloadIEDSmvNode(ied);
this.Cursor = Cursors.Default;
//UpdateReportDataset(dataset);
trvDataSet.SelectedNode = trvDataSet.Nodes[0].Nodes[index];
/// <summary>
/// </summary>
IEDConfigurationTool.PrintUtil.PrintDataFromListView(lstViewGOOSEPublisherConf, "GOOSE
control blocks details for " + iedDev.IEDDeviceInstanceName);
/// <summary>
/// </summary>
{
IEDConfigurationTool.PrintUtil.PrintDataFromListView(lstRCB, "Report control blocks details
for " + iedDev.IEDDeviceInstanceName);
/// <summary>
/// Click event handler of btnEditLog.Pops up window for editing Log Control block.
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
frmlog.ied = base.iedDev.SCLConfiguration.IEDs[0];
frmlog.bedit = true;
frmlog.logEdit = (LogControl)lstLogControlBlocks.SelectedItems[0].Tag;
if (frmlog.ied != null)
{
if (frmlog.ShowDialog() == DialogResult.OK && !
IEC61850Utililty.IsLogControlBlockSame(beforeedit, frmlog.logEdit))
FillLogControlBlocks(lstLogControlBlocks.SelectedItems[0].Text);
this.Cursor = Cursors.Default;
Global.ProjectSaveRequired = true;
/// <summary>
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
btnEditLog_Click(null, null);
/// <summary>
/// Checks whether the SMVControl is mapped in the specified IED
/// </summary>
/// <returns></returns>
if (sub == null)
return false;
if (sub.AccessPoints[0].smvStream[i].IsMapped)
sub.AccessPoints[0].smvStream[i].MappedIED == IED)
return true;
return false;
/// <summary>
/// </summary>
/// <returns></returns>
bool UpdateCount(string datatype, ref int analogcount, ref int qualitycount, ref bool
analogfound, ref bool qualityfound)
analogcount++;
if (!analogfound)
analogfound = true;
qualityfound = false;
return true;
else
return false;
qualitycount++;
if (!qualityfound)
analogfound = false;
qualityfound = true;
return true;
else
return false;
return false;
/// <summary>
/// </summary>
if (NodeList == null)
if (node.Nodes.Count > 0)
else
{
NodeList.Add(node);
/// <summary>
/// </summary>
if (node.Nodes.Count > 0)
else
if (node.Tag != null)
if (node.Tag is DA)
DA da = (DA)node.Tag;
if (da.bType == "INT32")
{
count++;
if (bda.bType == "INT32")
count++;
/// <summary>
/// </summary>
nodeStream.Nodes.Clear();
/// <summary>
/// </summary>
/// <returns></returns>
if (ied != null)
if (ied.AccessPoints[0].smvStream[i].IsMapped)
if (ied.AccessPoints[0].smvStream[i].MappedCB.ID == SMVID)
Stream = ied.AccessPoints[0].smvStream[i].Name;
return true;
return false;
}
/// <summary>
/// </summary>
if (node.Nodes.Count > 0)
UpdateSMVStream(node.Nodes[i], stream);
else
if (node.Tag != null)
VI vi = null;
if (node.Tag is DA)
DA da = (DA)node.Tag;
addRow = true;
vi = new VI();
vi.Name = "SV " + Convert.ToString(stream.Values.Count + 1);
vi.MappedPath = IEC61850Utililty.ConvertNodePathToDaPath(node.FullPath);
//vi.Selected = true;
vi.Value = da;
addRow = true;
vi = new VI();
vi.MappedPath = IEC61850Utililty.ConvertNodePathToDaPath(node.FullPath);
// vi.Selected = true;
vi.Value = bda;
if(fcda.DORef.Count>0)
{
addRow = true;
vi = new VI();
vi.MappedPath = IEC61850Utililty.ConvertNodePathToDaPath(node.FullPath);
// vi.Selected = true;
vi.Value = fcda;
if (addRow)
stream.Values.Add(vi);
int MaxSelectableSMVStreamItems = 8;
/// <summary>
/// </summary>
{
if (!check)
check = true;
if (e.Node.Level == 0)
if (e.Node.Nodes.Count == 0)
e.Node.Checked = false;
check = false;
return;
int cnt = 0;
cnt = MaxSelectableSMVStreamItems;
else
cnt = e.Node.Nodes.Count;
e.Node.Nodes[i].Checked = e.Node.Checked;
if (e.Node.Nodes[i].Tag is VI)
VI vi = (VI)e.Node.Nodes[i].Tag;
vi.Selected = e.Node.Checked;
Global.ProjectSaveRequired = true;
e.Node.Nodes[i].Checked = false;
if (e.Node.Nodes[i].Tag is VI)
VI vi = (VI)e.Node.Nodes[i].Tag;
vi.Selected = false;
else
if (e.Node.Tag is VI)
e.Node.Checked = false;
check = false;
return;
VI vi = (VI)e.Node.Tag;
vi.Selected = e.Node.Checked;
e.Node.Parent.Checked = IsAtleastOneNodeChecked(e.Node.Parent);
Global.ProjectSaveRequired = true;
}
}
check = false;
/// <summary>
/// </summary>
/// <returns></returns>
int iCnt = 0;
if (node.Checked)
iCnt++;
return iCnt;
/// <summary>
/// </summary>
/// <returns></returns>
if (node.Checked)
return true;
return false;
/// <summary>
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (lstViewGOOSESubscriberConf.SelectedItems.Count > 0)
frm.strMACAddress = lstViewGOOSESubscriberConf.SelectedItems[0].SubItems[4].Text;
if (frm.ShowDialog() == DialogResult.OK)
if (ied.AccessPoints[0].BooleanIEC61850Inputs != null)
if (ied.AccessPoints[0].BooleanIEC61850Inputs[i].IsMapped)
if (lstViewGOOSESubscriberConf.SelectedItems[0].SubItems[0].Text ==
ied.AccessPoints[0].BooleanIEC61850Inputs[i].MappedIED &&
lstViewGOOSESubscriberConf.SelectedItems[0].SubItems[2].Text ==
ied.AccessPoints[0].BooleanIEC61850Inputs[i].MappedGOOSE)
ied.AccessPoints[0].BooleanIEC61850Inputs[i].MappedMACAddress =
frm.strMACAddress;
if (ied.AccessPoints[0].AnalogFloatIEC61850Inputs != null)
if (ied.AccessPoints[0].AnalogFloatIEC61850Inputs[i].IsMapped)
if (lstViewGOOSESubscriberConf.SelectedItems[0].SubItems[0].Text ==
ied.AccessPoints[0].AnalogFloatIEC61850Inputs[i].MappedIED &&
lstViewGOOSESubscriberConf.SelectedItems[0].SubItems[2].Text ==
ied.AccessPoints[0].AnalogFloatIEC61850Inputs[i].MappedGOOSE)
ied.AccessPoints[0].AnalogFloatIEC61850Inputs[i].MappedMACAddress =
frm.strMACAddress;
FillGooseSubscriberDetails();
/// <summary>
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
{
return;
btnEditsubscriber_Click(null, null);
/// <summary>
/// Click event handler of btnEditDsLog. Navigates to dataset page with dataset of the log
control block selected.
/// </summary>
return;
if (log.DataSetName != null)
if (tabMain.TabPages[i].Name == "pageDatasets")
{
tabMain.SelectedIndex = i;
IEC61850Utililty.SetSelectItem(fulldsName, lstDataSets);
/// <summary>
/// </summary>
/// <summary>
/// Click event handler of btnAddSMV.Pop ups forms for selecting logical device and then
sampled value details
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
{
MessageBox.Show("Access denied.", "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
frmLDevice.ied = base.iedDev.SCLConfiguration.IEDs[0];
if (frmLDevice.ied != null)
if (frmLDevice.ShowDialog() == DialogResult.OK)
frmsmv.edit = false;
frmsmv.ied = frmLDevice.ied;
frmsmv.LDevice = frmLDevice.LDeivce;
if (frmsmv.ShowDialog() == DialogResult.OK)
// FillSMVPublisherDetails("");
this.Cursor = Cursors.WaitCursor;
DisplayUtil.UpdateIEDNodeSMV(frmsmv.ied);
this.Cursor = Cursors.Default;
Global.ProjectSaveRequired = true;
Global.NotifyReloadIEDSmvNode(frmsmv.ied);
if (frmsmv != null)
frmsmv.Dispose();
}
if (frmLDevice != null)
frmLDevice.Dispose();
/// <summary>
/// Click event handler of btnAddLog.Pop ups form for adding log control block
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
frmlog.ied = base.iedDev.SCLConfiguration.IEDs[0];
frmlog.bedit = false;
if (frmlog.ied != null)
if (frmlog.ShowDialog() == DialogResult.OK)
FillLogControlBlocks(frmlog.AddedLog);
//FillDataSets(lstDataSets.SelectedItems.Count > 0 ? lstDataSets.SelectedItems[0].Text :
"");
Global.ProjectSaveRequired = true;
if (frmlog != null)
frmlog.Dispose();
/// <summary>
/// </summary>
if (!Global.CurrentUser.IEC61850Configuration)
return;
if (lstLogControlBlocks.SelectedItems.Count == 0)
return;
return;
if (ied != null)
if (lstLogControlBlocks.SelectedItems[i].Tag != null)
if (log != null)
if (log.Orginal)
MessageBox.Show("You can not delete the original Log control block '" + log.name
+ "'.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
continue;
if (ldev != null)
bRcbDelete = true;
}
}
if (bRcbDelete)
FillLogControlBlocks("");
Global.ProjectSaveRequired = true;
/// <summary>
/// Click event handler of btnRetreive. Retrieves startup settings from device.
/// </summary>
if (!Global.CurrentUser.RetrieveConfigurations)
return;
if (!ProjectUtil.IsTargetDeviceExpected(iedDev.IEDDeviceOrginalName, iedDev.IPAddress))
return;
ProjectUtil.CreateNecessaryFolders();
ProjectUtil.LoadStartupFile(Global.UserDataFolder + "\\Temp\\StartUp.ini",
iedDev.SCLConfiguration.IEDs[0]);
startupProperties.SelectedObject = iedDev.SCLConfiguration.IEDs[0].StartUpSettings;
iedProperties.SelectedObject = iedDev.SCLConfiguration.IEDs[0];
/// <summary>
/// Click event handler of btnRetrieveMUStartup. Retrieves MU startup settings from device.
/// </summary>
if (!Global.CurrentUser.RetrieveConfigurations)
return;
if (!ProjectUtil.IsTargetDeviceExpected(iedDev.IEDDeviceOrginalName, iedDev.IPAddress))
return;
ProjectUtil.CreateNecessaryFolders();
List<ftp.FtpFileInfo> fileinfo = new List<IEDConfigurationTool.ftp.FtpFileInfo>();
ProjectUtil.LoadMUStartupFile(Global.UserDataFolder + "\\Temp\\SMVStartUp.ini",
iedDev.SCLConfiguration.IEDs[0]);
// muStartup.SelectedObject = iedDev.SCLConfiguration.IEDs[0].MUStartUpSettings;
/// <summary>
/// Click event handler of btnRetrieveSMVStartup. Retrieves SMV startup settings from device.
/// </summary>
if (!Global.CurrentUser.RetrieveConfigurations)
return;
if (!ProjectUtil.IsTargetDeviceExpected(iedDev.IEDDeviceOrginalName, iedDev.IPAddress))
return;
ProjectUtil.CreateNecessaryFolders();
ProjectUtil.LoadSMVStartupFile(Global.UserDataFolder + "\\Temp\\SMVStartUp.ini",
iedDev.SCLConfiguration.IEDs[0]);
// grdSmvStartup.SelectedObject = iedDev.SCLConfiguration.IEDs[0].SMVStartUpSettings;
try
tree.SelectedNode = node;
DoDragDrop(node, DragDropEffects.Move);
catch
{
try
if (targetNode.Level == 1)
targetNode.Nodes.Add((TreeNode)draggedNode.Clone());
targetNode.Expand();
//remveOriginalNode
draggedNode.Remove();
{
MessageBox.Show(ex.ToString());
e.Effect = DragDropEffects.Move;
//{
// treeView2.Nodes.Remove(treeView2.SelectedNode);
//}
//{
// treeView3.Nodes.Remove(treeView3.SelectedNode);
//}
//{
// treeView4.Nodes.Remove(treeView4.SelectedNode);
//}
// treeView5.Nodes.Remove(treeView5.SelectedNode);
//}
//{
// treeView6.Nodes.Remove(treeView6.SelectedNode);
//}
//{
// treeView7.Nodes.Remove(treeView7.SelectedNode);
//}
//{
// treeView8.Nodes.Remove(treeView8.SelectedNode);
//}
//{
// treeView9.Nodes.Remove(treeView9.SelectedNode);
//}
//{
// treeView10.Nodes.Remove(treeView10.SelectedNode);
//}
int rowindex = 0;
//try
//{
// {
// this.dataGridView1.Rows[e.RowIndex].Selected = true;
// this.rowindex = e.RowIndex;
// this.dataGridView1.CurrentCell = this.dataGridView1.Rows[e.RowIndex].Cells[1];
// this.contextMenuStrip3.Show(this.dataGridView1, e.Location);
// contextMenuStrip3.Show(Cursor.Position);
// }
// {
// this.dataGridView1.Rows[e.RowIndex].Selected = true;
// this.rowindex = e.RowIndex;
// this.dataGridView1.CurrentCell = this.dataGridView1.Rows[e.RowIndex].Cells[1];
// this.contextMenuStrip4.Show(this.dataGridView1, e.Location);
// contextMenuStrip4.Show(Cursor.Position);
// }
//}
//catch { }
return;
}
private void toolStripMenuItem3_Click(object sender, EventArgs e)
//if (!this.dataGridView1.Rows[this.rowindex].IsNewRow)
//{
// this.dataGridView1.Rows.RemoveAt(this.rowindex);
//}
// this.dataGridView1.Rows[this.rowindex].Cells[4].Value = e.ClickedItem.Text;
int i_2 = 0;
int q_2 = 0;
void IEC_Export()
if (File.Exists(LablelClass.pathname + "\\IEC_EXPORT.txt"))
{
File.Delete(LablelClass.pathname + "\\IEC_EXPORT.txt");
sw.Close();
try
if (e.Argument is Project)
if (!System.IO.Directory.Exists(projecttoSave.ProjectPath))
try
System.IO.Directory.CreateDirectory(projecttoSave.ProjectPath);
e.Result = "Fail";
return;
if (!System.IO.Directory.Exists(projecttoSave.ProjectPath + "\\" +
ieddev.IEDDeviceInstanceName))
{
try
System.IO.Directory.CreateDirectory(projecttoSave.ProjectPath + "\\" +
ieddev.IEDDeviceInstanceName);
e.Result = "Fail";
return;
if (ieddev.Type == IEDDevice.IEDType.Local)
if (!System.IO.Directory.Exists(projecttoSave.ProjectPath + "\\" +
ieddev.IEDDeviceInstanceName + "\\" + Global.DRFolder))
System.IO.Directory.CreateDirectory(projecttoSave.ProjectPath + "\\" +
ieddev.IEDDeviceInstanceName + "\\" + Global.DRFolder);
{
string IEDFolderName = strDir.Substring(strDir.LastIndexOf('\\') + 1);
if (!projecttoSave.IEDs.Contains(IEDFolderName))
try
System.IO.Directory.Delete(strDir, true);
}
}
/// <summary>
/// </summary>
saveSuccess = true;
saveSuccess = false;
Global.NotifyChangeEnableStatus(true);
if (frmprog != null)
frmprog.autoclose = true;
frmprog.Close();
e.Handled = true;
try
if (scl == null)
return false;
return false;
if (ied.IEDFileContents.Trim() != "")
try
xdoc.LoadXml(ProjectUtil.DecompressText(ied.IEDFileContents));
catch
MessageBox.Show("Loading IED file contents for " + IEDName + " failed.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
return false;
else
return false;
}
ExportCIDUtil.UpdateDataSetInfo(xdoc, ied);
ExportCIDUtil.UpdateLogControlBlockInfo(xdoc, ied);
ExportCIDUtil.UpdateReportControlBlockInfo(xdoc, ied);
ExportCIDUtil.UpdateGooseControlBlockInfo(xdoc, ied);
xdoc.Save(File);
return true;
Global.NotifyLogWindow(ex.Message);
return false;
{
}
if (save.ShowDialog() == DialogResult.OK)
try
xdoc.Load(LablelClass.editdynamicsclpath);
UpdateDataSetInfo(xdoc, LablelClass.ied);
UpdateReportControlBlockInfo(xdoc, LablelClass.ied);
UpdateGooseControlBlockInfo(xdoc, LablelClass.ied);
catch
string IEDFolderName =
LablelClass.editdynamicsclpath.Substring(LablelClass.editdynamicsclpath.LastIndexOf('\\') + 1);
/// <summary>
/// Updates the Dataset info for all logical nodes of all logical devices in the IED
/// </summary>
//IED ied =
WorkspaceManagement.WorkSpace.CurrentProject.IEDCollection[IEDName].SCLConfiguration.IEDs[
0];
if (ied == null)
return;
XmlNodeList xmlLN;
xmlLN = xdoc.SelectNodes("/*[local-name()='SCL']" +
"/*[local-name()='Server']" +
"/*[local-name()='LDevice'][@inst='" + LogicalDevices[i].inst + "']" +
"/*[local-name()='LN0']");
if (xmlLN.Count > 0)
if (xmlLN[0].ChildNodes[x].Name == "DataSet")
xmlLN[0].RemoveChild(xmlLN[0].ChildNodes[x]);
x--;
continue;
}
}
xmlLN = xdoc.SelectNodes("/*[local-name()='SCL']" +
"/*[local-name()='Server']" +
if (xmlLN.Count > 0)
if (xmlLN[0].ChildNodes[x].Name == "DataSet")
xmlLN[0].RemoveChild(xmlLN[0].ChildNodes[x]);
x--;
if (refrencedrcb.Count == 0)
continue;
/// <summary>
/// Creates dataset element and FCDA elements for the dataset
/// </summary>
if (ds != null)
if (ds.Items.Count == 0)
return;
attributename.Value = ds.DataSetName;
xmlDocFragment.Attributes.Append(attributename);
XmlAttribute attributedesc = xdoc.CreateAttribute("desc");
attributedesc.Value = ds.Description;
xmlDocFragment.Attributes.Append(attributedesc);
attributeldInst.Value = fcda[j].ldInst;
xmlDocFragment.Attributes.Append(attributeldInst);
attributelnClass.Value = fcda[j].lnClass;
xmlDocFragment.Attributes.Append(attributelnClass);
attributefc.Value = fcda[j].fc;
xmlDocFragment.Attributes.Append(attributefc);
attributeprefix.Value = fcda[j].prefix;
xmlDocFragment.Attributes.Append(attributeprefix);
if (fcda[j].lnClass != "LLN0")
attributelnInst.Value = fcda[j].lnInst;
xmlDocFragment.Attributes.Append(attributelnInst);
}
XmlAttribute attributedoName = xdoc.CreateAttribute("doName");
attributedoName.Value = fcda[j].doname;
xmlDocFragment.Attributes.Append(attributedoName);
attributedaName.Value = fcda[j].daname;
xmlDocFragment.Attributes.Append(attributedaName);
xmlDataset.InsertBefore(xmlDocFragment, xmlDataset.FirstChild);
/// <summary>
/// Updates the Report control block info for all logical nodes of all logical devices in the IED
/// </summary>
XmlNodeList xmlLN;
DataSet ds;
//IED ied =
WorkspaceManagement.WorkSpace.CurrentProject.IEDCollection[IEDName].SCLConfiguration.IEDs[
0];
if (ied == null)
return;
xmlLN = xdoc.SelectNodes("/*[local-name()='SCL']" +
"/*[local-name()='Server']" +
"/*[local-name()='LN0']");
if (xmlLN.Count > 0)
if (xmlLN[0].ChildNodes[x].Name == "ReportControl")
xmlLN[0].RemoveChild(xmlLN[0].ChildNodes[x]);
x--;
}
XmlNode xmlLastDataSet = xmlLN[0];
if (xmlLN[0].ChildNodes[x].Name == "DataSet")
xmlLastDataSet = xmlLN[0].ChildNodes[x];
ds = null;
if (LogicalDevices[i].LN0s[j].Reports[iRpt].IsPublisher)
ds =
LogicalDevices[i].GetDataSet(LogicalDevices[i].LN0s[j].Reports[iRpt].DataSetName, "LLN0");
if (ds != null)
if (ds.Items.Count > 0)
else
else
xmlLN = xdoc.SelectNodes("/*[local-name()='SCL']" +
"/*[local-name()='Server']" +
if (xmlLN.Count > 0)
if (xmlLN[0].ChildNodes[x].Name == "ReportControl")
xmlLN[0].RemoveChild(xmlLN[0].ChildNodes[x]);
x--;
if (xmlLN[0].ChildNodes[x].Name == "DataSet")
xmlLastDataSet = xmlLN[0].ChildNodes[x];
ds = null;
if (LogicalDevices[i].LNs[j].Reports[iRpt].IsPublisher)
ds =
LogicalDevices[i].GetDataSet(LogicalDevices[i].LNs[j].Reports[iRpt].DataSetName,
LogicalDevices[i].LNs[j].prefix + LogicalDevices[i].LNs[j].lnClass + LogicalDevices[i].LNs[j].inst);
if (ds != null)
if (ds.Items.Count > 0)
{
CreateReportControlBlockElement(xdoc, xmlLN[0], xmlLastDataSet,
LogicalDevices[i].LNs[j].Reports[iRpt]);
else
else
/// <summary>
/// </summary>
/// <param name="xdoc">XMLDocument of the IED</param>
/// <param name="xmlNodeLN">Parent XML node in which Report control block is inserted
</param>
/// <param name="xmlNodelastDS">Last dataset node after which Report control block is
inserted</param>
if (rcb.DataSetName != null)
if (rcb.DataSetName.Trim() != "")
attributename.Value = rcb.name;
xmlDocNodeRcb.Attributes.Append(attributename);
attributedesc.Value = rcb.desc;
xmlDocNodeRcb.Attributes.Append(attributedesc);
attributeds.Value = rcb.DataSetName;
xmlDocNodeRcb.Attributes.Append(attributeds);
xmlDocNodeRcb.Attributes.Append(attributeintergper);
attributeappid.Value = rcb.ID;
xmlDocNodeRcb.Attributes.Append(attributeappid);
attributeconf.Value = rcb.confRev;
xmlDocNodeRcb.Attributes.Append(attributeconf);
attributebuufferd.Value = rcb.Buffered.ToString().ToLower();
xmlDocNodeRcb.Attributes.Append(attributebuufferd);
attributebuuffertime.Value = rcb.BufferTime.ToString().ToLower();
xmlDocNodeRcb.Attributes.Append(attributebuuffertime);
if (rcb.TrgOps.dchg)
attributedchg.Value = rcb.TrgOps.dchg.ToString().ToLower();
xmlNodeTrgOps.Attributes.Append(attributedchg);
if (rcb.TrgOps.qchg)
attributeqchg.Value = rcb.TrgOps.qchg.ToString().ToLower();
xmlNodeTrgOps.Attributes.Append(attributeqchg);
}
if (rcb.TrgOps.dupd)
attributedupd.Value = rcb.TrgOps.dupd.ToString().ToLower();
xmlNodeTrgOps.Attributes.Append(attributedupd);
if (rcb.TrgOps.period)
attributeperiod.Value = rcb.TrgOps.period.ToString().ToLower();
xmlNodeTrgOps.Attributes.Append(attributeperiod);
//if (rcb.TrgOps.gi)
//{
// attributegi.Value = rcb.TrgOps.gi.ToString().ToLower();
// xmlNodeTrgOps.Attributes.Append(attributegi);
//}
xmlDocNodeRcb.AppendChild(xmlNodeTrgOps);
if (rcb.OptFields.seqNum)
attributeseqNum.Value = rcb.OptFields.seqNum.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributeseqNum);
}
if (rcb.OptFields.timeStamp)
attributetimeStamp.Value = rcb.OptFields.timeStamp.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributetimeStamp);
if (rcb.OptFields.dataSet)
attributedataSet.Value = rcb.OptFields.dataSet.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributedataSet);
if (rcb.OptFields.reasonCode)
attributereasonCode.Value = rcb.OptFields.reasonCode.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributereasonCode);
if (rcb.OptFields.dataRef)
attributedataRef.Value = rcb.OptFields.dataRef.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributedataRef);
{
XmlAttribute attributeentryID = xdoc.CreateAttribute("entryID");
attributeentryID.Value = rcb.OptFields.entryID.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributeentryID);
if (rcb.OptFields.configRef)
attributeconfigRef.Value = rcb.OptFields.configRef.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributeconfigRef);
attributebufOvfl.Value = rcb.OptFields.bufOvfl.ToString().ToLower();
xmlNodeOptFields.Attributes.Append(attributebufOvfl);
xmlDocNodeRcb.AppendChild(xmlNodeOptFields);
attributemax.Value = rcb.NoOfInstances.ToString().ToLower();
xmlNodeRptEnabled.Attributes.Append(attributemax);
xmlDocNodeRcb.AppendChild(xmlNodeRptEnabled);
xmlNodeLN.InsertAfter(xmlDocNodeRcb, xmlNodelastDS);
}
else
else
/// <summary>
/// Updates the GOOSE control block info for all logical devices in the IED
/// </summary>
// IED ied =
WorkspaceManagement.WorkSpace.CurrentProject.IEDCollection[IEDName].SCLConfiguration.IEDs[
0];
if (ied == null)
return;
XmlNodeList xmlLN;
"[local-name()='SubNetwork']/*[local-name()='ConnectedAP'][@iedName='" +
ied.IEDOriginalName + "' and @apName='" + ied.AccessPoint + "']");
if (nodeConnectedAP != null)
if (nodeConnectedAP.Count > 0)
if (nodeConnectedAP[0].ChildNodes[icnt].Name == "GSE")
nodeConnectedAP[0].RemoveChild(nodeConnectedAP[0].ChildNodes[icnt]);
icnt--;
xmlLN = xdoc.SelectNodes("/*[local-name()='SCL']" +
"/*[local-name()='LN0']");
if (xmlLN.Count > 0)
if (xmlLN[0].ChildNodes[x].Name == "GSEControl")
xmlLN[0].RemoveChild(xmlLN[0].ChildNodes[x]);
x--;
if (xmlLN[0].ChildNodes[y].Name == "DOI")
nodeLast = xmlLN[0].ChildNodes[y];
break;
if (xmlLN[0].ChildNodes[y].Name == "LogControl")
nodeLast = xmlLN[0].ChildNodes[y];
break;
}
if (xmlLN[0].ChildNodes[y].Name == "ReportControl")
nodeLast = xmlLN[0].ChildNodes[y];
break;
if (xmlLN[0].ChildNodes[y].Name == "DataSet")
nodeLast = xmlLN[0].ChildNodes[y];
break;
DataSet ds = null;
ds = null;
if (LogicalDevices[i].LN0s[j].GooseControlBlocks[iGoose].IsPublisher)
ds =
LogicalDevices[i].GetDataSet(LogicalDevices[i].LN0s[j].GooseControlBlocks[iGoose].DataSetName,
"LLN0");
if (ds != null)
if (ds.Items.Count == 0)
continue;
if (nodeConnectedAP.Count > 0)
if (LogicalDevices[i].LN0s[j].GooseControlBlocks[iGoose].IsPublisher)
CreateGooseAddressingSection(xdoc, nodeConnectedAP[0],
LogicalDevices[i].LN0s[j].GooseControlBlocks[iGoose]);
/// <summary>
if (gse.DataSetName != null)
if (gse.DataSetName.Trim() != "")
attributename.Value = gse.name;
xmlDocFragment.Attributes.Append(attributename);
attributeappid.Value = gse.ID;
xmlDocFragment.Attributes.Append(attributeappid);
attributeds.Value = gse.DataSetName;
xmlDocFragment.Attributes.Append(attributeds);
attributeconf.Value = gse.confRev;
xmlDocFragment.Attributes.Append(attributeconf);
XmlAttribute attributedesc = xdoc.CreateAttribute("desc");
attributedesc.Value = gse.desc;
xmlDocFragment.Attributes.Append(attributedesc);
lnNode.InsertAfter(xmlDocFragment, xmlnode);
else
else
/// <summary>
/// </summary>
if (gse.DataSetName != null)
{
if (gse.DataSetName.Trim() != "")
attributeldInst.Value = gse.CBLDeviceName;
xmlNodeGSE.Attributes.Append(attributeldInst);
attributecbName.Value = gse.name;
xmlNodeGSE.Attributes.Append(attributecbName);
attributedesc.Value = gse.desc;
xmlNodeGSE.Attributes.Append(attributedesc);
attributetype1.Value = "MAC-Address";
xmlNodeP1.Attributes.Append(attributetype1);
xmlNodeP1.InnerText = gse.MACAddress;
attributetype2.Value = "APPID";
xmlNodeP2.Attributes.Append(attributetype2);
xmlNodeP2.InnerText = gse.APPIDComm;
attributetype3.Value = "VLAN-ID";
xmlNodeP3.Attributes.Append(attributetype3);
xmlNodeP3.InnerText = gse.VLANID;
attributetype4.Value = "VLAN-PRIORITY";
xmlNodeP4.Attributes.Append(attributetype4);
xmlNodeP4.InnerText = gse.VLANPRIORITY;
xmlNodeAddress.AppendChild(xmlNodeP1);
xmlNodeAddress.AppendChild(xmlNodeP2);
xmlNodeAddress.AppendChild(xmlNodeP3);
xmlNodeAddress.AppendChild(xmlNodeP4);
attributeunit.Value = "s";
xmlNodeMin.Attributes.Append(attributeunit);
attributemultiplier.Value = "m";
xmlNodeMin.Attributes.Append(attributemultiplier);
xmlNodeMin.InnerText = gse.MinTime.ToString();
attributemaxunit.Value = "s";
xmlNodeMax.Attributes.Append(attributemaxunit);
attributemaxmultiplier.Value = "m";
xmlNodeMax.Attributes.Append(attributemaxmultiplier);
xmlNodeMax.InnerText = gse.MaxTime.ToString();
xmlNodeGSE.AppendChild(xmlNodeAddress);
xmlNodeGSE.AppendChild(xmlNodeMin);
xmlNodeGSE.AppendChild(xmlNodeMax);
xmlnode.InsertAfter(xmlNodeGSE, xmlnode.LastChild);
}
}