Чтобы скрыть лишнюю плашку с этими сообщениями нажмите SHIFTESC. Не стремитесь использовать чужой код. Вторичное использование чужого кода в классическом программировании норма и необходимость, обусловленная множеством причин. В АСУ ТП же, по моему мнению, почти нет необходимости использовать сторонний код. Я не считаю себя профессионалом и не писал особо сложных программ, но для тех что писал мне вполне хватало стандартных библиотек Util. Standart. lib. Те же библиотеки Oscat скачать мануалы на англ шикарны и всеохватывающи, но в них нет ничего сверхестественного и, мне кажется, лучше самому писать аналогичные функции. А на тот код, который обычно выкладывают на форумах, лучше вообще не смотреть. Даже с тем, что я выкладываю в блоге лучше просто ознакамливаться, а не использовать. Пишите свои алгоритмы и как можно большеПримеры правильного кода внутри библиотек. Чтобы понять как должен выглядеть грамотный код и узнать некоторые программистские примчки не нужно далеко ходить. Открывайте Кодесисом библиотеки Util. Oscat. lib как обычные проекты и впитывайте мудрость строк. NB Может я и негодяй, но с помощью этой проги вы можете взломать запароленные библиотеки. Пользуйтесь интегрированной справкой CODESYSБанально, но там есть ответы на большинство вопросов начинающих. Справка небольшая поэтому лучше пробежаться по ней всей чтобы познакомится с возможностями языков и функций. Вызов справки по. Иногда в CODESYS 2. Видите дублированный код выносите его в отдельную функцию или функциональный блок, иили же переводите переменные в элементы массивов и прогоняйте в цикле. Предыдущее предложение вам может быть непонятно, но подробности можно загуглить. На скриншоте код, обрабатывающий данные с. Переменные типа CWS1. Слева представлена первая версия кода где каждый ПЧ представлен отдельным куском из восьми строк код в каждом куске различается только данными, а логика одинакова. Справа оптимизированная версия логика вынесена в отдельную функцию GET. Если бы в Конфигурации можно было задавать переменные как элементы массива типа FREQ. В некоторых случаях удобно использовать CFC или что похуже, но в целом ST более мок, лаконичен и чток. Но, чем действительно он отличается от других языков так это возможностью нормального использования массивов и циклов, которые мне сильно облегчают жизнь и увеличивают читабельность кода. Не злоупотребляйте циклами. При том, что циклы FOR бывают крайне удобны, всегда помните, что код в ПЛК выполняется в суперцикле и часто можно обойтись простым инкрементированием с обнулением см. Также большие циклы FOR и тем более WHILE могут сильно. Иногда, конечно, нужно сделать перебор в текущем суперцикле и тут уж лучше использовать FOR. Такое возникает при переходе в бесконечный цикл и других зависаниях. Отвечает за анализ времени выполнения цикла сторожевой таймер, или Watchdog. Сброс по watchdogу отличается от любого сброса через среду CODESYS. Этим можно пользоваться. В моей практике сторожевой таймер применяется в контроллерах ОВЕН. В этих ПЛК иногда происходит неприятный момент созданный в Конфигурации модуль Mod. Bus Master перестает вести опрос Слейвов обычно это возникает после перезаливки программы. Поначалу это решали сбросом питания, но тут возникали трудности при удаленной закачке через интернет. Позже я обнаружил, что проблему решает искусственное заведение программы в бесконечный цикл. Я вывел сброс на кнопку в визуализации. Или же можно анализировать изменение переменной. Но что интереснее, имеется возможность изменения переменных, которые являются аргументами функции, внутри самой функции. Это возможно благодаря использованию указателей и адресации на эти переменные. Понять что к чему можно по скриншоту ниже, на котором приведен код функции, инициализирующий переменную если та равна нулю. Параметр внутри функции определяется как указатель на нужный тип, а при вызове функции в параметре используется не сама переменная, а е адрес функция ADR. Иногда SEL удобнее IFВ случае когда при каком то условии переменная должна изменить сво значение, а в противном иметь другое значение, применение IF может быть не лучшем решением. Если условие применимо только к этой единственной переменной используйте функцию селектор SEL. Она работает с переменными любого типа. Буль не буль. Очень часто в чужом коде встречаю странное использование операций с булевыми величинами или, наоборот, игнорирование булевой логики. Во первых, операции типа сравнения или проверки равенства возвращают булевы значения. Во вторых нет необходимости явно сравнивать булеву переменную со значениями TRUE или FALSE. Скайрим Амулет Талоса Квест. Наглядная работа с булями. Мне очень часто для сокращения кода приходится использовать явные преобразования BOOL в целое число, например, в формулах. Для этого приходится использовать функцию приведения типов в е стандартном неуклюжем виде BOOL. Но как то раз наткнулся на блог Егора Петрова, где он придумал более простое и изящное решение по сути переименовать эту функцию в более читаемую WHEN. Теперь пользуюсь, пользуйтесь и вы.