Попробую по - другому описать проблему)Вроде написано по русски, но ни чего не понятно
Мне нужно сравнить значение модуля ввода, при включении 1 и 2 входа ПЛК.
Попробую по - другому описать проблему)Вроде написано по русски, но ни чего не понятно
Мне нужно сравнить значение модуля ввода, при включении 1 и 2 входа ПЛК.
Возможно ли задержать выполнение программы на ПЛК?
Т.е. некий аналог фукции Sleep, чтобы программа остановила свое выполнение и через, например 50 мс, продолжила с того же места. Есть таймеры, но они, насколько я понимаю, выполнение программы не прерывают.
Поясню для чего это нужно, допустим пришла команда по сети сменить направление вращения движка, для ПЛК это значит выключить один дискретный выход и включить другой. без задержки эти действия выполнять нельзя. Можно, конечно, сделать это на таймерах, но функция sleep была бы удобнее
Не изобретайте велосипед, это неправильный подход. Программа в контроллере должна работать постоянно, это основа безопасности. То, что вам нужно, без труда делается на таймерах.
При управлении исполнительными механизмами с тремя состояниями (Открыть-Откл-Закрыть; Влево-Откл-Вправо...) проще всего использовать программу или ф.блок на языке SFC. Т.к очень просто реализуется блокировка одновременного включения управляющих выходов, если присутствуют оба сигнала управления Откр и Закр.
И кроме того в этой простейшей программе автоматически обеспечивается задержка между изменениями состояния выходов ПЛК равная одному циклу без каких-либо дополнительных ухищрений
Если состояния входов Откр=1, Закр=0 одновременно изменится на Откр=0, Закр=1, то выход Откр станет равным 0 в текущем цикле, а выход Закр включится только в следующем цикле.
Продлить задержку между переключениями выходов на время больше, чем время одного цикла тоже очень просто, без дополнительных таймеров
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Немного не так. У меня один тип входов BOOL, это входы на контроллере, а второе значение - это значение с модуля ввода, оно REAL. Обозвал это значение например izm. Так вот, можно - ли объединить в одну переменную izm и in1, а в другую переменную izm и in2. А потом сравнивать значения?В конфигурации дайте имена входам, например in1 и in2.
В программе:
IF in1 AND in2 THEN
<сравниваем что нужно>
END_IF
Это если нужно что-то сравнить при включенных входах in1 и in2. Тип входов BOOL.
Здравствуйте, я новичок, у меня 2 вопроса 1) как на языке ST сделать авто подхват кнопки (кнопку нажал пришла единица и она осталась, а кнопка отошла) и 2) написал программу на SFC упрощенном -первый цикл проходит в конце выставляю все значения в начальные, на 2 цикле программа будто цикла не замечает летает по кругу (специально на условиях переключения останавливал - в тело ШАГА она не заходит а сразу на условие перехода) хотя я может не правильно её понял?
Спасибо Amn, а нет идей по по воду 2 -го вопроса - там проблема после прохождения первого цикла счетчик не сбрасывается (CTU) через Reset. Не знаешь его принудительно как нибудь сбросить можно?