Exemple #1
0
        /// <summary>
        /// Read Data
        /// </summary>
        /// <param name="block">Block description to be read</param>
        /// <param name="station">Address of the remote station connected to the common field bus. –1 if not applicable.
        /// </param>
        /// <param name="data">The frame with the requested data.</param>
        /// <param name="retries">Number of retries to get data.</param>
        /// <returns>
        ///   ALRes_Success: Operation accomplished successfully
        ///   ALRes_DatTransferErrr: Data transfer is imposible because of a communication error – loss of
        ///      communication with a station
        ///   ALRes_DisInd: Disconnect indication – connection has been shut down remotely or lost because of
        ///      communication error. Data is unavailable
        /// </returns>
        AL_ReadData_Result IApplicationLayerMaster.ReadData
            (IBlockDescription block, int station, out IReadValue data, byte retries)
        {
            data = null;
            if (!m_protocol.GetICommunicationLayer.Connected)
            {
                return(AL_ReadData_Result.ALRes_DisInd);
            }
            T_ALMessage request = m_Pool.GetEmptyISesDBuffer();
            T_ALMessage response;

            request.PrepareRequest(station, block);
            AL_ReadData_Result res = TxGetResponse(request, out response, retries);

            if (res == AL_ReadData_Result.ALRes_Success)
            {
                response.SetBlockDescription(station, block);
                data = (IReadValue)response;
            }
            else
            if (response != null && !((IEnvelope)response).InPool)
            {
                EventLogMonitor.WriteToEventLogInfo("TxGetResponse has failed and  response != null  && !( (IEnvelope)response ).InPool", 195);
                response.ReturnEmptyEnvelope();
            }
            request.ReturnEmptyEnvelope();
            m_protocol.GetIProtocolParent.RxDataBlock(res == AL_ReadData_Result.ALRes_Success);
            return(res);
        }
Exemple #2
0
        /// <summary>
        /// Starts the server.
        /// </summary>
        public void Start()
        {
            if (m_Channel == null) // channel is null when there was exception caught in the constructor
            {
                return;
            }
            ChannelServices.RegisterChannel(m_Channel, false);
            WellKnownServiceTypeEntry remObj = new WellKnownServiceTypeEntry
                                               (
                typeof(OPCDataAccess),
                "OPCDataAccess",
                WellKnownObjectMode.Singleton
                                               );

            RemotingConfiguration.RegisterWellKnownServiceType(remObj);
#if !COMMSERVER
            //register OPCBufferedDataAccess
            WellKnownServiceTypeEntry remObj3 = new WellKnownServiceTypeEntry
                                                (
                typeof(OPCAdvancedDataAccess),
                "OPCAdvancedDataAccess",
                WellKnownObjectMode.Singleton
                                                );
            RemotingConfiguration.RegisterWellKnownServiceType(remObj3);
#endif
            EventLogMonitor.WriteToEventLogInfo("HTTPServerChannel" + "..started", (int)Error.DataPorter_Servers);
        }
Exemple #3
0
        /// <summary>
        /// Starts the server.
        /// </summary>
        public void Start()
        {
            if (channel != null)// channel is null when there was exception(catched) in the constructor
            {
                //rejestracja kana³u
                ChannelServices.RegisterChannel(channel, false);
                //rejestracja OPCRealtimeDataAccess
                WellKnownServiceTypeEntry remObj = new WellKnownServiceTypeEntry
                                                   (
                    typeof(CAS.DataPorter.Lib.BaseStation.RemoteAccess.OPCDataAccess),
                    "OPCDataAccess",
                    WellKnownObjectMode.Singleton
                                                   );
                RemotingConfiguration.RegisterWellKnownServiceType(remObj);
#if !COMMSERVER
                //rejestracja OPCBufferedDataAccess
                WellKnownServiceTypeEntry remObj2 = new WellKnownServiceTypeEntry
                                                    (
                    typeof(CAS.DataPorter.Lib.BaseStation.RemoteAccess.OPCAdvancedDataAccess),
                    "OPCAdvancedDataAccess",
                    WellKnownObjectMode.Singleton
                                                    );
                RemotingConfiguration.RegisterWellKnownServiceType(remObj2);
#endif
                EventLogMonitor.WriteToEventLogInfo("TcpServerChannel" + "..started", (int)Error.DataPorter_Servers);
            }
        }
Exemple #4
0
        private void CountSymulator()
        {
            while (true)
            {
                try
                {
                    //sprawdzanie czy zainstnialy powody do resetu lub inicjalizacji
                    if (valuesCMD[(int)commandsIdx.ResetAll])
                    {
                        Initialisation();
                        valuesCMD[(int)commandsIdx.ResetAll] = false;
                    }
                    if (valuesCMD[(int)commandsIdx.ResetToCurrent])
                    {
                        ResetSoft();
                        valuesCMD[(int)commandsIdx.ResetToCurrent] = false;
                    }

                    values[(int)signalsIdx.Rkpz_act] = valve2(values[(int)signalsIdx.Akpz], values[(int)signalsIdx.Akpzo], values[(int)signalsIdx.Rkpc]);
                    values[(int)signalsIdx.Rkpp_act] = valve2(values[(int)signalsIdx.Akpp], values[(int)signalsIdx.Akppo], values[(int)signalsIdx.Rkpc]);
                    values[(int)signalsIdx.Rkrz_act] = valve(values[(int)signalsIdx.Akrz], values[(int)signalsIdx.Rkrc], true);
                    values[(int)signalsIdx.Rkrp_act] = valve(values[(int)signalsIdx.Akrp], values[(int)signalsIdx.Rkrc], true);
                    //          double R2u    = valve(values[(int)signalsIdx.A2u  ],values[(int)signalsIdx.Rkrc ],true);
                    double Pu2_temp = values[(int)signalsIdx.Pu2];
                    values[(int)signalsIdx.Ru2]     = R2u_calculate(values[(int)signalsIdx.P2u], ref Pu2_temp, values[(int)signalsIdx.Puwys]);
                    values[(int)signalsIdx.Pu2_act] = Pu2_temp;
                    double mian  = values[(int)signalsIdx.Rkpp_act] + values[(int)signalsIdx.Rkpz_act] + values[(int)signalsIdx.R2o] + values[(int)signalsIdx.R3o];
                    double F2o   = ((F2i.OVal * (values[(int)signalsIdx.R3o] + values[(int)signalsIdx.Rkpp_act] + values[(int)signalsIdx.Rkpz_act]) + F3i.OVal * values[(int)signalsIdx.R3o] - Fui.OVal * values[(int)signalsIdx.Rkpp_act]) / mian);
                    double F3o   = ((F3i.OVal * (values[(int)signalsIdx.R2o] + values[(int)signalsIdx.Rkpp_act] + values[(int)signalsIdx.Rkpz_act]) + F2i.OVal * values[(int)signalsIdx.R2o] + Fui.OVal * values[(int)signalsIdx.Rkpp_act]) / mian);
                    double Fkpp  = (F2i.OVal * values[(int)signalsIdx.R2o] - F3i.OVal * values[(int)signalsIdx.R3o] - Fui.OVal * (values[(int)signalsIdx.R2o] + values[(int)signalsIdx.R3o] + values[(int)signalsIdx.Rkpz_act])) / mian;
                    double F2p   = F2o + Fkpp;
                    double F3p   = F3o - Fkpp;
                    double P2p   = F2p * (values[(int)signalsIdx.Rkrp_act] + values[(int)signalsIdx.R2p]);
                    double P3p   = F3p * values[(int)signalsIdx.R3p];
                    double dPkpp = Fkpp * values[(int)signalsIdx.Rkpp_act];
                    double dP23u = -P2p + P3p - dPkpp;
                    double P3u   = Fui.OVal * values[(int)signalsIdx.R3u] + values[(int)signalsIdx.Pu3] + values[(int)signalsIdx.P3Stat];
                    CountP(values[(int)signalsIdx.Rkrz_act], values[(int)signalsIdx.Rkrp_act], F2p, F3p, dP23u, P3u);
                    double dP2 = F2o * values[(int)signalsIdx.R2o] + P2p + F2i.OVal * (values[(int)signalsIdx.Rkrz_act] + values[(int)signalsIdx.R2z]) - values[(int)signalsIdx.P2];
                    F2i.count(-dP2);
                    double dP3 = F3o * values[(int)signalsIdx.R3o] + P3p + F3i.OVal * values[(int)signalsIdx.R3z] - values[(int)signalsIdx.P3];
                    F3i.count(-dP3);
                    double dPu = dP23u + Fui.OVal * values[(int)signalsIdx.Ru2] + P3u - Pu2_temp;
                    Fui.count(-dPu);
                    System.Threading.Thread.Sleep(TimeSpan.FromMilliseconds(values[(int)signalsIdx.cycle]));
                }
                catch (Exception)
                {
                    EventLogMonitor.WriteToEventLogInfo("Ec2Ec3Symulator has done wrong operation and it was restarted",
                                                        (int)CAS.Lib.RTLib.Processes.Error.CommServer_EC2EC3_symulator);
                    Initialisation();
                }
            }
        }
        static ApplicationConfiguration()
        {
            ConfigValues = ConfigurationManager.AppSettings;
            System.Configuration.Configuration CurrConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            ConfigFilePath = Path.GetDirectoryName(CurrConfig.FilePath) + Path.DirectorySeparatorChar;
            string AppInfo = "Base directory:" + AppDomain.CurrentDomain.BaseDirectory
                             + "| AppDomain.CurrentDomain.ToString():" + AppDomain.CurrentDomain.ToString()
                             + "| AppDomain.CurrentDomain.SetupInformation.ConfigurationFile:" + AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
                             + "| ConfigFilePath" + ConfigFilePath;

            EventLogMonitor.WriteToEventLogInfo("Configuration for: " + AppInfo, (int)Error.DataPorter_ApplicationConfiguration);
        }
Exemple #6
0
        /// <summary>
        /// Constructor for the HTTP on Soap Formatter server
        /// </summary>
        /// <param name="portNumber">TCP port number that this server is listening on</param>
        public HTTPSoapServer(int portNumber)
        {
            try
            {
                IDictionary formatterProps = new Hashtable();
                formatterProps["includeVersions"] = false;
                formatterProps["strictBinding"]   = false;

                SoapServerFormatterSinkProvider ftProvider = new SoapServerFormatterSinkProvider(formatterProps, null);
                //SoapServerFormatterSinkProvider ftProvider = new SoapServerFormatterSinkProvider();
                ftProvider.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full;

                ftProvider.Next = new System.Runtime.Remoting.MetadataServices.SdlChannelSinkProvider();
                m_Channel       = new HttpServerChannel(null, portNumber, ftProvider);
                EventLogMonitor.WriteToEventLogInfo("HTTPServerChannel, port:" + portNumber.ToString() + "..created", (int)Error.DataPorter_Servers);
            }
            catch (Exception ex)
            {
                EventLogMonitor.WriteToEventLogError("HTTPServerChannel not started, exception:" + ex.Message, (int)Error.DataPorter_Servers);
            }
        }
 /// <summary>
 /// Gets the data type from configuration row.
 /// </summary>
 /// <param name="myDSC">Tag description as row from configuration.</param>
 /// <returns></returns>
 internal static System.Type GetDataTypeFromConfig(ComunicationNet.TagsRow myDSC)
 {
   System.Type typetobereturned = null;
   if (!myDSC.IsDataTypeConversionNull())
   {
     try
     {
       typetobereturned = System.Type.GetType(myDSC.DataTypeConversion);
     }
     catch (Exception ex)
     {
       EventLogMonitor.WriteToEventLogInfo("Unknown type:" + myDSC.DataTypeConversion + "; conversion exception info:" + ex.Message, 128);
     }
     if (typetobereturned == null)
       EventLogMonitor.WriteToEventLogInfo("Unknown type:" + myDSC.DataTypeConversion, 166);
   }
   if (typetobereturned != null)
     return typetobereturned;
   else
     return typeof(object);
 }
Exemple #8
0
 /// <summary>
 /// reading of configuration XML file
 /// </summary>
 /// <param name="myData">target data set</param>
 /// <param name="filename">filename</param>
 public void readXMLFile(DataSet myData, string filename)
 {
     if (string.IsNullOrEmpty(filename))
     {
         EventLogMonitor.WriteToEventLogInfo(itemdscHasNotBeenSet, 39);
         return;
     }
     else if (filename == "item_dsc.xml")
     {
         FileInfo fi          = RelativeFilePathsCalculator.GetAbsolutePathToFileInApplicationDataFolder(filename);
         string   itemdscPath = fi.FullName;
         if (!new FileInfo(itemdscPath).Exists)
         {
             EventLogMonitor.WriteToEventLog(itemdscDoesNotExists, EventLogEntryType.Warning);
             return;
         }
         else
         {
             filename = itemdscPath;
         }
     }
     else if (!new FileInfo(filename).Exists)
     {
         EventLogMonitor.WriteToEventLog(string.Format(itemdscDoesNotExists, filename), EventLogEntryType.Warning);
         return;
     }
     myData.Clear();
     try
     {
         myData.ReadXml(filename, XmlReadMode.IgnoreSchema);
     }
     catch (Exception)
     {
         EventLogMonitor.WriteToEventLog(itemdscCannotBeOpened, EventLogEntryType.Warning);
     }
 }
Exemple #9
0
        private void CountSymulator()
        {
            while (true)
            {
                try
                {
                    #region resetowanie
                    //sprawdzanie czy zainstnialy powody do resetu lub inicjalizacji
                    if (valuesCMD[(int)commandsIdx.ResetAll])
                    {
                        Initialisation();
                        valuesCMD[(int)commandsIdx.ResetAll] = false;
                    }
                    if (valuesCMD[(int)commandsIdx.ResetToCurrent])
                    {
                        InitialisationMasterValues();
                        valuesCMD[(int)commandsIdx.ResetToCurrent] = false;
                    }
                    #endregion resetowanie
                    #region rownania symulatora
                    //  h3 = -(a3 * cycle) / (A3 * 1000) * Math.Sqrt(2 * g * h3) + ((1 - r2) * k2 * V2/100 * cycle)
                    //  / (A3 * 1000) + poprz_h3;
                    values[(int)signalsIdx.h3] = -(values[(int)signalsIdx.a3] * values[(int)signalsIdx.cycle])
                                                 / (values[(int)signalsIdx.A3] * 1000) * Math.Sqrt(2 * values[(int)signalsIdx.g] *
                                                                                                   values[(int)signalsIdx.h3]) + ((1 - values[(int)signalsIdx.r2]) *
                                                                                                                                  values[(int)signalsIdx.k2] * values[(int)signalsIdx.V2] / 100 * values[(int)signalsIdx.cycle])
                                                 / (values[(int)signalsIdx.A3] * 1000) + values[(int)signalsIdx.poprz_h3];
                    if (values[(int)signalsIdx.h3] < 0 || values[(int)signalsIdx.h3].CompareTo(double.NaN) == 0)
                    {
                        values[(int)signalsIdx.h3] = 0;
                    }
                    //h1 = -(a1 * cycle) / (A1 * 1000) * Math.Sqrt(2 * g * h1) + (a3 * cycle *Math.Sqrt(2 * g * h3))
                    //  / (A1*1000) + (r1 * k1 * V1/100 * cycle) / (A1 * 1000) + poprz_h1;
                    values[(int)signalsIdx.h1] = -(values[(int)signalsIdx.a1] * values[(int)signalsIdx.cycle])
                                                 / (values[(int)signalsIdx.A1] * 1000) * Math.Sqrt(2 * values[(int)signalsIdx.g] *
                                                                                                   values[(int)signalsIdx.h1]) + (values[(int)signalsIdx.a3] * values[(int)signalsIdx.cycle]
                                                                                                                                  * Math.Sqrt(2 * values[(int)signalsIdx.g] * values[(int)signalsIdx.h3]))
                                                 / (values[(int)signalsIdx.A1] * 1000) + (values[(int)signalsIdx.r1] * values[(int)signalsIdx.k1]
                                                                                          * values[(int)signalsIdx.V1] / 100 * values[(int)signalsIdx.cycle]) / (values[(int)signalsIdx.A1]
                                                                                                                                                                 * 1000) + values[(int)signalsIdx.poprz_h1];
                    if (values[(int)signalsIdx.h1] < 0 || values[(int)signalsIdx.h1].CompareTo(double.NaN) == 0)
                    {
                        values[(int)signalsIdx.h1] = 0;
                    }
                    // h4 = -(a4 * cycle) / (A4 * 1000) * Math.Sqrt(2 * g * h4) + ((1 - r1) * k1 * V1/100 * cycle)
                    //  / (A4 * 1000) + poprz_h4;
                    values[(int)signalsIdx.h4] = -(values[(int)signalsIdx.a4] * values[(int)signalsIdx.cycle])
                                                 / (values[(int)signalsIdx.A4] * 1000) * Math.Sqrt(2 * values[(int)signalsIdx.g]
                                                                                                   * values[(int)signalsIdx.h4]) + ((1 - values[(int)signalsIdx.r1]) * values[(int)signalsIdx.k1]
                                                                                                                                    * values[(int)signalsIdx.V1] / 100 * values[(int)signalsIdx.cycle]) / (values[(int)signalsIdx.A4]
                                                                                                                                                                                                           * 1000) + values[(int)signalsIdx.poprz_h4];
                    if (values[(int)signalsIdx.h4] < 0 || values[(int)signalsIdx.h4].CompareTo(double.NaN) == 0)
                    {
                        values[(int)signalsIdx.h4] = 0;
                    }
                    // h2 = -(a2 * cycle) / (A2 * 1000) * Math.Sqrt(2 * g * h2) + (a4 * cycle * Math.Sqrt(2 * g * h4))
                    //  / (A2 * 1000) + (r2 * k2 * V2/100 * cycle) / (A2 * 1000) + poprz_h2;
                    values[(int)signalsIdx.h2] = -(values[(int)signalsIdx.a2] * values[(int)signalsIdx.cycle])
                                                 / (values[(int)signalsIdx.A2] * 1000) * Math.Sqrt(2 * values[(int)signalsIdx.g]
                                                                                                   * values[(int)signalsIdx.h2]) + (values[(int)signalsIdx.a4] * values[(int)signalsIdx.cycle] * Math.Sqrt(2 *
                                                                                                                                                                                                           values[(int)signalsIdx.g] * values[(int)signalsIdx.h4])) / (values[(int)signalsIdx.A2] * 1000)
                                                 + (values[(int)signalsIdx.r2] * values[(int)signalsIdx.k2] * values[(int)signalsIdx.V2] / 100
                                                    * values[(int)signalsIdx.cycle]) / (values[(int)signalsIdx.A2] * 1000) +
                                                 values[(int)signalsIdx.poprz_h2];
                    if (values[(int)signalsIdx.h2] < 0 || values[(int)signalsIdx.h2].CompareTo(double.NaN) == 0)
                    {
                        values[(int)signalsIdx.h2] = 0;
                    }
                    #endregion rownania symulatora
                    #region  po oibliczeniach glownych:

                    //wyznaczenie rozniczek
                    values[(int)signalsIdx.dh1] = values[(int)signalsIdx.h1] - values[(int)signalsIdx.poprz_h1];
                    values[(int)signalsIdx.dh2] = values[(int)signalsIdx.h2] - values[(int)signalsIdx.poprz_h2];
                    values[(int)signalsIdx.dh3] = values[(int)signalsIdx.h3] - values[(int)signalsIdx.poprz_h3];
                    values[(int)signalsIdx.dh4] = values[(int)signalsIdx.h4] - values[(int)signalsIdx.poprz_h4];

                    //ustawianie alarmu
                    if (values[(int)signalsIdx.dh1] < values[(int)signalsIdx.alarm_delta] &&
                        values[(int)signalsIdx.dh2] < values[(int)signalsIdx.alarm_delta] &&
                        values[(int)signalsIdx.dh3] < values[(int)signalsIdx.alarm_delta] &&
                        values[(int)signalsIdx.dh4] < values[(int)signalsIdx.alarm_delta]
                        )
                    {
                        valuesCMD[(int)commandsIdx.Alarm_switchON]  = false;
                        valuesCMD[(int)commandsIdx.Alarm_switchOFF] = true;
                    }
                    else
                    {
                        valuesCMD[(int)commandsIdx.Alarm_switchON]  = true;
                        valuesCMD[(int)commandsIdx.Alarm_switchOFF] = false;
                    }

                    //poprz_h1=h1
                    values[(int)signalsIdx.poprz_h1] = values[(int)signalsIdx.h1];
                    //poprz_h2=h2
                    values[(int)signalsIdx.poprz_h2] = values[(int)signalsIdx.h2];
                    //poprz_h3=h3
                    values[(int)signalsIdx.poprz_h3] = values[(int)signalsIdx.h3];
                    //poprz_h4=h4
                    values[(int)signalsIdx.poprz_h4] = values[(int)signalsIdx.h4];
                    #endregion  po oibliczeniach glownych:
                    #region Generator
                    //generatory
                    values[(int)signalsIdx.y_sin] = Generator_sinus(values[(int)signalsIdx.t]);
                    values[(int)signalsIdx.y_pil] = Generator_pila(values[(int)signalsIdx.t]);
                    if (values[(int)signalsIdx.y_pil] >= (values[(int)signalsIdx.A_pil]) * values[(int)signalsIdx.b])
                    {
                        values[(int)signalsIdx.mn]++;
                    }
                    //ustalanie aktualnego czasu lub resetowanie go
                    if (valuesCMD[(int)commandsIdx.reset_t] == true)
                    {
                        values[(int)signalsIdx.t]           = 0;
                        valuesCMD[(int)commandsIdx.reset_t] = false;
                    }
                    else
                    {
                        values[(int)signalsIdx.t] = values[(int)signalsIdx.t] + values[(int)signalsIdx.cycle] / 1000;
                    }
                    #endregion Generator
                    #region toberemoved
                    ////jesli nie ma alarmu to zwiekszamy czas probkowania

                    //if ( valuesCMD[ (int)commandsIdx.Alarm_switchON ] == false )
                    //{
                    //  if ( zmiana )
                    //  {
                    //    values[ (int)signalsIdx.cycle ] = 2 * values[ (int)signalsIdx.cycle ];
                    //    zmiana = false;
                    //  }

                    //}
                    //if ( valuesCMD[ (int)commandsIdx.Alarm_switchON ] == true )
                    //{
                    //  if ( !zmiana )
                    //  {
                    //    values[ (int)signalsIdx.cycle ] = values[ (int)signalsIdx.cycle ] / 2;
                    //    zmiana = true;
                    //  }

                    //}
                    #endregion toberemoved
                    #region time
                    values[(int)signalsIdx.year]   = System.DateTime.Now.Year;
                    values[(int)signalsIdx.month]  = System.DateTime.Now.Month;
                    values[(int)signalsIdx.day]    = System.DateTime.Now.Day;
                    values[(int)signalsIdx.hour]   = System.DateTime.Now.Hour;
                    values[(int)signalsIdx.minute] = System.DateTime.Now.Minute;
                    values[(int)signalsIdx.second] = System.DateTime.Now.Second;
                    #endregion time
                    //odczekanie
                    System.Threading.Thread.Sleep((int)values[(int)signalsIdx.cycle]);
                }
                catch (Exception ex)
                {
                    EventLogMonitor.WriteToEventLogInfo("Demo simulator has done wrong operation and it was restarted; " + ex.Message,
                                                        (int)CAS.Lib.RTLib.Processes.Error.CommServer_EC2EC3_symulator);
                    Initialisation();
                }
            }
        }