Вложение 74563
Почему не подключенные переменные в блоке AND являются 1?
Вид для печати
Вложение 74563
Почему не подключенные переменные в блоке AND являются 1?
В этом случае Лоджик не прав: 0 должен быть значением по уморлчанию для неинициализированной переменной. И вроде так было всегда: я использую блоки на 4-8 ИЛИ и попрой остаются незанятые входы. Взведение неподключенных в 1 вместо 0 блокировало бы работу всей программы.
Ответ неверен. Поведение OwenLogic сделано аналогичным поведению блоков AND и OR в Siemens Logo. Это поведение является ИСКЛЮЧЕНИЕМ для упрощения создания программ на FBD, чтобы не захламлять константами экран:
* Для элементов AND все НЕподключенные входы трактуются как TRUE
* Для элементов OR все НЕподключенные входы трактуются как FALSE
Ещё раз повторяю: это сделано специально, чтобы упросить разработку программ и действует только на эти элементы. Во всех остальных случаях (для других блоков и элементов) неподключенные входы будут равны FALSE.
Всегда было - не подключенный вход == 1
Вложение 74566
Ну тут я был невежествен, но прав: я использую FBD блоки, в которых триггерами защелкиваю аварийные сигналы. И для неинициализированных переменных, в т.ч. и для блоков это ожидаемо.
Про специальное поведение атомарных блоков &/|| - не знал, каюсь, теперь знаю, не буду вешать напрасные дефолтные переменые.
goranach не путайте языки программирования и интерпритаторы, коим является ОЛ, CodeSys и так далее у других производителей. Там четко все, AND неподключенный 1, иначе он у вас работать не будет. OR неподключенный 0.
В некоторых программируемых реле вообще не существует AND или OR на два входа, то есть абсолютно. начинается с 4-х входов (не помню у кого) и что, вы будете лепить везде константы на поле программы?
Именно для этого это все и сделано, чтобы вас не утруждать лишним..
И скажите в чем нарушение, если у вас блок на 4 входа, а вам нудны только 3 из них ?
Есть явная инициализация и неявная. В экономии времени программиста/автоматчика есть смысл, но только при 100% уверенности в повторяемости результата/процесса инициализации/объявления. Но, как говорится, есть нюанс... и недавно обновленный программный пакет меняет поведение или, программист по невнимательности упускает мелочь, которая при отладке просто взрывает мозг.
Потому опытные разработчики думают наперед, обжегшись на таких простых вещах: явно инициализовать все - это правильно и безопасно. Что-то оставлять на стандартное поведение программы - самонадеянно и не 100% повторяемо.