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

Тема: Как удобно работать с большим количество дискретных входов?

  1. #1

    Question Как удобно работать с большим количество дискретных входов?

    Как удобно работать в программе с большим количество дискретных входов?

    Вот имеется десяток МДВВ, так это нужно:
    - в конфигурации PLC добавить соответствующие модули;
    - в каждом обозвать как-нибудь битовую маску входов (скажем, MDVV01, MDVV02 и т.д.);
    - распределить дискретные входы (составить таблицу соответствия - на 0 бит в MDVV01 подан сигнал Z_stop, на 1 бит MDVV01 подан сигнал Um и т.д.);
    - и к каждому дискретному входу обращаться по принципу MDVV01.0, MDVV01.1 и т.п., держа при этом в уме таблицу соответствия.

    Я правильно понимаю политику партии?

    А что, неужели нет механизма препроцессора (макроподстановки, шаблона, define какого-нибудь), чтобы работать в программе с мнемониками вроде Z_stop, Um и т.п., без муторной возни вручную с гигантской таблицей соответствий?

  2. #2

    По умолчанию

    так же интересует этот вопрос.

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

    По умолчанию

    Как не печально - но только MDVV01.0, MDVV01.1.

    Можно по другому - объявить константы Z_stop := 0, Um :=1 и т.д.);
    и тогда MDVV01.Z_stop, MDVV01.Um. Но можно запутаться и сделать так MDVV02.Z_stop, MDVV03.Um.

    можно попробовать (сам не делал) через функцию или ФБ реализовать алгоритм чтения и записи.
    ФБ Z_stop(IN:= true); код сами напишите (причем в код можно вставлять задержки, проверку концевиков и тп).

  4. #4

    По умолчанию

    А зачем??? Лично я делаю так. Создаю программу, называю ее допустим input. В ней прописываю следущее
    pusk:=MDVV1.0;
    stop:=MDVV1.1;
    и т.д.
    Кстати очень удобно - если допустим кнопка нормально сомкнутая, то сразу же тут ставлю NOT
    Avaria:=NOT MDVV1.2;

    Эту программу вызываю каждый цикл в PLC_PRG (самой первой).
    Тоже самое делаю с выходами. Создаю программу output. Прописываю:
    MDVV1_o.1:=klapan1;
    и т.д.
    Ее также прописываю в PLC_PRG, но уже в конце. И все...

    PUSK, STOP и прочее - как глобальные перменные (это будет тип bool). Если хочется соблюдать принципы ООП, то тогда нужно через var_output.
    А в основной программе уже работаю с этими перменными. Все просто и удобно по моему.
    Последний раз редактировалось Sniper007; 08.07.2009 в 09:45.
    Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).

  5. #5

    По умолчанию

    Sniper007, Сергей71 спасибо...
    попробую Ваши методы.
    позже отпишусь.

  6. #6

    По умолчанию

    я делаю так же как и Sniper007...еще очень помогают не забыть смысл переменной комментарии при их определении, т.к. КоДеСис их "помнит" и показывает при наведении на переменную...

  7. #7

    По умолчанию

    Цитата Сообщение от Sniper007 Посмотреть сообщение
    Создаю программу, называю ее допустим input. В ней прописываю следущее
    pusk:=MDVV1.0;
    stop:=MDVV1.1;
    А, гм... как же это я забыл... сам же так делал... ну, верно, с недосыпу
    В общем, спасибо за пинок в нужном направлении

Ваши права

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