Ну значит надо дополнительное условие сделать.
К примеру, добавить переменную Stop типа bool и допустим переменную Rezultat типа real.
И прописать в программе условие: если Stop истино, то переменой Rezultat присвоить значение S2.
Как один из вариантов.
Заодно можно переменую Stop завести на вход Reset блока Integral, если необходимо.
Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда. (Закон Линуса)
Как использовать ЦАП в ПЛК 160? В библиотеках не нашел такой функции.
Это типа в телепрограмме искать описание настроек телевизора
читайте ИЭ ПЛК.
Как считываются сигналы с дискретного входа, по-битово или группой за такт работы плк?
А какая разница?
Хороший вопрос "может ли во время работы PLC_MAIN внезапно измениться значение входа. Ну, читаем 2 раза один и тот же вход, и получаем разные значения".
Скорее всего, в текущих ОВЕН ПЛК так быть не может.
Ещё вариант вопроса "подали сигнал сразу 2 входа, есть ли гарантия, что PLC_MAIN их увидит оба в одном и том же цикле".
Тут гарантия вряд ли есть. И даже если просто подать один и тот же сигнал на разные входы, то сами входы могут отработать за разное время => стать видимыми в разных циклах.
Как бы я предупреждал. Заведите себе тему и в ней рубитесь.
К сути:
ЦАП на ПЛК работает не через библиотеки, а через Конфигурацию ПЛК. В соответствующий канал записывается значение переменной, в заданном диапазоне.
Про считывание входов, опрос и изменение во время цикла.`
1. К PLCOpen отсылать не буду, но книжку Петрова или Минаева полистать стоит. Есть думаю и другие достойные книги.
2. Нужно понимать особенности работы ПЛК. Опрос области памяти входов - выполнение цикла - запись области памяти выходов - сервисное время - опрос области памяти входов. ПЛК работает так и только так. Классически. Именно по этому Вы обращаетесь не к физической памяти контроллера, а к области памяти AT%...
3. А вот записываются значения физических входов в память входов, и управление физическими выходами из памяти выходов в независимости от цикла ПЛК.
Говоря простыми словами - после того как контроллер считал область памяти входов и ушел в выполнение цикла (а он может быть и в секундах - никто не запрещает) - изменение физических входов восприниматься не будет. И уже только закончив цикл и снова перейдя к чтению области памяти входов контроллер возьмет последнее записанное в эту область памяти значение, которое за это время могло измениться 100 раз.
При этом совершенно не важно сколько у Вас процессоров - 1 или 1000. Если Вы работаете с AT% - Вы всегда берете значение из области памяти входов.
Для задач, где требуется реагировать на изменение значения входов даже когда программа выполняет цикл - прерывания. Но это совсем другая история.