Esempio n. 1
0
 /// <summary>
 /// if(PositionRead == PositionWrite) checkWriteReadEqually = true;
 /// </summary>
 private void CheckWREqually(LimitsCpu limitsCpu)
 {
     if (limitsCpu.PositionRead == limitsCpu.PositionWrite)
     {
         checkWriteReadEqually = true;
     }
     else
     {
         checkWriteReadEqually = false;
     }
 }
Esempio n. 2
0
        // показать write and read
        private void showSettindBtn_Click(object sender, EventArgs e)
        {
            LimitsCpu limitsCpu = loadCpu.ReadLimits();

            if (limitsCpu == null)
            {
                showSettindBtn.BackColor = Color.Red;
                return;   // error connect
            }
            showSettindBtn.BackColor = Color.Green;
            writeSetLabel.Text       = limitsCpu.PositionWrite.ToString();
            readSetLabel.Text        = limitsCpu.PositionRead.ToString();
        }
Esempio n. 3
0
 public LimitsCpu ReadLimits()
 {
     for (int i = 0; i < numberOfConnectionAttempts; i++)      // counter
     {
         LimitsCpu limitsCpu = ReadLimitsLogics();
         if (limitsCpu != null)
         {
             statusConnCpu = true;
             CheckWREqually(limitsCpu);                                  // for check
             return(limitsCpu);                                          // There are data
         }
         Thread.Sleep(Properties.Settings.Default.LoadCpuExceptionTime); //msec
     }
     statusConnCpu = false;
     //TODO need a logger
     return(null);   // There aren't data
 }
Esempio n. 4
0
 private int LocationIndexDb(LoadCpu loadCpu, LimitsCpu limitsCpu)
 {
     // last index BD
     if (limitsCpu.PositionRead == limitsCpu.PositionMax)
     {
         if (limitsCpu.PositionRead != limitsCpu.PositionWrite)
         {
             limitsCpu.PositionRead = limitsCpu.PositionMin;
             return(limitsCpu.PositionMin);
         }
         else
         {
             return(limitsCpu.PositionRead);
         }
     }
     // not to do
     if (limitsCpu.PositionRead == limitsCpu.PositionWrite)
     {
         return(limitsCpu.PositionRead);  // - addPositionIndex;
     }
     // ok
     if (limitsCpu.PositionRead >= limitsCpu.PositionMin - addPositionIndex)
     {
         if (CheckDateTimeCpu(loadCpu, limitsCpu))
         {
             return(limitsCpu.PositionWrite + addPositionIndex);  // idex > Write --> new value (will Write < Read)
         }
         else
         {
             return(limitsCpu.PositionRead + addPositionIndex);   // (will Write > Read)
         }
     }
     else
     {
         // bad
         return(limitsCpu.PositionMin - addPositionIndex);
     }
 }
Esempio n. 5
0
        private LimitsCpu ReadLimitsLogics()
        {
            LimitsCpu limitsCpu = null;

            try
            {
                using (var plc = new Plc(
                           GetCpuTypeConnect.GetCpuType(Properties.Settings.Default.CpuType),
                           Properties.Settings.Default.IpCpu,
                           Properties.Settings.Default.RackCpu,
                           Properties.Settings.Default.SlotCpu)) //"172.17.132.200"
                {
                    Thread.Sleep(timeWaitForOpenConnectCpu);
                    plc.Open();
                    if (plc.IsConnected)
                    {
                        limitsCpu = new LimitsCpu();
                        limitsCpu.PositionWrite = GetPlcRead(plc, Properties.Settings.Default.DataBlockLimit, 0);
                        limitsCpu.PositionRead  = GetPlcRead(plc, Properties.Settings.Default.DataBlockLimit, 2);
                        limitsCpu.PositionMin   = GetPlcRead(plc, Properties.Settings.Default.DataBlockLimit, 4);
                        limitsCpu.PositionMax   = GetPlcRead(plc, Properties.Settings.Default.DataBlockLimit, 6);
                    }
                    else
                    {
                        limitsCpu = null;
                        //TODO need a logger
                    }
                }
            }
            catch (Exception ex)
            {
                limitsCpu = null;
                //TODO need a logger
            }
            return(limitsCpu);
        }
Esempio n. 6
0
        public WorkCpu()
        {
            LoadCpu loadCpu = new LoadCpu();

            while (true)
            {
                // STOP
                if (Form1.stopThreadAll)
                {
                    return;
                }

                workCpuStatus = true;

                // Makes the status, for a long time there was no connection with the CPU
                NoConnectionTimeSec(loadCpu);

                // select limits---------------
                LimitsCpu limitsCpu = loadCpu.ReadLimits();
                if (limitsCpu == null)
                {
                    continue;   // error connect
                }
                if ((limitsCpu.PositionRead < limitsCpu.PositionMin) ||
                    (limitsCpu.PositionRead > limitsCpu.PositionMax))
                {
                    loadCpu.WritePositionLimitsCpu(limitsCpu.PositionMin);   // write PositionRead
                    continue;
                }
                //------------------------------

                writeIndex = limitsCpu.PositionWrite;
                readIndex  = limitsCpu.PositionRead;


                // new PositionRead + 1
                int newIndexDb = LocationIndexDb(loadCpu, limitsCpu);
                // if there isn't data
                if (newIndexDb < limitsCpu.PositionMin)
                {
                    FindMaxIdFromSql();
                    continue;
                }
                else
                {
                    // loading data all CPU--------
                    Model_dateTime modelDTBase = loadCpu.ReadDatetime(newIndexDb);
                    if (modelDTBase == null)
                    {
                        continue;   // error connect
                    }
                    if (modelDTBase.Id_DateTime == -1)
                    {
                        loadCpu.WritePositionLimitsCpu(newIndexDb);   // write PositionWrite (+1)
                        continue;
                    }
                    //------------------------------

                    idMaxSql = modelDTBase.Id_DateTime;  // save ID to static

                    // ok <<< Write id and DateTime to SQL
                    WriteDateTimeToSql(loadCpu, modelDTBase, newIndexDb);
                }

                if (Form1.stopThreadAll)
                {
                    return;                         // STOP
                }
                Thread.Sleep(Properties.Settings.Default.timerWorkCycle);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Write перегнал Read (1 цикл)
        /// </summary>
        /// <returns>
        /// false - продолжать с Read (+2)
        /// true - продолжать с Write (+2)
        /// </returns>
        private bool CheckDateTimeCpu(LoadCpu loadCpu, LimitsCpu limitsCpu)
        {
            //----------------------------------------------------------------
            // loading data all CPU
            var tempDtRead  = loadCpu.ReadDatetime(limitsCpu.PositionRead);
            var tempDtWrite = loadCpu.ReadDatetime(limitsCpu.PositionWrite);

            if ((tempDtRead == null) || (tempDtWrite == null))
            {
                return(false);
            }
            long dtRead  = tempDtRead.Id_DateTime;
            long dtWrite = tempDtWrite.Id_DateTime;

            // no connections > 1 hour
            if ((!isNoConnectionTimeSec) && (dtRead < dtWrite))
            {
                // after (перегнал)
                return(false);
            }
            //----------------------------------------------------------------
            long dtdtReadAfterWrite;

            if ((limitsCpu.PositionWrite + addPositionIndex > limitsCpu.PositionMax) || (limitsCpu.PositionWrite < limitsCpu.PositionMin))
            {
                var tempDtdtReadAfterWrite = loadCpu.ReadDatetime(limitsCpu.PositionMin);
                if (tempDtdtReadAfterWrite == null)
                {
                    return(false);
                }
                else
                {
                    dtdtReadAfterWrite = tempDtdtReadAfterWrite.Id_DateTime;
                }
            }
            else
            {
                var tempDtdtReadAfterWrite = loadCpu.ReadDatetime(limitsCpu.PositionWrite + addPositionIndex);
                if (tempDtdtReadAfterWrite == null)
                {
                    return(false);
                }
                else
                {
                    dtdtReadAfterWrite = tempDtdtReadAfterWrite.Id_DateTime;
                }
            }

            if (dtdtReadAfterWrite == 0)
            {
                // before
                return(false);
            }

            // no connections > 1 hour
            if (isNoConnectionTimeSec)
            {
                // after (перегнал)
                if ((dtRead < dtWrite) && (dtRead > dtdtReadAfterWrite))
                {
                    // true - Is present to SQL (dtdtReadAfterWrite)
                    if (!IsCheckPresent(dtdtReadAfterWrite))
                    {
                        return(true);
                    }
                }
            }
            // before
            return(false);
        }