PDA

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



Kulib9ika
04.04.2012, 17:33
В распоряжении имеется ПЛК110-220.32.К-L, у этого устройства 4 Fast discrete outputs и 10 discrete outputs. У меня контроллер управляет электропневмо клапанами. От дискретных выходов при значении выходов TRUE/FALSE происходит закрытие/открытие клапана, а от быстрых выходов ничего не происходит.
Как настроить в Codesys Fast discrete outputs так чтоб они работали как discrete outputs и возможно ли это, помогите новичку? ----с этим вопросом разобрался все было намного проще чем казалось))

появился другой можно ли от одного таймера запустить сразу несколько выходов?
IF proverka=TRUE THEN
tictac(IN:=TRUE,PT:=t#2s);
IF tictac.ET=t#1s THEN
out1:=FALSE;
END_IF
IF tictac.ET=t#2s THEN
out2:=FALSE;
END_IF
END_IF
такой код неработоспособен out1 не срабатывает, нужно использовать несколько таймеров? - это тоже решено))

Еще вопрос: есть экран визуализации на котором расположены кнопки для управления роботом, я сделал чтоб этот робот работал от этих кнопок в реальном времени, а как написать программу так чтоб запоминалось нажатие нескольких кнопок в каком то порядке, а потом при нажатии какойто кнопки предположим "ЗАПУСК" воспроизводились роботом запомненные команды? (язык ST)

Валенок
04.04.2012, 18:00
Ничего делать не надо. Вот наоборот - сложнее.

Kulib9ika
04.04.2012, 18:04
так если ничего не делать быстрые выходы не запирают клапана, и ничего не происходит

Валенок
04.04.2012, 18:38
Как вы ими управляете ?

Kulib9ika
04.04.2012, 19:08
Выставляю значение True или False. Или при подключении к контролеру синие квадраты появляются напротив каждого выхода в настройках конфигурации, при нажатии на них обычные выходы срабатывают а быстрые нет

lara197a
04.04.2012, 20:40
Вы что-то не правильно делаете или выходы сожгли физически.
Разницы в управлении для скоростных и простых выходов, в Вашем случае нет.

Kulib9ika
04.04.2012, 21:48
вот я и хочу узнать что я не так делаю, как проверить физическую работоспособность?

lara197a
04.04.2012, 22:06
Один в один как и простых.

Kulib9ika
05.04.2012, 16:37
можно ли от одного таймера запустить сразу несколько выходов?
IF proverka=TRUE THEN
tictac(IN:=TRUE,PT:=t#2s);
IF tictac.ET=t#1s THEN
out1:=FALSE;
END_IF
IF tictac.ET=t#2s THEN
out2:=FALSE;
END_IF
END_IF
такой код неработоспособен out1 не срабатывает, нужно использовать несколько таймеров?

capzap
05.04.2012, 16:45
IF proverka=TRUE THEN
tictac(IN:=TRUE,PT:=t#2s);
IF tictac.ET>=t#2s THEN
out2:=FALSE;
ELSIF tictac.ET>=t#1s THEN
out1:=FALSE;
END_IF
END_IF

а так непробовали?

Дмитрий Артюховский
05.04.2012, 16:51
не забывайте что дискретные выводы имеют оптическую развязку и их нужно запитывать для работы внешним питанием... хотя бы кинуть +24 и 0 с контроллера..

Kulib9ika
05.04.2012, 16:53
а так непробовали?

нет не пробовал, просто 2 выхода я только для примера сделал, у меня их 14. Но ваш пример мне помог, если ставить не знак = а >= то все работает как надо, спасибо. Только вот почему при строгом равенстве не срабатывает не понятно

Kulib9ika
05.04.2012, 16:54
не забывайте что дискретные выводы имеют оптическую развязку и их нужно запитывать для работы внешним питанием... хотя бы кинуть +24 и 0 с контроллера..

Да спасибо я знаю, у меня они работают от внешнего источника питания

capzap
05.04.2012, 16:58
нет не пробовал, просто 2 выхода я только для примера сделал, у меня их 14. Но ваш пример мне помог, если ставить не знак = а >= то все работает как надо, спасибо. Только вот почему при строгом равенстве не срабатывает не понятно
потому что, когда подходит время опрашивать условие, совсем не обязательно время равно ровно одной секунде, есть еще миллисекунды, из-за которых равенство не выполняется

SBER
06.04.2012, 18:58
а так непробовали?

Абсолютно верно, показания таймера обновляются один раз в цикл программы. Если цикл программы не совпал с временем, указанным вами, то условие со знаком "=" не сработает. При использовании ET таймера надо пользоваться условием "переменная>=ЕТ таймера". В этом случае успех вам обеспечен:)

ASo
06.04.2012, 20:22
Более того, при обучении программированию всегда сразу учат не сравнивать вещественные переменные на строгое равенство. Ибо в общем случае его никогда не будет.

Kulib9ika
10.04.2012, 22:02
Еще вопрос: есть экран визуализации на котором расположены кнопки для управления роботом, я сделал чтоб этот робот работал от этих кнопок в реальном времени, а как написать программу так чтоб запоминалось нажатие нескольких кнопок в каком то порядке, а потом при нажатии какойто кнопки предположим "ЗАПУСК" воспроизводились роботом запомненные команды? (язык ST)

(я подумывал об использовании массива для записи, а потом извлечения из него)

Валенок
10.04.2012, 22:38
Массив - скукота. Для этой задачи STRING рулит
И на экран можно кинуть

Kulib9ika
11.04.2012, 14:36
Массив - скукота. Для этой задачи STRING рулит
И на экран можно кинуть

а поподробней можно? где описание взять, и что значит на экран кинуть

Валенок
15.04.2012, 17:30
Я не знаю целиком задачи. Не знаю ограничений и условий. Способ релиза может радикально поменятся после каждой новой вводной.
Строка - простейший стек. Пример приложил

Kulib9ika
18.04.2012, 16:01
Я не знаю целиком задачи. Не знаю ограничений и условий. Способ релиза может радикально поменятся после каждой новой вводной.
Строка - простейший стек. Пример приложил

Огромное спасибо! Ваш пример очень мне помог, в нем все что нужно.