private void Initialize(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { Initialize(lnvmodel); } }
public void Unroute(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { Unroute(lnvmodel); } }
public void Initialize() { pmodel = new ProjectModel("效果展示"); ldvmodel = new LadderDiagramViewModel("效果展示", pmodel); lnvmodel = ldvmodel.GetNetworks().First(); ldvmodel.LadderMode = LadderMode.Demo; ldvmodel.Visibility = Visibility.Hidden; GD_Main.Children.Add(ldvmodel); LDDemoViewModel ldmodel = new LDDemoViewModel(); LDWEQDemoViewModel ldweqmodel = new LDWEQDemoViewModel(); SMOVDemoViewModel smovmodel = new SMOVDemoViewModel(); lnvmodel.LadderCanvas.Children.Add(ldmodel); lnvmodel.LadderCanvas.Children.Add(ldweqmodel); lnvmodel.LadderCanvas.Children.Add(smovmodel); lnvmodel.CommentAreaExpander.IsEnabled = false; lnvmodel.ladderExpander.IsEnabled = false; lnvmodel.LadderCanvas.IsEnabled = false; ldvmodel.CommentAreaExpander.IsEnabled = false; ldvmodel.ladderExpander.IsEnabled = false; ldvmodel.IsCommentMode = true; fbvmodel = new FuncBlockViewModel("效果展示", null); fbvmodel.Code = "void Func(WORD* w1, WORD* w2, WORD* w3)\n{\n\tw3[0] = w1[0] + w2[0];\n}\n"; fbvmodel.CodeTextBox.IsReadOnly = true; GD_Main.Children.Add(fbvmodel); fbvmodel.Visibility = Visibility.Hidden; }
private static void Setup(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { Setup(lnvmodel); } }
public LadderNetworkViewModel GetNetwork(BaseViewModel bvmodel, LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { if (lnvmodel.ContainBPAddr(bvmodel.BPAddress)) { return(lnvmodel); } } return(null); }
private static List <BaseViewModel> GetProgramControlViewModels(LadderDiagramViewModel ladderDiagram) { List <BaseViewModel> eles = new List <BaseViewModel>(); foreach (var network in ladderDiagram.GetNetworks().Where(x => { return(!x.IsMasked); })) { foreach (var model in network.GetElements().Where(x => { return(x.GetType() == typeof(FORViewModel) || x.GetType() == typeof(NEXTViewModel) || x.GetType() == typeof(JMPViewModel) || x.GetType() == typeof(LBLViewModel)); })) { eles.Add(model); } } return(eles); }
public void CreateRoutineModel_FromDiagramModel(GenerateRoutineModel grmodel, LadderDiagramViewModel ldvmodel) { ldvmodel.Dispatcher.Invoke(() => { grmodel.Name = ldvmodel.Name; }); grmodel.NetworkModels = new LinkedList <GenerateNetworkModel>(); foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { GenerateNetworkModel gnmodel = new GenerateNetworkModel(); gnmodel.ID = grmodel.NetworkModels.Count() + 1; gnmodel.Name = "NETWORK" + gnmodel.ID; CreateNetworkModel_FromNetworkModel(gnmodel, lnvmodel); grmodel.NetworkModels.AddLast(gnmodel); } }
static private void Initialize(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { BaseModel bmodel = bvmodel.Model; if (bmodel == null) { continue; } if (bmodel is TONModel) { TONModel tmodel = (TONModel)(bmodel); IValueModel ivmodel = tmodel.TimerValue; if (ivmodel.IsVariable) { continue; } if (ivmodel is TVWordValue) { int index = (int)(ivmodel.Index); timers[index] = new SFCTimerModel(tmodel); } } else { for (int i = 0; i < bmodel.ParaCount; i++) { IValueModel ivmodel = bmodel.GetPara(i); if (ivmodel is SBitValue) { int index = (int)(ivmodel.Index); if (status[index] == null) { status[index] = new SFCStatusModel(ldvmodel); } else if (status[index].LDVModel != ldvmodel) { status[index] = new SFCInvalidStatusModel(); } } } } } } }
public static XElement CreateXElementByLadderDiagram(LadderDiagramViewModel ldmodel) { XElement result = new XElement("Ladder"); result.SetAttributeValue("Name", ldmodel.ProgramName); result.SetAttributeValue("IsExpand", ldmodel.ladderExpander.IsExpand); if (ldmodel.IsMainLadder) { result.SetAttributeValue("IsMain", "True"); } foreach (var net in ldmodel.GetNetworks()) { var netEle = CreateXElementByLadderNetwork(net); result.Add(netEle); } return(result); }
private void _Thread_Update(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { InstructionNetworkViewModel invmodel = lnvmodel.INVModel; if (invmodel != null && invmodel.IsModified) { invmodel.Dispatcher.Invoke(new Utility.Delegates.Execute(() => { invmodel.Update(); })); } if (!thalive) { return; } } }
/// <summary> /// 在给定程序内查找指令 /// </summary> /// <param name="ldvmodel"></param> private void Find(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { if (bvmodel is HorizontalLineViewModel || bvmodel is VerticalLineViewModel) { continue; } BaseModel bmodel = bvmodel.Model; if (RF_Input.Match(bvmodel.ToInstString())) { items.Add(new ReplaceElement(this, bvmodel, ldvmodel, lnvmodel)); } } } }
/// <summary> /// 获得一个梯形图程序中所有已经使用的软元件 /// </summary> /// <param name="ldvmodel">梯形图程序</param> static private void GetRegisters(LadderDiagramViewModel ldvmodel) { foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { foreach (BaseViewModel bvmodel in lnvmodel.GetElements()) { if (bvmodel.Model == null) { continue; } for (int i = 0; i < bvmodel.Model.ParaCount; i++) { IValueModel ivmodel = bvmodel.Model.GetPara(i); string ivname = ivmodel.ValueString; if (!regids.ContainsKey(ivname)) { regs.Add(ivmodel); regids.Add(ivname, regids.Count()); } } } } }
/// <summary> /// 写入一个梯形图程序 /// </summary> /// <param name="ldvmodel">梯形图程序</param> /// <param name="option">选项</param> static private void Write(LadderDiagramViewModel ldvmodel, int option) { if ((option & OPTION_PROGRAM) == 0) { return; } // 写入头标志 edata.Add(0xff); // 记录长度的位置,待写入 int szid = edata.Count(); edata.Add(0x00); edata.Add(0x00); // 依次写入所有网络 foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks()) { Write(lnvmodel, option); } // 计算长度,写入之前记录的位置 int sz = edata.Count() - szid - 2; edata[szid] = Int32_Low(sz); edata[szid + 1] = Int32_High(sz); }
public static ErrorMessage Execute(LadderDiagramViewModel ladderDiagram) { ErrorType error = ErrorType.None; foreach (var network in ladderDiagram.GetNetworks().Where(x => { return(!x.IsMasked); })) { if (!network.ladderExpander.IsExpand) { network.ladderExpander.IsExpand = true; } error = CheckNetwork(network); if (error != ErrorType.None) { List <LadderNetworkViewModel> templist = new List <LadderNetworkViewModel>(); templist.Add(network); InstructionCommentManager.RaiseMappedMessageChangedEvent(); return(new ErrorMessage(error, templist)); } else { network.InitializeLadderLogicModules(); if (network.IsSingleSelected()) { network.ReleaseSelectRect(); } LadderGraphRelocationModule.Execute(network); } } //ladderDiagram.IsModify = false; if (!CheckProgramControlInstructions(ladderDiagram)) { error = ErrorType.InstPair; } InstructionCommentManager.RaiseMappedMessageChangedEvent(); return(new ErrorMessage(error, null)); }