PDA

Просмотр полной версии : CODESYS V3.5. Вопросы и ответы



Страницы : 1 2 3 4 5 6 7 8 9 10 [11] 12 13

VladGC
20.04.2020, 20:08
О конкретном ФБ - нет, но можно инкапсулировать всю логику в один ФБ и каждую версию библиотеки подписывать уникальным сертификатом.
На мой взгляд - чтение и запись данных по Modbus выходят за границы метрологической части ПО. Но тут надо на стандарт ориентироваться, что в нем по этому поводу сказано.
Несколько приложений - это крайне специфическая задача, которая мало кому нужна (хотя недавно еще один пользователь интересовался, но скорее в познавательных целях, как я понял) - поэтому мы пока не планировали заниматься этим вопросом.
А разве сейчас нельзя использовать сертификаты? Вроде как в свойствах Проекта есть шифрование с использованием сертификата.
Сертификация ПО это небольшая часть сертификации самого средства измерения, само СИ будет целым шкафом, по этому и надо что бы от источника дынных и до «клемм» данные были были «защищены» .
Ведь можно между программой и и ком портом поставить ещё один Фб и там произвести обработку
http://docs.cntd.ru/document/1200121090

Евгений Кислов
20.04.2020, 20:10
Это в панели, которая доступна по нажатию кнопки "сохранение трендов"? Если да, то я там поставил "без ограничений", тем не менее запись ограничивается примерно 5 часами...


Контроллер ПЛК210-01-CS. Во вкладке Device у меня нет такого "файлы"....
48548
Если об этой вкладке речь...


Я вот думаю, наверное правильнее было бы действительно все сохранять самому куда мне надо, а задачу визуализации решить отдельно, например, с помощью "декартовый график".... Как думаете?

PS: Просто параметров действительно много...напряжение, ток, мощность (3 разных), ток нейтрали, углы и тд....и это все на 3 фазы, а еще на 1 одну фазу генератора и 1 фазу инвертора.

48555

Да, это разумно - использовать для сохранения данных другой способ, например - компонент OwenArchiver.
https://youtu.be/rpwvyahHevw

А тренды использовать исключительно как элемент визуализации.

Насчет трендов - почитайте еще вот это:
https://owen.ru/forum/showthread.php?t=28167&p=325383&viewfull=1#post325383

Евгений Кислов
20.04.2020, 20:13
А разве сейчас нельзя использовать сертификаты? Вроде как в свойствах Проекта есть шифрование с использованием сертификата.
Сертификация ПО это небольшая часть сертификации самого средства измерения, само СИ будет целым шкафом, по этому и надо что бы от источника дынных и до «клемм» данные были были «защищены» .
Ведь можно между программой и и ком портом поставить ещё один Фб и там произвести обработку
http://docs.cntd.ru/document/1200121090

То, о чем вы говорите - насколько я помню, это вариант для подписывания файла проекта, который хранится на ПК.

turkish945
20.04.2020, 22:54
48555

Да, это разумно - использовать для сохранения данных другой способ, например - компонент OwenArchiver.
https://youtu.be/rpwvyahHevw

А тренды использовать исключительно как элемент визуализации.

Насчет трендов - почитайте еще вот это:
https://owen.ru/forum/showthread.php?t=28167&p=325383&viewfull=1#post325383

Спасибо, с файлами разобрался, ссылки изучу. Сразу, забегая вперед, разве trend может отображать данные, не те, которые сам ведет?

Евгений Кислов
21.04.2020, 08:21
Спасибо, с файлами разобрался, ссылки изучу. Сразу, забегая вперед, разве trend может отображать данные, не те, которые сам ведет?

Нет, не может. Но можно одни и те же переменные привязать и к тренду, и к архиватору.

Cs-Cs
21.04.2020, 23:30
А у меня вот какой вопрос родился.
В визуализации есть какой-нибудь компонент выбора цвета?
Мне надо будет накрутить 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).

Евгений Кислов, спасибо тебе за примеры и доки! Они реально понятные, если вчитываться!

Romann
24.04.2020, 10:48
Добрый день, может кто поможет разобраться?
Пытаюсь реализовать алармы через 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

RV9WFJ
24.04.2020, 10:58
Python в CoDeSys в качестве VB в офисе. Т.е. вроде для реализации всего того что нельзя написать на ST. По факту описания как с этим работать и в каком оно обьеме толком нету даже на немецком. А вы как свой скрипт работать заставить пытаетесь, через CS или напрямую с консоли?

Romann
24.04.2020, 11:25
Странно, на контроллере целая директория "emails". Также есть: smtplib.py socket.py Imap.py. Даже ssl.py
Зачем это все... С полным функционалом питона отправить email - 5 строчек. Жаль...
OSCAT пока не копал, но на первый взгляд ssl там нет, т.е. для нормальных серверов потребуется "свой шлюз", а именно этого и хотелось избежать, т.к. зачем лишнее в цепочке.
Кроме того, если есть выделенный шлюз, что rsh + майл клиент проще.

Romann
24.04.2020, 11:26
CS. Вот тут куча примеров.
https://docs.python.org/3/library/email.examples.html

Romann
24.04.2020, 17:15
Согласен, не стану на питоне циклится, клиент ssh СПК207 вроде есть, также есть домашний маршрутизатор с OPENWRT, письма с него посылать буду :). Кривовато, но схема рабочая.
PS. Из мессенджеров у меня только whatsup, ковырять API совсем не хочется. Спасибо!

ppaxan
27.04.2020, 10:42
Добрый день, пытаюсь применить ПИД регулятор, 4867448675при компиляции ошибок нет, но загрузка прерывается с ошибкой4867248673
В чем может быть проблема?

ppaxan
27.04.2020, 11:02
ПЛК СПК107[M01]

Евгений Кислов
27.04.2020, 11:04
Эта библиотека поддержана с версии прошивки 1.1.0611.1056.
Надо отметить, что это тестовая версия библиотеки - в ней есть проблемы, которые затрудняют ее использование.
Протестированная и отредактированная версия библиотеки будет доступна с релизом следующей прошивки.

ppaxan
27.04.2020, 11:16
Ясно, текущая версия прошивки 1.0.1229.1031.
Существуют ли библиотеки с регулятором для данной прошивки, где их найти?

Евгений Кислов
27.04.2020, 11:51
Ясно, текущая версия прошивки 1.0.1229.1031.
Существуют ли библиотеки с регулятором для данной прошивки, где их найти?

ПИД есть в библиотеке Util (устанавливается вместе с CODESYS) и OSCAT Basic (можно скачать с нашего сайта).

ppaxan
27.04.2020, 12:07
Спасибо, нашел, буду пробовать

Карбофос
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 (достаточно первых нескольких минут)

murzik
28.04.2020, 10:36
добрый день всем! подскажите, что такое 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

murzik
28.04.2020, 10:58
ясненько, спасибо

SlavikP
29.04.2020, 15:13
Подскажите синтаксис инициализации переменных сложных типов.
Поясню. Пусть есть структура:

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
Где то находил этот замудреный синтаксис, но не помню где :(

Cs-Cs
29.04.2020, 15:26
Вот, нашёл у себя. Вот например описалово типа:

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

SlavikP
29.04.2020, 15:35
А вот инициализация:
Спасибо! Похоже это оно и есть!

Cs-Cs
29.04.2020, 16:27
Не за что! Я прям из своего рабочего проекта достал. Значит точно оно и точно работает =)

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
И с префиксом не работает. Работает только при снятии опции "Замена констант". Тоже и в элементах визуализации.

murzik
01.05.2020, 09:55
доброго всем утречка! Может кто подскажет программисту от сохи, как можно организовать обращение по номерам к переменным, находящимся в области выходов Modbus TCP slave, то-бишь %QWxxx. Слышал краем уха, что какие-то пойнтеры существуют в природе. Может можно их как-то сюда прикрутить?

Евгений Кислов
01.05.2020, 10:05
доброго всем утречка! Может кто подскажет программисту от сохи, как можно организовать обращение по номерам к переменным, находящимся в области выходов Modbus TCP slave, то-бишь %QWxxx. Слышал краем уха, что какие-то пойнтеры существуют в природе. Может можно их как-то сюда прикрутить?

Добрый день.
Слэйв из библиотеки OwenCommunication решит ваши проблемы:
https://www.youtube.com/watch?v=l-oWDtOzBJg

murzik
01.05.2020, 10:13
Добрый день.
Слэйв из библиотеки 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'ы

murzik
01.05.2020, 10:23
ну а смысл работать с указателями, если напрямую так же будет строчка заниматься value2cloud := array_modbus[0] против ptr:=ADR(array_modbus[0]);value2cloud:=ptr^;

очень интересно. То-есть array_modbus[0] - это ссылка на нулевой элемент %IW3, а дальше от него посчитать можно, или как?

murzik
01.05.2020, 13:02
Спасибо! С синтаксисом пойнтеров разобрался, всё работает!:D

murzik
02.05.2020, 00:09
убил некоторое время на постановку опытов и чесание в затылке.
Итого, до чего сумел додуматься и доопытиться:
чтобы управлять и смотреть и панелью и овенклаудом,
а) создаём проект с овеновской библиотекой модбас-слейва
б) создаём кучку переменных для облака.
в) пишем что-то типа
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 и все связанные с ним операции просто бы не понадобились.

VladGC
03.05.2020, 19:52
коллеги добрый день!
Нужен совет.
Имеется пк, на котором разрабатываются проекты в Cds3. Имеются собственные библиотеки. Вообщем все хорошо, пока не надо переносить проект на ноутбук и ехать на пнр.
Кто как разрабатывает? Вот мне надо правку в библиотеке сделать и как быть? Править на пк , а потом переносить на ноут ? Опять же, если несколько проектов используют одну библиотеку то перенос актуальной превращается в то ещё занятие.
Например в САПРах различных есть база данных с проектами и библиотеками, к ней из любого пк подключается и работаешь . Есть ли в cds3 онлайн хранилище библиотек ?

RV9WFJ
04.05.2020, 08:14
Да яндекс диск и гугл диск называются. Ну или любое другое по вкусу.

Сергей0308
04.05.2020, 08:27
Можно собственный сетевой накопитель дома поставить и иметь к нему доступ через интернет.

VladGC
04.05.2020, 09:29
Да яндекс диск и гугл диск называются. Ну или любое другое по вкусу.


Можно собственный сетевой накопитель дома поставить и иметь к нему доступ через интернет.

Ну про сетевые хранилища то все понятно. Вопрос в том как вы организовываете ?

Просто добавляете в репозиторий библиотек сетевую папку ?
48774

С SVN есть у кого практика работы ?

Tacio
06.05.2020, 12:58
Системный лог контроллера ПЛК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.
В одной из следующих прошивок будет сортировка журнала по фильтрам, что упростит поиск нужных сообщений.

Tacio
06.05.2020, 13:49
В таргет-файле в узле OwenCloud нужно каналу Enable OwenCloud присвоить значение FALSE
Сделал, однако:
1. В логе до сих пор появляются те же сообщения
2. В таргет файле бит OwenCloud Enabled теперь стал FALSE
3. Поле Status периодически изменяет состояние c NO_COM на CONNECT, скриншот прилагаю

Tacio
06.05.2020, 14:14
ПЛК не имеет подключения ни к каким сетям. Вопрос был не в том, почему не резволвится, а почему продолжаются попытки подключения к сервису, который отключён.

Евгений Кислов
06.05.2020, 14:16
Принято, проработаем этот вопрос в следующих прошивках.


почему продолжаются попытки подключения к сервису, который отключён.

Потому что, похоже, канал Enable OwenCloud обрабатывается не совсем корректно.

Tacio
06.05.2020, 14:24
Спасибо, буду ждать обновлений!

VladGC
08.05.2020, 15:02
Добрый день!
Не могу найти как ограничить диапазон выпадающего списка, подскажите пожалуйста, где можно найти ?
Без галочки которой нет, ограничение не работает.
4889148892

Евгений Кислов
08.05.2020, 15:07
Добрый день!
Не могу найти как ограничить диапазон выпадающего списка, подскажите пожалуйста, где можно найти ?
Без галочки которой нет, ограничение не работает.
4889148892

Добрый день.
Эти настройки доступны только в том случае, если привязана целочисленная переменная и список текстов.
У вас же - перечисление со встроенным списком текстов.
В перечислении диапазон уже ограничен по умолчанию (природой самого перечисления).

VladGC
08.05.2020, 15:40
Добрый день.
Эти настройки доступны только в том случае, если привязана целочисленная переменная и список текстов.
У вас же - перечисление со встроенным списком текстов.
В перечислении диапазон уже ограничен по умолчанию (природой самого перечисления).

Спасибо, так работает как надо.

Dimaso
08.05.2020, 17:26
добрый день.помогите пожалуйста.в ошибке выдано неизствестный тип TP.как это исправить?

Dimaso
08.05.2020, 17:47
48899
вот эта

ASo
08.05.2020, 17:55
В менеджере библиотек добавить standard.lib

И вопрос для другой ветки форума.

Dimaso
08.05.2020, 18:03
вот именно ,я искал в библиотеке и не мог найти standard.lib

Dimaso
08.05.2020, 18:17
вот именно ,я искал в библиотеке и не мог найти standard.lib

Мария Мильчакова
12.05.2020, 09:53
вот именно ,я искал в библиотеке и не мог найти standard.lib

Добрый день.
Вам ответили в другой ветке форума:https://owen.ru/forum/showthread.php?t=33187&p=332251#post332251

VladGC
12.05.2020, 17:03
Добрый день!
Подскажите, можно ли как нибудь подменить список текстов или перечисление для выпадающего списка?

Евгений Кислов
12.05.2020, 17:07
Добрый день!
Подскажите, можно ли как нибудь подменить список текстов или перечисление для выпадающего списка?

Добрый день.
Что вы подразумеваете под "подменить"?

Опишите лучше с точки зрения конкретной задачи, которую надо решить.

VladGC
12.05.2020, 17:43
Добрый день.
Что вы подразумеваете под "подменить"?

Опишите лучше с точки зрения конкретной задачи, которую надо решить.

Есть конфигуратор выходов, первый выпадающий список позволяет выбрать тип, АО или DO, для модулей вывода.
Если выбираю АО то во втором списке появляется выбор выхода АО в количестве 8 штук,
Если выбираю DO, во втором списке выпадает выбор из 16 DO.

Понятное дело, что можно выходы АО и DO назвать словом “выход X“ и ограничить второй по условию или сделать Мега список и изменять начальный и конечный индекс

Но хотелось бы иметь возможность просто менять списки или какими то костылями подменять названия в выпадающем списке

Cs-Cs
12.05.2020, 17:49
О! А если сделать два списка поверх и скрывать ненужный?

Евгений Кислов
12.05.2020, 17:53
Фактически, список текстов - это файл формата .txt в папке /visu.
Вы можете перезаписать его в процессе работы (например, через библиотеки работы с файлами - CAA File, SysFile и т.д.).
После этого надо будет "перезагрузить" списки текстов в визуализации функцией DynamicTextReloadTexts из библиотеки CmpDynamicText.

Сложности начинаются в тот момент, когда требуется не перезаписывать список текстов полностью, а редактировать в нем конкретные записи и при этом они содержат кириллицу (т.е. кодировка файла - UTF16).
В данный момент времени простых способов решения этой задачи нет - они появятся в следующей прошивке, в которую мы добавим поддержки утилиты iconv.
В ближайшее время я планировал снять видео с демонстрацией решения похожей задачи - пользователь выбирает рецепты с помощью выпадающего списка, при создании нового рецепта в этом списке автоматически появляется имя созданного рецепта.

P.S. - если речь о переключении нескольких заранее известных списков текстов, то описанный выше Cs-Cs способ будет значительно проще.

VladGC
12.05.2020, 17:54
О! А если сделать два списка поверх и скрывать ненужный?

Грубо говоря есть массив вида [x][y]
X модули
y выходы
Вот индекс массива связан с выпадающим списком для настроек по этому скрывать не вариант

VladGC
12.05.2020, 17:59
Фактически, список текстов - это файл формата .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 может быть только входом.

VladGC
15.05.2020, 14:23
Добрый день, нужен совет
Есть таблица в которой отображаются данные с массивов ФБ
Надо в эту таблицу добавить еще столбец.
Решение есть, это создать еще один массив структур, в который писать данные из нужных массивов и отображать. Но это получается дублирование данных, только ради отображения.

Но возможно ли создать такой массив структур, в котором нужные элементы будут ссылаться на существующие?

То есть несколько разрозненных массивов одинакового размера отобразить в обобщенном виде, но не копируя данные.
Пытался представить что то в этом духе:


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
Добрый день.

Честно говоря, я не очень понял описанную ситуацию.


Есть таблица в которой отображаются данные с массивов ФБ
Надо в эту таблицу добавить еще столбец. Решение есть, это создать еще один массив структур...

По-моему, решение - это добавить еще одну переменную в ФБ. Или по каким-то причинам перенести ее внутрь ФБ нельзя?

В любом случае, хотелось бы более детального описания ситуации со скриншотами.

VladGC
15.05.2020, 15:09
Добрый день.

Честно говоря, я не очень понял описанную ситуацию.



По-моему, решение - это добавить еще одну переменную в ФБ. Или по каким-то причинам перенести ее внутрь ФБ нельзя?

В любом случае, хотелось бы более детального описания ситуации со скриншотами.
Есть массив фб
Есть массив произвольных данных

В таблице можно отображать один массив или структуру. Значит надо создавать структуру где будет нужный фб и нужная переменная, затем отображать в таблице, активируя нужные столбцы. Но сейчас у меня их и так 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
Спасибо большое

vniko
16.05.2020, 22:31
Есть таблица в которой отображаются данные с массивов ФБ
...
Но возможно ли создать такой массив структур, в котором нужные элементы будут ссылаться на существующие?
То есть несколько разрозненных массивов одинакового размера отобразить в обобщенном виде, но не копируя данные.
VladGC, а почему не сделать проще:
Выделить из 30-ти данных с массивов ФБ и определить отдельную структуру из элементов (столбцов), которые будут в таблице. Т.е. будет "табличная" структура из 3-х элементов, и "остальная" структура из 27 элементов. Далее определить массив "табличной" структуры и массив "остальной" структуры. Тогда останется привязать массив "табличной" структуры к таблице. В "табличную" структуру можно включить данные, не являющиеся переменными ФБ.
*Указанное справедливо (без дублирования данных), если определять переменные массива ФБ не во входных/выходных переменных ФБ, а в глобальных массивах структур как здесь: https://owen.ru/forum/showthread.php?t=22549&p=328683&viewfull=1#post328683
**"Остальную" структуру из 27 элементов можно не определять, а оставить определение этих переменных во входных/выходных переменных ФБ. Это как удобнее программисту.

Дополнительно, можно любой столбец таблицы из массива "табличной" структуры переопределить (в самой таблице) любым элементом из массива "остальной" структуры или из любого другого массива структур того же размера. Примечание: сами массивы структур остаются неизменными, изменяется отображаемый столбец в таблице.

VladGC
18.05.2020, 08:14
VladGC, а почему не сделать проще:
Выделить из 30-ти данных с массивов ФБ и определить отдельную структуру из элементов (столбцов), которые будут в таблице. Т.е. будет "табличная" структура из 3-х элементов, и "остальная" структура из 27 элементов. Далее определить массив "табличной" структуры и массив "остальной" структуры. Тогда останется привязать массив "табличной" структуры к таблице. В "табличную" структуру можно включить данные, не являющиеся переменными ФБ.
*Указанное справедливо (без дублирования данных), если определять переменные массива ФБ не во входных/выходных переменных ФБ, а в глобальных массивах структур как здесь: https://owen.ru/forum/showthread.php?t=22549&p=328683&viewfull=1#post328683
**"Остальную" структуру из 27 элементов можно не определять, а оставить определение этих переменных во входных/выходных переменных ФБ. Это как удобнее программисту.

Дополнительно, можно любой столбец таблицы из массива "табличной" структуры переопределить (в самой таблице) любым элементом из массива "остальной" структуры или из любого другого массива структур того же размера. Примечание: сами массивы структур остаются неизменными, изменяется отображаемый столбец в таблице.

Если я правильно понял, то вы предлагаете вычленить нужные данные и запихнуть в отдельную структуру, то тогда получается нарушится ход мысли в программе , как мне кажется.
То что я показал, это был Массив ФБ с регуляторами и обвязкой, далее для настроек регулятора есть отдельная структура структур в которой хранятся все настройки
По этому попробую получить данные с помощью структуры указателей на нужные данные и объединить в нужный массив указателей
На картинке выделил только часть данных, а там будет еще с других массивов
49141

vniko
18.05.2020, 17:37
Если я правильно понял, то вы предлагаете вычленить нужные данные и запихнуть в отдельную структуру, то тогда получается нарушится ход мысли в программе , как мне кажется.
То что я показал, это был Массив ФБ с регуляторами и обвязкой, далее для настроек регулятора есть отдельная структура структур в которой хранятся все настройки
По этому попробую получить данные с помощью структуры указателей на нужные данные и объединить в нужный массив указателей
На картинке выделил только часть данных, а там будет еще с других массивов
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, используя указатели, которые являются адресами переменных, Вы в любом случае добавляете ещё переменные - эти самые адреса. Я не пробовал привязывать в таблице массивы через указатели, если у Вас получится, напишите, будет интересно.

VladGC
22.05.2020, 08:57
Добрый день!
Что то не заладилось с шаблоном 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, еще не добрался, но обязательно выложу :)

capzap
22.05.2020, 09:02
codeEr:ARRAY [1..8] OF USINT;
срабатывает?

VladGC
22.05.2020, 09:07
codeEr:ARRAY [1..8] OF USINT;
срабатывает?
Так да, но его потом не подать в ANALOG_OUTPUT_ERROR_TO_WSTRING, потому что там ожидается ENUM

Евгений Кислов
22.05.2020, 09:09
Добрый день.
Ошибка воспроизвелась, есть предположение, что она исправлена в свежей версии CODESYS (в баг-трекере есть описание похожего бага) - я позже проверю и отпишусь.

capzap
22.05.2020, 09:14
Так да, но его потом не подать в ANALOG_OUTPUT_ERROR_TO_WSTRING, потому что там ожидается ENUM

дополнительно костылем через кейсы, просто ENUM не может использоваться в массивах, он сам как подобие неопределенного массива

VladGC
22.05.2020, 09:17
Добрый день.
Ошибка воспроизвелась, есть предположение, что она исправлена в свежей версии CODESYS (в баг-трекере есть описание похожего бага) - я позже проверю и отпишусь.
Спасибо!

дополнительно костылем через кейсы, просто ENUM не может использоваться в массивах, он сам как подобие неопределенного массива
Странно, ведь тут тоже вроде как ENUM
Mx210Assistant.ANALOG_SENSOR_VALUE.eStatus , все работает

Для меня в данном случае проще через список текстов, сразу отобразить в таблице

capzap
22.05.2020, 09:34
Странно, ведь тут тоже вроде как ENUM
Mx210Assistant.ANALOG_SENSOR_VALUE.eStatus , все работает

массив то где? Ни в одном языке не найдете простого способа, погуглите на предмет массив из перечислений enum

VladGC
22.05.2020, 09:40
массив то где? Ни в одном языке не найдете простого способа, погуглите на предмет массив из перечислений enum
Вот, массив структур, в котором есть перечисление, все работает и отображается


aAI_D1_3001: ARRAY [1..8] OF Mx210Assistant.ANALOG_SENSOR_VALUE; // Модуль аналоговых вводов 1

49213

Не знал что массив из перечислений enum это проблемная вещь, надо изучить вопрос, спасибо

vniko
22.05.2020, 17:15
VladGC, ради чистоты эксперимента, попробуйте определить для Входа1 только Код статуса, как Вы это сделали для Выхода1, через массив. То есть через ANALOG_SENSOR_ERRORS.

Евгений Кислов
22.05.2020, 18:03
Добрый день.
Ошибка воспроизвелась, есть предположение, что она исправлена в свежей версии CODESYS (в баг-трекере есть описание похожего бага) - я позже проверю и отпишусь.

В последней версии CODESYS (3.5.16.0) вместо ошибки компиляции возникает предупреждение, которое исчезает после повторной генерации кода.
Соответственно, проект загружается и нормально работает. Так что надо ждать прошивки с рантаймом 3.5.16.x - постараемся выпустить к концу года.

49222

mva2204
22.05.2020, 21:27
Только у меня не работает поиск на сайте? Например ввожу "ПИД" - но пишет "Извините, нет совпадений. Попробуйте указать другие ключевые слова."
При этом в теме есть "ПИД".

Евгений Кислов
22.05.2020, 21:36
Только у меня не работает поиск на сайте? Например ввожу "ПИД" - но пишет "Извините, нет совпадений. Попробуйте указать другие ключевые слова."
При этом в теме есть "ПИД".

Для поиска надо минимум 4 символа ввести.

mva2204
22.05.2020, 22:08
Спасибо! Еще вопросы для ПЛК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

VladGC
29.05.2020, 13:40
Добрый день!
Прошу подсказать по 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

VladGC
29.05.2020, 16:11
Добрый день.
Насколько я помню - можно получить число тревог через библиотеку 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хх не планируется к снятию с продажи в обозримом будущем.

VladGC
16.06.2020, 09:38
Добрый день!
Подскажите пожалуйста, где настраивается выравнивание текста в таблице событий ?
Там где на скриншоте настраивал результата не дало
4965349654

Евгений Кислов
16.06.2020, 10:05
Добрый день!
Подскажите пожалуйста, где настраивается выравнивание текста в таблице событий ?
Там где на скриншоте настраивал результата не дало
4965349654

Добрый день.
В версии CODESYS V3.5 SP14 Patch 3 данная настройка работает.

Robzian
20.06.2020, 10:58
Доброго времени суток!
Поставил себе 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
Спасибо.
Даже проект скомпилировался!

RV9WFJ
01.07.2020, 08:42
До этого все проекты были на один контроллер и я особо не обращал внимания на вкладки 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

RV9WFJ
01.07.2020, 09:20
Пришлите, пожалуйста, проект - посмотрим, в чем дело.
Сделал простейший примерчик для себя и на самом деле все работает в части ФБ.
Остался только вопрос - если я на вкладке POU добавляю библиотеку или ImagePool или Визуализацию то они могут вызываться из любого Application (могут использоваться в любом контроллере) или только из тех POU, элементы которых расположены на вкладке POU.
P.S. Какой-то Баден Баден. И объекты POU и вкладка POU но смысл у них разный :-)

Евгений Кислов
01.07.2020, 10:21
Из любого Application.
Но если в рамках одного устройства используется объект с вкладки POU - то у него не должно быть связей с другими устройствами.
Пример: на вкладке POU создан экран визуализации, к элементам которого привязаны переменные из разных устройств.
При попытке настроить в одном из устройств переход на этот экран возникнут ошибки компиляции (так как устройства ничего не знают о переменных других устройств).

RV9WFJ
01.07.2020, 10:28
Но при этом если в визуализации отображаются только внутриние переменные переданные в визуализацию при вызове эта визуализация может одновременно отображаться на разных ПЛК так?

Евгений Кислов
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 регистров.

VladGC
09.07.2020, 09:01
Добрый день!
Подскажите пожалуйста, таблица умеет разыменовывать указатели или нет?
Вставляю массив с указателями, таблица сама ставит ^ , но отображаются нули
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.

VladGC
09.07.2020, 13:53
1. Надо сделать так (потому что ENUM в Mx210 Assistant имеет тип USINT) - но проблему это не решит.

50091

2. Без вашего кода - работает:

50092

50094

Я думаю, проблему надо искать в вашем коде - либо в pt_funAiDiagMV210, либо в PLC_PRG.

Спасибо, действительно в коде, перекинул код из функции в фб, все заработало

Robzian
11.07.2020, 10:52
Доброго времени суток! Хотелось бы спросить, если ли у кого литература, или возможно предложить свои если есть, примерные задачи для тренировки навыков владения codesys, теорию я освоил более менее, хотело бы "пощупать" реальные проекты)
Заранее благодарю

VladGC
13.07.2020, 08:39
Добрый день!
На FTP лежит CmpOwenPidRegs_v3.5.14.33.compiled-library , она так же тестовая или уже можно использовать в нормальном режиме ?

Евгений Кислов
13.07.2020, 08:41
Добрый день!
На FTP лежит CmpOwenPidRegs_v3.5.14.33.compiled-library , она так же тестовая или уже можно использовать в нормальном режиме ?

Она для следующей прошивки, релиз которой запланирован на ближайшее время.
В текущих прошивках работать не будет (не получится даже загрузить проект с ней).
Ее можно будет использовать в нормальном режиме.

VladGC
13.07.2020, 16:57
Она для следующей прошивки, релиз которой запланирован на ближайшее время.
В текущих прошивках работать не будет (не получится даже загрузить проект с ней).
Ее можно будет использовать в нормальном режиме.
А в текущей(3.5.11.1) можно использовать STD PID? Если я правильно понял, тестовая она в части пид с автонастройкой

Евгений Кислов
13.07.2020, 17:17
А в текущей(3.5.11.1) можно использовать STD PID? Если я правильно понял, тестовая она в части пид с автонастройкой

В принципе, можно - но лучше подождать релизной.

tPorte
16.07.2020, 11:36
Здравствуйте! Каким образом в CoDeSys 3.5 можно распечатать схему которую я создал на языке cfc? Это реально, распечатать ее целиком?

Евгений Кислов
16.07.2020, 11:56
Здравствуйте! Каким образом в CoDeSys 3.5 можно распечатать схему которую я создал на языке cfc? Это реально, распечатать ее целиком?

Добрый день.
Проект - Документ - оставить галочки только рядом с нужными POU

tPorte
16.07.2020, 15:41
Спасибо, Евгений!

VladGC
17.07.2020, 10:01
Добрый день!
Подскажите пожалуйста, можно ли убрать лишние теги в OPC UA (что бы они не предлагались для выбора или вообще отсутствовали)? Или перекинуть нужные теги в верх по дереву?
50210

Евгений Кислов
17.07.2020, 10:17
Добрый день.
Насколько я знаю - у пользователя такой возможности нет.

VladGC
22.07.2020, 10:33
Добрый день!
В какой то момент, перестала отключаться АНР на что стоит обратить внимание?
50271

Евгений Кислов
22.07.2020, 10:40
Добрый день!
В какой то момент, перестала отключаться АНР на что стоит обратить внимание?
50271

Добрый день.
До завершения АНР вход START_ANR должен иметь значение TRUE.
Также на скриншоте сомнительное значение PV_0 и неясности с безусловным вызовом SET_APID_PWM.

VladGC
22.07.2020, 10:58
Добрый день.
До завершения АНР вход START_ANR должен иметь значение TRUE.
Также на скриншоте сомнительное значение PV_0 и неясности с безусловным вызовом SET_APID_PWM.

Так и сделал, был TRUE, судя по описанию, если я перевожу в FALSE то АНР должна отключиться
Вызов SET_APID при старте плк
Записал видео
https://dropmefiles.com/PSJp1

Евгений Кислов
22.07.2020, 11:05
если я перевожу в FALSE то АНР должна отключиться

Я уточню, как это обрабатывается, но в принципе АНР должна отключаться после завершения АНР.
Возможно, в вашей ситуации требуется перезапуск блока через вход EN.

VladGC
22.07.2020, 15:40
Я уточню, как это обрабатывается, но в принципе АНР должна отключаться после завершения АНР.
Возможно, в вашей ситуации требуется перезапуск блока через вход EN.

На вход EN реакции нет( касательно АНР)

trejer
23.07.2020, 15:26
Здравствуйте.
Не могу в 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
Попробуйте сохранять архив проекта со всеми библиотеками и таргетами. Открывая такой файл Вам предложит обновить все настройки, просто согласитесь.
Без бубна - мы не танцуем....

Cs-Cs
26.07.2020, 23:16
А таргеты ставил на новой среде-то?

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 ???

vinam
04.08.2020, 10:21
Здравствуйте.
Посоветуйте как привязать программу к СПК1хх, чтоб ее нельзя было перенести на другой контроллер никаким способом?
Можно ее привязать к заводскому номеру СПК?

Евгений Кислов
04.08.2020, 10:25
Здравствуйте.
Посоветуйте как привязать программу к СПК1хх, чтоб ее нельзя было перенести на другой контроллер никаким способом?
Можно ее привязать к заводскому номеру СПК?

Добрый день.
Если речь о новых СПК1хх (с маркировкой М01 и портом Ethernet) - то это возможно.

vinam
04.08.2020, 10:25
Добрый день.
Если речь о новых СПК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
Евгений, спасибо за быстрый ответ!

flycat
13.08.2020, 12:00
Разместил здесь сообщение, исчезло бесследно, но в личке 1 ответ есть. Где искать само сообщение?

Евгений Кислов
13.08.2020, 12:04
Разместил здесь сообщение, исчезло бесследно, но в личке 1 ответ есть. Где искать само сообщение?

Я его перенес сюда:
https://owen.ru/forum/showthread.php?t=10555&page=795

так как оно не касается данной темы (CODESYS V3.5)

saii
18.08.2020, 09:45
Странная ситуация. Дано 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

saii
18.08.2020, 10:05
Согласен. А как управлять выравниванием в 2.3? Или как правильно выровнять в 3.5, чтобы это согласовывалось с 2.3? Мне нужно этими структурами обмениваться по Modbus и, соответственно, резервировать адресное пространство.

Евгений Кислов
18.08.2020, 10:25
Чтобы согласовывалось - надо использовать {attribute 'pack_mode' := '0'}

жекон
25.08.2020, 06:16
А в ФБ собственного сочинения можно такую вкладку сделать?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;
нигде не могу найти как в него добавлять и удалять элементы. Подскажите.

Спасибо.

capzap
27.08.2020, 23:11
Всем добра!

объявил массив переменной длины: arr1: array of int;
нигде не могу найти как в него добавлять и удалять элементы. Подскажите.

Спасибо.
https://stefanhenneken.net/2016/09/27/iec-61131-3-arrays-with-variable-length/

Nikzel5
02.09.2020, 13:14
[ATTACH=CONFIG]50883
Подскажите пожалуйста, что это за предупреждение?

Евгений Кислов
02.09.2020, 13:54
[ATTACH=CONFIG]50883
Подскажите пожалуйста, что это за предупреждение?

Оно касается протокола CAN - наши контроллеры его не поддерживают.
Видимо, у вас контроллер другого производителя - лучше обратитьcя в его техподдержку.

Сема
10.09.2020, 10:39
Добрый день, уважаемые коллеги, а кто-нибудь связывал устройство защиты двигателя УБЗ-302 с контроллером в среде CDS 3.5 . У меня почему-то нет доверия, какие там подводные камни ожидаются? Может какое-нибудь другое устройство защиты двигателя посоветуете?

RV9WFJ
10.09.2020, 10:44
Я связывал многократно. Проблема одна - по RS485 он не работает с некоторыми контроллерами, а по RS232 все хорошо.

Сема
10.09.2020, 13:21
А с ПЛК210 будет он работать?

RV9WFJ
10.09.2020, 13:40
По rs232 точно будет. По rs485 не знаю.

MechMan
14.09.2020, 16:04
Уважаемые специалисты, ткните носом. Codesys 3.5 управление вент. установкой. Включение и выключение по одному и тому же регистру modbus. Как сделать переключение вкл-выкл в визуализации через клавишный выключатель, при этом при старте контроллера читать актуальное состояние. С обычной кнопкой проблем особых нет. Статус и включение можно разделить. А через клавишный выключатель не получается.

Евгений Кислов
14.09.2020, 16:23
Уважаемые специалисты, ткните носом. Codesys 3.5 управление вент. установкой. Включение и выключение по одному и тому же регистру modbus. Как сделать переключение вкл-выкл в визуализации через клавишный выключатель, при этом при старте контроллера читать актуальное состояние. С обычной кнопкой проблем особых нет. Статус и включение можно разделить. А через клавишный выключатель не получается.

Добрый день.
Покажите, что вы делаете и что именно не получается.

MechMan
14.09.2020, 17:00
Да не то что бы не получается, я в принципе не понимаю как это сделать.
51039
Создано 2 канала.
В программе есть переменная.

Vent_Room1_On_Status: BOOLEAN;

Хотелось бы выполнить задачи:
1. Считать состояние установки при старте контролера (и делать это постоянно).
2. В визуализации используя клавишный выключатель реализовать передачу команды на включение установки и соответственно чтобы его положение изменилось на "Включено"
3. При выключении установки с ее пульта изменить состояние в визуализации на выключено.

С обычной кнопкой это получается без проблем, там событий много обрабатывается. А у клавишного выключателя только привязка к одной переключаемой переменной.

Евгений Кислов
14.09.2020, 18:11
Если с обычной кнопкой все получается - то поверх клавишного выключателя расположите элемент Невидимый ввод (из группы Стандартные элементы управления).
На него повесьте все события, а выключатель будет использоваться только для индикации состояния переменной.

MechMan
14.09.2020, 21:31
Спасибо огромное!
Еще вопрос. Поправьте если я не прав.
При использовании тригерной переменной для канала modbus, ее необходимо вернуть в значение false Это можно сделать с помощью блока типа TON. Какая должна быть задержка? Не менее длины цикла основной программы?

Евгений Кислов
15.09.2020, 06:33
Спасибо огромное!
Еще вопрос. Поправьте если я не прав.
При использовании тригерной переменной для канала modbus, ее необходимо вернуть в значение false Это можно сделать с помощью блока типа TON. Какая должна быть задержка? Не менее длины цикла основной программы?

Если работа с триггерной переменной производится в задаче цикла шины (см. здесь (https://ftp.owen.ru/CoDeSys3/98_Books/CodesysTaskManagment.pdf) п. 4) - то достаточно сгенерировать единичный импульс через R_TRIG.

Универсальный вариант, который позволяет не зависеть от особенностей работы драйверов и настроек проекта - это циклически читать значение, которое записывается по триггеру.
Если считанное значение равно заданному, то триггер точно можно сбросить.

MechMan
15.09.2020, 17:27
Евгений, невидимый ввод отлично работает, спасибо!
Видимо вопрос правильнее было помещать в визуализацию...
При наложении элементов друг на друга, фокус ввода всегда на верхнем элементе, на нижний событие уже не попадет?

Евгений Кислов
15.09.2020, 17:29
Евгений, невидимый ввод отлично работает, спасибо!
Видимо вопрос правильнее было помещать в визуализацию...
При наложении элементов друг на друга, фокус ввода всегда на верхнем элементе, на нижний событие уже не попадет?

Да, именно так.

nub
21.09.2020, 14:06
Добрый день!

Есть ФБ 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;

nub
21.09.2020, 16:48
Спасибо большое.
Еще вопрос: а как быть с порождающим полиномом 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 в принципе не существует.

MechMan
22.09.2020, 18:39
Евгений, добрый день. Подключаю панель вайнтек к плк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.
Все скомпилировалось.
Спасибо.

VladGC
05.10.2020, 14:57
Добрый день!
ПЛК-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, пожалуйста.

VladGC
06.10.2020, 10:04
Добрый день.
Предоставьте завтра удаленный доступ по 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'

vniko
06.10.2020, 13:59
Проблема оказалась в том, что в процессе редактирования программы, был увеличен счетчик цикла, а массив внутри него нет. Что повлекло за собой нестабильную работу визуализации, подключение по ethernet и т.д
На схожий код компилятор не ругался, по этому на отслеживание проблемы ушло много времени
Такую проблему (тут любой может ошибиться) можно и нужно исключить "в зародыше".
Объявляется константа, например tmax: INT:=20;. (либо локально в VAR CONSTANT, либо в VAR_GLOBAL CONSTANT)
Массив в объявлении будет такой: aText: ARRAY [0..tmax] OF BOOL;, заголовок цикла в теле программы будет такой: FOR iCountTest:=0 TO tmax DO (если шаг=1, то его можно опустить - это значение по умолчанию).
Если потребуется масштабировать проект, то в этом случае надо будет только изменить tmax в объявлении.

VladGC
06.10.2020, 14:40
Такую проблему (тут любой может ошибиться) можно и нужно исключить "в зародыше".
Объявляется константа, например tmax: INT:=20;. (либо локально в VAR CONSTANT, либо в VAR_GLOBAL CONSTANT)
Массив в объявлении будет такой: aText: ARRAY [0..tmax] OF BOOL;, заголовок цикла в теле программы будет такой: FOR iCountTest:=0 TO tmax DO (если шаг=1, то его можно опустить - это значение по умолчанию).
Если потребуется масштабировать проект, то в этом случае надо будет только изменить tmax в объявлении.

Да, на всякий случай переделал с константой

VladGC
07.10.2020, 10:25
Добрый день!
Столкнулся с ситуацией:
Таблица тревог не отображает полосу прокрутки,
после установки галочки в менеджере визуализации, полоса прокрутки появляется, но теперь во фреймах старые числа не затираются, а новые рисуются поверх старых.
Может кто сталкивался ?
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 вы его не увидите и не сможете обработать.

VladGC
08.10.2020, 18:59
Добрый день!
Не могу сообразить, как сделать 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
Добрый день.
Вы все описали правильно за одним исключением - никакого смещения делать не надо, ни для одной из областей.

VladGC
08.10.2020, 20:42
Добрый день.
Вы все описали правильно за одним исключением - никакого смещения делать не надо, ни для одной из областей.

А куда тогда надо di вставить? Ведь по адресу 0,1 лежит real

Евгений Кислов
08.10.2020, 20:45
Вы пытаетесь использовать ПЛК в качестве замены ранее работавшего в системе прибора, у которого области Discrete Inputs и Input Registers были раздельными?

VladGC
08.10.2020, 21:01
Вы пытаетесь использовать ПЛК в качестве замены ранее работавшего в системе прибора, у которого области 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
Благодарю за оперативную помощь! Начнём изучать

RomAl
14.10.2020, 16:46
Сделал проект в версии 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
Проект ваш выложите, пожалуйста.

RV9WFJ
14.10.2020, 17:10
Я в итоге разные версии в виртуалках развернул.

RomAl
15.10.2020, 08:36
Проект ваш выложите, пожалуйста.
Мерник_М6_в1_04.project Это проект сделанный в версии 3.5.11
Мерник_М6_в2_00.project новый проект в 3.5.14 сделанный из предыдущего

RomAl
15.10.2020, 08:39
Я в итоге разные версии в виртуалках развернул.

А у вас какая проблема возникла, что пришлось так радикально поступить?

Евгений Кислов
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

RomAl
15.10.2020, 12:29
Мерник_М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


каких неприятностей ещё можно ждать...

По моему опыту - никаких.

yurya
16.10.2020, 11:53
Добрый день.
Перестал запускаться Gateway. Подскажите, пожалуйста, куда смотреть?

Евгений Кислов
16.10.2020, 11:59
Добрый день.
Перестал запускаться Gateway. Подскажите, пожалуйста, куда смотреть?

Добрый день.
Панель управления - Администрирование - Службы - CODESYS Gateway V3

yurya
16.10.2020, 12:07
В службах пропал.

Евгений Кислов
16.10.2020, 12:10
В службах пропал.

Если в службах вообще нет - то, видимо, кто-то удалил сервис.
Если у вас корпоративная локальная сеть - пообщайтесь с ее администраторами.

yurya
16.10.2020, 12:13
Устанавливал Machine Control Studio. Аварийное завершение, не хватило места.
После этого заметил проблему с Gateway. Надо переустанавливать Codesys?

Евгений Кислов
16.10.2020, 13:00
Устанавливал Machine Control Studio. Аварийное завершение, не хватило места.
После этого заметил проблему с Gateway. Надо переустанавливать Codesys?

Да, при установке из списка компонентов достаточно будет выбрать Gateway.

yurya
16.10.2020, 13:09
Спасибо за ответ.

Константин Чернов
17.10.2020, 15:16
Всем привет!
Обращаюсь за помощью к опытным камрадам.
Вопрос: есть несколько булевых переменных (допустим, 20). Необходимо произвести подсчёт состояния - сколько 0 и сколько 1. Как можно это реализовать подскажите, пожалуйста.

ASo
17.10.2020, 15:23
Естественно, суммированием. С ручной или автоматической конвертацией типа в uint

Константин Чернов
17.10.2020, 15:39
Благодарю!