Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя
Показано с 31 по 40 из 43

Тема: ип320, номера регистров

  1. #31

    По умолчанию

    почему бы не сделать, чтобы для каждого из выводимых экранов плк использовал одни и те же ячейки памяти?
    Пример, который вам давал Валенок, проанализируйте - там так и сделано. Т.е. панель на любом из выбранных "динамических" экранов работает с одним и тем же регистром. А ПЛК (заранее знающий, что именно мы сейчас редактируем, поскольку он же и готовил все данные для создания требуемого динамического экрана) перекладывает содержимое этого регистра в рабочие переменные программы.

  2. #32

    По умолчанию

    лично я делаю как Валенок)),на двадцать своих экранов использую всего девять(максимум десять регистров обмена), панель в режиме мастер:
    -tlister - регистр номера текущего листа;
    -lister - регистр изменения номера листа;

    шесть регистров обмена значений(больше на лист панельки не влезает);
    -Reg1, Reg2, Reg3, Reg4, Reg5, Reg6;

    два байта (16 бит) на обработку кнопочек панели
    -b_1, b_2... b_0,b_END...b_DOWN

    и байт на различные индикаторы(хотя я обычно использую биты кнопок, они все разом тоже на лист панели всёравно не влазят)))

    далее в CASE смотрю что за лист и соответственно её обрабатываю:

    CASE tlister OF
    1: (*проверяем изменился ли лист*)
    IF NOT(last_list=tlister) THEN
    last_list:=tlister;
    END_IF
    (*если информацию нужно выводит, просто присваиваем требуемое значение*)
    Reg1:=value1;
    ....
    Reg6:=value6;
    2: (*если требуется редактировать значения, то в начеле выводим текущие значения...*)
    IF NOT(last_list=tlister) THEN
    last_list:=tlister;
    Reg1:=value1;
    ....
    Reg6:=value6;
    END_IF
    (*а потом подтверждаем изменения, например нажатием кнопки ENT...*)
    if b_ENT then
    b_ENT:=false;(*кстати обнулять следует и при первом входе на лист*)
    value1:=Reg1;
    ...
    value6:=Reg6;
    end_if
    (*или например отслеживая изменения регистра...*)
    if NOT(Reg1=value1) then
    value1:=Reg1;
    end_if
    3: (*переключатся между экранами можно стандартно(настраивая в конфигураторе панели) или программно...
    IF NOT(last_list=tlister) THEN
    last_list:=tlister;
    b_UP:=false;
    END_IF
    if b_UP then
    lister:=1;
    b_UP:=false;
    end_if
    end_case

    конечно в реале программа получается несколько посложней, все переменные для безопасности локализованы в одной процедуре, посложней обработчик програмного переключения экранов(так как тут после изменения регистра lister, регистр tlister изменяется с запозданием на несколко рабочих циклов, что, редко, но бывает критично), но в общем я придерживаюсь этой структуры...

  3. #33
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Crusash Посмотреть сообщение
    лично я делаю как Валенок))
    Так и я теперь как Валенок

    Спасибо!

    Уважаемые Админы! Могу ли я попросить перенести тему в форум для панелей? Впредь постараюсь выбирать место размещения более внимательно

  4. #34
    Пользователь
    Регистрация
    21.10.2010
    Адрес
    msk
    Сообщений
    27

    По умолчанию

    воспользуюсь этой темой, чтобы задать ещё один вопросик.
    собственно, ситуация почти как у топикстартера: панель и контроллер есть, но в данный момент не доступны (до пятницы), при этом нужно делать.

    а вопрос такой: на панели есть некий экран с алармами, который в конфигураторе увидеть нельзя.
    в конфигураторе для этого экрана задаётся набор алармов, для каждого аларма есть номер бита в общем адресном пространстве и описание. а как выглядит этот экран в жизни?

    фантазия говорит, что это некий скролируемый список, я выбираю элемент списка, нажимаю кнопку "сброс аларма", после чего выбранный аларм считается сброшенным, а физически бит, сопоставленный ему устанавливается в ноль.

    это так?

  5. #35

    По умолчанию

    фантазия говорит, что это некий скролируемый список
    Да. В каждой его строчке - по одному аларму. В списке одновременно отображаются все активные алармы, при активации любого из них панель автоматически переключается на alarm screen.
    нажимаю кнопку "сброс аларма",
    Нет там такой кнопки, и вообще нет механизма квитирования. Пока бит, управляющий данным алармом, активен - аларм будет висеть в списке. Бит сброшен (анализом неисправностей и установкой/сбросом битов тут должна заниматься ваша программа в PLC) - аларм сам по себе исчезает из списка.

  6. #36

    По умолчанию

    я делал отдельный экран на тревоги, с тремя полями динамического текста, каждое поле идентично друг другу и содержит в себе текста всех ошибок. если тревог более трёх то клавишами вверх вниз можно ходить по списку. квитирование отдельной ошибки я не делал, по нажатию Esc квитировались сразу все, но при желании можно запрограммировать и на одну ошибку(скажем первую в списке)...

  7. #37
    Пользователь
    Регистрация
    21.10.2010
    Адрес
    msk
    Сообщений
    27

    По умолчанию

    спасибо за ответы!

  8. #38

    По умолчанию

    Может все таки кто нибудь перенесет тему куда надо, я три дня рыл ветку HMI а большинство полезных ответов тут.

  9. #39

    По умолчанию

    А кто подскажет, есть ли какая-нибудь возможность в процессе работы передавать права Мастера с одной панели на другую. Я имею ввиду, что во время основной работы Панелью играется Оператор (задаёт производительность, вкл/выкл и т.д.) - Панель удалена на приличное расстояние, а при настройке оборудования необходимо задавать конфигурациооные данные непосредственно на месте и соответственно -тоже нужна панель с правами мастера.

  10. #40
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Как я понимаю, это нереально. Конфигурация панели означает, что в ней формируется программа работы. Эта программа не допускает смены прав (мастре-слейв) "на ходу".

    Другой вопрос, что "мастер" или "слейв" совершенно не определяется тем, "кто в доме хозяин". Это исключительно организация запросов-ответов. Назовите, если угодно, мастера клиентом, а слейва сервером. Мастер запрашивает данные у слейва - равно как клиент у сервера.
    Поэтому реальной необходимости менять роли и нет. Все определяется удобством программирования обмена. Грубо говоря (могу ошибаться), любой вариант "кто чем и когда играется" можно реализовать как с панелью-мастером, так и спанелью-слейвом. Разница будет только в ПО его корреспондента, да в параметрах скорости обновления картинок.
    Последний раз редактировалось drvlas; 20.04.2011 в 10:58.

Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя

Ваши права

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