АСУ элеватором

Автоматизация технологических процессов, системы управления, АСУ ТП, АСКУЭ, программирование ПЛК, человеко-машинный интерфейс, сетевое оборудование, протоколы
Аватара пользователя
CHANt
Профессионал
Сообщения: 565
Зарегистрирован: 13 окт 2012, 15:24

Re: АСУ элеватором

Сообщение CHANt »

Инструкция распределенного перехода JL имеет ряд рекомендуемых "конструкций" для разрешения в т.ч. ошибок Так как программа в контроллере выполняется в цикле, то каждый раздел обработки инструкции JU должен иметь "выход" на конец Вашего блока, что бы продолжалось выполнение последующей программы, при следующем проходе считывается значение (число) состояния и осуществляется заход в нужное
Шаблон общего вида, ну к примеру, для трех переходов:

Код: Выделить всё

 L     #STATE_WORD; //загрузка слова состояния для перехода
      JL    GT_3; // метка перехода, которая указывает на конец списка
      JU    ST_0; //переход на начальное состояние алгоритма
      JU    ST_1; // переход на 1 состояние алгоритма
      JU    ST_2; // переход на i состояние алгоритма (если в #STATE_WORD число>3, больше чем объявлено инструкций JU, то тогда JL перебросит на метку ошибки GT_3)
GT_3: JU    Err; // переход на метку обработок ошибок инструкции JL
NETWORK
TITLE =Обработка начального состояния
ST_0: A     #Входной параметр 1; // условие 1
           A     #Входной параметр 2; //условие 2
           JCN   End; //если условие не выполнено уход на метку конца блока
           =     #Выходная переменная 1; //Действие 1
           =     # Выходная переменная 2; //Действие 2
           =     # Временная переменная i; //Действие i
           L     1; //Запись номера следующего перехода (состояния)
           T     #STATE_WORD; //загрузка номера следующего состояния
           JU    End; //Безусловный переход на конец блока
NETWORK
TITLE =Обработка состояния 1
ST_1:  A     # Входной параметр 1; // условие 1
            AN    # Входной параметр 1; //условие 2
           JCN   Tr01; //если условие не выполнено уход на метку ветвления алгоритма
           =     #Временная переменная 1; //Действие 1
           =     # Временная переменная 2; //Действие 2
           =     # Временная переменная i; //Действие i
            L     2; //переход по дуге графа в требуемое состояние
            T     #STATE_WORD; //загрузка номера следующего состояния
            JU    End; //Безусловный переход на конец блока
Tr01: A     # Входной параметр 1; // номер перехода (дуги) автомата и условие 1
          AN    # Входной параметр 1; //условие 2
          JCN   End; //если условие не выполнено уход на метку
          L     0; //переход по дуге графа в начальное состояние
          T     #STATE_WORD; //загрузка номера следующего состояния
          JU    End; //Безусловный переход на конец блока
И т.д.
NETWORK
TITLE =Обработка ошибки распределенного перехода
Err:  CLR
       =      Выходной параметр 1; 
        =      Выходной параметр 2; 
        =      Выходной параметр i; 
      L     0; //и загрузить число 0 начальное состояние
      T     #STATE_WORD; //в слово состояния
      JU    End; //выйти на конец блока
End:  NOP   0; // конец блока

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: АСУ элеватором

Сообщение service »

написал программу для последовательного запуска маршрутов с "хвоста" к "голове. в кодесисе (легче проверять). работает. программа состоит из однотипных частей (строки 2-6). как правильно сделать это с помощью функциональных блоков в WinPLC?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: АСУ элеватором

Сообщение service »

строки 3,4,5,6
У вас нет необходимых прав для просмотра вложений в этом сообщении.

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: АСУ элеватором

Сообщение service »

если так делаю, то ничего не работает. объясните, как с этими FB,DB правильно работать?
У вас нет необходимых прав для просмотра вложений в этом сообщении.

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: АСУ элеватором

Сообщение ward »

такие вещи проще делать на STL, а не на ладе

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: АСУ элеватором

Сообщение service »

c stl сложно, но готов учиться)) сам принцип понять...

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: АСУ элеватором

Сообщение ward »

самый первый пост на этой странице, начните плясать от него, а дальше все получится

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: АСУ элеватором

Сообщение service »

без FB и DB у меня получится, например для 12 механизмов около 50 строчек. для дальнейшей наладки на обьекте эти строчки для меня будут читабельнее, чем первый пост. я хотел бы именно эти 50 строк оптимизировать с помощью FB и DB.

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: АСУ элеватором

Сообщение ward »

а что не получается?
#trigger не делай темповой никогда

service
Специалист
Сообщения: 254
Зарегистрирован: 16 ноя 2012, 10:23

Re: АСУ элеватором

Сообщение service »

это вопрос по обучению новичка)) вставляешь в нетворк OB1 созданный FB1 и называешь его DB1. в следущий нетворк вставляешь FB1 и называешь DB2. в FB1 логика одна, а DB обрабатывают входные сигналы и выдают выходные, но каждый свои? или их вызывать нужно? в общем с FB и DB проблемы...

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: АСУ элеватором

Сообщение ward »

можешь и в один нетворк вставить, все равно будут последовательно обрабатываться. А так все правильно, должно работать. Как я и написал возможные проблемы изза "#trigger не делай темповой никогда". Темповые переменные я вообще стараюсь не использовать, а если использую, то сначала обнуляю, потом использую, лучше создай в STAT области DB твоего FB

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: АСУ элеватором

Сообщение Михайло »

Да, у переменных типа TEMP есть особенность... Гораздо более понятно и четко работают переменные типа STAT. Если поменять TEMP на STAT и все работает, значит играют свою роль особенности временных переменных.
В чем их особенность? Значение переменных TEMP нужно использовать до окончания текущего цикла. После перехода на следующий цикл значение в этой переменной может измениться, т.е. не следует ждать, что там сохранилось значение, записанное в предыдущем цикле (хотя такое иногда может быть). Эти переменные вообще не следует применять, если нужно хранить значение более одного цикла программы. В основном применяются при "многоэтажных" математических вычислениях.

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: АСУ элеватором

Сообщение ward »

Господа, добрый день!
Настало и мое время автоматизировать элеватор)))
Перечитал тему, вопросов канеш много))
У кого нить есть документация по проектированию АСУТП элеватора, или список?
Спасибо!

Михайло
Администратор
Сообщения: 4094
Зарегистрирован: 19 сен 2012, 19:16

Re: АСУ элеватором

Сообщение Михайло »

полагаю тебе нужна литература и всякие ГОСТы?

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: АСУ элеватором

Сообщение ward »

да, если вдруг у кого остался список, пока изучаю "ПРИКАЗ
от 21 ноября 2013 г. N 560 ОБ УТВЕРЖДЕНИИ ФЕДЕРАЛЬНЫХ НОРМ И ПРАВИЛ
В ОБЛАСТИ ПРОМЫШЛЕННОЙ БЕЗОПАСНОСТИ "ПРАВИЛА БЕЗОПАСНОСТИ
ВЗРЫВОПОЖАРООПАСНЫХ ПРОИЗВОДСТВЕННЫХ ОБЪЕКТОВ ХРАНЕНИЯ
И ПЕРЕРАБОТКИ РАСТИТЕЛЬНОГО СЫРЬЯ

ward
Специалист
Сообщения: 415
Зарегистрирован: 12 ноя 2012, 08:44

Re: АСУ элеватором

Сообщение ward »

Есть пока нерешенный вопрос, может кто подскажет:
Как считывать температуру с термоподвесок, на одной термоподвеске 3 датчика, они имеют (!) один общий провод, при подключении к термопреобразователям (НПТ-2 ОВЕНА) - сигнал сходит с ума и неправильно работает. Как мне считать эту температуру пока не нашел решения из-за этого общего провода. Планирую делать на базе Сименса, с модбасом связываться не хочу. Мультиплексоров не найду подходящих. Такая вот беда.
Спасибо!

Ответить