Показано с 1 по 3 из 3

Тема: Помогите новичку с алгоритмом. ПЛК73

  1. #1

    По умолчанию Помогите новичку с алгоритмом. ПЛК73

    Всем привет. Я хочу реализовать выбор режима работы. Всего будет 4 режима. Выбор подразумевается нажатием кнопок "альт + Вверх" и вывода номера режима на экран. Основная проблема в алгоритме выбора режима. Алгоритм ниже который я написал не работает. Как можно реализовать на языке ST описанный принцип работы?
    Код:
    CASE Key OF
    	136: plus:=TRUE;
    	132: minus:=TRUE;
    ELSE
    	plus:=FALSE;
    	minus:=FALSE;
    END_CASE
    Screen:=GetWorkScreen();
    IF Screen=0 THEN
    	ShowString(0,0,0, 'Режим Работы');
    	ShowDint(0,13,0, '%d', rezh_rab);
    	rezh_rab:=1;
    	IF plus THEN
    		rezh_rab:=rezh_rab+1;
            END_IF
    END_IF

  2. #2

    По умолчанию

    Код:
    KBRD //"имя клавиатуры" в конфигурации
    VAR
     R_TR : R_TRIG; (*Триггер для клавиатуры*)
     RezhRab : BYTE := 1; (*Режим работы*)
     RefTON : TON; (*Таймер обновления ЖКИ ПЛК*)
     Str1 : STRING; (*Текстовые переменные выводимых строк*)
     Str2 : STRING;
     Str3 : STRING;
     Str4 : STRING;
    END_VAR
    
    R_TR(CLK := KBRD = 132 OR KBRD = 136);
    
    IF R_TR.Q THEN
     CASE KBRD OF
      132 :
          RezhRab := RezhRab - 1;
      136 :
          RezhRab := RezhRab + 1;
     END_CASE
    END_IF
    
    IF RezhRab = 0 THEN RezhRab := 4; END_IF	(*Круговая прокрутка назад*)
    IF RezhRab = 5 THEN RezhRab := 1; END_IF	(*Круговая прокрутка вперед*)
    
    CASE RezhRab OF
     1 :
        Str1 := 'Режим1_Строка1';	(*Например*)
        Str2 := 'Режим1_Строка2';
        Str3 := 'Режим1_Строка3';
        Str4 := 'Режим1_Строка4';
     2 :
        Str1 := 'Режим2_Строка1';	(*Например*)
        Str2 := 'Режим2_Строка2';
        Str3 := 'Режим2_Строка3';
        Str4 := 'Режим2_Строка4';
     3 :
        Str1 := 'Режим3_Строка1';	(*Например*)
        Str2 := 'Режим3_Строка2';
        Str3 := 'Режим3_Строка3';
        Str4 := 'Режим3_Строка4';
     4 :
        Str1 := 'Режим4_Строка1';	(*Например*)
        Str2 := 'Режим4_Строка2';
        Str3 := 'Режим4_Строка3';
        Str4 := 'Режим4_Строка4';
    END_CASE
    
    RefTON(IN := NOT RefTON.Q, PT := T#300MS);
    IF RefTON.Q THEN
        ClearScreen(0);
        ShowString(0,0,0,Str1);
        ShowString(0,0,1,Str2);
        ShowString(0,0,2,Str3);
        ShowString(0,0,3,Str4);
    END_IF
    Единственный нюанс моего способа работы с ЖКИ ПЛК - нужно делать преобразования всех значений в текст, потому как на экран выводятся только тестовые значения. Экран используется один, меняется только его содержимое, количество экранов, если можно так выразиться, неограниченно и про GetWorkScreen можно забыть. Можно организовать работу ЖКИ в SINGLE_MODE (я так и делаю), чтобы пользователи не "шарились", где ни попадя.
    Последний раз редактировалось Spawn; 31.08.2020 в 01:07. Причина: Исправил условие работы триггера

  3. #3

    По умолчанию

    Спасибо, ваш код работает так как я и хотел.

Похожие темы

  1. Помогите с алгоритмом
    от RR2019 в разделе Среда программирования OWEN Logic
    Ответов: 0
    Последнее сообщение: 11.07.2019, 10:55
  2. Помогите новичку
    от кибернетик в разделе Трёп (Курилка)
    Ответов: 21
    Последнее сообщение: 02.04.2016, 21:09
  3. помогите с алгоритмом авторотации по времени наработке
    от armstrong в разделе Помощь Разработчикам
    Ответов: 0
    Последнее сообщение: 06.08.2015, 09:39
  4. Помогите новичку.ПЛК73
    от olegus4 в разделе ПЛК63/73
    Ответов: 4
    Последнее сообщение: 23.04.2015, 19:17
  5. Помогите новичку
    от RAzov112 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 18.02.2011, 09:25

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •