示例#1
0
        /// <summary>
        /// Initialize the service.
        /// </summary>
        /// <remarks>
        /// It's launched by the class in the folder App_Code with the method AppInitialize().
        /// </remarks>
        public static void Initialize()
        {
            // This will get called on startup

            Logger.Info("***********************************");
            Logger.Info("       WCF SERVICE STARTED");
            Logger.Info("***********************************");

            MariniImpiantoTree.InitializeFromXmlFile(@"Q:\VARIE\ael\new-project\doc\analisi\impianto.xml");
            MariniImpiantoTree mariniImpiantoTree = MariniImpiantoTree.Instance;
        }
示例#2
0
文件: Program.cs 项目: wbguitar/oms
        static void Main(string[] args)
        {
            if (true)
            {
                Logger.Info("***********************************");
                Logger.Info("          TEST STARTED");
                Logger.Info("***********************************");

                //MariniImpiantoTree.InitializeFromXmlFile(@"Q:\VARIE\ael\new-project\doc\analisi\impianto.xml");
                //MariniImpiantoTree.InitializeFromXmlFile(@"C:\Users\uts.MARINI\Documents\projects\new-project\oms\MariniImpianto\impianto-test.xml");
                MariniImpiantoTree.InitializeFromXmlFile(@"E:\AeL\GIT_Projects\oms\MariniImpianto\impianto-test.xml");
                //MariniImpiantoTree.InitializeFromXmlFile(@"E:\AeL\GIT_Projects\oms\MariniImpianto\impianto-plctag1.xml");
                MariniImpiantoTree mariniImpiantoTree = MariniImpiantoTree.Instance;


                //*****************************************
                // Inizio Vecchia parte con GetObjectById
                //*****************************************



                ////Console.WriteLine("Ecco una descrizione ricorsiva 2 fatta mediante ToPlainTextRecursive()");
                ////mariniImpiantoTree.MariniImpianto.ToPlainTextRecursive();
                ////Console.WriteLine("\n\n\n");
                ////Console.WriteLine("Ecco un xml di MOTORE_02");
                ////string sMotore02XML=mariniImpiantoTree.SerializeObject("MOTORE_02");
                ////Console.WriteLine("{0}", sMotore02XML);

                //Console.WriteLine("\n\n\n");
                //Console.WriteLine("Provo a cambiare il nome di IMPIANTO");
                //mariniImpiantoTree.GetObjectById("IMPIANTO").name = "nuovonome";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("IMPIANTO").id, mariniImpiantoTree.GetObjectById("IMPIANTO").name);
                //mariniImpiantoTree.GetObjectById("IMPIANTO").name = "nuovonome2";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("IMPIANTO").id, mariniImpiantoTree.GetObjectById("IMPIANTO").name);
                //mariniImpiantoTree.GetObjectById("IMPIANTO").name = "nuovonome2";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("IMPIANTO").id, mariniImpiantoTree.GetObjectById("IMPIANTO").name);
                //mariniImpiantoTree.GetObjectById("MOTORE_02").name = "nuovonome3";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_02").id, mariniImpiantoTree.GetObjectById("MOTORE_02").name);
                //mariniImpiantoTree.GetObjectById("MOTORE_02").name = "nuovonome3";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_02").id, mariniImpiantoTree.GetObjectById("MOTORE_02").name);
                //mariniImpiantoTree.GetObjectById("MOTORE_02").description = "nuovadescr1";
                //Console.WriteLine("la nuova descrizione di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_02").id, mariniImpiantoTree.GetObjectById("MOTORE_02").description);
                //mariniImpiantoTree.GetObjectById("MOTORE_02").description = "nuovadescr2";
                //Console.WriteLine("la nuova descrizione di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_02").id, mariniImpiantoTree.GetObjectById("MOTORE_02").description);
                //mariniImpiantoTree.GetObjectById("MOTORE_02").description = "nuovadescr2";
                //Console.WriteLine("la nuova descrizione di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_02").id, mariniImpiantoTree.GetObjectById("MOTORE_02").description);
                //mariniImpiantoTree.GetObjectById("MOTORE_01").description = "NUOVA_descrizione_motore_01";
                //Console.WriteLine("la nuova descrizione di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_01").id, mariniImpiantoTree.GetObjectById("MOTORE_01").description);
                //mariniImpiantoTree.GetObjectById("MOTORE_01").description = "NUOVISSIMA_descrizione_motore_01";
                //Console.WriteLine("la nuova descrizione di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_01").id, mariniImpiantoTree.GetObjectById("MOTORE_01").description);
                //Console.WriteLine("Prova a cambiare il nome di MOTORE_02 con le web API");
                //Console.WriteLine("Quando hai finito premi invio");
                //Console.ReadLine();
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("MOTORE_02").id, mariniImpiantoTree.GetObjectById("MOTORE_02").name);
                //Console.ReadLine();

                ////Console.WriteLine("\n\n\n");
                ////Console.WriteLine("Ecco una descrizione ricorsiva 2 fatta mediante ToPlainTextRecursive()");
                ////mariniImpiantoTree.MariniImpianto.ToPlainTextRecursive();
                ////Console.ReadLine();

                //Console.WriteLine("Provo a cambiare il nome di IMPIANTO con mariniImpiantoTree");
                //mariniImpiantoTree.GetObjectById("IMPIANTO").name = "AHAhahaha";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("IMPIANTO").id, mariniImpiantoTree.GetObjectById("IMPIANTO").name);

                //Console.ReadLine();

                //Console.WriteLine("Provo a cambiare il nome di IMPIANTO con Dict indexer");
                //mariniImpiantoTree.MariniImpiantoObjectsDictionary["IMPIANTO"].name = "Buhuhuhuhhu";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.MariniImpiantoObjectsDictionary["IMPIANTO"].id, mariniImpiantoTree.MariniImpiantoObjectsDictionary["IMPIANTO"].name);

                //Console.ReadLine();

                //Console.WriteLine("Provo a cambiare il nome di MOTORE_02 con Dict indexer");
                //mariniImpiantoTree.MariniImpiantoObjectsDictionary["MOTORE_02"].name = "MOTORE_02namechanged";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.MariniImpiantoObjectsDictionary["MOTORE_02"].id, mariniImpiantoTree.MariniImpiantoObjectsDictionary["MOTORE_02"].name);

                //Console.ReadLine();

                //Console.WriteLine("Provo a cambiare la descrizione di MOTORE_02 con Dict indexer");
                //mariniImpiantoTree.MariniImpiantoObjectsDictionary["MOTORE_02"].description = "MOTORE_02descrchanged";
                //Console.WriteLine("La nuova descrizione di {0} e' {1}", mariniImpiantoTree.MariniImpiantoObjectsDictionary["MOTORE_02"].id, mariniImpiantoTree.MariniImpiantoObjectsDictionary["MOTORE_02"].description);

                //Console.ReadLine();


                //Console.WriteLine("\n\n\n");
                //Console.WriteLine("Creo una lista di oggetti PlcTags di MOTORE_02");
                //List<MariniGenericObject> mgoList = null;
                //mgoList = mariniImpiantoTree.GetObjectById("MOTORE_02").GetObjectListByType(typeof(MariniPlctag));
                //foreach (MariniGenericObject mgo in mgoList)
                //{
                //    mgo.ToPlainText();
                //}

                //Console.WriteLine("\n\n\n");
                //Console.WriteLine("Ecco una descrizione fatta mediante ToPlainText()");
                //mariniImpiantoTree.MariniImpianto.ToPlainText();
                //Console.ReadLine();

                //******************************************
                //  Fine vecchia parte con GetObjectById
                //******************************************
                //******************************************
                //  Inizio Nuova parte con GetObjectByPath
                //******************************************

                Console.WriteLine("\n");
                Console.WriteLine("Provo a cambiare il nome di {0} che attualmente e' {0}", mariniImpiantoTree.GetObjectByPath("~Impianto").path, mariniImpiantoTree.GetObjectByPath("~Impianto").name);
                Console.ReadKey();

                Console.WriteLine("\n");
                mariniImpiantoTree.GetObjectByPath("~Impianto").name = "nuovonomeimpianto1";
                Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectByPath("~Impianto").path, mariniImpiantoTree.GetObjectByPath("~Impianto").name);
                Console.ReadKey();

                Console.WriteLine("\n");
                mariniImpiantoTree.GetObjectByPath("~Impianto").name = "nuovonomeimpianto1";
                Console.WriteLine("il nome di {0} e' ancora {1} e non dovrebbe essere scattato alcun handler", mariniImpiantoTree.GetObjectByPath("~Impianto").path, mariniImpiantoTree.GetObjectByPath("~Impianto").name);
                Console.ReadKey();

                Console.WriteLine("Ecco un xml di IMPIANTO");
                string sXML = mariniImpiantoTree.SerializeObjectByPath("~Impianto");
                Console.WriteLine("{0}", sXML);
                Console.ReadKey();

                Console.WriteLine("\n");
                Console.WriteLine("Provo a cambiare la MariniProperty {0} di {1} che attualmente e' {2}",
                                  (mariniImpiantoTree.GetObjectByPath("~Impianto~ZonaPredosaggio~Predosatore1~Stato") as MariniProperty).name,
                                  (mariniImpiantoTree.GetObjectByPath("~Impianto~ZonaPredosaggio~Predosatore1~Stato") as MariniProperty).path,
                                  (mariniImpiantoTree.GetObjectByPath("~Impianto~ZonaPredosaggio~Predosatore1~Stato") as MariniProperty).value);
                Console.ReadKey();

                (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Valore") as MariniProperty).value = "20";
                Console.WriteLine("Il nuovo valore della proprieta' {0} di {1} e' {2}",
                                  (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Valore") as MariniProperty).name,
                                  (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Valore") as MariniProperty).path,
                                  (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Valore") as MariniProperty).value);
                Console.ReadKey();



                //Console.WriteLine("\n");
                //Console.WriteLine("Provo a cambiare la proprieta' {0} di {1} che attualmente e' {2}", (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Amp_value") as MariniPlctag).name, (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Amp_value") as MariniPlctag).path, (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Amp_value") as MariniPlctag).value);
                //Console.ReadKey();

                //(mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Amp_value") as MariniPlctag).value = "20";
                //Console.WriteLine("Il nuovo valore della proprieta' {0} di {1} e' {2}",
                //    (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Amp_value") as MariniPlctag).name,
                //    (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Amp_value") as MariniPlctag).path,
                //    (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01~Amp_value") as MariniPlctag).value);
                //Console.ReadKey();

                //Console.WriteLine("\n");
                //Console.WriteLine("Provo a cambiare la proprieta' valore di {0} che attualmente e' {1}",(mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01") as MariniAmperometro).path, (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01") as MariniAmperometro).valore);
                //Console.ReadKey();

                //(mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01") as MariniAmperometro).valore = 40;
                //Console.WriteLine("Il nuovo valore della proprieta' valore di {0} e' {1}",
                //    (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01") as MariniAmperometro).path,
                //    (mariniImpiantoTree.GetObjectByPath("~Impianto~Predosatori~Nastro~Motore_01~Amperometro_motore_predosatore_01") as MariniAmperometro).valore);
                //Console.ReadKey();

                //mariniImpiantoTree.GetObjectById("IMPIANTO").name = "nuovonome2";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("IMPIANTO").id, mariniImpiantoTree.GetObjectById("IMPIANTO").name);
                //mariniImpiantoTree.GetObjectById("IMPIANTO").name = "nuovonome2";
                //Console.WriteLine("il nuovo nome di {0} e' {1}", mariniImpiantoTree.GetObjectById("IMPIANTO").id, mariniImpiantoTree.GetObjectById("IMPIANTO").name);
                //mariniImpiantoTree.GetObjectById("MOTORE_02").name = "nuovonome3";

                //Console.ReadKey();

                //XmlSerializer x;
                //x = new XmlSerializer(mariniImpiantoTree.MariniImpianto.GetType());
                //using (TextWriter writer = new StreamWriter(@"Q:\VARIE\ael\new-project\doc\analisi\impiantoMariniSerializzato.xml"))
                //{
                //    Console.WriteLine("Serializzo impiantoMarini");
                //    x.Serialize(Console.Out, mariniImpiantoTree.MariniImpianto);
                //    Console.ReadKey();
                //    Console.WriteLine("Inizio Serializzazione su file temporaneo");
                //    x.Serialize(writer, mariniImpiantoTree.MariniImpianto);
                //    Console.WriteLine("Fine Serializzazione su file temporaneo");
                //    Console.ReadKey();
                //}

                //Console.ReadKey();
                //using (var sr = new StreamReader(@"Q:\VARIE\ael\new-project\doc\analisi\impiantoMariniSerializzato.xml "))
                //{
                //    Console.WriteLine("DeSerializzo impiantoMarini.xml in impiantoMarini2");
                //    MariniImpianto impiantoMarini2;
                //    impiantoMarini2 = (MariniImpianto)x.Deserialize(sr);
                //    Console.WriteLine("Fine DeSerializzazione");
                //    Console.WriteLine("Ecco una descrizione ricorsiva fatta mediante AutoManageAll()");
                //    impiantoMarini2.ToPlainTextRecursive();
                //    Console.ReadKey();
                //}

                Logger.Info("***********************************");
                Logger.Info("          TEST FINISHED");
                Logger.Info("***********************************");
            }
            Console.ReadKey();
        }
示例#3
0
        public Manager(int loopTime, string applicationName, string plcserverApplicationName)
        {
            ApplicationName          = applicationName;
            PLCServerApplicationName = plcserverApplicationName;

            Logger.InfoFormat("{0} application ready", ApplicationName);

            // Create MDSClient object to connect to DotNetMQ
            // Name of this application: PLCServer
            mdsClient = new MDSClient(ApplicationName);
            mdsClient.AutoAcknowledgeMessages = true;

            // Connect to DotNetMQ server
            try
            {
                mdsClient.Connect();
            }
            catch (Exception ex)
            {
                Logger.Error(ex.Message, ex);
                // esco
                this.Exit();
            }

            // configurazione

            // data path
            // xml file name
            // opctags filename
            // lista plc connessi  copn plcname,ipaddress

            // lettura del dominio dei tags
            LoadOPCTags(@"C:\Users\uts.MARINI\Documents\projects\cyb500n\Versione 9.6.x\Exe\OPCTags.xls", "plc4");
            LoadOPCTags(@"C:\Users\uts.MARINI\Documents\projects\cyb500n\Versione 9.6.x\Exe\OPCTags.xls", "plc4cist");
            LoadOPCTags(@"C:\Users\uts.MARINI\Documents\projects\cyb500n\Versione 9.6.x\Exe\OPCTags.xls", "plc5");
            LoadOPCTags(@"C:\Users\uts.MARINI\Documents\projects\cyb500n\Versione 9.6.x\Exe\OPCTags.xls", "plc2");
            LoadOPCTags(@"C:\Users\uts.MARINI\Documents\projects\cyb500n\Versione 9.6.x\Exe\OPCTags.xls", "WamFoam");

            // Register to MessageReceived event to get messages.
            mdsClient.MessageReceived += Manager_MessageReceived;

            PLCServerConnect();

            // spostare su plcserver
            PLCAdd("plc4", "213.131.0.161");
            PLCAdd("plc4cist", "213.131.0.161");
            PLCAdd("plc5", "213.131.0.161");
            PLCAdd("plc2", "213.131.0.161");
            PLCAdd("WamFoam", "213.131.0.161");


            // configurazione

            // lettura del dominio degli oggetti
            MariniImpiantoTree.InitializeFromXmlFile(@"C:\Users\uts.MARINI\Documents\projects\new-project\oms\MariniImpianto\impianto-test.xml");

            mariniImpiantoTree = MariniImpiantoTree.Instance;


            SubscribePLCTags(mariniImpiantoTree);

            LoopTime       = loopTime;
            timer.Elapsed += timer_Elapsed;
            timer.Enabled  = true;

            Logger.InfoFormat("{0} application ready", ApplicationName);
        }
示例#4
0
        /// <summary>
        /// sottoscrive la lista delle properties dell'impianto aventi bindtype = plctag e binddirection oneway o twoway
        /// </summary>
        /// <param name="mariniImpiantoTree"></param>
        /// <returns></returns>
        private bool SubscribePLCTags(MariniImpiantoTree mariniImpiantoTree)
        {
            bool RetVal = true;
            // recuperare la lista delle properties dell'impianto
            List <MariniProperty> props = mariniImpiantoTree.MariniImpianto.GetObjectListByType(typeof(MariniProperty)).Cast <MariniProperty>().ToList();

            foreach (var prop in props)
            {
                // chiamo l'handler sul cambiamento del valore della property
                prop.PropertyChanged += PropertyValueChangedHandler;

                // se la property è connessa ad un tag plc sottoscrivo il tag (plcserver)
                if (prop.bindtype == BindType.PLCTag)
                {
                    bool   bOK        = true;
                    string PLCTagName = prop.bind;

                    var plctag = GetPLCTagData(PLCTagName);

                    if (plctag == null)
                    {
                        bOK = false;
                    }

                    if (bOK)
                    {
                        switch (prop.binddirection)
                        {
                        case BindDirection.OneWayToSource:
                            break;

                        case BindDirection.OneTime:
                            break;

                        case BindDirection.OneWay:
                        // sottoscrivo il tag in quanto è in lettura da PLC
                        case BindDirection.TwoWay:
                            // sottoscrivo il tag in quanto è in lettura/scrittura da PLC
                            // gestione errore
                            Logger.InfoFormat("sottoscrivo property : {0}:{1}-{2}/{3}:{4} {5}",
                                              prop.name,
                                              plctag.Name,
                                              plctag.PLCName,
                                              plctag.Address,
                                              plctag.Type,
                                              prop.binddirection);

                            PLCAddTag(plctag);

                            break;
                        }
                    }
                    else
                    {
                        // gestione errore
                        Logger.WarnFormat("Errore in lettura property : {0}:{1}", prop.name, prop.bind != null ? prop.bind : "no bind");
                        RetVal = false;
                    }
                }
            }
            return(RetVal);
        }