Кстати, пора модератору эти, не относящиеся к ПР205, посты перенести куда-нибудь в курилку
Ладно, как часто вы встречали ситуации, когда порядок выполнения блоков был критичен? - ну изменились параметры и блок посчитал их не в текущем цикле, а в следующем, и что? У меня были единичные случаи типа написания R_Trig на FBD (не в лоджике), там да, промежуточная переменная должна записаться последней. А в лоджике для это есть линия задержки, энергонезависимая переменная и экранная переменная с галкой на "записать в конце цикла"
Последний раз редактировалось Dimensy; 25.11.2023 в 23:27.
Спасибо за ссылку. Читаю: 4.3 Модель программирования
1. Для программирования функций, типов функциональных блоков и методов может использоваться язык программирования, отличный от языков, определенных в настоящем стандарте.
Т.е. - стандарт - это не приговор.
"Насильная" нумерация блоков - неизбежность.
Так было на "заре компиляторов":
1. Однопроходные, где подпрограмма должна быть написано до её использования - объявления на неё ссылки.
2. По мере совершенствования появились многопроходные компиляторы, которые выискивали эти метки,
и, уже вместо человека, расставляли всё как надо, потом окончательно всё компилируя.
Я на асме написал достаточно, чтоб понимать как всё это устроено.
Почему и говорю про эту нумерацию.
Вот и в вашем стандарте про это: 6.6.5.6 Динамическое связывание имен (OVERRIDE)
Связывание имен - это ассоциация имени метода с именем реализации. Привязка имени (например, компилятором) до выполнения программы называется статической или "ранней" привязкой. Привязка, выполняемая во время выполнения программы, называется динамической или "поздней" привязкой.
Т.к. в ST нынешнем (да вроде как и в паскале - могу ошибаться), нет подпрограмм.
Это достигается другими методами.
И компилятор "молотит" алгоритм, как логику - линейно.
И нет возможности эту последовательность изменить.
Пока в ПР205 ST развивается до "нормы", надо это учесть.
P.S.
И было бы гораздо проще, будь глобальные переменные.
Как в CodeSYS. Кто не хочет - пусть не использует.
И не нервничайте - используем то что есть по максимуму.
А пока просчитаю стандарт до конца.
В том то и дело, что это программируемое реле, а не полноценный ПЛК, о чем мы уже выше говорили. Вон у Сименса лого 6, и лого 8. И софт комфорт для написания программ, и как я помню релизы 8.2 и 8.3 максимум. А овен только в начале пути, много косяков, что уж теперь.