PDA

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



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

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

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

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

magirus
08.07.2009, 00:56
так же интересует этот вопрос.

Сергей71
08.07.2009, 08:50
Как не печально - но только MDVV01.0, MDVV01.1.

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

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

Sniper007
08.07.2009, 09:38
А зачем??? Лично я делаю так. Создаю программу, называю ее допустим 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.
А в основной программе уже работаю с этими перменными. Все просто и удобно по моему.

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

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

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