Можете выложить какой-нибудь простой проект, на котором наблюдается проблема?
Вид для печати
Можете выложить какой-нибудь простой проект, на котором наблюдается проблема?
Добрый день. Можете подсказать библиотеку для PID регулятора? Нужно управление КЗР без обратного сигнала состояния, а ещё бы графики преобразования с уличной температуры в ту которую можно подать на сам PID для корректировки (PID использую из Util.lib, но может быть есть более надежный?). Пытался использовать PID_regulators.lib, но при заливке на СПК 207 стал выдавать ошибки, хотя при компиляции все нормально было.
Можно ли в CodeSyS 3.5 создавать макросы из функциональных блоков? Если да то как?
Выйдет ли библиотека работы с ПЧВ преобразователем частоты векторным для codesys3? убил огромное количество времени, чтоб управлять по рс485.
та что на сайте в codesys 3 не работает.
Попробуйте вот эти слова:
Вложение 29954
Ну и задание скорости не забудьте!
Здравствуйте, а есть ли переменная в CodeSys 3.5 Которая становится TRUE, если есть не квитированные тревоги
Доброго времени суток: проблема с массивом в кодесис 3 (3.5 sp10 patch1+). По непонятной причине компилятор не пропускает массив с заранее инициализированными элементами. Скрин в приложении. Тот же код в КДС 2.3 работает без вопросов.Вложение 30106
Возьмите массив данных в [ ]
Начиная с SP7 хелп на русском отсутствует. Ищите англоязычный в папке установки CODESYS (...\Codesys\Online Help).
Вот русскоязычный хелп из SP6:
https://yadi.sk/d/OtxdkJqT3G73jf
Приложил ссылку к сообщению выше.
Помойму КДС не может инициализировать массив структур внутри другой структуры.
Всё было нормально, когда в моей структуре Prog_struc не было массива, а были просто вложенные структуры (на картинках они закоментарены).
Вложение 30120
Etap_struc: Вложение 30122
Но мне надо обращаться к данным по индексу, и я вместо перечня структур вставил массив этих структур
И теперь не проходит инициализация
Вложение 30123
Ошибки какие-то ахинейные: на Prg1 пишет ';' expected instead of 'Prg2', на stages[1] пишет 'Assign' expected instead '['
Или я что-то не так сделал?
Вообще, чтобы понять принцип инициализации сложных составных переменных, лучше один раз объявить их через ассистент ввода - вбиваете имя несуществующей переменной в теле программы, нажимаете enter и он автоматически появляется.
К слову, зачастую удобнее делать инициализацию прямо в коде - в стиле
В коде проще обращаться к элементам массивов, структур и т.д. + при необходимости можно будет провести инициализацию в процессе работы программы.Код:IF xInit THEN
// инициализация
END_IF
Если всё же рассматривать ваш случай (инициализация при объявлении) - то вот упрощенный пример:
Вложение 30125 Вложение 30126 Вложение 30127
Вложение 30128
Пример помог. Но надо озвучить конкретную причину:
Я пытался инициализировать массив по аналогии с инициализацией структуры - указывал конкретные элементы и присваиваемые им значения.
А оказывается, массиву нужно только перечислять присваиваемые значения, и они попадают в ячейки массива в порядке перечисления.
Считаю это недоработкой языка ST. Если массив большой, а мне надо в объявлениях инициировать только последние ячейки, придётся перечислять значения всех ненужных ячеек.
2(()) - такую конструкцию я не знал. Она значит - до второго (в данном случае последнего) элемента всё пусто?
Она означает "два пустых элемента". Можно использовать несколько "пустышек" в рамках инициализации одного массива (две пустышки, значения, пустышка, значения, значения, сколько-то еще пустышек и т.д.).
2(()) - это именно для массива структур, для массива чисел, соответственно, было бы 2(0).
И всётки, ST - недоязык. В данном случае - инициализировть отдельные элементы массива, хоть и можно, но... Массив - это прежде всего адресуемое (индексом) пространство ячеек памяти (переменных). Поэтому инициализировать ячейку не так как при обращении, не по индексу, а какими-то неочевидными конструкциями (указывая сколько до неё предшествующих ячеек и чем они заполнены) - это как бы сказать ... неестественно, нелогично, неоптимально, короче через ж...
Есть и ещё недостатки. Например отсутствие меток кода и goto на них. Без goto невозможно сделать легко читаемый и понимаемый код в небольших, но логически сложных процедурах.
Инициализировать по индексу можно в коде - как уже упоминал.
Goto есть (если внезапно действительно нужен именно он, что несколько странно в контексте концепции цикла ПЛК) - читайте в справке про JMP.
По поводу недоязыка - стоит учитывать, что ST разрабатывался в начале 90-х для пользователей без бэкграунда (по крайней мере, без серьезного) в программировании. Естественно, о синтаксическом сахаре особо не задумывались.
Все же понимают, что ST - это не С и т.д., но всё, что можно сделать - понять, принять и простить.
Отлично! JMP есть. Теперь я почти в своей тарелке"! (я ж ассемблерщик)
Я читал мануал к КДС 2.3 - там в ST нет JMP, и думал что в новых КДСах синтаксис не изменился.
Здравствуйте.Нужен совет.Раньше делал пару проектов в КДС2.3 в редакторе LD,проблем не было,но там и на входе и на выходе были дискретные сигналы. Сейчас нужно сделать проект на входе аналоговый сигнал на выходе дискретный.Возможно ли это реализовать в LD и если нет,то какой язык выбрать?
По всей видимости, вам надо сделать так:
Вложение 30153
Ассемблерщик, зачем вам ST, если есть IL?
Если вы напишите программу с переходами на st и потом эту программу будут читать другие люди, то они о вас будут не самого хорошего мнения. В st есть куча способов обойтись без переходов, не ассемблер же. Почитайте, что такое спагетти код, может проникнитесь.
Есть категория компьютеров "тонкий клиент".
Можно ли на них (Windows CE, embedded или Linux) запустить CodeSys Runtime и какие требования по памяти/жесткому диску?
Заранее спасибо
Да, это возможно - с помощью виртуального контроллера (Soft PLC) Codesys Control Win V3. В состав среды программирования входит триальная версия с ограничением времени непрерывной работы (2 часа, после этого можно перезапустить).
Компания ОВЕН не занимается распространением и поддержкой этого продукта. Вам необходимо связаться с компанией Пролог - я думаю, они проконсультируют по всем вопросам, в т.ч. и техническим.
http://www.prolog-plc.ru
Презентация на упомянутую тему:
http://www.prolog-plc.ru/docs/conf15...ght_Choice.pdf
вопрос есть, как графический примитив типа "текстовое поле" поставить на попа?
В смысле, чтобы строка читалась начиная снизу, и заканчивая сверху, а верх букв был слева, а низ справа.
Вложение 30245
вот так чтобы было. текст можно неизменяемый
Понятно. Так можно:
Вложение 30246
В редакторе будет горизонтально, но при запуске проекта на дисплее будет так:
Вложение 30247
у меня такого нету. Ни в "метке" ни в "текстовом поле". 3.5 sp7 P4
Или другой текст надо?
обратно про тиражирование.
Оно какое-то убогое, по крайней мере, в том виде, в каком описано в 11.3.6. СПК Визуализация . Так как сказано про одномерный массив. А если вот в одну структуру вложить другую, (поскольку не только два вложенных массива интересны, а ещё и добавление другого типа переменных), то никак не получилось это объехать за счёт своего воображения.
Если конкретно - то пусть будет квадратик, внутри которого рядами в определённом количестве кружочки. Квадратик надо в зависимости от обстоятельств красить внутри разным цветом, под это дело переменная отводится. Кружочки внутри квадратика надо тоже по обстоятельствам красить разным цветом, под это дело для кружочка тоже отводится переменная. Кружочков внутри квадратика находится много, потому для квадратика делаем структуру, где будет куча всего полезного, к тому же, переменная, отвечающая за цвет квадратика, и массив структур, отвечающих за кружочки (у них ведь не только цвет, а тоже ещё много чего есть.)
Но квадратиков надо по условиям иметь 100500 штук, и он должны изображаться, в свою очередь, внутри некоего окна, для которого тоже хочется сделать структуру с кучей разных переменных, и массив со структурами для "квадратиков", внутри которых структуры для "кружочков".
И вот если кружочки в квадратике описанным в книжке способом ещё размножаются, то квадратики в загородке уже размножаться не хотят. :(
Просто разработчики вряд ли думали о наркоманах, которые будут на панели отрисовывать тайловую графику.
одинаковые, например, шкафы с лампочками, или привода задвижек с теми же лампочками стоят рядами не только в воображении наркоманов...