Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Nicolayy писал(а): ↑08 авг 2021, 21:28
И да, циклы - это не есть хорошо, потому что это притормаживает время выполнения общего цикла программы.
Т.е. если надо перебирать какой-то большой массив данных, то нужно уйти от цикла в его классическом представлении.
На ПК можно задействовать параллельные (поточные) вычисления или таймер (т.е. прерывание по времени по сути), на ПЛК можно использовать прерывания или же использовать просто сам основной цикл программы для перебора элементов (что еще проще в реализации).
Спасибо за совет.
Интересный момент "использовать просто сам основной цикл программы для перебора элементов"
Не поделитесь каким нибудь не большим примером?
Век живи век учись !!!
Очень интересно посмотреть. Раньше так не делал ))) может просто не было в моей практике больших массивов )))
ZETs писал(а): ↑01 окт 2021, 00:41
Интересный момент "использовать просто сам основной цикл программы для перебора элементов"
Не поделитесь каким нибудь не большим примером?
Так это же самый простой способ. Т.е. просто хранишь в каком-нибудь DB переменную типа int - это текущий индекс массива, и один раз за цикл программы делаешь этот индекс на единицу больше. А действия, которые должны выполняться в цикле FOR, выполняешь без всяких циклов, а просто применительно к одному элементу - тому, который под тем текущим индексом. Т.е. получается, что ты перебираешь элементы массива по одному за цикл программы.
Клёвая идея )))
Ни разу так не делал. Век живи век учись!!!
На следующей неделе на насосной опробую ))))
На циклах 3 насоса (основной, дополнительный, резервный ) работа по уровню с отключением по аварии и бла бла бла вышла приблизительно 20 строчек.
Сейчас код можно будет подрезать )))
ZETs, ну, я не думаю, что для задачи с насосными станциями это особо актуально. Я обычно так делаю в задачах, где DB является по сути хранилищем таблиц баз данных, инужно получить по ним какой-то результат или выборку сделать. Т.е. когда в DB массив на тысячи элементов, их невозможно перебирать в простом цикле, не нарушив нормальное выполнение основного алгоритма программы.
Andreywys писал(а): ↑01 окт 2021, 16:31
Нужно учитывать, что в процессе обработки могут измениться состояния входов.
Простите, а это тут при чем?
Имею ввиду, что нужно не забывать, что в процессе расчетов данные могут измениться, поэтому так можно обрабатывать нечувствительные к этому данные или строить алгоритм так, чтобы это не приводило к неправильной работе программы.
Добрый день.
Есть рабочая программа, созданная в tia portal, есть в программе DB-шка, в ней находится массив данных array [0...30], необходимо увеличить этот массив - array [0...40], после перекомпиляции DB-шки и загрузки в контроллер не повлияет ли это на работоспособность рабочей программы? В блоке DB лучше при этом снять флажок "Optimized block access", или оставить блоке DB оптимизированным?