Код:
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 (я так и делаю), чтобы пользователи не "шарились", где ни попадя.