Ejemplo n.º 1
0
        internal ushort ActivationWorkPlace(ChannelByClumpType ChByClumpType, SctuWorkPlaceActivationStatuses ActivationStatus)
        {
            SystemHost.Journal.AppendLog(ComplexParts.Sctu, LogMessageType.Note, "Sctu activation workplace");

            switch (ActivationStatus)
            {
            //мы хотим активировать рабочее место. прежде чем активировать рабочее место - проверим, что оно ещё не активировано
            case (SctuWorkPlaceActivationStatuses.WORKPLACE_IN_USE):
                //если рабочее место свободно - активируем его, при этом реализация записи в регистр активации сама позоботится об установке статуса активации для 'другого' рабочеего места
                if (ReadRegister(REG_WORKPLACE_ACTIVATION_STATUS) == (ushort)SctuWorkPlaceActivationStatuses.WORKPLACE_IS_FREE)
                {
                    //пишем статус активации
                    WriteRegister(REG_WORKPLACE_ACTIVATION_STATUS, (ushort)ActivationStatus);

                    //пишем какой аналоговый канал нам надо использовать
                    if (ChByClumpType != ChannelByClumpType.NullValue)
                    {
                        WriteRegister(REG_CHANNELBYCLAMPTYPE, (ushort)ChByClumpType);
                    }
                }

                break;

            //мы хотим заблокировать рабочее место - блокировкой рабочего места управляет WriteRegister - поэтому ничего не делаем
            case (SctuWorkPlaceActivationStatuses.WORKPLACE_IS_BLOCKED):
                break;

            //мы хотим освободить рабочее место
            case (SctuWorkPlaceActivationStatuses.WORKPLACE_IS_FREE):
                //если рабочее место занято - освобождаем его, при этом реализация записи в регистр активации сама позоботится об установке статуса активации для 'другого' рабочеего места
                if (ReadRegister(REG_WORKPLACE_ACTIVATION_STATUS) == (ushort)SctuWorkPlaceActivationStatuses.WORKPLACE_IN_USE)
                {
                    WriteRegister(REG_WORKPLACE_ACTIVATION_STATUS, (ushort)ActivationStatus);
                }

                break;
            }

            //возвращаем номер регистра статуса активации рабочего места вызывающей реализации
            return(REG_WORKPLACE_ACTIVATION_STATUS);
        }
Ejemplo n.º 2
0
 ushort IExternalControl.ActivationWorkPlace(ComplexParts Device, ChannelByClumpType ChByClumpType, SctuWorkPlaceActivationStatuses ActivationStatus)
 {
     return(_IoMain.ActivationWorkPlace(Device, ChByClumpType, ActivationStatus));
 }
Ejemplo n.º 3
0
 public ushort ActivationWorkPlace(ComplexParts Device, ChannelByClumpType ChByClumpType, SctuWorkPlaceActivationStatuses ActivationStatus)
 {
     return(Channel.ActivationWorkPlace(Device, ChByClumpType, ActivationStatus));
 }