Делал сто раз вчера очистить все, потому что прежде чем написать в чат перепроверил все что можно. Но решил еще раз сегодня очистить все и ошибка пропала теперь даже при комбинации 6 и 5 нет ошибки. Опять все очистил, пересохранил, перекомпилировал, выключил включил и прочие танцы исполнил. Ошибки нет. Бред какой то. Должен же он записывать в соседнюю ячейку или нет если элемент вываливается, если должен то почему сейчас все не записывает.
Подскажите где-то описано в какой нибудь литературе как работает компилятор в Codesys?
А вы, Батенька, жулик... xInit на первую строчку поставил и ... все данные в массив переливаются хрен знает куда, теперь, ради хохмы попробуйте прочитать значение в массиве с индексом [7].
Это не ПЛК и не среда разработки, это называется культура программирования и очень часто вижу такие опусы, что их аффтаров хочется бить по голове палкой из виноградной лозы(она не ломается).
Нервные все тут на форуме) Жулик, палкой бить... Эти выпады в мою сторону удивляют и забавляют. Я в этой теме две недели, а отвечающие с 2008 года судя по регистрации на форуме. Вопросы задаю потому что мне реально непонятно. Поменял порядок потому что пробовал разные варианты и забыл. Поставил на место, опять ошибка, но уже без мистики на всех комбинациях. В итоге получается два момента: 1) От мистики избавился за счет очистить все. 2) Если xInit на первой строке ошибки нет, а если на последней то есть. Только непонятно почему все так.
Что не понятного то?
Вы создали массив из пяти элементов (они в памяти занимают 5 ячеек памяти).
Когда вы обращаетесь к 6-му элементу массива, которого нет, то попадаете в соседнюю ячейку памяти, а в ней находится ваша булевская переменная.
А находится она там по тому, что память выделяется в момент объявления переменной, причем это, очевидно, происходит в той последовательности в которой переменные объявлены.
Если вы следом объявите еще одну переменную. то обращаясь к 7-му элементу массива сможете перезаписать и её.
Вообще, если уже на то пошло. То обращаться к несуществующим элементам массива не стоит, это некорректно и приводит к тому, что вы наблюдаете.
Александр Андреевич Симонов
Инженер по продуктам «ПЛК, модули и OwenCloud»
Не работаю в ОВЕН с 01.07.22
По всем вопросам обращайтесь на почту: support@owen.ru
Я купил книгу для изучения Сергея Романова "Изучаем Structured Text стандарта МЭК 61131-3", набирал пример фильтрования аналогового сигнала, при отладке увидел что возникает ошибка, начал искать почему, удалил все что не вызывает ошибку и потом упростил то что получилось специально для того чтобы задать вопрос и чтобы тот кто будет отвечать смог быстро вникнуть и по сути пояснить. Естественно я не хотел изначально записывать данные в несуществующий элемент массива. Но меня тут стали бить палкой и обвинять в глупости. Короче вот такая история)
Конкретно вас ни кто по голове бить не собирался, вы еще пока не представляете опасности в роли программиста устройств АСУ-ТП, так что можете расслабиться, ну и слог более-менее, на программерских форумах вообще трэш+жаргон специфический, так что обижаться не продуктивно.
И книжки это хорошо, но изучение конкретной среды разработки и изучение руководств по программированию конкретных устройств может быть более полезно, подобный фокус с наложением на сименсе, шнайдере и на чем угодно еще просто бы не прокатил.
Последний раз редактировалось Алексеев Савр; 15.04.2021 в 13:14.