Exemplo n.º 1
0
 private void Initialize(LadderDiagramViewModel ldvmodel)
 {
     foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks())
     {
         Initialize(lnvmodel);
     }
 }
Exemplo n.º 2
0
 public void Unroute(LadderDiagramViewModel ldvmodel)
 {
     foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks())
     {
         Unroute(lnvmodel);
     }
 }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
 private static void Setup(LadderDiagramViewModel ldvmodel)
 {
     foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks())
     {
         Setup(lnvmodel);
     }
 }
Exemplo n.º 5
0
 public LadderNetworkViewModel GetNetwork(BaseViewModel bvmodel, LadderDiagramViewModel ldvmodel)
 {
     foreach (LadderNetworkViewModel lnvmodel in ldvmodel.GetNetworks())
     {
         if (lnvmodel.ContainBPAddr(bvmodel.BPAddress))
         {
             return(lnvmodel);
         }
     }
     return(null);
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
 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();
                         }
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 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;
         }
     }
 }
Exemplo n.º 11
0
 /// <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));
             }
         }
     }
 }
Exemplo n.º 12
0
 /// <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());
                 }
             }
         }
     }
 }
Exemplo n.º 13
0
        /// <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);
        }
Exemplo n.º 14
0
        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));
        }