Пример #1
0
        static void Main()
        {
            var journal    = new ConsoleJournal();
            var connection = new RS485Master(journal, "/dev/ttySP1", 57600, false);

            connection.Open();

            while (true)
            {
                journal.Debug("try to write frequency", MessageLevel.System);
                if (connection.Write(0, 257, new ushort[] { 100 }))
                {
                    journal.Info("broadcast write success", MessageLevel.System);
                }
                else
                {
                    journal.Warning("broadcast write timeout", MessageLevel.System);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Установка параметров частотника для разных рамп (по рекомендации Дарека от 19.10.2015)
        // read before set new value
        // 40325 - value = 5 for conveyor mode or value = 0 for motion mode
        /// </summary>
        internal void SetInvertorMode()
        {
            if (Status != EngineStatus.Stopped)
            {
                return;
            }

            try
            {
                mConnection.Open();
                if (!mConnection.IsOpen())
                {
                    return;
                }

                const ushort kConveyorModeSetting = 5;
                const ushort kMotionModeSetting   = 0;

                #region read
                var rv = mConnection.ReadHoldings(mModbusId, 325, 1);
                if (rv == null)
                {
                    return;
                }

                //if ((Engine.Mode == EngineMode.Conveyor && rv[0] != kConveyorModeSetting) ||
                if (Engine.Mode == EngineMode.Motion && rv[0] != kMotionModeSetting)//)
                {
                    return;

                    var rampMode = kMotionModeSetting;
                    //var rampMode = 0;
                    //var rampMode = Engine.Mode == EngineMode.Conveyor ? kConveyorModeSetting : kMotionModeSetting;
                    mJournal.Debug(string.Format("попытка Установки {0} в {1} по {2}", mModbusId, Engine.Mode, rampMode), MessageLevel.System);

                    #region write
                    //return; // запрещаем смену рамп
                    if (mConnection.Write(mModbusId, 325, new[] { rampMode }))
                    {
                        mJournal.Debug(":: успешно", MessageLevel.System);

                        //mJournal.Debug(string.Format("{0}: modbus success write", modbusId), MessageLevel.System);
                    }
                    else
                    {
                        mJournal.Debug(":: защита при смене рампы", MessageLevel.System);
                    }

                    #endregion
                }

                #endregion
            }
            catch (Exception e)
            {
                if (e is SocketException ||
                    e is TimeoutException ||
                    e is IOException)
                {
                    mConnection.Close();
                }
                else
                {
                    throw;
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Поехали
        /// </summary>
        /// <param name="direction"></param>
        private static void Start(bool direction)
        {
            mConnection.Open();
            if (!mConnection.IsOpen())
            {
                return;
            }

            // включать можем только в активном режиме
            if (State != SystemState.Active)
            {
                return;
            }

            switch (Mode)
            {
            case EngineMode.Motion:
            {
                // при обновлении движения по педали - удерживаем выставленную уставку на скорость
                ResetMotionSpeedToMin.Stop();

                // запускаемся только если все двигателя до этого были нормально остановлены
                if (IsAllStopped())
                {
                    foreach (var invertor in Invertors)
                    {
                        invertor.Direction(direction);
                    }

                    UpdateMotionFrequencies();

                    mLastDirection = direction;
                    mUz2.On(true);
                }
                else
                {
                    if (IsMotionContinue(direction))
                    {
                        UpdateMotionFrequencies();

                        mUz2.On(true);
                    }
                    else
                    {
                        // нажата другая педаль, но мы еще не остановились по предыдущему направлению
                        // поэтому останавливаем и как только все остановится - то начнется движение в другую сторону
                        Stop();
                    }
                }
            }
            break;


                /*
                 * case EngineMode.Conveyor:
                 * {
                 *  var freq = ((ushort)ConveyorFrequencies[mConveyorSpeed.ValueAsInt].ValueAsInt);
                 *  freq = (ushort)(freq < 100 ? 100 : freq);
                 *  mConveyor.Frequency(freq);
                 *
                 *  // всегда в одну сторону - только вперед :)
                 *  // запускаемся только если все до этого были нормально остановлены
                 *  if (!IsAllStopped()) return;
                 *
                 *  mConveyor.Direction(true);
                 *  mConveyor.On(false);
                 * }
                 * break;
                 */
            }
        }