Просмотр полной версии : ПЛК 73. Отключение дефолтовых функций кнопок
Alex12345
09.05.2012, 23:51
Здравствуйте, уважаемые форумчане !
В нете искал, руководство по пользователя читал, по программированию тоже... и так нигде не нашел, как отключить функции кнопок, которые прописаны по умолчанию :confused: :
Например если подержать кнопку "ввод" на экране появиться окно "конфигурация плк". Еще хуже то, что стрелки вверх вниз листают рабочие экраны в тех случаях, когда это совсем ненужно! При нажатии этой кнопки изменяется n в SetWorkScreen(n). На первое время избавился так:
IF ((kb = 8) OR (kb=4)) AND (flag3= FALSE) AND (flag4=FALSE)
THEN
s1:= GetWorkScreen () ;
SetWorkScreen(s1);
END_IF
все бы ничего, но при нажатии этих кнопок экран начинает обновляться.:( очень некрасиво выходит, особенно в режиме уставки !:mad:
Помогите, пожалуйста их отключить . Очень надеюсь на вашу помощь. Заранее огромное спасибо )))
А вы сделайте 1 (один экран). Я так делаю когда нужно много (> 6..8 ) экранов. Алгоритм по сути тот же, и проще динамически менять набор экранов по состоянию
S
Поначалу делал ввод с экранов. Надоело. Ввод - в конфигурации, на экранах - только инфа. Если нужно чем-то управлять - пуск/стоп в нужном экране делает реверс пуска
Alex12345
10.05.2012, 01:36
программа вышла на 360 строчек.. не хотелось бы мне переходить на один экран. (используется 5 или 6 экранов)
Ввод - в конфигурации, на экранах - только инфа.
я в курсе, но хотелось бы сделать так, что бы эта инфа не появлялась и не смущала заказчика...
(используется 5 или 6 экранов)
хотелось бы сделать так, что бы эта инфа не появлялась
Вы уж определитесь батенька
Alex12345
10.05.2012, 02:37
Вы уж определитесь батенька
я имею ввиду, что нужно что бы конфигурация не показывалась на экране...
неужели для этого нужно в программе использовать один рабочий экран ?
Здравствуйте, уважаемые форумчане !
В нете искал, руководство по пользователя читал, по программированию тоже... и так нигде не нашел, как отключить функции кнопок, которые прописаны по умолчанию :confused: :
Например если подержать кнопку "ввод" на экране появиться окно "конфигурация плк". Еще хуже то, что стрелки вверх вниз листают рабочие экраны в тех случаях, когда это совсем ненужно! При нажатии этой кнопки изменяется n в SetWorkScreen(n). На первое время избавился так:
IF ((kb = 8) OR (kb=4)) AND (flag3= FALSE) AND (flag4=FALSE)
THEN
s1:= GetWorkScreen () ;
SetWorkScreen(s1);
END_IF
все бы ничего, но при нажатии этих кнопок экран начинает обновляться.:( очень некрасиво выходит, особенно в режиме уставки !:mad:
Помогите, пожалуйста их отключить . Очень надеюсь на вашу помощь. Заранее огромное спасибо )))
Присоединяюсь к вопросу.
Очень не хотелось бы, чтобы персонал мог свободно выходить в меню.
Вопрос модераторам:
каким образом можно отключить функцию входа в меню (поставить пароль и.т.п.)?
А что плохого - пусть смотрят. Секретные параметры ?
Если персонал начнёт влезать в конфигурацию ПЛК - бед потом не оберёшься.
ну влезут, ну поcмотрят - и чего ?
Валенок, а вы и есть походу разработчик? Не имея ответа...зачем поститься? Тоже присоединяюсь к вопросу...
Разработчик чего ? Я - пользователь
я имею ввиду, что нужно что бы конфигурация не показывалась на экране...
Галки там есть - чтоб не видно было. В РЭ есть.
Александр123456
10.05.2012, 14:54
Разработчик чего ? Я - пользователь
Галки там есть - чтоб не видно было. В РЭ есть.
Галки то там есть, да вот есть там следующий глюк,
что если эти галки видимости убрать, то меню конфигурации становятся недоступными, НО...
НО если контроллер перезагрузить ПЕРЕДЕРНУВ питание, и войти в это меню, то подменю, которые были отключены, становятся вдруг видимыми и доступными для конфигурирования, НО...
НО не долго, если выйти из этого меню в рабочее, то скрытые галочками меню больше не доступны до СЛЕДУЮЩЕГО СБРОСА ПИТАНИЯ.
вобшем как то так.
ну влезут, ну поcмотрят - и чего ?
Я всегда удивлялся, когда люди, вместо того, чтобы на вопрос поставленный ответить, начинают задавать свои.
Если знаете - скажите...
Снял все галочки "Показывать в меню".
Всё равно всё отображается.
если перезагрузить ПЕРЕДЕРНУВ питание, .. становятся вдруг видимыми и доступными для конфигурирования, если выйти из этого меню в рабочее, то скрытые галочками меню больше не доступны до СЛЕДУЮЩЕГО СБРОСА ПИТАНИЯ.
Ну Вы не первый кто это заметил. Лично я этот глюк нашел удобным - пришел, дернул, посмотрел, вышел. Редактирование-то можно запретить, а вот состояние Di посмотреть при отладке - милое дело.
А что тетечки - да пусть смотрят скока хочут если додумаются передернуть питание
Я всегда удивлялся, когда люди, вместо того, чтобы на вопрос поставленный ответить, начинают задавать свои
Иногда, сударь, такие вопросы задают - что без встречных не поймешь.
А Вы при просмотре "секретной" информации - перезагрузитесь автоматически
Кстати лишние подменюшки - закрываются.
Разработчик чего ? Я - пользователь
И вас, как пользователя, не интересует ответ разработчика на данный вопрос?;) :D
Эти вопросы я задавал еще пару лет назад. Ответа нет. Дальше см. пост #15
Alex12345
11.05.2012, 13:30
Дальше см. пост #15
Очень неплохо было бы закрепить линком. Я не нашел (((
Эти вопросы я задавал еще пару лет назад. Ответа нет.
Дык может ответ за два года появился....а вы забегаете перед паровозом)))))))))))
Александр Приходько
11.05.2012, 15:09
Товарищи, предлагаю закончить холивар.
На самом деле если внимательно прочитать документацию, то все встанет на свои места.
Что нам надо - это просто напросто запретить стандартный функционал кнопок.
Как сделать - это позволяем делать монопольный режим.
Что такое монопольный режим?
Это когда у вас есть возможность делать с экраном и кнопками что вам захочется. В данном режиме у кнопок нет "стандартного" функционала, вы его придумываете сами.
Как использовать?
Для этого нужно использовать библиотеку IND_MODE. Можно ПЛК всегда использовать в монопольном режиме, можно предусмотреть программное переключение.
Я подготовил небольшой пример. Кнопки F1 и F2 переводят режим рпботы дисплея из рабочего в монопольный и обратно.
В обоих случаях на экран выводится текст и инкремент по кнопке ВВОД. Но если в рабочем режиме кнопку ВВОД удержать более 2-х секунд, то вы попадете в конфигурацию. В монопольном режиме, всего лишь работает инкремент.
Смотрите пример, там все с комментариями.
Serega_80
06.07.2016, 22:56
Здравствуйте! Подскажите, пожалуйста, как в монопольном режиме вывести значение переменной на экран? В обычном режиме пишу: ShowReal(0,0,0,'%2.0f', var);
А в монопольном режиме такое не прокатывает. Подскажите, как надо. Заранее благодарен!
lara197a
06.07.2016, 23:19
в инструкции к бибкам все написано
25315
в инструкции к бибкам все написано
25315
А можно поподробнее?
В приведенном Вами примере на экран выводится текстовое сообщение, но никак не значение переменной.
Вопрос, как мне кажется состоит в том, а можно ли в монопольном режиме выводить на экран именно значения переменных (INT, REAL и.т.п.).
Serega_80
07.07.2016, 07:48
Интересуют именно переменные. Сообщения выводить понятно как.
Естественно, перевести в строку и вывести.
lara197a
07.07.2016, 09:01
как верно писал асо. переводим реал в стринг.
На самом деле это намного удобнее.
К примеру создаем ФБ, где формируем сообщения по ситуации.
этот режим носит только информационный характер.
Serega_80
07.07.2016, 09:20
Благодарю! Буду пробовать.
как верно писал асо. переводим реал в стринг.
На самом деле это намного удобнее.
К примеру создаем ФБ, где формируем сообщения по ситуации.
этот режим носит только информационный характер.
Небольшой вопрос.
С аналогового входа бывает, приходят числа, у которых слишком большая точность (кол-во знаков после запятой).
Где - то это обсуждалось, уже забыл - как ограничить точность представления числа?
lara197a
07.07.2016, 10:49
умножайте на 10 и переводите из реал в инт.
получите значение в размере 2 байта.
при отображении укажите 1 точка после запятой.
kolyan еще можно использовать ROUND для реалов.
kolyan еще можно использовать ROUND для реалов.
Это функция?
Если да, то из какой библиотеки?
Не из Оската?
Да, это функция в oscat basic
Собственно вот импортируйте
Да, это функция в oscat basic
Собственно вот импортируйте
Спасибо.
Но там опять какие-то подфункции скрытые используются.
Компилятор ругается на X := setup.DECADES[LIMIT(0,N,8)];
Буду смотреть.
А, сорри, там что-то в проекте надо добавить, дома смогу посмотреть где и что...
Скачайте архив заново. Только аккуратнее с импортом Global переменных, он перезатрет что у вас уже там есть. Лучше в голый проект импортните, там одна строчка всего добавляется и добавьте руками.
Спасибо.
Но там опять какие-то подфункции скрытые используются.
Компилятор ругается на X := setup.DECADES[LIMIT(0,N,8)];
Буду смотреть.
Возьмите лучше у Oscat функцию REAL_TO_STRF
Потому, что стандартная функция REAL_TO_STRING работает только в эмуляции. При загрузке в контроллер она не работает, возникают крякозябры даже без вывода на ЖКИ http://www.owen.ru/forum/showthread.php?t=11396&p=69319&viewfull=1#post69319
А так получите сразу и String и нужное кол. цифр после запятой, работает округление для отброшенных знаков.
FUNCTION REAL_TO_STRF : STRING(20)
VAR_INPUT
IN : REAL;
N : INT;
END_VAR
VAR
O: REAL;
i: INT;
END_VAR
(* LIMIT N to 0 .. 7 *)
N := LIMIT(0,N,7);
(* round the input to N digits and convert to string *)
O := ABS(in) * EXP(N* 2.30258509299405);
REAL_TO_STRF := DINT_TO_STRING(REAL_TO_DINT(O));
(* add zeroes in front to make sure sting is at least 8 digits long *)
FOR i := LEN(REAL_TO_STRF) TO N DO REAL_TO_STRF := CONCAT('0', REAL_TO_STRF); END_FOR;
(* add a dot if n > 0 *)
IF n > 0 THEN REAL_TO_STRF := INSERT(REAL_TO_STRF, '.', LEN(REAL_TO_STRF) - N); END_IF;
(* add a minus sign if in is negative *)
IF in < 0 THEN REAL_TO_STRF := CONCAT('-', REAL_TO_STRF); END_IF;
Возьмите лучше у Oscat функцию REAL_TO_STRF
Потому, что стандартная функция REAL_TO_STRING работает только в эмуляции. При загрузке в контроллер она не работает, возникают крякозябры даже без вывода на ЖКИ http://www.owen.ru/forum/showthread.php?t=11396&p=69319&viewfull=1#post69319
А так получите сразу и String и нужное кол. цифр после запятой, работает округление для отброшенных знаков.
FUNCTION REAL_TO_STRF : STRING(20)
VAR_INPUT
IN : REAL;
N : INT;
END_VAR
VAR
O: REAL;
i: INT;
END_VAR
(* LIMIT N to 0 .. 7 *)
N := LIMIT(0,N,7);
(* round the input to N digits and convert to string *)
O := ABS(in) * EXP(N* 2.30258509299405);
REAL_TO_STRF := DINT_TO_STRING(REAL_TO_DINT(O));
(* add zeroes in front to make sure sting is at least 8 digits long *)
FOR i := LEN(REAL_TO_STRF) TO N DO REAL_TO_STRF := CONCAT('0', REAL_TO_STRF); END_FOR;
(* add a dot if n > 0 *)
IF n > 0 THEN REAL_TO_STRF := INSERT(REAL_TO_STRF, '.', LEN(REAL_TO_STRF) - N); END_IF;
(* add a minus sign if in is negative *)
IF in < 0 THEN REAL_TO_STRF := CONCAT('-', REAL_TO_STRF); END_IF;
Спасибо за ответы!
lectorleo
23.06.2017, 07:42
Вернусь к первому вопросу, а можно как-то запретить функционал кнопок по умолчанию в Work_mode?
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot