Просмотр полной версии : CODESYS V3.5. Вопросы и ответы
Евгений Кислов
21.04.2020, 08:21
Спасибо, с файлами разобрался, ссылки изучу. Сразу, забегая вперед, разве trend может отображать данные, не те, которые сам ведет?
Нет, не может. Но можно одни и те же переменные привязать и к тренду, и к архиватору.
А у меня вот какой вопрос родился.
В визуализации есть какой-нибудь компонент выбора цвета?
Мне надо будет накрутить RGBW-диммер для LED-ленты, и я думаю как цвет ей задавать.
Если ни фига нету - то я выкручусь или списком или кучей кнопок с нужными цветами (поставлю их в ряд или матрицей).
Вернусь к своему же вопросу. Замутил палитру прямо втупую (я учусь, считаем что прокатит).
Сделал следующее:
1. Создал константный массив цветов (LEDColors[1..16]), где заданы нужные цвета.
В CDS они задаются в виде DWORD в формате 0xAARRGGBB, где
AA - прозрачность (00 - прозрачный, FF - непрозрачный)
RR, GG, BB - компоненты цвета RGB
2. Накидал на экран Round Rectanlge.
3. Каждому из них ручками задал переменную цвета как LEDColors[x], где x - номер нужного мне цвета.
4. Каждому из них задал ST-код по OnMouseClick как "LEDxxxColor := LEDColors[x]", где x - тот же самый номер условного цвета.
5. Дальше разодрал LEDxxxColor на RGB и выдал на LED-диммер по ModBus. Ну и до кучи ещё яркость туда же выдаю со слайдера.
Ура, завелось. Примитивно, через задницу - но заработало. А через массив констант можно будет любые удобные 16 цветов зашить (скорее всего никто не будет крутить цвета точно, их подберут и зашьют).
48574
На фотке интерфейс ещё в момент отладки, там справа торчат слайдеры для ручного кручения цвета, про которые Евгений Кислов говорил.
Запасной вариант был ещё таким: накинуть на форму картинку и определять цвет пикселя под курсором. Но как определить цвет пикселя, я не нашёл и забил (это ж не Visual Basic).
Евгений Кислов, спасибо тебе за примеры и доки! Они реально понятные, если вчитываться!
Добрый день, может кто поможет разобраться?
Пытаюсь реализовать алармы через SMTP, нашел на контроллере (СПК207 spk207-som02.03.web) PYTHON, но чего-то не хватает.
К примеру socket.py тащит import _ssl и import _socket.
Где их искать? Или реализация питона не полная?
Заранее спасибо.
PS. Новичек.
Евгений Кислов
24.04.2020, 10:57
Добрый день, может кто поможет разобраться?
Пытаюсь реализовать алармы через SMTP, нашел на контроллере (СПК207 spk207-som02.03.web) PYTHON, но чего-то не хватает.
К примеру socket.py тащит import _ssl и import _socket.
Где их искать? Или реализация питона не полная?
Заранее спасибо.
PS. Новичек.
Добрый день.
Насколько я помню - средствами Linux на СПК207 данную задачу решить нельзя.
Вы можете попробовать open-source библиотеку OSCAT Network для CODESYS - там есть реализация SMTP-клиента, но придется допиливать и отлаживать, скорее всего.
https://store.codesys.com/oscat-network.html
Python в CoDeSys в качестве VB в офисе. Т.е. вроде для реализации всего того что нельзя написать на ST. По факту описания как с этим работать и в каком оно обьеме толком нету даже на немецком. А вы как свой скрипт работать заставить пытаетесь, через CS или напрямую с консоли?
Странно, на контроллере целая директория "emails". Также есть: smtplib.py socket.py Imap.py. Даже ssl.py
Зачем это все... С полным функционалом питона отправить email - 5 строчек. Жаль...
OSCAT пока не копал, но на первый взгляд ssl там нет, т.е. для нормальных серверов потребуется "свой шлюз", а именно этого и хотелось избежать, т.к. зачем лишнее в цепочке.
Кроме того, если есть выделенный шлюз, что rsh + майл клиент проще.
CS. Вот тут куча примеров.
https://docs.python.org/3/library/email.examples.html
Согласен, не стану на питоне циклится, клиент ssh СПК207 вроде есть, также есть домашний маршрутизатор с OPENWRT, письма с него посылать буду :). Кривовато, но схема рабочая.
PS. Из мессенджеров у меня только whatsup, ковырять API совсем не хочется. Спасибо!
Добрый день, пытаюсь применить ПИД регулятор, 4867448675при компиляции ошибок нет, но загрузка прерывается с ошибкой4867248673
В чем может быть проблема?
Евгений Кислов
27.04.2020, 11:04
Эта библиотека поддержана с версии прошивки 1.1.0611.1056.
Надо отметить, что это тестовая версия библиотеки - в ней есть проблемы, которые затрудняют ее использование.
Протестированная и отредактированная версия библиотеки будет доступна с релизом следующей прошивки.
Ясно, текущая версия прошивки 1.0.1229.1031.
Существуют ли библиотеки с регулятором для данной прошивки, где их найти?
Евгений Кислов
27.04.2020, 11:51
Ясно, текущая версия прошивки 1.0.1229.1031.
Существуют ли библиотеки с регулятором для данной прошивки, где их найти?
ПИД есть в библиотеке Util (устанавливается вместе с CODESYS) и OSCAT Basic (можно скачать с нашего сайта).
Спасибо, нашел, буду пробовать
Карбофос
28.04.2020, 08:56
Добрый день! СПК107[M01], пара вопросов:
1. Можно ли как-то принудительно обновить экран визуализации? (Периодически по таймеру или командой). Бывает такое, что после открытия и закрытия диалоговых окон остаются "вырезы" на элементах основного окна.
2. Как определить, насколько много ресурсов контроллера потребляет программа? Для того чтобы понимать, можно ли добавлять для него новые задачи или лучше добавить для них новый контроллер.
Евгений Кислов
28.04.2020, 09:12
Добрый день! СПК107[M01], пара вопросов:
1. Можно ли как-то принудительно обновить экран визуализации? (Периодически по таймеру или командой). Бывает такое, что после открытия и закрытия диалоговых окон остаются "вырезы" на элементах основного окна.
2. Как определить, насколько много ресурсов контроллера потребляет программа? Для того чтобы понимать, можно ли добавлять для него новые задачи или лучше добавить для них новый контроллер.
Добрый день.
1. https://owen.ru/forum/showthread.php?t=28167&p=323241&viewfull=1#post323241
2. При подключении к контроллеру: Конфигурация задач - Мониторинг
См. здесь: https://www.youtube.com/watch?v=bS4CrfbuQkk&feature=youtu.be (достаточно первых нескольких минут)
добрый день всем! подскажите, что такое POINTER TO APID_POS_VALV и где его взять?
Евгений Кислов
28.04.2020, 10:50
добрый день всем! подскажите, что такое POINTER TO APID_POS_VALV и где его взять?
Добрый день.
Пока лучше отказаться от этой библиотеки в пользу ПИД из Util.
https://owen.ru/forum/showthread.php?t=20069&p=331271&viewfull=1#post331271
Подскажите синтаксис инициализации переменных сложных типов.
Поясню. Пусть есть структура:
TYPE TEC :
STRUCT
Name: STRING(10);
S1:UINT;
S2:UINT;
S3:UINT;
T:REAL;
END_STRUCT
END_TYPE
Создаем реализации структуры:
VAR
tec1:tec;
tec2:tec;
tec3:tec;
END_VAR
А теперь на этапе инициализации надо поместить в tec1.name некую строку по умолчанию. Ну по типу, как пишут:
VAR
a1:INT:=4;
END_VAR
Где то находил этот замудреный синтаксис, но не помню где :(
Вот, нашёл у себя. Вот например описалово типа:
TYPE ClrRGBW :
//Самая простая структура для описания RGBW-цвета в среде CodeSys
STRUCT
ClR : INT; //Красный R (0-255)
ClG : INT; //Зелёный G (0-255)
ClB : INT; //Синий B (0-255)
ClW : INT; //Белый W (0-255)
END_STRUCT
END_TYPE
А вот инициализация:
VAR
//Раскодированный цвет из числа DWORD в RGBW
SrcRGBW : ClrRGBW := (ClR := 0, ClG :=0, ClB := 0, ClW := 0);
END_VAR
А вот инициализация:
Спасибо! Похоже это оно и есть!
Не за что! Я прям из своего рабочего проекта достал. Значит точно оно и точно работает =)
vatruh77
30.04.2020, 15:17
Здравствуйте!
Можно ли использовать объявленные константы в определении значений переменных или в параметрах элементов визуализации ?
Например:
VAR_GLOBAL CONSTANT
constNumFlowmeter: UINT := 5;
END_VAR
VAR
i: UINT := constNumFlowmeter; // ТАК НЕ РАБОТАЕТ!!!
END_VAR
В параметрах компилятора опция: "Замена констант" установлена.
vatruh77
30.04.2020, 15:44
О каком префиксе идет речь ?
Евгений Кислов
30.04.2020, 15:49
О каком префиксе идет речь ?
О пространстве имен (которое совпадает с названием) списка глобальных переменных.
48724
vatruh77
30.04.2020, 15:56
И с префиксом не работает. Работает только при снятии опции "Замена констант". Тоже и в элементах визуализации.
доброго всем утречка! Может кто подскажет программисту от сохи, как можно организовать обращение по номерам к переменным, находящимся в области выходов Modbus TCP slave, то-бишь %QWxxx. Слышал краем уха, что какие-то пойнтеры существуют в природе. Может можно их как-то сюда прикрутить?
Евгений Кислов
01.05.2020, 10:05
доброго всем утречка! Может кто подскажет программисту от сохи, как можно организовать обращение по номерам к переменным, находящимся в области выходов Modbus TCP slave, то-бишь %QWxxx. Слышал краем уха, что какие-то пойнтеры существуют в природе. Может можно их как-то сюда прикрутить?
Добрый день.
Слэйв из библиотеки OwenCommunication решит ваши проблемы:
https://www.youtube.com/watch?v=l-oWDtOzBJg
Добрый день.
Слэйв из библиотеки OwenCommunication решит ваши проблемы:
https://www.youtube.com/watch?v=l-oWDtOzBJg
пожалуй не решит. Я с ним уже пробовал. Всё работает красиво, но потом этот массив не подружить с ОвенКлаудом. Ему, оказывается, отдельные переменные нужны. И что-то они там не очень у меня выделяллись из массива. Может я что-то не так делал...
В общем, нужно мне, чтобы PLC_PRG работала с массивами, в то время как OwenCloud работал с теми же данными как с отдельными переменными.
Евгений Кислов
01.05.2020, 10:17
В любом случае для OwenCloud вам потребуются отдельные переменные элементарных типов.
Так что надо просто вытащить их из массива. Все нужные средства в библиотеке для этого есть.
Посмотрите все же видео - там видно, что в программе идет работа с переменными типа WORD, REAL и т.д. - то есть именно теми, которые вам и нужны.
P.S. - хотя возможно библиотечный slave избыточен в вашем случае. Вы в исходном посте ничего не написали про OwenCloud, и я подумал, что у вас классическая проблема "holiding регистры слэйва не меняются из кода программы".
Как верно заметили ниже - достаточно привязывать к стандартному слэйву не массив, а отдельные WORD'ы
ну а смысл работать с указателями, если напрямую так же будет строчка заниматься value2cloud := array_modbus[0] против ptr:=ADR(array_modbus[0]);value2cloud:=ptr^;
очень интересно. То-есть array_modbus[0] - это ссылка на нулевой элемент %IW3, а дальше от него посчитать можно, или как?
Спасибо! С синтаксисом пойнтеров разобрался, всё работает!:D
убил некоторое время на постановку опытов и чесание в затылке.
Итого, до чего сумел додуматься и доопытиться:
чтобы управлять и смотреть и панелью и овенклаудом,
а) создаём проект с овеновской библиотекой модбас-слейва
б) создаём кучку переменных для облака.
в) пишем что-то типа
IF(writ)THEN
panel[0]:=val;
panel[1]:=val2;
panel[2]:=val3;
panel[3]:=val4;
ELSE
val:=panel[0];
val2:=panel[1];
val3:=panel[2];
val4:=panel[3];
END_IF;
где
panel - массив данных от Овеновской библиотеки
writ - переключатель на запись с облака, который с облака и включаем
Хорошо б было не писать кучу присваиваний, а циклом их, по пойнтерам. Но не выходит ничего, так как кодесис как-то загадочно переменные в памяти раскидывает.
Евгений Кислов
02.05.2020, 09:31
Хотелось бы уточнить, что всех этих трудностей можно было бы избежать, если бы в качестве панели использовалась бы web-панель ВП110.
Тогда Modbus Slave и все связанные с ним операции просто бы не понадобились.
коллеги добрый день!
Нужен совет.
Имеется пк, на котором разрабатываются проекты в Cds3. Имеются собственные библиотеки. Вообщем все хорошо, пока не надо переносить проект на ноутбук и ехать на пнр.
Кто как разрабатывает? Вот мне надо правку в библиотеке сделать и как быть? Править на пк , а потом переносить на ноут ? Опять же, если несколько проектов используют одну библиотеку то перенос актуальной превращается в то ещё занятие.
Например в САПРах различных есть база данных с проектами и библиотеками, к ней из любого пк подключается и работаешь . Есть ли в cds3 онлайн хранилище библиотек ?
Да яндекс диск и гугл диск называются. Ну или любое другое по вкусу.
Сергей0308
04.05.2020, 08:27
Можно собственный сетевой накопитель дома поставить и иметь к нему доступ через интернет.
Да яндекс диск и гугл диск называются. Ну или любое другое по вкусу.
Можно собственный сетевой накопитель дома поставить и иметь к нему доступ через интернет.
Ну про сетевые хранилища то все понятно. Вопрос в том как вы организовываете ?
Просто добавляете в репозиторий библиотек сетевую папку ?
48774
С SVN есть у кого практика работы ?
Системный лог контроллера ПЛК210 забит подобными записями:
daemon.err owen-cloud[10980]: 2020/04/06 9:54:06 error: gethostbyname("gate.owencloud.ru") failed
И искать что-то полезное там становится сложновато. Как можно полностью отключить Owen Cloud? В настройках проекта Codesys он отключен, в настройках ПЛК отключение не нашёл.
Да и не очень хорошо как-то получается: вроде соединение с Owen Cloud нигде не включалось, а ПЛК всё-равно туда лезет, зачем?
Евгений Кислов
06.05.2020, 13:13
Системный лог контроллера ПЛК210 забит подобными записями:
daemon.err owen-cloud[10980]: 2020/04/06 9:54:06 error: gethostbyname("gate.owencloud.ru") failed
И искать что-то полезное там становится сложновато. Как можно полностью отключить Owen Cloud? В настройках проекта Codesys он отключен, в настройках ПЛК отключение не нашёл.
Да и не очень хорошо как-то получается: вроде соединение с Owen Cloud нигде не включалось, а ПЛК всё-равно туда лезет, зачем?
В таргет-файле в узле OwenCloud нужно каналу Enable OwenCloud присвоить значение FALSE.
В одной из следующих прошивок будет сортировка журнала по фильтрам, что упростит поиск нужных сообщений.
В таргет-файле в узле OwenCloud нужно каналу Enable OwenCloud присвоить значение FALSE
Сделал, однако:
1. В логе до сих пор появляются те же сообщения
2. В таргет файле бит OwenCloud Enabled теперь стал FALSE
3. Поле Status периодически изменяет состояние c NO_COM на CONNECT, скриншот прилагаю
ПЛК не имеет подключения ни к каким сетям. Вопрос был не в том, почему не резволвится, а почему продолжаются попытки подключения к сервису, который отключён.
Евгений Кислов
06.05.2020, 14:16
Принято, проработаем этот вопрос в следующих прошивках.
почему продолжаются попытки подключения к сервису, который отключён.
Потому что, похоже, канал Enable OwenCloud обрабатывается не совсем корректно.
Спасибо, буду ждать обновлений!
Добрый день!
Не могу найти как ограничить диапазон выпадающего списка, подскажите пожалуйста, где можно найти ?
Без галочки которой нет, ограничение не работает.
4889148892
Евгений Кислов
08.05.2020, 15:07
Добрый день!
Не могу найти как ограничить диапазон выпадающего списка, подскажите пожалуйста, где можно найти ?
Без галочки которой нет, ограничение не работает.
4889148892
Добрый день.
Эти настройки доступны только в том случае, если привязана целочисленная переменная и список текстов.
У вас же - перечисление со встроенным списком текстов.
В перечислении диапазон уже ограничен по умолчанию (природой самого перечисления).
Добрый день.
Эти настройки доступны только в том случае, если привязана целочисленная переменная и список текстов.
У вас же - перечисление со встроенным списком текстов.
В перечислении диапазон уже ограничен по умолчанию (природой самого перечисления).
Спасибо, так работает как надо.
добрый день.помогите пожалуйста.в ошибке выдано неизствестный тип TP.как это исправить?
В менеджере библиотек добавить standard.lib
И вопрос для другой ветки форума.
вот именно ,я искал в библиотеке и не мог найти standard.lib
вот именно ,я искал в библиотеке и не мог найти standard.lib
Мария Мильчакова
12.05.2020, 09:53
вот именно ,я искал в библиотеке и не мог найти standard.lib
Добрый день.
Вам ответили в другой ветке форума:https://owen.ru/forum/showthread.php?t=33187&p=332251#post332251
Добрый день!
Подскажите, можно ли как нибудь подменить список текстов или перечисление для выпадающего списка?
Евгений Кислов
12.05.2020, 17:07
Добрый день!
Подскажите, можно ли как нибудь подменить список текстов или перечисление для выпадающего списка?
Добрый день.
Что вы подразумеваете под "подменить"?
Опишите лучше с точки зрения конкретной задачи, которую надо решить.
Добрый день.
Что вы подразумеваете под "подменить"?
Опишите лучше с точки зрения конкретной задачи, которую надо решить.
Есть конфигуратор выходов, первый выпадающий список позволяет выбрать тип, АО или DO, для модулей вывода.
Если выбираю АО то во втором списке появляется выбор выхода АО в количестве 8 штук,
Если выбираю DO, во втором списке выпадает выбор из 16 DO.
Понятное дело, что можно выходы АО и DO назвать словом “выход X“ и ограничить второй по условию или сделать Мега список и изменять начальный и конечный индекс
Но хотелось бы иметь возможность просто менять списки или какими то костылями подменять названия в выпадающем списке
О! А если сделать два списка поверх и скрывать ненужный?
Евгений Кислов
12.05.2020, 17:53
Фактически, список текстов - это файл формата .txt в папке /visu.
Вы можете перезаписать его в процессе работы (например, через библиотеки работы с файлами - CAA File, SysFile и т.д.).
После этого надо будет "перезагрузить" списки текстов в визуализации функцией DynamicTextReloadTexts из библиотеки CmpDynamicText.
Сложности начинаются в тот момент, когда требуется не перезаписывать список текстов полностью, а редактировать в нем конкретные записи и при этом они содержат кириллицу (т.е. кодировка файла - UTF16).
В данный момент времени простых способов решения этой задачи нет - они появятся в следующей прошивке, в которую мы добавим поддержки утилиты iconv.
В ближайшее время я планировал снять видео с демонстрацией решения похожей задачи - пользователь выбирает рецепты с помощью выпадающего списка, при создании нового рецепта в этом списке автоматически появляется имя созданного рецепта.
P.S. - если речь о переключении нескольких заранее известных списков текстов, то описанный выше Cs-Cs способ будет значительно проще.
О! А если сделать два списка поверх и скрывать ненужный?
Грубо говоря есть массив вида [x][y]
X модули
y выходы
Вот индекс массива связан с выпадающим списком для настроек по этому скрывать не вариант
Фактически, список текстов - это файл формата .txt в папке /visu.
Вы можете перезаписать его в процессе работы (например, через библиотеки работы с файлами - CAA File, SysFile и т.д.).
После этого надо будет "перезагрузить" списки текстов в визуализации функцией DynamicTextReloadTexts из библиотеки CmpDynamicText.
Сложности начинаются в тот момент, когда требуется не перезаписывать список текстов полностью, а редактировать в нем конкретные записи и при этом они содержат кириллицу (т.е. кодировка файла - UTF16).
В данный момент времени простых способов решения этой задачи нет - они появятся в следующей прошивке, в которую мы добавим поддержки утилиты iconv.
В ближайшее время я планировал снять видео с демонстрацией решения похожей задачи - пользователь выбирает рецепты с помощью выпадающего списка, при создании нового рецепта в этом списке автоматически появляется имя созданного рецепта.
Лучше тогда подождать, спасибо )
Я думал что можно запихать в функцию sel два перечисления , а на выходе записать в переменную типа ANY , затем подать на вход выпадающего списка , но не прокатило
Хотя можно и со скрытием попробовать , может ошибаюсь
А вот эта та самая прошивка вместе с которой ещё и Owen PID будет ?
Евгений Кислов
12.05.2020, 18:27
это всёравно слишком накладно, даже если использовать tempfs
Скорее всего желают как на скрине в нижнем отделе контроль, одно слово активация обновления списка, соседнее количесво элементов списка
Накладность определяется конкретной задачей.
По моему опыту - обычно обновление списков текстов происходит не слишком часто и в этот конкретный момент никакого управления не производится (например, в примере с рецептами - подразумевается, что в момент создания/редактирования рецептов установка в стопе). Соответственно, небольшой джиттер на ограниченное число циклов может быть вполне приемлем, особенно если работать с файлами через асинхронную библиотеку.
Могу представить и задачи, в которых это будет неприемлемо. В любом случае, выбор остается за разработчиком, который знает особенности своей системы и требования к таймингам.
По приведенному скрину - в свежих версиях CODESYS появилась возможность для элемента задавать список текстов не в виде константы, а через строковую переменную.
Количество элементов списка можно менять через привязанную переменную прямо в текущей версии.
Евгений Кислов
12.05.2020, 18:30
Лучше тогда подождать, спасибо )
Я думал что можно запихать в функцию sel два перечисления , а на выходе записать в переменную типа ANY , затем подать на вход выпадающего списка , но не прокатило
Хотя можно и со скрытием попробовать , может ошибаюсь
А вот эта та самая прошивка вместе с которой ещё и Owen PID будет ?
Да, предполагается, что это будет "та самая" прошивка.
Я думал что можно запихать в функцию sel два перечисления , а на выходе записать в переменную типа ANY
Переменная типа ANY может быть только входом.
Добрый день, нужен совет
Есть таблица в которой отображаются данные с массивов ФБ
Надо в эту таблицу добавить еще столбец.
Решение есть, это создать еще один массив структур, в который писать данные из нужных массивов и отображать. Но это получается дублирование данных, только ради отображения.
Но возможно ли создать такой массив структур, в котором нужные элементы будут ссылаться на существующие?
То есть несколько разрозненных массивов одинакового размера отобразить в обобщенном виде, но не копируя данные.
Пытался представить что то в этом духе:
STRUCT stARRAYs
a1:array1[0..5];
a2:array2[0..5];
a3:array3[0..5];
END_STRUCT
array1[0..5]
array2[0..5]
array3[0..5]
pArray POINTER TO stARRAYs;
pArray:=ADR(a1,a2,a3)
Евгений Кислов
15.05.2020, 14:45
Добрый день.
Честно говоря, я не очень понял описанную ситуацию.
Есть таблица в которой отображаются данные с массивов ФБ
Надо в эту таблицу добавить еще столбец. Решение есть, это создать еще один массив структур...
По-моему, решение - это добавить еще одну переменную в ФБ. Или по каким-то причинам перенести ее внутрь ФБ нельзя?
В любом случае, хотелось бы более детального описания ситуации со скриншотами.
Добрый день.
Честно говоря, я не очень понял описанную ситуацию.
По-моему, решение - это добавить еще одну переменную в ФБ. Или по каким-то причинам перенести ее внутрь ФБ нельзя?
В любом случае, хотелось бы более детального описания ситуации со скриншотами.
Есть массив фб
Есть массив произвольных данных
В таблице можно отображать один массив или структуру. Значит надо создавать структуру где будет нужный фб и нужная переменная, затем отображать в таблице, активируя нужные столбцы. Но сейчас у меня их и так 30.
А надо то всего пару столбцов с разных массивов объединить в одну структуру и отобразить.
Самой по себе проблемы объединить в новую структуру и записать не трудно. Стало интересно, можно ли сделать структуру указателей на нужные мне данные и отобразить в таблице
49096
Евгений Кислов
15.05.2020, 23:40
Стало интересно, можно ли сделать структуру указателей на нужные мне данные и отобразить в таблице
Да, так можно сделать.
Евгений88
16.05.2020, 14:45
Добрый день у меня вопрос помогите. На сайте store.codesys.com есть примеры различных реализаций, скачиваешь пакет, устанавливаешь появляется в менеджере пакетов, а что дальше делать как просмотреть этот пример?
Евгений Кислов
16.05.2020, 14:55
Добрый день у меня вопрос помогите. На сайте store.codesys.com есть примеры различных реализаций, скачиваешь пакет, устанавливаешь появляется в менеджере пакетов, а что дальше делать как просмотреть этот пример?
При установке пакета вы указываете путь к папке на ПК - эту папку распаковывается файл проекта, описание и т.д.
Евгений88
16.05.2020, 18:51
Спасибо большое
Есть таблица в которой отображаются данные с массивов ФБ
...
Но возможно ли создать такой массив структур, в котором нужные элементы будут ссылаться на существующие?
То есть несколько разрозненных массивов одинакового размера отобразить в обобщенном виде, но не копируя данные.
VladGC, а почему не сделать проще:
Выделить из 30-ти данных с массивов ФБ и определить отдельную структуру из элементов (столбцов), которые будут в таблице. Т.е. будет "табличная" структура из 3-х элементов, и "остальная" структура из 27 элементов. Далее определить массив "табличной" структуры и массив "остальной" структуры. Тогда останется привязать массив "табличной" структуры к таблице. В "табличную" структуру можно включить данные, не являющиеся переменными ФБ.
*Указанное справедливо (без дублирования данных), если определять переменные массива ФБ не во входных/выходных переменных ФБ, а в глобальных массивах структур как здесь: https://owen.ru/forum/showthread.php?t=22549&p=328683&viewfull=1#post328683
**"Остальную" структуру из 27 элементов можно не определять, а оставить определение этих переменных во входных/выходных переменных ФБ. Это как удобнее программисту.
Дополнительно, можно любой столбец таблицы из массива "табличной" структуры переопределить (в самой таблице) любым элементом из массива "остальной" структуры или из любого другого массива структур того же размера. Примечание: сами массивы структур остаются неизменными, изменяется отображаемый столбец в таблице.
VladGC, а почему не сделать проще:
Выделить из 30-ти данных с массивов ФБ и определить отдельную структуру из элементов (столбцов), которые будут в таблице. Т.е. будет "табличная" структура из 3-х элементов, и "остальная" структура из 27 элементов. Далее определить массив "табличной" структуры и массив "остальной" структуры. Тогда останется привязать массив "табличной" структуры к таблице. В "табличную" структуру можно включить данные, не являющиеся переменными ФБ.
*Указанное справедливо (без дублирования данных), если определять переменные массива ФБ не во входных/выходных переменных ФБ, а в глобальных массивах структур как здесь: https://owen.ru/forum/showthread.php?t=22549&p=328683&viewfull=1#post328683
**"Остальную" структуру из 27 элементов можно не определять, а оставить определение этих переменных во входных/выходных переменных ФБ. Это как удобнее программисту.
Дополнительно, можно любой столбец таблицы из массива "табличной" структуры переопределить (в самой таблице) любым элементом из массива "остальной" структуры или из любого другого массива структур того же размера. Примечание: сами массивы структур остаются неизменными, изменяется отображаемый столбец в таблице.
Если я правильно понял, то вы предлагаете вычленить нужные данные и запихнуть в отдельную структуру, то тогда получается нарушится ход мысли в программе , как мне кажется.
То что я показал, это был Массив ФБ с регуляторами и обвязкой, далее для настроек регулятора есть отдельная структура структур в которой хранятся все настройки
По этому попробую получить данные с помощью структуры указателей на нужные данные и объединить в нужный массив указателей
На картинке выделил только часть данных, а там будет еще с других массивов
49141
Если я правильно понял, то вы предлагаете вычленить нужные данные и запихнуть в отдельную структуру, то тогда получается нарушится ход мысли в программе , как мне кажется.
То что я показал, это был Массив ФБ с регуляторами и обвязкой, далее для настроек регулятора есть отдельная структура структур в которой хранятся все настройки
По этому попробую получить данные с помощью структуры указателей на нужные данные и объединить в нужный массив указателей
На картинке выделил только часть данных, а там будет еще с других массивов
49141
Да, Вы меня поняли правильно, это как компромиссный вариант. И ещё я предлагал полностью избавиться от входных/выходных переменных ФБ. В Вашем случае входные переменные я бы вычленил.
По той информации, которую Вы представили, отдельно определять массив структур всех входов aAImodule не нужно. Предполагаю, у Вас 2 входных модуля по 8 AI, всего рабочих каналов 10. Номер модуля и номер входа - это избыточные значения. Оператору, который мониторит 10 температурных зон это не нужно. Ему нужен только номер канала, который будет совпадать с порядковым номером ФБ ПИД-регулятора. В таблице номер строки = номер канала можно отобразить автоматом.
Как я понимаю, для каждого канала - одно значение температуры, следовательно "ход мысли в программе" должен опираться на одну входную переменную - температуру, которая далее будет "размножена" (массивом) на каждый экземпляр ФБ ПИД-регулятора.
Отсюда можно определить вполне логичную структуру входов/состояний ФБ ПИД-регуляторов:
TYPE ZoneInputs_Сonditions :
STRUCT
rTemperature : REAL;
rUstavka : REAL;
rUstavkaTekushchaya : REAL;
rPower : REAL;
xReady : BOOL;
END_STRUCT
END_TYPE
"Ход мысли в программе" может принять, что указанные переменные описывают состояние каждого канала, и важно, чтобы они находились рядом (в одной структуре).
Далее размножаем "важные переменные" на все каналы:
VAR
a_ZoneInputs_Сonditions : ARRAY [1..10] OF ZoneInputs_Сonditions;
END_VAR
Переменные фильтра, ПИД, нарастания уставки можно определить в одной структуре "настроек" и также размножить на все каналы. Итого можно обойтись двумя массивами структур. Первый массив привязываем к таблице.
Обращаю внимание, в таблице можно добавлять столбцы (копировать) и переопределять любой другой переменной того-же размера.
VladGC, используя указатели, которые являются адресами переменных, Вы в любом случае добавляете ещё переменные - эти самые адреса. Я не пробовал привязывать в таблице массивы через указатели, если у Вас получится, напишите, будет интересно.
Добрый день!
Что то не заладилось с шаблоном mx210, а конкретно с чтением статуса ошибки AO
codeEr:ARRAY [1..8] OF Mx210Assistant.ANALOG_OUTPUT_ERRORS;
codeEr1: Mx210Assistant.ANALOG_OUTPUT_ERRORS;
[ERROR] 196: AO_D2_3001 [Device: Ethernet: Modbus_TCP_Master]: Типы канала и соотнесённой переменной Application.PLC_PRG.codeEr[1] не совпадают
Если ко статусу выхода назначить одиночную переменную, все нормально, если из массива то не работает.
49209
vniko, еще не добрался, но обязательно выложу :)
codeEr:ARRAY [1..8] OF USINT;
срабатывает?
codeEr:ARRAY [1..8] OF USINT;
срабатывает?
Так да, но его потом не подать в ANALOG_OUTPUT_ERROR_TO_WSTRING, потому что там ожидается ENUM
Евгений Кислов
22.05.2020, 09:09
Добрый день.
Ошибка воспроизвелась, есть предположение, что она исправлена в свежей версии CODESYS (в баг-трекере есть описание похожего бага) - я позже проверю и отпишусь.
Так да, но его потом не подать в ANALOG_OUTPUT_ERROR_TO_WSTRING, потому что там ожидается ENUM
дополнительно костылем через кейсы, просто ENUM не может использоваться в массивах, он сам как подобие неопределенного массива
Добрый день.
Ошибка воспроизвелась, есть предположение, что она исправлена в свежей версии CODESYS (в баг-трекере есть описание похожего бага) - я позже проверю и отпишусь.
Спасибо!
дополнительно костылем через кейсы, просто ENUM не может использоваться в массивах, он сам как подобие неопределенного массива
Странно, ведь тут тоже вроде как ENUM
Mx210Assistant.ANALOG_SENSOR_VALUE.eStatus , все работает
Для меня в данном случае проще через список текстов, сразу отобразить в таблице
Странно, ведь тут тоже вроде как ENUM
Mx210Assistant.ANALOG_SENSOR_VALUE.eStatus , все работает
массив то где? Ни в одном языке не найдете простого способа, погуглите на предмет массив из перечислений enum
массив то где? Ни в одном языке не найдете простого способа, погуглите на предмет массив из перечислений enum
Вот, массив структур, в котором есть перечисление, все работает и отображается
aAI_D1_3001: ARRAY [1..8] OF Mx210Assistant.ANALOG_SENSOR_VALUE; // Модуль аналоговых вводов 1
49213
Не знал что массив из перечислений enum это проблемная вещь, надо изучить вопрос, спасибо
VladGC, ради чистоты эксперимента, попробуйте определить для Входа1 только Код статуса, как Вы это сделали для Выхода1, через массив. То есть через ANALOG_SENSOR_ERRORS.
Евгений Кислов
22.05.2020, 18:03
Добрый день.
Ошибка воспроизвелась, есть предположение, что она исправлена в свежей версии CODESYS (в баг-трекере есть описание похожего бага) - я позже проверю и отпишусь.
В последней версии CODESYS (3.5.16.0) вместо ошибки компиляции возникает предупреждение, которое исчезает после повторной генерации кода.
Соответственно, проект загружается и нормально работает. Так что надо ждать прошивки с рантаймом 3.5.16.x - постараемся выпустить к концу года.
49222
Только у меня не работает поиск на сайте? Например ввожу "ПИД" - но пишет "Извините, нет совпадений. Попробуйте указать другие ключевые слова."
При этом в теме есть "ПИД".
Евгений Кислов
22.05.2020, 21:36
Только у меня не работает поиск на сайте? Например ввожу "ПИД" - но пишет "Извините, нет совпадений. Попробуйте указать другие ключевые слова."
При этом в теме есть "ПИД".
Для поиска надо минимум 4 символа ввести.
Спасибо! Еще вопросы для ПЛК210:
1. Какой ПИД регулятор лучше использовать?
2. Есть ПИД регуляторы с автонастройкой? Где их взять?
3. Есть ПИД регулятор с двумя импульсными дискретными выходами? Аналого FB ПИД регулятора Siemens CONT_S.
Евгений Кислов
22.05.2020, 22:13
Спасибо! Еще вопросы для ПЛК210:
1. Какой ПИД регулятор лучше использовать?
2. Есть ПИД регуляторы с автонастройкой? Где их взять?
3. Есть ПИД регулятор с двумя импульсными дискретными выходами? Аналого FB ПИД регулятора Siemens CONT_S.
1. Для определенной части процессов (особенно связанных с нагревом) неплохо подходит ПИД из стандартной библиотеки Util.
2. Пока есть только тестовая версия, которая не подходит для использования на объектах. Релизная версия будет доступа в следующей прошивке (летом).
3. Тут есть реверс-инжиниринг версия на ST - может, подойдет:
http://plc4good.org.ua/view_post.php?id=65
Добрый день!
Прошу подсказать по Alarm Configurator,
У Таблицы тревог есть свойство - Счетчик тревог
Но у него есть ограничения, сам счетчик тревог обновляется только на экране где есть таблица, что вроде бы как логичено, таблица обновилась и обновился счетчик.
Однако на других экранах этот счетчик замирает, и при появлении новой аварии не обновится.
Есть ли какие то внутренние счетчики в Alarm Configurator которые работают независимо от таблицы тревог?
49336
Евгений Кислов
29.05.2020, 13:54
Добрый день!
Прошу подсказать по Alarm Configurator,
У Таблицы тревог есть свойство - Счетчик тревог
Но у него есть ограничения, сам счетчик тревог обновляется только на экране где есть таблица, что вроде бы как логичено, таблица обновилась и обновился счетчик.
Однако на других экранах этот счетчик замирает, и при появлении новой аварии не обновится.
Есть ли какие то внутренние счетчики в Alarm Configurator которые работают независимо от таблицы тревог?
49336
Добрый день.
Насколько я помню - можно получить число тревог через библиотеку AlarmManager.
Посмотрите этот пример:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/02_Visu/04_3S/AlarmManager.package
Добрый день.
Насколько я помню - можно получить число тревог через библиотеку AlarmManager.
Посмотрите этот пример:
https://ftp.owen.ru/CoDeSys3/21_Examples/01_3.5.11.5/02_Visu/04_3S/AlarmManager.package
А где можно посмотреть как *.package открывать для просмотра примеров ?
Евгений Кислов
29.05.2020, 18:18
А где можно посмотреть как *.package открывать для просмотра примеров ?
Инструменты - Менеджер пакетов - в процессе установки надо будет выбрать папку, в которую будет распакован файл проекта.
lunyov_i
05.06.2020, 12:21
Добрый день! В Сodesys 3.5 выдаются сообщения для некоторых булевых переменных отображенных в Modbus TCP Slave Device: "не корректный объект для присваивания" Что сие значит? ( Булевое же отображается на булевое)
Фото прилагаю.4947549476
Евгений Кислов
05.06.2020, 12:25
Добрый день.
1. Какая версия CODESYS?
2. Покажите объявление переменных, привязанных к каналам слэйва
lunyov_i
05.06.2020, 16:58
Добрый день.
1. Какая версия CODESYS?
2. Покажите объявление переменных, привязанных к каналам слэйва
1. SP14 PATCH3 ( см.фото )
2. Переменные объявлены в Global Variables ( см. фото )4948149482
Евгений Кислов
05.06.2020, 18:05
Воспроизвести не удалось.
Выложите ваш проект, пожалуйста (можете удалить все лишнее, оставьте только список глобальных переменных и Modbus TCP Slave).
lunyov_i
05.06.2020, 19:10
Воспроизвести не удалось.
Выложите ваш проект, пожалуйста (можете удалить все лишнее, оставьте только список глобальных переменных и Modbus TCP Slave).
Интересно, когда удалил все POUs ( кроме PLC_PRG ) эти предупреждения исчезли.
Очень странное поведение относительно соотнесения входов выходов переменных по ТCP-slave . Проект по сути аналог проекта Codesys-2.3. Там никаких проблем нет. Просто планировал
потихоньку переходить под платформу ПЛК-210, вижу что пока рано. Подскажите в таком случае а как долго будет ПЛК-1xx - выпускаться ?
Евгений Кислов
05.06.2020, 19:18
Я подозреваю, и здесь никаких проблем нет - предупреждение необязательно сообщает о чем-то фатальном.
Но без вашего проекта разобраться в причинах его возникновения не выйдет.
ПЛК1хх не планируется к снятию с продажи в обозримом будущем.
Добрый день!
Подскажите пожалуйста, где настраивается выравнивание текста в таблице событий ?
Там где на скриншоте настраивал результата не дало
4965349654
Евгений Кислов
16.06.2020, 10:05
Добрый день!
Подскажите пожалуйста, где настраивается выравнивание текста в таблице событий ?
Там где на скриншоте настраивал результата не дало
4965349654
Добрый день.
В версии CODESYS V3.5 SP14 Patch 3 данная настройка работает.
Доброго времени суток!
Поставил себе CODESYS V3.5 SP5 Patch 5, но при попытке поработать с ПЛК 210 выдает ошибку, т.к. ставил старую версию, а для работы с плк требуется CODESYS V3.5 SP14 Patch 3, да недоглядел т.к. только учусь, так вот вопрос, можно ли обновить codesys без его переустановки?, или же придется сносить старую версию и ставить более новю, заранее благодарю!
Евгений Кислов
20.06.2020, 11:26
Доброго времени суток!
Поставил себе CODESYS V3.5 SP5 Patch 5, но при попытке поработать с ПЛК 210 выдает ошибку, т.к. ставил старую версию, а для работы с плк требуется CODESYS V3.5 SP14 Patch 3, да недоглядел т.к. только учусь, так вот вопрос, можно ли обновить codesys без его переустановки?, или же придется сносить старую версию и ставить более новю, заранее благодарю!
Добрый день.
Версии устанавливаются независимо друг от друга - просто установите CODESYS V3.5 SP14 Patch 3 в другую директорию.
Старую версию можно не удалять.
kasperbel
29.06.2020, 11:39
Добрый день. Переустановил версию CODESYS V3.5. При переносе проекта столкнулся с проблемой - после вызова диалогового окна "логин" не вызывается клавиатура. Подскажите каким образом происходит ее вызов и что можно сделать. На SP11 такой проблемы не возникало, клавиатура вызывалась автоматически при установке курсора в поле.
Евгений Кислов
29.06.2020, 12:07
Добрый день. Переустановил версию CODESYS V3.5. При переносе проекта столкнулся с проблемой - после вызова диалогового окна "логин" не вызывается клавиатура. Подскажите каким образом происходит ее вызов и что можно сделать. На SP11 такой проблемы не возникало, клавиатура вызывалась автоматически при установке курсора в поле.
Добрый день.
Попробуйте заново создать и настроить управление пользователями.
kasperbel
29.06.2020, 13:42
Создана группа users, в ней один пользователь user2. Создана кнопка. В кнопке по клику сконфигурирован вызов диалога VisuDialogs.Login
После загрузки в контроллер нажатие на кнопку выводит на экран форму User/Login . При установке курсора в поле для ввода пальцем происходит отображение курсора ввода символов и на этом все. Т.е. вызова клавиатуры не происходит.
Зато если подключить физическую клавиатуру к USB, то с нее ввод работает.
P/S в target визуализации ввод по умолчанию стоит "touchscreen"
Евгений Кислов
29.06.2020, 13:46
В кнопке по клику сконфигурирован вызов диалога VisuDialogs.Login
Вместо это надо выбрать действие Управление пользователями, в нем - Логин.
При установке курсора в поле для ввода пальцем происходит отображение курсора ввода символов и на этом все. Т.е. вызова клавиатуры не происходит.
В настройках таргет-визуализации надо выбрать тип ввода - Сенсорный экран.
kasperbel
29.06.2020, 14:09
Спасибо, дело было в "user management".
alexander.kinsfator@gmail.com
30.06.2020, 20:57
Добрый день!
Codesys 3.5.14.3, установлены шаблоны Mx110_Drivers, 3.5.11.04
В них есть ссылка на библиотеку IoDrvModbus, 3.5.11.20,
В системе есть только IoDrvModbus, 3.5.14.00.
Где найти подходящую библиотеку или как приспособить ту, что есть в CodeSys?49971
Евгений Кислов
30.06.2020, 21:12
Добрый день.
На вашем скриншоте вверху справа есть кнопка Загрузка отсутствующих библиотек.
Надо ее нажать.
alexander.kinsfator@gmail.com
30.06.2020, 21:19
Пробовал, пишет "загрузка не удалась".
49972
Евгений Кислов
30.06.2020, 21:29
Пробовал, пишет "загрузка не удалась".
49972
Да, действительно, сервер библиотек пока на техобслуживании.
Вот библиотека:
https://dropmefiles.com/FEzTs
Надо установить через Инструменты - Репозиторий библиотек.
alexander.kinsfator@gmail.com
30.06.2020, 21:43
Спасибо.
Даже проект скомпилировался!
До этого все проекты были на один контроллер и я особо не обращал внимания на вкладки POU и Модули. И вот пошли проекты где контроллеров много, а проект один. Я так понимаю, что какие-то элементы библиотек можно сделать общими для всех контроллеров и разместить их в закладке POU? Или она только для написания библиотек? Простой перенос собственных функций и ФБ на закладку POU желаемого результата не дает - код перестает компилироваться. Где поподробней прочитать про вкладку POU? И для чего нужна вкладка Модули?
49974
Евгений Кислов
01.07.2020, 08:48
Я так понимаю, что какие-то элементы библиотек можно сделать общими для всех контроллеров и разместить их в закладке POU?
Все верно.
Простой перенос собственных функций и ФБ на закладку POU желаемого результата не дает - код перестает компилироваться.
Пришлите, пожалуйста, проект - посмотрим, в чем дело.
И для чего нужна вкладка Модули?
Для работы с платным плагином Application Composer.
https://help.codesys.com/webapp/ac_application_composer_overview;product=core_Appl ication_Composer;version=3.5.16.0
Пришлите, пожалуйста, проект - посмотрим, в чем дело.
Сделал простейший примерчик для себя и на самом деле все работает в части ФБ.
Остался только вопрос - если я на вкладке POU добавляю библиотеку или ImagePool или Визуализацию то они могут вызываться из любого Application (могут использоваться в любом контроллере) или только из тех POU, элементы которых расположены на вкладке POU.
P.S. Какой-то Баден Баден. И объекты POU и вкладка POU но смысл у них разный :-)
Евгений Кислов
01.07.2020, 10:21
Из любого Application.
Но если в рамках одного устройства используется объект с вкладки POU - то у него не должно быть связей с другими устройствами.
Пример: на вкладке POU создан экран визуализации, к элементам которого привязаны переменные из разных устройств.
При попытке настроить в одном из устройств переход на этот экран возникнут ошибки компиляции (так как устройства ничего не знают о переменных других устройств).
Но при этом если в визуализации отображаются только внутриние переменные переданные в визуализацию при вызове эта визуализация может одновременно отображаться на разных ПЛК так?
Евгений Кислов
01.07.2020, 10:49
Но при этом если в визуализации отображаются только внутриние переменные переданные в визуализацию при вызове эта визуализация может одновременно отображаться на разных ПЛК так?
Грубо говоря - все, что создано на вкладке POU, неявно подключается к конкретному устройству при загрузке в него приложения.
Можно воспринимать это как библиотечные элементы.
Так что да, визуализацию там добавить можно - к элементам надо будет привязывать либо переменные интерфейса (в случае создания фрейма или диалога), либо глобальные переменные, созданные на вкладке POU (в случае создания экрана).
uJIb9IHAWK
02.07.2020, 12:59
Добрый день. Подскажите как в Codesys 3.5 реализовать сохранение значений в регистрах сетевых переменных Modbus_Serial_Device при отключении питания?
Требуется сохранить значение сетевой переменной, чтобы при потере связи и кратковременном выключении питания контроллера, последнее полученное значение не сбрасывалось в 0.
Евгений Кислов
02.07.2020, 13:07
Добрый день. Подскажите как в Codesys 3.5 реализовать сохранение значений в регистрах сетевых переменных Modbus_Serial_Device при отключении питания?
Требуется сохранить значение сетевой переменной, чтобы при потере связи и кратковременном выключении питания контроллера, последнее полученное значение не сбрасывалось в 0.
Добрый день.
Вам нужно объявить RETAIN переменные и привязать их к каналам Modbus_Serial_Device.
uJIb9IHAWK
02.07.2020, 15:34
Добрый день.
Вам нужно объявить RETAIN переменные и привязать их к каналам Modbus_Serial_Device.
Не совсем понятно, каким образом произойдет инициализация входных каналов Modbus_Serial_Device от RETAIN переменных.
При включении все равно идет сброс. Подскажите, как правильно реализовать?
Евгений Кислов
03.07.2020, 07:53
Не совсем понятно, каким образом произойдет инициализация входных каналов Modbus_Serial_Device от RETAIN переменных.
При включении все равно идет сброс. Подскажите, как правильно реализовать?
C holding регистрами так не получится - они могут изменяться только со стороны мастер-устройства (и поэтому действительно не восстанавливают свои значения из RETAIN).
Вы можете использовать Modbus TCP Slave из библиотеки OwenCommunication - у него этого недостатка нет.
Просто объявите буфер слэйва в RETAIN.
https://youtu.be/l-oWDtOzBJg
uJIb9IHAWK
03.07.2020, 11:23
Спасибо за ответы. Решил задачу через IF/ELSIF, изменение RETAIN переменной происходит при выполнении условий от holding регистров.
Добрый день!
Подскажите пожалуйста, таблица умеет разыменовывать указатели или нет?
Вставляю массив с указателями, таблица сама ставит ^ , но отображаются нули
5008750088
Евгений Кислов
09.07.2020, 09:58
Добрый день!
Подскажите пожалуйста, таблица умеет разыменовывать указатели или нет?
Вставляю массив с указателями, таблица сама ставит ^ , но отображаются нули
5008750088
Добрый день.
Да, таблица может работать с указателями.
Выложите проект, пожалуйста.
Евгений Кислов
09.07.2020, 13:40
1. Надо сделать так (потому что ENUM в Mx210 Assistant имеет тип USINT) - но проблему это не решит.
50091
2. Без вашего кода - работает:
50092
50094
Я думаю, проблему надо искать в вашем коде - либо в pt_funAiDiagMV210, либо в PLC_PRG.
1. Надо сделать так (потому что ENUM в Mx210 Assistant имеет тип USINT) - но проблему это не решит.
50091
2. Без вашего кода - работает:
50092
50094
Я думаю, проблему надо искать в вашем коде - либо в pt_funAiDiagMV210, либо в PLC_PRG.
Спасибо, действительно в коде, перекинул код из функции в фб, все заработало
Доброго времени суток! Хотелось бы спросить, если ли у кого литература, или возможно предложить свои если есть, примерные задачи для тренировки навыков владения codesys, теорию я освоил более менее, хотело бы "пощупать" реальные проекты)
Заранее благодарю
Добрый день!
На FTP лежит CmpOwenPidRegs_v3.5.14.33.compiled-library , она так же тестовая или уже можно использовать в нормальном режиме ?
Евгений Кислов
13.07.2020, 08:41
Добрый день!
На FTP лежит CmpOwenPidRegs_v3.5.14.33.compiled-library , она так же тестовая или уже можно использовать в нормальном режиме ?
Она для следующей прошивки, релиз которой запланирован на ближайшее время.
В текущих прошивках работать не будет (не получится даже загрузить проект с ней).
Ее можно будет использовать в нормальном режиме.
Она для следующей прошивки, релиз которой запланирован на ближайшее время.
В текущих прошивках работать не будет (не получится даже загрузить проект с ней).
Ее можно будет использовать в нормальном режиме.
А в текущей(3.5.11.1) можно использовать STD PID? Если я правильно понял, тестовая она в части пид с автонастройкой
Евгений Кислов
13.07.2020, 17:17
А в текущей(3.5.11.1) можно использовать STD PID? Если я правильно понял, тестовая она в части пид с автонастройкой
В принципе, можно - но лучше подождать релизной.
Здравствуйте! Каким образом в CoDeSys 3.5 можно распечатать схему которую я создал на языке cfc? Это реально, распечатать ее целиком?
Евгений Кислов
16.07.2020, 11:56
Здравствуйте! Каким образом в CoDeSys 3.5 можно распечатать схему которую я создал на языке cfc? Это реально, распечатать ее целиком?
Добрый день.
Проект - Документ - оставить галочки только рядом с нужными POU
Добрый день!
Подскажите пожалуйста, можно ли убрать лишние теги в OPC UA (что бы они не предлагались для выбора или вообще отсутствовали)? Или перекинуть нужные теги в верх по дереву?
50210
Евгений Кислов
17.07.2020, 10:17
Добрый день.
Насколько я знаю - у пользователя такой возможности нет.
Добрый день!
В какой то момент, перестала отключаться АНР на что стоит обратить внимание?
50271
Евгений Кислов
22.07.2020, 10:40
Добрый день!
В какой то момент, перестала отключаться АНР на что стоит обратить внимание?
50271
Добрый день.
До завершения АНР вход START_ANR должен иметь значение TRUE.
Также на скриншоте сомнительное значение PV_0 и неясности с безусловным вызовом SET_APID_PWM.
Добрый день.
До завершения АНР вход START_ANR должен иметь значение TRUE.
Также на скриншоте сомнительное значение PV_0 и неясности с безусловным вызовом SET_APID_PWM.
Так и сделал, был TRUE, судя по описанию, если я перевожу в FALSE то АНР должна отключиться
Вызов SET_APID при старте плк
Записал видео
https://dropmefiles.com/PSJp1
Евгений Кислов
22.07.2020, 11:05
если я перевожу в FALSE то АНР должна отключиться
Я уточню, как это обрабатывается, но в принципе АНР должна отключаться после завершения АНР.
Возможно, в вашей ситуации требуется перезапуск блока через вход EN.
Я уточню, как это обрабатывается, но в принципе АНР должна отключаться после завершения АНР.
Возможно, в вашей ситуации требуется перезапуск блока через вход EN.
На вход EN реакции нет( касательно АНР)
Здравствуйте.
Не могу в Windows 10 соединиться с СПК105.
Вместо сетевого адаптера "Owen SPK" соединение распознаётся как COM порт.
Что делать?
Евгений Кислов
23.07.2020, 16:46
Здравствуйте.
Не могу в Windows 10 соединиться с СПК105.
Вместо сетевого адаптера "Owen SPK" соединение распознаётся как COM порт.
Что делать?
Добрый день.
В СПК105 порт USB может использоваться как в режиме Device, так и в режиме Host.
Режим выбирается в сервисном меню, после этого надо перезагрузить контроллер.
Вы произвели эту процедуру?
turkish945
26.07.2020, 22:09
Добрый день!
Есть среда 3.5, установленная стандартно, в ней сделал проект. Сейчас установил среду на другом компе, открываю проект - а там куча ошибок, библиотек нет типа, зашел в плейсхолдеры, там все установил. Менеджер библиотек больше не ругается, но ругается на устройство PCL210, ошибка "устройство не установлено в систему", при этом если на устройство нажать правой кнопкой и выбрать "загрузить недостающее описание устройства", то пишет "файл не найден".
Вопроса два:
1. Что сделать, чтоб проект заработал?
2. Почему при аналогично установленной среде нельзя тупо открыть проект и запустить, без плясок с бубном?
krollcbas
26.07.2020, 22:34
Попробуйте сохранять архив проекта со всеми библиотеками и таргетами. Открывая такой файл Вам предложит обновить все настройки, просто согласитесь.
Без бубна - мы не танцуем....
А таргеты ставил на новой среде-то?
Ctakah133
29.07.2020, 14:44
Добрый день.
Подскажите пожалуйста, как в CS3.5 реализовать что то подобное как в OWL "Линия задержки на один цикл"
Суть вопроса:
Сравнение переменной в текущем и предыдущем цикле, если переменная изменилась, то выход истина на один цикл.
Евгений Кислов
29.07.2020, 14:53
Добрый день.
Подскажите пожалуйста, как в CS3.5 реализовать что то подобное как в OWL "Линия задержки на один цикл"
Суть вопроса:
Сравнение переменной в текущем и предыдущем цикле, если переменная изменилась, то выход истина на один цикл.
Добрый день.
В библиотеке OSCAT есть готовый блок для детектирования изменения переменной - D_TRIG.
Ctakah133
04.08.2020, 10:02
Добрый день. Спасибо за предыдущий ответ, очень помог.
Подскажите ещё пожалуйста, есть ли в CS3.5 аналоги ФБ из OWL: SelChF и SelChB ???
Здравствуйте.
Посоветуйте как привязать программу к СПК1хх, чтоб ее нельзя было перенести на другой контроллер никаким способом?
Можно ее привязать к заводскому номеру СПК?
Евгений Кислов
04.08.2020, 10:25
Здравствуйте.
Посоветуйте как привязать программу к СПК1хх, чтоб ее нельзя было перенести на другой контроллер никаким способом?
Можно ее привязать к заводскому номеру СПК?
Добрый день.
Если речь о новых СПК1хх (с маркировкой М01 и портом Ethernet) - то это возможно.
Добрый день.
Если речь о новых СПК1хх (с маркировкой М01 и портом Ethernet) - то это возможно.
Да, спасибо.
Ctakah133
04.08.2020, 10:26
Здравствуйте.
Посоветуйте как привязать программу к СПК1хх, чтоб ее нельзя было перенести на другой контроллер никаким способом?
Можно ее привязать к заводскому номеру СПК?
https://owen.ru/forum/showthread.php?t=28167&page=5&p=294788&viewfull=1#post294788
Евгений Кислов
04.08.2020, 10:31
Добрый день. Спасибо за предыдущий ответ, очень помог.
Подскажите ещё пожалуйста, есть ли в CS3.5 аналоги ФБ из OWL: SelChF и SelChB ???
Добрый день.
Насколько я знаю - готовых аналогов нет.
Станислав2988
11.08.2020, 16:24
Здравствуйте! У меня большой вопрос по работе Retain переменных. Контроллер СПК110. Имеется функциональный блок, который считает время наработки, и в зависимости от прошедшего количества рабочих часов активизирует индикатор на СПК о необходимости проведения регламентных работ. Ранее переменные, отвечающие за часы, минуты наработки, были выходными переменными функционального блока, и когда я в теле основной программы привязывал к этим выходам переменные и объявлял их Retain, они при выключении питания не сохранялись. Затем я их объявил Retain уже внутри ФБ, и значения этих переменных стали сохраняться. НО у меня есть еще переменная внутри ФБ, которая привязана к выходу CV счетчика CTU и показывает количество проведенных регламентных работ, и соответственно должна быть тоже энергонезависимой, но когда я ее объявляю Retain внутри ФБ, то значение ее все равно не сохраняется при сбросе питания. Помогло только объявление всего ФБ как Retain. Почему такое происходит? одни переменные, объявленные внутри ФБ как Retain сохраняются,другие не сохраняются?50594
Евгений Кислов
11.08.2020, 17:24
Добрый день.
Чтобы осознать происходящее - надо всегда помнить о том, что по умолчанию выход CV счетчика CTU не является энергонезависимым.
Ранее переменные, отвечающие за часы, минуты наработки, были выходными переменными функционального блока, и когда я в теле основной программы привязывал к этим выходам переменные и объявлял их Retain, они при выключении питания не сохранялись.
После перезагрузки CV = 0 (помним, что он не энергонезависимый) - и это значение копируется в RETAIN-переменную программы.
Затем я их объявил Retain уже внутри ФБ, и значения этих переменных стали сохраняться.
Тут все логично и не требует объяснений.
НО у меня есть еще переменная внутри ФБ, которая привязана к выходу CV счетчика CTU и показывает количество проведенных регламентных работ, и соответственно должна быть тоже энергонезависимой, но когда я ее объявляю Retain внутри ФБ, то значение ее все равно не сохраняется при сбросе питания.
После перезагрузки CV = 0 (помним, что он не энергонезависимый) - и это значение копируется в RETAIN-переменную ФБ.
Помогло только объявление всего ФБ как Retain. Почему такое происходит? одни переменные, объявленные внутри ФБ как Retain сохраняются,другие не сохраняются?
После этого ВСЕ переменные ФБ стали энергонезависимыми. В том числе - экземпляр счетчика, и, соответственно, его выходная переменная CV также стала энергонезависимой.
С точки зрения практической части - посмотрите этот пример, он позволил бы не писать свой код для данной задачи:
https://owen.ru/forum/showthread.php?t=28167&p=336945&viewfull=1#post336945
Станислав2988
11.08.2020, 17:44
Евгений, спасибо за быстрый ответ!
Разместил здесь сообщение, исчезло бесследно, но в личке 1 ответ есть. Где искать само сообщение?
Евгений Кислов
13.08.2020, 12:04
Разместил здесь сообщение, исчезло бесследно, но в личке 1 ответ есть. Где искать само сообщение?
Я его перенес сюда:
https://owen.ru/forum/showthread.php?t=10555&page=795
так как оно не касается данной темы (CODESYS V3.5)
Странная ситуация. Дано CDS 3.5 SPK107 и CDS 2.3 PLC110. Определено несколько структур, которые есть и там и там. Структуры в CDS 3.5 и CDS 2.3 одинаковы. Но когда я смотрю их размер (sizeof) там и там, то у некоторых структур размер одинаковый, а у некоторых он отличается в CDS 2.3 в большую сторону. Как такое возможно?
Евгений Кислов
18.08.2020, 09:51
Как такое возможно?
Чтобы понять это - стоит почитать любую подробную статью про выравнивание данных.
Начать можно с википедии:
https://en.wikipedia.org/wiki/Data_structure_alignment
По практической составляющей вопроса - в CODESYS V3 можно управлять выравниванием с помощью атрибута, указываемого при создании структуры:
https://help.codesys.com/webapp/_cds_pragma_attribute_pack_mode;product=codesys;ve rsion=3.5.16.0
Согласен. А как управлять выравниванием в 2.3? Или как правильно выровнять в 3.5, чтобы это согласовывалось с 2.3? Мне нужно этими структурами обмениваться по Modbus и, соответственно, резервировать адресное пространство.
Евгений Кислов
18.08.2020, 10:25
Чтобы согласовывалось - надо использовать {attribute 'pack_mode' := '0'}
А в ФБ собственного сочинения можно такую вкладку сделать?50770
Евгений Кислов
25.08.2020, 06:33
А в ФБ собственного сочинения можно такую вкладку сделать?50770
Эта вкладка используются для работы с переменными, объявленными как VAR_INPUT CONSTANT
https://help.codesys.com/webapp/_cds_cfc_editor_in_online_mode;product=codesys;ver sion=3.5.16.0#changing-of-constant-input-parameters-of-function-block-instances
turkish945
27.08.2020, 23:03
Всем добра!
объявил массив переменной длины: arr1: array of int;
нигде не могу найти как в него добавлять и удалять элементы. Подскажите.
Спасибо.
Всем добра!
объявил массив переменной длины: arr1: array of int;
нигде не могу найти как в него добавлять и удалять элементы. Подскажите.
Спасибо.
https://stefanhenneken.net/2016/09/27/iec-61131-3-arrays-with-variable-length/
[ATTACH=CONFIG]50883
Подскажите пожалуйста, что это за предупреждение?
Евгений Кислов
02.09.2020, 13:54
[ATTACH=CONFIG]50883
Подскажите пожалуйста, что это за предупреждение?
Оно касается протокола CAN - наши контроллеры его не поддерживают.
Видимо, у вас контроллер другого производителя - лучше обратитьcя в его техподдержку.
Добрый день, уважаемые коллеги, а кто-нибудь связывал устройство защиты двигателя УБЗ-302 с контроллером в среде CDS 3.5 . У меня почему-то нет доверия, какие там подводные камни ожидаются? Может какое-нибудь другое устройство защиты двигателя посоветуете?
Я связывал многократно. Проблема одна - по RS485 он не работает с некоторыми контроллерами, а по RS232 все хорошо.
А с ПЛК210 будет он работать?
По rs232 точно будет. По rs485 не знаю.
Уважаемые специалисты, ткните носом. Codesys 3.5 управление вент. установкой. Включение и выключение по одному и тому же регистру modbus. Как сделать переключение вкл-выкл в визуализации через клавишный выключатель, при этом при старте контроллера читать актуальное состояние. С обычной кнопкой проблем особых нет. Статус и включение можно разделить. А через клавишный выключатель не получается.
Евгений Кислов
14.09.2020, 16:23
Уважаемые специалисты, ткните носом. Codesys 3.5 управление вент. установкой. Включение и выключение по одному и тому же регистру modbus. Как сделать переключение вкл-выкл в визуализации через клавишный выключатель, при этом при старте контроллера читать актуальное состояние. С обычной кнопкой проблем особых нет. Статус и включение можно разделить. А через клавишный выключатель не получается.
Добрый день.
Покажите, что вы делаете и что именно не получается.
Да не то что бы не получается, я в принципе не понимаю как это сделать.
51039
Создано 2 канала.
В программе есть переменная.
Vent_Room1_On_Status: BOOLEAN;
Хотелось бы выполнить задачи:
1. Считать состояние установки при старте контролера (и делать это постоянно).
2. В визуализации используя клавишный выключатель реализовать передачу команды на включение установки и соответственно чтобы его положение изменилось на "Включено"
3. При выключении установки с ее пульта изменить состояние в визуализации на выключено.
С обычной кнопкой это получается без проблем, там событий много обрабатывается. А у клавишного выключателя только привязка к одной переключаемой переменной.
Евгений Кислов
14.09.2020, 18:11
Если с обычной кнопкой все получается - то поверх клавишного выключателя расположите элемент Невидимый ввод (из группы Стандартные элементы управления).
На него повесьте все события, а выключатель будет использоваться только для индикации состояния переменной.
Спасибо огромное!
Еще вопрос. Поправьте если я не прав.
При использовании тригерной переменной для канала modbus, ее необходимо вернуть в значение false Это можно сделать с помощью блока типа TON. Какая должна быть задержка? Не менее длины цикла основной программы?
Евгений Кислов
15.09.2020, 06:33
Спасибо огромное!
Еще вопрос. Поправьте если я не прав.
При использовании тригерной переменной для канала modbus, ее необходимо вернуть в значение false Это можно сделать с помощью блока типа TON. Какая должна быть задержка? Не менее длины цикла основной программы?
Если работа с триггерной переменной производится в задаче цикла шины (см. здесь (https://ftp.owen.ru/CoDeSys3/98_Books/CodesysTaskManagment.pdf) п. 4) - то достаточно сгенерировать единичный импульс через R_TRIG.
Универсальный вариант, который позволяет не зависеть от особенностей работы драйверов и настроек проекта - это циклически читать значение, которое записывается по триггеру.
Если считанное значение равно заданному, то триггер точно можно сбросить.
Евгений, невидимый ввод отлично работает, спасибо!
Видимо вопрос правильнее было помещать в визуализацию...
При наложении элементов друг на друга, фокус ввода всегда на верхнем элементе, на нижний событие уже не попадет?
Евгений Кислов
15.09.2020, 17:29
Евгений, невидимый ввод отлично работает, спасибо!
Видимо вопрос правильнее было помещать в визуализацию...
При наложении элементов друг на друга, фокус ввода всегда на верхнем элементе, на нижний событие уже не попадет?
Да, именно так.
Добрый день!
Есть ФБ CRC_GEN у которого вход именно POINTER TO ARRAY[0..32000] OF BYTE. Как реализовать заполнение POINTER TO ARRAY[0..32000] OF BYTE - передачу в него данных;
Пробовал:ar:"arr: ARRAY[1..7]OF BYTE :=[0,1,0,0,1,23,1]; "-но жалуется что формат не тот.
А такой вариант: "arr: POINTER TO ARRAY[1..7] OF BYTE :=[0,1,0,0,1,23,1];" - недопустимая инициализация массива, как быть? Спасибо за ответ!
Евгений Кислов
21.09.2020, 14:31
Добрый день.
Посмотрите тут пример, стр. 380:
https://ftp.owen.ru/CoDeSys3/98_Books/oscat_basic333_ru.pdf
abyModbusRequest: ARRAY [0..5] OF BYTE;
Спасибо большое.
Еще вопрос: а как быть с порождающим полиномом 0x04C11DB7. Т.е. значение нужно представить в формате DWORD.
Пробовал так: polinom: DWORD:=32#04C11DB7;
polinom: DWORD:='04C11DB7';
но никак не получается...
Евгений Кислов
21.09.2020, 16:51
polinom: DWORD:=16#04C11DB7;
Евгений Кислов
22.09.2020, 10:13
хм, да так работает... - но как быть с 32-х разрядным значением?
Что вы называете "32-х разрядным значением"?
16# - указание на запись в 16-ричной системе счисления (https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D1%81%D1%82%D0%BD%D0%B0%D0%B4%D1%86%D 0%B0%D1%82%D0%B5%D1%80%D0%B8%D1%87%D0%BD%D0%B0%D1% 8F_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1% 81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F ), записи 32# в CODESYS в принципе не существует.
Евгений, добрый день. Подключаю панель вайнтек к плк210. Для настройки обмена используется символьная конфигурация. Файл описания устройства должен выложиться в папку проекта. Не могу понять, в какой момент это происходит. Чаще всего файл размером 1кб и без описания экспортируемых переменных. В какой последовательности выполняются эти операции? Компиляция, очистка, загрузка в контроллер?
Навострился полная очистка, компиляция, логин с полной загрузкой. Но видимо где-то косячу
Евгений Кислов
22.09.2020, 18:45
Евгений, добрый день. Подключаю панель вайнтек к плк210. Для настройки обмена используется символьная конфигурация. Файл описания устройства должен выложиться в папку проекта. Не могу понять, в какой момент это происходит. Чаще всего файл размером 1кб и без описания экспортируемых переменных. В какой последовательности выполняются эти операции? Компиляция, очистка, загрузка в контроллер?
Навострился полная очистка, компиляция, логин с полной загрузкой. Но видимо где-то косячу
Добрый день.
После установки галочек в символьной конфигурации надо выполнить команду Компиляция - Генерировать код.
После этого создается нужный .xml.
Вообще, с Weintek проще через OPC UA настраивать обмен - тогда никакие файлы не нужны.
Михаил Непомнин
26.09.2020, 08:15
Подскажите пожалуйста, как ожно от ПЛК передавать команды цифровому вольтметру. Речь идет про систему команд SCPI
Евгений Кислов
26.09.2020, 08:18
Это можно сделать с помощью библиотеки OwenCommunication.
Блок UNM_SerialRequest позволяет отправить произвольные данные - вам нужно будет только формировать в коде нужные команды и разбирать ответы.
https://youtu.be/uH3hnXmc0fw
Дед Пантелей
30.09.2020, 06:51
Добрый день.
С некоторого времени при попытке обновить программу в режиме эмуляции СПК107м01 появляется окно "В данным момент вы не обладаете достаточными правами.." и требует логин и пароль. Дело видимо в виртуальном контроллере. Как его "сбросить" на "заводские настройки"?
Евгений Кислов
30.09.2020, 07:36
Добрый день.
С некоторого времени при попытке обновить программу в режиме эмуляции СПК107м01 появляется окно "В данным момент вы не обладаете достаточными правами.." и требует логин и пароль. Дело видимо в виртуальном контроллере. Как его "сбросить" на "заводские настройки"?
Добрый день.
Логин и пароль по умолчанию - Administrator/Administrator
Видео по сбросу на заводские: https://www.youtube.com/watch?v=9tfm0y_Bwis
Дед Пантелей
30.09.2020, 07:40
Евгений, благодарю!
Спорягин Кирилл
05.10.2020, 12:43
Добрый день, форумчане.
Подскажите, где взять эту недостающую библиотеку - CmpSysExec 1.0.0.2 (см. снимок экрана)?
Спорягин Кирилл
05.10.2020, 12:44
При нажатии на кнопку "Загрузить отсутствующие библиотеки" пишет, что загрузка не удалась.
Евгений Кислов
05.10.2020, 12:46
https://ftp.owen.ru/CoDeSys3/04_Library/02_Manual_installation/07_CmpSysExec/1.0.0.2/CmpSysExec_1.0.0.2.compiled-library
Спорягин Кирилл
05.10.2020, 13:16
https://ftp.owen.ru/CoDeSys3/04_Library/02_Manual_installation/07_CmpSysExec/1.0.0.2/CmpSysExec_1.0.0.2.compiled-library
Спасибо. Загрузил.
Теперь не может разрешить имя IoDriver Utility (хотя соответствующая библиотека установлена) - см. снимок.
Евгений Кислов
05.10.2020, 13:41
Вам надо версию компонента Ethernet изменить на подходящую под таргет (3.4.2.0).
Спорягин Кирилл
05.10.2020, 13:48
Вам надо версию компонента Ethernet изменить на подходящую под таргет (3.4.2.0).
Спасибо.
Я пока сам копался заметил, что на ноутбуке все компилируется, а там используется версия Ethernet 3.5.7.0.
Только как установить эту старую версию адаптера?
Спорягин Кирилл
05.10.2020, 13:52
При попытке обновить адаптер с указанием "Использовать устаревшие версии" и "Версии для экспертов" он показывает только 3.5.11.0.
Евгений Кислов
05.10.2020, 14:07
Тогда надо установить архив репозитория (ссылка в подписи).
Спорягин Кирилл
05.10.2020, 14:14
Тогда надо установить архив репозитория (ссылка в подписи).
Сделал по-другому.
С ноутбука экспортировал адаптер Ethernet 3.5.7.0 из раздела "Репозиторий устройств" в виде файла *.xml.
Затем на рабочей машине в том же разделе ("Репозиторий устройст"), установил это устройство из файла xml.
Все скомпилировалось.
Спасибо.
Добрый день!
ПЛК-210 -03
В какой то момент пропала визуализация
x.x.x.x:8080/webvisu.htm
Появляется индикатор загрузки визуализации, а потом белый экран.
В менеджере визуализации настроено как обычно, экран по умолчанию назначен, задача визуализации крутится, исключений нет
в самом CDS визуализация при подключенном плк так же не отображается
Куда можно еще посмотреть ?
В журнале есть какие то записи
51252
Евгений Кислов
05.10.2020, 16:14
Добрый день!
ПЛК-210 -03
В какой то момент пропала визуализация
x.x.x.x:8080/webvisu.htm
Появляется индикатор загрузки визуализации, а потом белый экран.
В менеджере визуализации настроено как обычно, экран по умолчанию назначен, задача визуализации крутится, исключений нет
в самом CDS визуализация при подключенном плк так же не отображается
Куда можно еще посмотреть ?
В журнале есть какие то записи
51252
Добрый день.
Предоставьте завтра удаленный доступ по TeamViewer, пожалуйста.
Добрый день.
Предоставьте завтра удаленный доступ по TeamViewer, пожалуйста.
Евгений, спасибо за потраченное время в решении проблемы
Проблема оказалась в том, что в процессе редактирования программы, был увеличен счетчик цикла, а массив внутри него нет. Что повлекло за собой нестабильную работу визуализации, подключение по ethernet и т.д
На схожий код компилятор не ругался, по этому на отслеживание проблемы ушло много времени
VAR
xTest: ARRAY [0..10] OF BOOL;
iCountTest: INT;
END_VAR
FOR iCountTest:=0 TO 20 BY 1 DO
xTest[iCountTest]:=TRUE;
END_FOR ;
То есть присвоение вне цикла, вида xTest[12]:=TRUE; сразу бы выдало предупреждение.
C0049: Константый индекс '12' находится вне диапазона от '0' до '10'
Проблема оказалась в том, что в процессе редактирования программы, был увеличен счетчик цикла, а массив внутри него нет. Что повлекло за собой нестабильную работу визуализации, подключение по ethernet и т.д
На схожий код компилятор не ругался, по этому на отслеживание проблемы ушло много времени
Такую проблему (тут любой может ошибиться) можно и нужно исключить "в зародыше".
Объявляется константа, например tmax: INT:=20;. (либо локально в VAR CONSTANT, либо в VAR_GLOBAL CONSTANT)
Массив в объявлении будет такой: aText: ARRAY [0..tmax] OF BOOL;, заголовок цикла в теле программы будет такой: FOR iCountTest:=0 TO tmax DO (если шаг=1, то его можно опустить - это значение по умолчанию).
Если потребуется масштабировать проект, то в этом случае надо будет только изменить tmax в объявлении.
Такую проблему (тут любой может ошибиться) можно и нужно исключить "в зародыше".
Объявляется константа, например tmax: INT:=20;. (либо локально в VAR CONSTANT, либо в VAR_GLOBAL CONSTANT)
Массив в объявлении будет такой: aText: ARRAY [0..tmax] OF BOOL;, заголовок цикла в теле программы будет такой: FOR iCountTest:=0 TO tmax DO (если шаг=1, то его можно опустить - это значение по умолчанию).
Если потребуется масштабировать проект, то в этом случае надо будет только изменить tmax в объявлении.
Да, на всякий случай переделал с константой
Добрый день!
Столкнулся с ситуацией:
Таблица тревог не отображает полосу прокрутки,
после установки галочки в менеджере визуализации, полоса прокрутки появляется, но теперь во фреймах старые числа не затираются, а новые рисуются поверх старых.
Может кто сталкивался ?
51275
51276
Евгений Кислов
07.10.2020, 10:51
Добрый день!
Столкнулся с ситуацией:
Таблица тревог не отображает полосу прокрутки,
после установки галочки в менеджере визуализации, полоса прокрутки появляется, но теперь во фреймах старые числа не затираются, а новые рисуются поверх старых.
Может кто сталкивался ?
51275
51276
Добрый день.
Выложите, пожалуйста, минимальный проект, в котором наблюдается проблема с наложением значений во фрейме.
turkish945
08.10.2020, 14:43
Всем добра!
подскажите, а есть аналог HTTPRequest для HTTPS?
или какой-то другой вариант решения задачи отправки https запросов....
Спасибо.
Евгений Кислов
08.10.2020, 14:45
Всем добра!
подскажите, а есть аналог HTTPRequest для HTTPS?
или какой-то другой вариант решения задачи отправки https запросов....
Спасибо.
Добрый день.
В состав прошивки входит curl, вызывать можно через библиотеку CmpSysExec.
turkish945
08.10.2020, 16:08
Добрый день.
В состав прошивки входит curl, вызывать можно через библиотеку CmpSysExec.
О! какая хорошая библиотека! Спасибо!
а есть какие-нибудь ограничения по использованию приложений операционной системы?
Евгений Кислов
08.10.2020, 16:20
О! какая хорошая библиотека! Спасибо!
а есть какие-нибудь ограничения по использованию приложений операционной системы?
Если речь конкретно о вызовах внешних (для CODESYS) приложений, то явное ограничение только одно - не поддерживаются утилиты, которые создают приглашение для ввода.
Например, нельзя просто запустить ssh, чтобы подключиться одним ПЛК к другому - в терминале бы в этом случае появилось предложение ввести логин/пароль, но через CmpSysExec вы его не увидите и не сможете обработать.
Добрый день!
Не могу сообразить, как сделать discret inputs.(плк в качестве slave)
Точнее я понимаю что можно в inputs register записать bool.
Но надо так:
di0 адрес 0
di1 адрес 1
...
di10 адрес 10
а регистры inputs:
in.reg0 адрес 0
in.reg1 адрес 1
...
in.reg10 адрес 10
Я правильно понимаю, что DI надо задать в общем масиве inputs register? А затем что бы адрес конкретно inp register начинался с 0 надо на вкладке конфигурации сделать смещение?
51300
51299
Евгений Кислов
08.10.2020, 19:02
Добрый день.
Вы все описали правильно за одним исключением - никакого смещения делать не надо, ни для одной из областей.
Добрый день.
Вы все описали правильно за одним исключением - никакого смещения делать не надо, ни для одной из областей.
А куда тогда надо di вставить? Ведь по адресу 0,1 лежит real
Евгений Кислов
08.10.2020, 20:45
Вы пытаетесь использовать ПЛК в качестве замены ранее работавшего в системе прибора, у которого области Discrete Inputs и Input Registers были раздельными?
Вы пытаетесь использовать ПЛК в качестве замены ранее работавшего в системе прибора, у которого области Discrete Inputs и Input Registers были раздельными?
Да, все так , плк будет интегрироваться в существующую асутп. Но в целом хочется понимать, можно ли их разделить(без танцев конечно )
Если стандартными средствами нельзя, а чем то другим, то может и не стоит оно того
Евгений Кислов
09.10.2020, 06:32
Стандартными средствами в данный момент это сделать нельзя - придется самостоятельно писать ФБ для слэйва с нужным функционалом.
В следующей прошивке, которая будет включать в себе более новую версию рантайма CODESYS - такая возможность будет.
51305
energoyardos
09.10.2020, 17:09
Добрый день. Подскажите пожалуйста где можно скачать spk1xxm01-3.5.11.50-2
Евгений Кислов
09.10.2020, 17:44
Добрый день. Подскажите пожалуйста где можно скачать spk1xxm01-3.5.11.50-2
Добрый день.
Зачем вам нужна эта версия? Она использовалась только во время бета-теста, еще перед стартом продаж.
Какая у вас версия прошивки?
Lord_Gemma
09.10.2020, 19:56
Добрый вечер, коллеги! Занимаюсь наладкой и сборкой оборудования. Решил для себе освоить программирование ПЛК, подскажите, с какой версии Codesys лучше начать?
Евгений Кислов
09.10.2020, 20:01
Добрый вечер, коллеги! Занимаюсь наладкой и сборкой оборудования. Решил для себе освоить программирование ПЛК, подскажите, с какой версии Codesys лучше начать?
C CODESYS V3.5
Вероятно, начать проще всего с видеоуроков (https://www.youtube.com/watch?v=H7sUJfsHBEs&list=PL2EcVEe6E9SCzVhL_BCDnaUJROikKheVx&ab_channel=%D0%9E%D0%92%D0%95%D0%9D.%D0%9F%D1%80%D 0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0% B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5%D0%9E%D0%B1%D1%8A %D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5).
Lord_Gemma
09.10.2020, 20:05
Если не сложно, объясните почему именно это версия и и поддерживает ли она предыдущие версии ПЛК
Евгений Кислов
09.10.2020, 20:11
Если не сложно, объясните почему именно это версия и и поддерживает ли она предыдущие версии ПЛК
Поддержка и развитие версии V2.3 прекращены с прошлого декабря.
Выпуск новых ПЛК с ее поддержкой уже производится не будет.
"Предыдущие версии ПЛК" (если речь о ПЛК1хх) в ней программировать нельзя.
Lord_Gemma
09.10.2020, 20:16
Думаю, если изучить сначала Codesys 3, то потом, по необходимости, можно программировать и на Codesys 2?
Евгений Кислов
09.10.2020, 20:19
Думаю, если изучить сначала Codesys 3, то потом, по необходимости, можно программировать и на Codesys 2?
Да, в V2.3 есть ряд своих нюансов, но в целом программировать в V2.3 после V3.5 гораздо легче, чем в V3.5 после V2.3.
Единственное - после V3.5 в версии 2.3 будет не хватать множества вещей, ставших привычными.
Lord_Gemma
09.10.2020, 21:38
Благодарю за оперативную помощь! Начнём изучать
Сделал проект в версии 3.5.11 для СПК110.
Затем решил попробовать версию 3.5.14, установил её, открыл свой проект и сообщение "Не удалось загрузить одну или более ссылок библиотек.." и масса ошибок по визуализации, точнее она совсем не работает.
Target с сайта установил, устройство обновил - не помогло
Ошибки такие:
[ERROR] Мерник_М6_в1_04: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElems'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElems'.)
[ERROR] Мерник_М6_в1_04: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemMeter'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemMeter'.)
[ERROR] Мерник_М6_в1_04: Менеджер библиотек [Device: Plc Logic: Application]: Невозможно открыть библиотеку '#System_VisuElemsSpecialControls'. (Причина: Невозможно разрешить библиотеку плейсхолдера 'System_VisuElemsSpecialControls'.)
В менеджере библиотек появились записи типа
System.VisuElem3DPath=(не разрешено)
...
Возвращаюсь к Кодесис 3.5.11, открываю проект ... а он тоже стал не рабочий, визуализации нет, появилась те же ошибки
Как теперь с этим бороться? Как вообще избежать этой связи версий? Я устанавливал их в разные каталоги.
Евгений Кислов
14.10.2020, 16:50
Проект ваш выложите, пожалуйста.
Я в итоге разные версии в виртуалках развернул.
Проект ваш выложите, пожалуйста.
Мерник_М6_в1_04.project Это проект сделанный в версии 3.5.11
Мерник_М6_в2_00.project новый проект в 3.5.14 сделанный из предыдущего
Я в итоге разные версии в виртуалках развернул.
А у вас какая проблема возникла, что пришлось так радикально поступить?
Евгений Кислов
15.10.2020, 08:44
Мерник_М6_в1_04.project Это проект сделанный в версии 3.5.11
Мерник_М6_в2_00.project новый проект в 3.5.14 сделанный из предыдущего
Мерник_М6_в2_00.project
Проект - Установки проекта - Опции компиляции - выбрать 3.5.14.30
Проект - Установки проекта - Профиль визуализации - выбрать CODESYS V3.5 SP14 Patch 3
Компиляция - Перекомпиляция
После этого ошибки уйдут.
Сделал проект в версии 3.5.11 для СПК110. Затем решил попробовать версию 3.5.14
Чтобы использовать 3.5.14.30 - нужно убедиться, что прошивка контроллера имеет соответствующую версию.
Cм. здесь п. 5.3:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Faq_v.2.4.pdf
Мерник_М6_в2_00.project
Проект - Установки проекта - Опции компиляции - выбрать 3.5.14.30
Проект - Установки проекта - Профиль визуализации - выбрать CODESYS V3.5 SP14 Patch 3
Компиляция - Перекомпиляция
После этого ошибки уйдут.
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Faq_v.2.4.pdf
Спасибо, помогло. По крайне мере ошибок не стало.
А в версии 3.5.11 чтоб убрать ошибки пришлось тоже изменить Проект - Установки проекта - Профиль визуализации -
вместо CODESYS V3.5 SP11 Patch 2 вернул как было v3.5.SP9
Почему установка CODESYS V3.5 SP14 изменила Установки проекта в версии CODESYS V3.5 SP11 ? Это напрягает сильно, каких неприятностей ещё можно ждать...
Евгений Кислов
15.10.2020, 12:48
Почему установка CODESYS V3.5 SP14 изменила Установки проекта в версии CODESYS V3.5 SP11 ?
Потому что из-за бага CODESYS считает, что у него две версии профиля для 3.5.11.2, одна из которых помечена как "not installed".
Можно просто выбрать "нормальную" - это решает проблему.
51384 51385
каких неприятностей ещё можно ждать...
По моему опыту - никаких.
Добрый день.
Перестал запускаться Gateway. Подскажите, пожалуйста, куда смотреть?
Евгений Кислов
16.10.2020, 11:59
Добрый день.
Перестал запускаться Gateway. Подскажите, пожалуйста, куда смотреть?
Добрый день.
Панель управления - Администрирование - Службы - CODESYS Gateway V3
Евгений Кислов
16.10.2020, 12:10
В службах пропал.
Если в службах вообще нет - то, видимо, кто-то удалил сервис.
Если у вас корпоративная локальная сеть - пообщайтесь с ее администраторами.
Устанавливал Machine Control Studio. Аварийное завершение, не хватило места.
После этого заметил проблему с Gateway. Надо переустанавливать Codesys?
Евгений Кислов
16.10.2020, 13:00
Устанавливал Machine Control Studio. Аварийное завершение, не хватило места.
После этого заметил проблему с Gateway. Надо переустанавливать Codesys?
Да, при установке из списка компонентов достаточно будет выбрать Gateway.
Константин Чернов
17.10.2020, 15:16
Всем привет!
Обращаюсь за помощью к опытным камрадам.
Вопрос: есть несколько булевых переменных (допустим, 20). Необходимо произвести подсчёт состояния - сколько 0 и сколько 1. Как можно это реализовать подскажите, пожалуйста.
Естественно, суммированием. С ручной или автоматической конвертацией типа в uint
Константин Чернов
17.10.2020, 15:39
Благодарю!
GoodLuck
21.10.2020, 10:45
Добрый день!
Подскажите, пожалуйста, библиотеку для перевода чисел из десятичной в шестнадцатеричную систему и обратно.
Добрый день!
Подскажите, пожалуйста, библиотеку для перевода чисел из десятичной в шестнадцатеричную систему и обратно.
оскат не подходит?
GoodLuck
21.10.2020, 12:56
оскат не подходит?
Спасибо, подошло.
Здравствуйте. Не пойму, почему после открытия - чтения - на закрытии остается висеть признак работы блока
51530
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot