Обеспечьте удаленный доступ, пожалуйста.
Вид для печати
Отправил в личку
Я не разобрался как вызмать RealTime_PRG из PLC_PRG, можете привести пример?
В последней редакции кода я взял время из таргета Owen_RTC, долго не мог догнать как это сделать правильно, в мануале к таргетам этот момент опущен:
Код:TargetVars.stRtc.usiGetHour //вызов переменной "час" из таргета Owen_RTC
Подскажите, пожалуйста по CAAFile. Можно ли как то сделать подобие readln в паскале(я так понял можно лишь читать по буфферу последовательно). Файл около 500кб. Буфер такого размера не объявляется стрингом. Как можно прочитать такой файл, а главное, чтобы потом было удобно парсить массив?
Задача организовать запись/чтение настроек на 207х спк. (У них у всех не работет retain, да и часто сейчас проект изменяется, а персистанта нет).
Запись реализовал в XML построчно(так удобнее готовить новые объекты на 107х уже с готовой конфигурацией), а вот над чтением думаю и спрашиваю как лучше считать, а потом распарсить(тут проблем не должно возникнуть).
Я не очень понял про 107x - что такое "готовая конфигурация", в чем удобство и как вы там считываете XML.
Отвечая по существу вопроса: можно посмотреть в сторону CmpSysExec и вызова через нее утилиты sed.
С помощью нее можно считывать файл построчно.
Для примера я сделал программу TIMER_1 и функциональный блок FB_TIMER. Специально сделал их одинаковыми и простыми (счётчик считает секунды). Их вызов из PLC_PRG будет таким:
В конфигураторе задач вызывается только PLC_PRG, всё остальное ( программы и Функц. блоки) вызывается из программы PLC_PRG. Вложение 57630Код:PROGRAM PLC_PRG
VAR
FB_TIMER1:FB_TIMER; //Объявление Функционального Блока FB_TIMER
END_VAR
__________________________________________________________________________
FB_TIMER1(); // Вызов Функционального Блока FB_TIMER
TIMER_1(); // Вызов программы PROGRAM TIMER_1
Разница в том, что программу надо только вызвать в теле PLC_PRG ( но только один раз),
а Функц. Блок, надо не только вызвать, но и объявить в PLC_PRG, но зато его можно объявить и вызывать несколько раз добавив к имени число (1,2,3 и т. д.), что удобно при однотипных задачах. На скрине видно, что и программа и ФБ работают и считают абсолютно идентично, а в конфигураторе задач вызов только PLC_PRG.
Добрый день. Как узнать загрузку контроллера? Мне нужно найти минимальное время цикла, при котором ПЛК 210 стабильно работает. В ЛюСи есть графики загрузки CPU и "загрузка системы", там обычно значения порядка 10-20. В каких единицах эта "загрузка системы" отображается? И что означает, если "загрузка ЦПУ" близка к 100%?
Также хотелось бы получать эти данные в переменные программы. В разделе Debug есть строка загрузки процессора, но добыть ее оттуда у меня не получилось, при привязки переменной вылетает ошибка.
Добрый день.
https://ru.wikipedia.org/wiki/Load_AverageЦитата:
В каких единицах эта "загрузка системы" отображается?
Это означает, что приложение CODESYS занимает практически все доступные ресурсы.Цитата:
И что означает, если "загрузка ЦПУ" близка к 100%?
Выложите скриншоты с объявлением переменной и ошибкой.Цитата:
В разделе Debug есть строка загрузки процессора, но добыть ее оттуда у меня не получилось, при привязки переменной вылетает ошибка.
Или можно создавать проекты на основе шаблонов (Файл - Новый проект - выбрать нужную модель ПЛК) - в них все эти переменные уже созданы и привязаны заранее.
Евгений, благодарю за ответ. У меня стабильно "загрузка системы" 10-15, а загрузка процессора 80%. Чему верить?
При уменьшении времени цикла до определенного значения интерфейс ЛюСи становится недоступен. Логично, что уже перебор. Но хотелось бы знать более точный способ определения допустимой загрузки.
И есть ли рекомендуемое минимальное время цикла для ПЛК210? В случае маленького довольно простого кода 5 мс реально работать?
Обоим значениям - они не противоречат друг другу.Цитата:
Евгений, благодарю за ответ. У меня стабильно "загрузка системы" 10-15, а загрузка процессора 80%. Чему верить?
Поскольку это зависит от конкретного проекта - такие вещи обычно проверяются опытным путем.Цитата:
Но хотелось бы знать более точный способ определения допустимой загрузки.
Да.Цитата:
В случае маленького довольно простого кода 5 мс реально работать?
А то что у одого ОС нет а у другого есть вы в рассчет не берете? ОС дает не только плюсы но и минусы
Добрый день
Подскажите, как корректно импортировать библиотеку из Codesys 2.3 в Codesys 3.5
Есть рукописная библиотека, состоящая из нескольких функциональных блоков.
Импорт проходит наполовину успешно - импортированные ФБ в Codesys 3 можно объявить,
но при компиляции вылазит куча ошибок, компилятор не может найти множество элементов из биб-ки STANDARD - TON, TOF, RS и пр.
Подозреваю, что при первичной установке неверно указал, какая из библиотек Codesys 2.3 соответствует аналогичной библиотеке в Codesys 3.5
Где это править сейчас не представляю
Буду признателен за совет
Вчера только импортировал проект, в дереве компонентов слева, в 3.5 открыть менеджер библиотек и добавить биб-ку Standart.lib (практически как в 2.3), например для версии 3.5.11 поставить биб-ку 3.5.11 (или ниже ближайшую, например 3.5.9), библиотеки 3.5 должны быть уже установлены. И таргеты 3.5 тоже, через менеджер компонентов.
После компиляции всё заработает, дел на минуту.
Мне понадобились 2 биб-ки Standart.lib и Util.lib, что вам надо посмотрите в 2.3
И дело не в том, что вы не указали какие биб-ки, а в том что они не активны.
Большое Спасибо за ответ!
У меня биб-ка Standart.lib из версии 3.5 активна
Но к моей самописной библиотеке при первом импорте присоединилась Standart.lib из codesys 2.3
и при компиляции она и используется..
Удаление биб-ки и переустановка заново не помогает, кодесис больше не предлагает диалог замены библиотек второй версии на третью
В общем где то что то прописалось не так , как это поправить не знаю
Евгений, Спасибо за ответ
Вот ссылка на архив проекта - https://cloud.mail.ru/public/vc9L/gakgbSJWT
1. Как верно заметил выше kondor3000 - в вашей библиотеки не хватает зависимостей.
Вам нужно добавить в ее Менеджер библиотек библиотеки Standard, Util, Oscat Basic и CmpOwenPidRegs.
2. В проекте библиотеки используйте команду Компиляция - Проверка всех объектов пула, чтобы сразу увидеть ошибок.
Для ошибок типа Неоднозначное использование имени и Неизвестный тип добавляйте к имени ФБ, на который ссылается ошибка, пространство имен.
Например, меняйте TON на Standard.TON, DIG_FLTR на OPR.DIG_FLTR и т.д.
3. В CODESYS V3 нет аналога для ФБ VALVE_REG_NO_POS.
Вам придется либо переделать ваши ФБ, которые используют этот блок, либо самостоятельно написать/найти его реализацию.
Спасибо за развернутый ответ, буду разбираться
Где найти команду - Компиляция - Проверка всех объектов пула ?
Весь кодесис перерыл, не нашел
С библиотеками получилось исправить импорт через опции конвертирования в Codesys 3 с указанием исходной и целевой библиотеки.
Только oscat не хочет конвертироваться.. придется выкинуть его наверно
Добрый день. SPK107[M01]. Codesys V3.5 SP16 Patch4.
Пытаюсь сделать вход пользователя визуализации с помощью автозаполнения стандартного диалога.
Вот таким образом сконфигурировал действия при нажатии кнопки:
Вложение 57650
При нажатии кнопки открывается диалог, заполняется, а потом закрывается:
Вложение 57651
При отпускании кнопки изменяю данные пользователя:
Вложение 57653
В результате получаю следующее:
Вложение 57654
т.е. VisuElems.CurrentUserGroupName имеет неопределенное значение.
При этом выход с помощью Logout работает, а автоматический выход нет. Что-то я недоуказал при автологине или принципиально неправильно делаю?
Добрый день.
Т.е. чтобы у пользователя при открытии диалога был уже заполнен логин и ему осталось только ввести пароль - я правильно понимаю?Цитата:
Пытаюсь сделать вход пользователя визуализации с помощью автозаполнения стандартного диалога.
Так не получится - эти переменные доступны только для чтения.Цитата:
При отпускании кнопки изменяю данные пользователя:
Прочитайте эту тему:
https://owen.ru/forum/showthread.php?t=34168
Ключевой пост:
https://owen.ru/forum/showthread.php...l=1#post345987
Не совсем так. Идентификация пользователя осуществляется до нажатия на кнопку на визуализации, после чего пытаюсь сделать вход без дополнительных внешних проявлений. Мне не нужно чтобы на визуализации отображался еще и стандартный (или от Овена) диалог логина, пусть и автозаполненный.
Тогда вам нужно это прочитать:
https://owen.ru/forum/showthread.php...l=1#post295107
Добрый день, в codesys 3.5 можно сделать блок в котором можно будет добавлять входа? (Динамически добавлять вход экземпляру функционального блока) Например как с элементом И / ИЛИ . Правой кнопкой добавить вход. Хочу такую возможность к самописному блоку.
Я хочу реализовать блок суть которого в следующем: Найти большое аналоговое значение с N входов при условие что на нем нет ошибки. Аналоговые показания берутся по modbus.
Добрый день. Продолжаю мучать Евгения вопросами)
Можно ли в программе изменить время до выхода пользователя? Вообще, можно программно переключать UseAutoLogoutTime и изменять RemainingAutoLogoutTime?
Последний раз обсуждалось тут https://owen.ru/forum/showthread.php...l=1#post297424
А случайно нет примера. Не могу найти , а сообразить самому мозгов не хватает.
Посмотрите, как в библиотеке OSCAT реализованы функции работы с массивами (ARRAY_SUM и т.п.).
https://ftp.owen.ru/CoDeSys3/04_Libr....3.4.0.package
Откройте .package архиватором (например, WinZip), вытащите оттуда файл .library и откройте его в CODESYS, чтобы увидеть исходный код библиотеки.
Посмотрите пример, который выложен здесь:
https://forge.codesys.com/forge/talk...ad/37a2b491cb/
Там показано много всего - и, в частности, функция SetAutoLogoutTime, которая позволяет решить вашу задачу.
Доброго времени суток!
Сконфигурировал МУ110-224.16Р. Задал маску выходов (запись). Написал программу на языке ST. В режиме эмуляции происходит запись в маску. Задал маску выходов (чтение). Выходы в маску не считываются. Помогите, как на языке ST считать маску выходов (чтение).
Здравствуйте, в визуализации кодесис есть элемент "таблица", если к ней подключить массив данных
гдеКод:// Массив точек таблицы соотношения газ/воздух
aprGas_Air_Table: ARRAY [0..254] OF point_real;
При выборе ячейки таблицы мы получаем номер строки (индекс массива) и столбца(0 - Х, 1 - Y). Могу ли я каким-то образом по номеру столбца обратиться к элементу структуры X или Y?Код:TYPE Point_real :
STRUCT
X:REAL;
Y:REAL;
END_STRUCT
END_TYPE
Функцию напишите и все. Но мне кажется там проще можно, сейчас попробую.
P.S. зачем вам 254 точки газ/воздух?
Я интересуюсь скорее из академического интереса, чем для прикладного применения. О функции я не подумал. Но может есть какие-то штатные механизмы. Через указатели или псевдонимы какие нибудь.
Из-за лени. Это размер входного массива блока аппроксимации. Реально используется 10. Памяти вроде с избытком.
Вложение 57798
А в каком месте у вас сложность? Просто указываю в таблице массив из структур и все само выводится.