PDA

Просмотр полной версии : ПЛК 110.Освещение в доме.



prrmrr
25.10.2014, 21:23
Подскажите примерно, как проще на языке SFC (т.к раньше с программирование дел не имел )написать программу для Овен-ПЛК110 и МУ-110 . Имеются кнопочные выключатели, если просто нажать на выключатель- включится свет. Если нажать и удерживать клавишу- меняются сцены освещения. При отпускании клавиши остаются гореть те лампочки, которые были выбраны. При следующем коротком нажатии свет - гаснет. При следующем коротком нажатии включаются лампочки из последней выбранной сцены. Около выхода и у кровати стоит выключатель который вырубает свет во всём доме. Заранее благодарен.

capzap
25.10.2014, 21:33
хочу поинтересоваться почему выбран SFC? тем более что дело не имели, а с чем имели?

prrmrr
25.10.2014, 21:44
Немного пробежался по урокам показался наиболее простым и наглядным, могу ошибаться .С программирование дел не имел. Думаю задача не очень трудная хочу попробовать и разобраться сам, т.к мне это интересно, монтаж и подключение выполнял лично.

capzap
25.10.2014, 22:26
можно с такого примера начать, не утверждаю что будет работать, т.к. неизвестна модель плк, не понятно зачем МУ если выхода есть и на плк

Yegor
25.10.2014, 22:32
Мой вариант:

VAR
btnFTrig: F_TRIG;
btnTimer: TON := (PT := T#500ms);
cancelSwitch: BOOL;
END_VAR
VAR CONSTANT
scenes: ARRAY[0..3] OF WORD := 2#10101, 2#11001, 2#01010, 2#11011;
END_VAR
VAR RETAIN
sceneIndex: BYTE := 0;
END_VAR

btnTimer(IN := btn AND NOT btnTimer.Q);
sceneIndex := (sceneIndex + BOOL_TO_BYTE(btnTimer.Q)) MOD 4;
IF btnTimer.Q THEN
lights := scenes[sceneIndex];
cancelSwitch := TRUE;
END_IF
btnFTrig(clk := btn);
IF btnFTrig.Q THEN
IF NOT cancelSwitch THEN
lights := lights XOR scenes[sceneIndex];
END_IF
cancelSwitch := FALSE;
END_IF

В визуализации vis побаловаться можно. Вроде правильно работает.

Как это писать на SFC я даже думать не хочу))

prrmrr
26.10.2014, 11:53
Большое спасибо, в ближайшее время буду пробовать. МУ-110 используется для добавления выходов.