PDA

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



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29

Евгений Кислов
23.11.2022, 16:11
Добрый день!
Помогите с реализацией уставок
ПЛК 210 modbus rtu slave
Панель СП310 master
Значение с панели приходит - все ок!

Объявленные переменные в Modbus Serial Device соотнесении Входов выходов при перезапуске сбрасываются на 0
Пробовал объявлять их в GVL тоже самое
Пробовал объявлять их в GVL retain тоже самое
Пробовал объявлять их в GVL_presistent тоже самое

в codesys 2.3 было все просто объявленая в modbus slave переменная автоматом энернгонезависимая в codesys 3.5 не пойму как сделать

Добрый день.
В вашем случае нужно настроить слэйв с помощью ФБ MB_SerialSlave из библиотеки OwenComminicaiton.
На вход pData передавайте указатель на массив или структуру, объявленную в RETAIN.
См. пример использования блока:
https://youtu.be/NzDdo6Hllm8

Ufolog
23.11.2022, 16:42
А попроще никак?
По TCP тоже самое?
Стандартными средствами вообще никак не реализовано? только через библиотеку и массив?

Евгений Кислов
23.11.2022, 16:46
А попроще никак?
По TCP тоже самое?
Стандартными средствами вообще никак не реализовано? только через библиотеку и массив?

По TCP - тоже самое (ФБ MB_TcpSlave).
Стандартными средствами не реализовать.
Что касается "попроще" - настройка обмена в режиме Modbus RTU Slave через библиотеку сводится к вызову двух блоков.
В режиме Modbus TCP Slave - вообще одного блока.

Ufolog
24.11.2022, 10:06
Добрый день!
Спасибо, все получилось!
Подскажите еще пожалуйста, как обратится к биту в массиве данных Word напрямую из программы, без дополнительных преобразований, чтоб не делать запись и чтение по раздельности
Типа: massiv[word.bit]
Word.bit номер слова. номер бита

Евгений Кислов
24.11.2022, 10:18
Добрый день!
Спасибо, все получилось!
Подскажите еще пожалуйста, как обратится к биту в массиве данных Word напрямую из программы, без дополнительных преобразований, чтоб не делать запись и чтение по раздельности
Типа: massiv[word.bit]
Word.bit номер слова. номер бита

Добрый день.
Если я правильно понял ваш вопрос, то:



VAR
awData: ARRAY [0..15] OF WORD;
END_VAR

// в коде программы:

awData[0].0 := TRUE; // обращение к нулевому биту нулевого слова

Ufolog
24.11.2022, 10:34
Вы просто Бог!
Спасибо!

ВладОвен
02.12.2022, 14:24
Привет.
Проект перестал запускаться.
На экране СПК110 надпись "Rised exception. Access violation".
При этом компиляция и загрузка проходят штатно.
Что можно сделать? Как понять где происходит ошибка?
Спасибо.

Евгений Кислов
02.12.2022, 14:25
Привет.
Проект перестал запускаться.
На экране СПК110 надпись "Rised exception. Access violation".
При этом компиляция и загрузка проходят штатно.
Что можно сделать? Как понять где происходит ошибка?
Спасибо.

Добрый день.
См. в подписи статью про отладку.
Про Access violation - в п. 4.3.

ВладОвен
05.12.2022, 13:04
Привет.
Может кто-нибудь объяснить что происходит:
0. Создаем строку.
1. Записываем в нее значение: sDataSend := '{-calibr_unit-:10,';
2. Добавляем к этой строке еще кусок текста: concat(sDataSend, 'data":{"cmd":"add_launch","algoritm":"Test",');
3. Ловим точку останова в реальном ПЛК.
4. Сидим у чешем репу:
64290

Евгений Кислов
05.12.2022, 13:08
Привет.
Может кто-нибудь объяснить что происходит:
0. Создаем строку.
1. Записываем в нее значение: sDataSend := '{-calibr_unit-:10,';
2. Добавляем к этой строке еще кусок текста: concat(sDataSend, 'data":{"cmd":"add_launch","algoritm":"Test",');
3. Ловим точку останова в реальном ПЛК.
4. Сидим у чешем репу:
64290

Добрый день.
У вас значения, возвращаемые CONCAT, никуда не присваиваются.
Ну т.е. в вашем случае это "склеиваем две строки и не используем результат".

ВладОвен
05.12.2022, 13:34
:)
Эх... Что б я без вас делал-то...
(чесал репу)

ВладОвен
05.12.2022, 13:54
Еще вопрос:
Как узнать, где завис (где сейчас крутится) контроллер?
ИДЕ показывает режим "работа".
Ставлю точку останова в главной проге в сроке 1 и там никогда ничего не останавливается.
Т.е. сейчас прога где-то застряла или как?
64293

melky
05.12.2022, 13:56
Программа не соответствует исходнику, возможно по этому не происходит останова как вариант.

ВладОвен
05.12.2022, 13:59
Программа не соответствует исходнику

Я при загрузке уже зарёкся давно: стирать прогу раз-за-разом полностью. И еще всегда новое загрузочное приложение загружаю.
Так у меня хотя бы есть уверенность, что вся предыдущая прога стирается.

Евгений Кислов
05.12.2022, 14:03
Еще вопрос:
Как узнать, где завис (где сейчас крутится) контроллер?
ИДЕ показывает режим "работа".
Ставлю точку останова в главной проге в сроке 1 и там никогда ничего не останавливается.
Т.е. сейчас прога где-то застряла или как?
64293

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

fatlortroll
05.12.2022, 21:06
Подскажите пожалуйста, где можно добыть профайлер кодсиса (https://store.codesys.com/en/codesys-profiler.html)? Мою учётку там заблокировали, а качать даже бесплатные расширения можно только зарегистрированным пользователям.

Pudge13
05.12.2022, 21:55
Здравствуйте, столкнулся с CoDeSys случайно, есть задание просто перенести программу из одной среды в CoDeSys. При создании проекта он предлагает выбрать только язык ST, а мне нужен LD. Я не могу понять в чем проблема, т.к. во многих видеоуроках языки программирования присутствуют все.
64306

Евгений Кислов
06.12.2022, 06:47
Подскажите пожалуйста, где можно добыть профайлер кодсиса (https://store.codesys.com/en/codesys-profiler.html)? Мою учётку там заблокировали, а качать даже бесплатные расширения можно только зарегистрированным пользователям.

В V3.5 SP17 Patch 3 можно установить его через CODESYS Installer.
Перед запуском CODESYS Installer потребуется подключиться к интернету через VPN - например, с помощью этой (https://freevpnplanet.com/ru/) или аналогичной утилиты.

Евгений Кислов
06.12.2022, 06:48
Здравствуйте, столкнулся с CoDeSys случайно, есть задание просто перенести программу из одной среды в CoDeSys. При создании проекта он предлагает выбрать только язык ST, а мне нужен LD. Я не могу понять в чем проблема, т.к. во многих видеоуроках языки программирования присутствуют все.
64306

Добрый день.
У вас CODESYS установился без плагинов.
Удалите его и установите заново по инструкции:
https://youtu.be/3KcJWZEVXCg

fatlortroll
06.12.2022, 07:52
> V3.5 SP17 Patch 3

Увы, у меня SP14 Patch 3+. У вас нигде на ftp нет склада с их плагинами?

Евгений Кислов
06.12.2022, 08:01
> V3.5 SP17 Patch 3

Увы, у меня SP14 Patch 3+. У вас нигде на ftp нет склада с их плагинами?

Конкретно плагинов из Professional Developer Edition нет.
Могу завтра выложить, если это действительно необходимо.
Или вы можете создать новый аккаунт в CODESYS Store - если указать страну регистрации не РФ/РБ, и почта будет не российского регистратора - то аккауант не заблокируют.

fatlortroll
06.12.2022, 08:09
> если указать страну регистрации не РФ/РБ, и почта будет не российского регистратора

Они там телефон требуют, похоже, по нему тоже блокировка идёт.

> Могу завтра выложить

Буду премного благодарен.

Scenix
06.12.2022, 17:35
Конкретно плагинов из Professional Developer Edition нет.
Могу завтра выложить, если это действительно необходимо.
Или вы можете создать новый аккаунт в CODESYS Store - если указать страну регистрации не РФ/РБ, и почта будет не российского регистратора - то аккауант не заблокируют.
64345
Вполне себе заблокируют. Мне заблокировали два аккаунта, созданных подобным образом.

Евгений Кислов
06.12.2022, 17:54
> если указать страну регистрации не РФ/РБ, и почта будет не российского регистратора

Они там телефон требуют, похоже, по нему тоже блокировка идёт.

> Могу завтра выложить

Буду премного благодарен.

https://disk.yandex.ru/d/Dx4iyPl9JVDLEQ


Вполне себе заблокируют. Мне заблокировали два аккаунта, созданных подобным образом.

У меня за весь год не заблокировали, но, возможно, дело в том, что там ФИО соответствует стране регистрации и указан реалистичный почтовый индекс.
Когда я его регистрировал - телефон еще не требовали.

fatlortroll
06.12.2022, 20:27
Спасибо большое, завтра попробую установить.

Jukki
07.12.2022, 17:42
Здравствуйте.
Не могу установить связь с МКОН. Делаю всё по этому видеопримеру (https://youtu.be/Czcar_HOTxU), но МКОН будто не задействован (см. приложение). Порт 502. Кнопка подтверждения ничего не меняет.
Через сам МКОН успешно опрашиваю модсканом по Modbus TCP устройства на RS-485, а с контроллера не получается.
ПЛК200-03-CS, версия CODESYS 3.5.17.30, таргет соответствующий. Версии компонентов соответствуют документу "Настройка обмена по протоколу Modbus", Приложение А. Рекомендуемые версии компонентов Modbus.

Евгений Кислов
07.12.2022, 17:50
Добрый день.
Вы одновременно и модсканом, и ПЛК опрашиваете? Может, еще конфигуратором подключены?
МКОН поддерживает только два одновременных TCP-подключения.
Проверьте из web-конфигуратора - есть ли пинг с ПЛК до МКОН? (вкладка Сеть - Диагностика)

zhakei56
08.12.2022, 09:30
Добрый день, подскажите пожалуйста по библиотеке OSCAT BASIC не могу вытащить ONTIME скриншот прикладываю. 6440364404

Евгений Кислов
08.12.2022, 09:33
Добрый день, подскажите пожалуйста по библиотеке OSCAT BASIC не могу вытащить ONTIME скриншот прикладываю. 6440364404

Добрый день.
Вы добавили эту библиотеку в Менеджер библиотек?
Если да - то выложите, пожалуйста, скриншот, на котором это будет видно.

zhakei56
08.12.2022, 11:14
64408 Добавлено.

zhakei56
08.12.2022, 11:36
Помогло полная переустановка codesys.

zhakei56
08.12.2022, 14:18
Делаю отображение , но контроллер в таком случае выводит системное время, а как отобразить уже конвертированную наработку? Подскажите плиииз.6441864419

Евгений Кислов
08.12.2022, 14:21
Делаю отображение , но контроллер в таком случае выводит системное время, а как отобразить уже конвертированную наработку? Подскажите плиииз.6441864419

В старых версиях CODESYS был такой баг.
В вашем случае придется конвертировать время в строку (с помощью оператора LTIME_TO_STRING).
Потом эту строку можно отформатировать к нужному вам виду с помощью библиотеки OwenStringUtils.
И уже эту строку отображать в визуализации.

zhakei56
09.12.2022, 06:15
Евгений спасибо всё получилось , но отображение идёт ltime#...s / как убрать надпись ltime# чтобы отображались только секунды минуты и т.д.?64437

Евгений Кислов
09.12.2022, 06:18
Евгений спасибо всё получилось , но отображение идёт ltime#...s / как убрать надпись ltime# чтобы отображались только секунды минуты и т.д.?64437

См. библиотеку OwenStringUtils.
Например, используйте функцию After, чтобы вырезать часть строки после 'LTIME#'.

zhakei56
09.12.2022, 06:42
Спасибо всё идеально работает.

Jukki
09.12.2022, 12:50
Добрый день.
Вы одновременно и модсканом, и ПЛК опрашиваете? Может, еще конфигуратором подключены?
МКОН поддерживает только два одновременных TCP-подключения.
Проверьте из web-конфигуратора - есть ли пинг с ПЛК до МКОН? (вкладка Сеть - Диагностика)
Не одновременно, конечно.
У ПЛК200-03-CS 2 порта Ethernet и я назначал им IP-адреса из одной подсети, 192.168.0.11 и 192.168.0.12. При такой конфигурации оказалось, что второй порт, опрашивающий МКОН, не работает. Помогло назначение другой подсети второму порту, 192.168.1.12, ну и соответствующая настройка МКОН.

RV9WFJ
09.12.2022, 13:47
Так у ПЛК210 по умолчанию первые 3 порта мостом соединены, т.е у них один ip адрес. Если вы 4й порт используете, то он в другой подсети должен быть.

RV9WFJ
09.12.2022, 13:48
Попутно, с МКОН и ПЛК210 уже много проектов сделано, никаких затыков там нет по строне tcp.

ВладОвен
09.12.2022, 14:18
Привет.
Подскажите, как в wsrting вставить символ двойных кавычек?

Евгений Кислов
09.12.2022, 14:23
Привет.
Подскажите, как в wsrting вставить символ двойных кавычек?

Добрый день.
С помощью экранирования: $"

ВладОвен
09.12.2022, 14:49
Привет.
Все мы знаем как при помощи элемента "Список тестов" можно изменить надписи на граф.примитивах с одного языка на другой. Это в CodeSys заложено из коробки.
Но как в программе поменять значения символьных строк при смене языка системы?
Например, при английском языке системы строка myString должна быть равна "Eat more of those French buns!", а при украинском эта же строка должна быть равна "З'їж ще цих французьких булок". Мне нужна такая строка (разная в зависимости от языка системы), чтобы выкидывать ее на сервер.
Конечно, это можно реализовать через код:

IF VisuElems.CURRENTLANGUAGE = 'eng' THEN
myString := "Eat more of those French buns!";
ELSIF VisuElems.CURRENTLANGUAGE = 'ukr' THEN
myString := "З'їж ще цих французьких булок";
END_IF

Но такой подход мне не очень нравится, хотелось чтоб все было именно в таблице "Список текстов". Тогда при добавлении нового языка, всё правилось бы в одном месте кода. Т.е. будет системный подход к добавления новой локализации.

Суть: Есть ли решение менять значение string в зависимости от выбранного языка системы, но делать это при помощи "Список тестов", а не кодом?
Спасибо.

saii
10.12.2022, 11:58
Привет.
Все мы знаем как при помощи элемента "Список тестов" можно изменить надписи на граф.примитивах с одного языка на другой. Это в CodeSys заложено из коробки.
Но как в программе поменять значения символьных строк при смене языка системы?
Например, при английском языке системы строка myString должна быть равна "Eat more of those French buns!", а при украинском эта же строка должна быть равна "З'їж ще цих французьких булок". Мне нужна такая строка (разная в зависимости от языка системы), чтобы выкидывать ее на сервер.
Конечно, это можно реализовать через код:

IF VisuElems.CURRENTLANGUAGE = 'eng' THEN
myString := "Eat more of those French buns!";
ELSIF VisuElems.CURRENTLANGUAGE = 'ukr' THEN
myString := "З'їж ще цих французьких булок";
END_IF

Но такой подход мне не очень нравится, хотелось чтоб все было именно в таблице "Список текстов". Тогда при добавлении нового языка, всё правилось бы в одном месте кода. Т.е. будет системный подход к добавления новой локализации.

Суть: Есть ли решение менять значение string в зависимости от выбранного языка системы, но делать это при помощи "Список тестов", а не кодом?
Спасибо.

Возможно помогут функции DynamicTextGetText/DynamicTextGetTextW из библиотеки CmpDynamicText.

ВладОвен
13.12.2022, 12:16
Привет.
Подскажите, что эта за запись?
Можно ли так делать? Или не стоит.
Спасибо.

Counter_LO AT %MB0: BYTE;
Counter_HI AT %MB1: BYTE;
Counter AT %MW0: WORD;

Евгений Кислов
13.12.2022, 12:21
Привет.
Подскажите, что эта за запись?
Можно ли так делать? Или не стоит.
Спасибо.

Counter_LO AT %MB0: BYTE;
Counter_HI AT %MB1: BYTE;
Counter AT %MW0: WORD;

Добрый день.
п. 3.1.1:
https://ftp.owen.ru/CoDeSys3/98_Books/plcopen_coding_guidelines_v10_11_ru.pdf

ВладОвен
13.12.2022, 12:52
Спасибо. Понял.

Но конкретно в этих трех строчках что происходит?

Counter_LO AT %MB0: BYTE;
Counter_HI AT %MB1: BYTE;
Counter AT %MW0: WORD;


В работающей программе я вижу, что создали переменную 16 бит. Далее перебирают эти биты. Засовывают их через сеть в прибор ввода-вывода на 16 выходов (двумя кусками по 8 бит).
Однако в проекте в присоединённом устройстве во вкладке "Соотнесение входов/выходов" нету переменных %MB0 или %MB1. Там соотнесено как %QX0.0 ... %QX0.7 и %QX1.0 ... %QX1.7.
Вопрос:
1. Как MB попадает в QX ?
2. Как MW0 соответствует MB0 и MB1.
Спасибо.

capzap
13.12.2022, 12:52
Добрый день.
п. 3.1.1:
https://ftp.owen.ru/CoDeSys3/98_Books/plcopen_coding_guidelines_v10_11_ru.pdf

с этим надо что то делать, прочтите раздел 5.4 как правильный пример выглядит на 27 странице

ВладОвен
13.12.2022, 13:42
Т.е. Mx это типа переменная ляжет в память?
Допустим, MW0 - это word по адресу 0 ?
А MB15 - это byte по адресу 15 ?

Тогда MB4 попадет (мапится) частично на MW3 ? Так?

ВладОвен
13.12.2022, 13:48
А как насчет скорости работы программы?
Применение таких вот %X дает прирост в скорости?

ВладОвен
13.12.2022, 16:45
Да, возможно пока есть глобальные непонятки с работой CoDeSys.
Все пройдет (с).

lelik76
14.12.2022, 11:04
Добрый день. После установки на удаленном компьютере CoDesys SP17, установил таргет, библиотеки Мх110, Мх210 , но проект мой не запускается, необходима библиотека IoDrvmodbusTCP. У меня она есть, не помню откуда, а там нет.. Не подскажите где взять?

Евгений Кислов
14.12.2022, 11:14
Добрый день. После установки на удаленном компьютере CoDesys SP17, установил таргет, библиотеки Мх110, Мх210 , но проект мой не запускается, необходима библиотека IoDrvmodbusTCP. У меня она есть, не помню откуда, а там нет.. Не подскажите где взять?

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

lelik76
14.12.2022, 14:27
file:///C:/Users/user/YandexDisk/Скриншоты/2022-12-14_11-59-55.png

Евгений Кислов
14.12.2022, 14:39
file:///C:/Users/user/YandexDisk/Скриншоты/2022-12-14_11-59-55.png

Спасибо.
Теперь, пожалуйста, выложите скриншот из дерева проекта, на котором будут видны все ваши компоненты Modbus.

lelik76
14.12.2022, 14:53
Вот. Воде все стандартно.

Евгений Кислов
14.12.2022, 15:05
Вот. Воде все стандартно.

Выложите ваш проект, пожалуйста - посмотрим, в чем дело.

lelik76
14.12.2022, 15:12
У меня на компьютере всё Ок.

Евгений Кислов
14.12.2022, 15:38
У меня на компьютере всё Ок.

На другом ПК проект установлены те же версии пакетов шаблонов, что и на вашем?
Можете обеспечить удаленный доступ к другому ПК по AeroAdmin?

lelik76
14.12.2022, 16:05
Пока нет. На объекте никого. Скорее завтра буду договариваться.

sssssaaaaabbbbb
14.12.2022, 16:11
Всем здравствуйте, подскажите пожалуйста как можно проект, сделанный на CODESYS 3.5 v16path4 переделать в проект CODESYS 3.5 v17path3(ПЛК210) не хватает только элементов визу или еще каких то библиотек.
В CODESYS 3.5 v16path4 открывается все хорошо, ошибок нет 64536 . Делаю архивировать - распаковать со всеми галочками в обоих случаях 64540. В CODESYS 3.5 v17path3 ошибки такие : 64537 64538 . Пробовал экспортировать библиотеки из CODESYS 3.5 v16path4 и потом вставлять в CODESYS 3.5 v17path364539 . Но увы, не получаетсяю Точнее получается, но количество ошибок не изменяется. Если при распаковке нажимаю "Сделать все новейшими" то ошибок тоже не малои они становятся другими 64541. Подскажите пожалуйста.

Евгений Кислов
14.12.2022, 16:20
Добрый день.
Попробуйте сначала повторить по этому видео:
https://www.youtube.com/watch?v=RwREz7A4PHI&t=4457s

lelik76
14.12.2022, 18:14
На другом ПК проект установлены те же версии пакетов шаблонов, что и на вашем?
Можете обеспечить удаленный доступ к другому ПК по AeroAdmin?

По AnyDesk сейчас могу

Евгений Кислов
14.12.2022, 18:18
По AnyDesk сейчас могу

Присылайте в личку ID и будьте готовы подтвердить подключение.

Umut
14.12.2022, 22:49
Здравствуйте,
Сегодня, к несчастью, компьютер, которым я пользовался, сломался. Я открыл резервную копию на новом компьютере и столкнулся с проблемой.
Я использовал библиотеку 3.5.14 modbusTCPslave в качестве подчиненного устройства modbus в своем проекте. Теперь я не могу добавить эту библиотеку в свой проект.
Когда я говорю показать все версии, появляется только версия 3.5.17.

Как я могу повторно добавить 3.5.14 и все другие версии?
64550
64551
64552

Евгений Кислов
15.12.2022, 08:32
Добрый день.


Как я могу повторно добавить 3.5.14?

Для этого нужно установить CODESYS V3.5 SP14 Patch 3.

sssssaaaaabbbbb
15.12.2022, 09:13
Добрый день.
Попробуйте сначала повторить по этому видео:
https://www.youtube.com/watch?v=RwREz7A4PHI&t=4457s

СПАСИБО ВАМ БОЛЬШОЕ, осталось всего две ошибки 64562 64563, как можно их побороть? Сам доделал, Рассказываю как: обновил версию так: 64566 и так 64567 64565

Евгений Кислов
15.12.2022, 09:30
Выложите ваш проект - посмотрим.

sssssaaaaabbbbb
15.12.2022, 10:32
Выложите ваш проект - посмотрим. Это я уже исправил и описал как, подскажите еще как обновить вручную
64568версию устройства 3.5.16.31 на 3.5.17.30, как я понимаю, это же не прошивка контроллера, а таргет надо обновить? у меня стоит последняя 64569

Евгений Кислов
15.12.2022, 10:44
Правой кнопкой мыши на узел Device - команда Обновить устройство - выбрать версию 3.5.17.31.

sssssaaaaabbbbb
15.12.2022, 10:46
Правой кнопкой мыши на узел Device - команда Обновить устройство - выбрать версию 3.5.17.31.

СПАСИБО ДОБРЫЙ ЧЕЛОВЕК, все понятно!!! Была ошибка, но все исправил! Как заливать проекты для показа? сюда или в облако с ссылкой?

Андрей Чернов
15.12.2022, 13:07
Добрый день!
Есть несколько механизмов в работе. Нужно подсчитывать сколько их работает на данный момент для формирования сигналов далее. Есть ли какой-то библиотечный блок для этого?

Евгений Кислов
15.12.2022, 13:17
СПАСИБО ДОБРЫЙ ЧЕЛОВЕК, все понятно!!! Была ошибка, но все исправил! Как заливать проекты для показа? сюда или в облако с ссылкой?

В облако со ссылкой.

Евгений Кислов
15.12.2022, 13:20
Добрый день!
Есть несколько механизмов в работе. Нужно подсчитывать сколько их работает на данный момент для формирования сигналов далее. Есть ли какой-то библиотечный блок для этого?

Добрый день.
Насколько я понимаю, у каждого механизма есть переменная типа BOOL, которая принимает значение TRUE, если он в работе?
Тогда можно конвертировать значения этих переменных в тип UINT и сложить их.

Андрей Чернов
15.12.2022, 15:00
Хорошая идея, благодарю :)

thecatvlz
16.12.2022, 14:27
Добрый день.
Прошу помощи, самостоятельный поиск решения результатов пока не дал.
СПК107 + МВ210-202, два входа настроены на работу с энкодером, обычным инкрементным. При перезагрузке по питанию счетчик энкодера обнуляется. Есть ли возможность сохранять значение счетчика? логика подсказывает, что должна быть, но пока не смог найти нужную информацию, только про обнуление. Codesys 3.5 sp14 p3

Евгений Кислов
16.12.2022, 15:49
Добрый день.
Прошу помощи, самостоятельный поиск решения результатов пока не дал.
СПК107 + МВ210-202, два входа настроены на работу с энкодером, обычным инкрементным. При перезагрузке по питанию счетчик энкодера обнуляется. Есть ли возможность сохранять значение счетчика? логика подсказывает, что должна быть, но пока не смог найти нужную информацию, только про обнуление. Codesys 3.5 sp14 p3

Добрый день.
Вот пример:



PROGRAM PLC_PRG
VAR
// Счетчик модуля, привязан к компоненту Modbus
udiModbusCounter: UDINT;

udiCounterOffset: UDINT;
xPlcStart: BOOL;
END_VAR
VAR RETAIN
// Энергонезависимый счетчик
udiRetainCounter: UDINT;
END_VAR


// при старте контроллера восстанавливаем сохраненное в энергонезависимой памяти значение счетчика
IF NOT(xPlcStart) THEN

udiCounterOffset := udiRetainCounter;
xPlcStart := TRUE;

END_IF

// реальное значение счетчика - это сумма текущего значения и значения, которое счетчик имел до последней перезагрузки
udiRetainCounter := udiModbusCounter + udiCounterOffset;

thecatvlz
16.12.2022, 16:20
Добрый день.
Вот пример:



PROGRAM PLC_PRG
VAR
// Счетчик модуля, привязан к компоненту Modbus
udiModbusCounter: UDINT;

udiCounterOffset: UDINT;
xPlcStart: BOOL;
END_VAR
VAR RETAIN
// Энергонезависимый счетчик
udiRetainCounter: UDINT;
END_VAR


// при старте контроллера восстанавливаем сохраненное в энергонезависимой памяти значение счетчика
IF NOT(xPlcStart) THEN

udiCounterOffset := udiRetainCounter;
xPlcStart := TRUE;

END_IF

// реальное значение счетчика - это сумма текущего значения и значения, которое счетчик имел до последней перезагрузки
udiRetainCounter := udiModbusCounter + udiCounterOffset;



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

Евгений Кислов
16.12.2022, 16:26
На уровне прошивки модуля счетчики реализованы так, что не сохраняют свои значения после перезагрузки.

thecatvlz
16.12.2022, 16:38
Понял, спасибо за ответ

Карбофос
17.12.2022, 14:58
После обновления на Codesys 3.5.17.3 обнаружил крайне странное явление: как известно, Windows до сих пор не умеет нормально работать с экранами высокой плотности, и если в системе установлено масштабирование больше 100%, некоторые приложение, построенные по старым канонам (например Кодесис), выглядят размытыми. Для борьбы с явлением в свойствах ярлыка или экзешника выставляется режим высокого DPI "Приложение".
64605
В старых версиях Кодесис, в т.ч. 2.3 и 3.5.16.3 с этим проблем никаких не было, но с 3.5.17.3 наблюдается странная сатана: я выставляю в свойствах ярлыка или экзешника эту настройку, программа успешно запускается с нужными параметрами, но после перезапуска настройка высокого DPI слетает на дефолтную. На одном и том же компьютере стоят 3.5.16.3 и 3.5.17.3, в первой этой проблемы нет, а во второй - есть. Установка флажка "только чтение" не помогает.
Что за?..

RV9WFJ
17.12.2022, 16:37
Странно, у меня и ноут и рабочий монитор 4К и я вообще ничего не настраивал в CS. И так вроде нормально.

Карбофос
18.12.2022, 14:29
Странно, у меня и ноут и рабочий монитор 4К и я вообще ничего не настраивал в CS. И так вроде нормально.

Возможно у вас масштабирование х2 и тогда мыла нет. У меня же масштабирование х1.25, и это выглядит очень неприятно.

RV9WFJ
18.12.2022, 15:32
Те же 125%. Полный экран по размеру файла сюда не прикрепляется.
64628

Карбофос
19.12.2022, 13:21
В общем разобрался. Вернее, не разобрался что это было, но проблема вроде решена: установил настройки высокого DPI через кнопку "изменить для всех пользователей" и слетать перестало.

nnnn1
21.12.2022, 12:46
Здравствуйте, подскажите в ПЛК210/200 поддерживается протокол МЭК 61850 (RS485) ?

Евгений Кислов
21.12.2022, 12:52
Здравствуйте, подскажите в ПЛК210/200 поддерживается протокол МЭК 61850 (RS485) ?

Добрый день.
Поддержки этого протокола в ПЛК210/200 нет.

Эдуард_Н
24.12.2022, 15:29
Здравствуйте, подскажите где можно скачать библиотеку Mx110Assistant 3.5.4.16 ?

Евгений Кислов
24.12.2022, 15:39
Здравствуйте, подскажите где можно скачать библиотеку Mx110Assistant 3.5.4.16 ?

Добрый день.
Она входит в состав этого пакета:
https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/01_Components/Mx110Drivers_v3.5.11.8.package

Эдуард_Н
24.12.2022, 15:43
Добрый день.
Она входит в состав этого пакета:
https://ftp.owen.ru/CoDeSys3/04_Library/05_3.5.11.5/01_Components/Mx110Drivers_v3.5.11.8.package

Спасибо, совсем из головы вылетело.

thecatvlz
26.12.2022, 11:37
del. разобрался

ВладОвен
26.12.2022, 11:42
Привет.
Подскажите, почему эти линии связи никак не хотят становиться горизонтальными / вертикальными?
См. рисунок.
64821

Евгений Кислов
26.12.2022, 11:44
Добрый день. Подскажите пожалуйста, есть ли готовое решение для обработки перехода счетчика энкодера через ноль? хотелось бы видеть отрицательные значения в коде программы (в визуализации корректно показывает). возможно, в oscat есть?

Добрый день.
Достаточно к каналу счетчика привязать переменную типа DINT.
У вас, видимо, привязана переменная беззнакового типа (UDINT или DWORD).

Евгений Кислов
26.12.2022, 11:45
Привет.
Подскажите, почему эти линии связи никак не хотят становиться горизонтальными / вертикальными?
См. рисунок.
64821

Добрый день.
Попробуйте удалить линию связи и протянуть ее заново.

thecatvlz
26.12.2022, 12:06
Добрый день.
Достаточно к каналу счетчика привязать переменную типа DINT.
У вас, видимо, привязана переменная беззнакового типа (UDINT или DWORD).

да, всё верно, так и было. мысль пришла поздно, удалил вопрос одновременно с Вашим ответом

ВладОвен
26.12.2022, 12:18
Добрый день.
Попробуйте удалить линию связи и протянуть ее заново.

Я пробовал и так и эдак.
Мне нужно чтобы 1 выход раздваивался на 2 входа (на 2 линии).
Первая линия всегда получается правильной (горизонтально/вертикальной) и она поддается дальнейшему редактированию по принципу драг-н-дроп.
Вторая линия - всегда идет по диагонали и не поддаётся дальнейшему редактированию (только удаление).

Почему линия не может раздваиваться как на электросхемах?
Может какае-то настройка отключена?

Евгений Кислов
26.12.2022, 12:21
Я пробовал и так и эдак.
Мне нужно чтобы 1 выход раздваивался на 2 входа (на 2 линии).
Первая линия всегда получается правильной (горизонтально/вертикальной) и она поддается дальнейшему редактированию по принципу драг-н-дроп.
Вторая линия - всегда идет по диагонали и не поддаётся дальнейшему редактированию (только удаление).

Почему линия не может раздваиваться как на электросхемах?
Может какае-то настройка отключена?

Выложите ваш проект - я посмотрю, что можно сделать.

ВладОвен
26.12.2022, 12:30
Ок.
Евгений, проект написан под "оборудование третьей стороны". Но думаю, что это общая особенность CodeSys. И в СПК будет также.
64822

Карбофос
26.12.2022, 12:54
Здравствуйте. CDS3.5.17.3 - какая-то дичь с тревогами. Рассказываю по шагам:
Был один класс тревог "Error", все было ок. Понадобился другой класс, я создал новый с именем "Autorisation" - посыпались ошибки, причем не нового класса, а старого, "Error", ошибки типа "не завершена настройка".
Никак не победив это, я удалил класс, создал заново с новым именем "AlarmClassError", руками прописал его во всех тревогах - теперь все тревоги с ошибками, "класс Error не найден" - причем тут вообще он, если он в этих тревогах не прописан?
Я создал новый класс со старым именем Error, но тревоги его по-прежнему не видят. Я в тревогах заново прописал класс "Error", результат тот же. Что за ерунда, мне что, все две сотни тревог создавать заново?

64824

Евгений Кислов
26.12.2022, 13:00
Ок.
Евгений, проект написан под "оборудование третьей стороны". Но думаю, что это общая особенность CodeSys. И в СПК будет также.
64822

У меня проблема не воспроизводится:
https://disk.yandex.ru/i/b0DPsW1bu3DYmw

Евгений Кислов
26.12.2022, 13:01
Здравствуйте. CDS3.5.17.3 - какая-то дичь с тревогами. Рассказываю по шагам:
Был один класс тревог "Error", все было ок. Понадобился другой класс, я создал новый с именем "Autorisation" - посыпались ошибки, причем не нового класса, а старого, "Error", ошибки типа "не завершена настройка".
Никак не победив это, я удалил класс, создал заново с новым именем "AlarmClassError", руками прописал его во всех тревогах - теперь все тревоги с ошибками, "класс Error не найден" - причем тут вообще он, если он в этих тревогах не прописан?
Я создал новый класс со старым именем Error, но тревоги его по-прежнему не видят. Я в тревогах заново прописал класс "Error", результат тот же. Что за ерунда, мне что, все две сотни тревог создавать заново?

64824

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

Карбофос
26.12.2022, 13:04
Хорошо, доберусь, выложу

Солнечный заяц
26.12.2022, 14:30
Здравствуйте, устанавливаю Кодесис 3.5.17.3 на удаленном ПК для отладки. При открытии архива проекта возникает ошибка 64826
Если я пробую открыть проект, то в нем не определяются визуализация, конфигурация тревог, списки текстов 64827
При этом версия на моем ПК (на котором разрабатывался проект) 64828 а на удаленном без знака "+"64829 Дистрибутив скачивался с вашего сайта, просто в разное время. Репозиторий библиотек установлен.

Карбофос
26.12.2022, 14:49
Добрый день.
Выложите, пожалуйста, проект, в котором наблюдается эта проблема.

Отправил вам в личку ТГ.

Евгений Кислов
26.12.2022, 16:04
Здравствуйте, устанавливаю Кодесис 3.5.17.3 на удаленном ПК для отладки. При открытии архива проекта возникает ошибка 64826
Если я пробую открыть проект, то в нем не определяются визуализация, конфигурация тревог, списки текстов 64827
При этом версия на моем ПК (на котором разрабатывался проект) 64828 а на удаленном без знака "+"64829 Дистрибутив скачивался с вашего сайта, просто в разное время. Репозиторий библиотек установлен.

Добрый день.
У вас CODESYS установился без плагинов.
Удалите и установите по инструкции: https://youtu.be/3KcJWZEVXCg

DenisV
26.12.2022, 16:28
Здравствуйте, появилась задача иметь возможность записывать уставки в ПЛК и из визуализции и по Modbus. Но столкнулся со следующей проблемой: Значение, записанное из OPC сервера единичной командой записи постоянно сохраняется, даже если перезаписать этот Holding Register из программы, подскажите пожалуйста как сделать так, чтобы регистр обновлялся новым значением для OPC сервера при изменении его на стороне ПЛК?

Евгений Кислов
26.12.2022, 16:35
Здравствуйте, появилась задача иметь возможность записывать уставки в ПЛК и из визуализции и по Modbus. Но столкнулся со следующей проблемой: Значение, записанное из OPC сервера единичной командой записи постоянно сохраняется, даже если перезаписать этот Holding Register из программы, подскажите пожалуйста как сделать так, чтобы регистр обновлялся новым значением для OPC сервера при изменении его на стороне ПЛК?

Добрый день.
Посмотрите видео:
https://youtu.be/Q3hqQlqcESo?t=5503

ВладОвен
26.12.2022, 17:11
У меня проблема не воспроизводится:
https://disk.yandex.ru/i/b0DPsW1bu3DYmw

Спасибо. Я разобрался благодаря вашему видосу. Стало понятно.

ВладОвен
26.12.2022, 17:13
Это баг или фича:
64836

Инкрементирую переменную. Но настроил выход блока неправильно. Получаю из-за этого ошибку. (показано красным)
Причина в элементе 70, но это совсем другой элемент. (показано зеленым)

Как так?

Евгений Кислов
26.12.2022, 17:39
Это баг или фича:
64836

Инкрементирую переменную. Но настроил выход блока неправильно. Получаю из-за этого ошибку. (показано красным)
Причина в элементе 70, но это совсем другой элемент. (показано зеленым)

Как так?

Это баг. Бывает.

64837

ВладОвен
26.12.2022, 18:35
Есть вопрос.
Каждый раз перед приёмом информации мне нужно очистить приемные буфера (.)(.)
Я использую шаги (CASE). На шаге 65 я использую функциональный блок MEM.MemFill. Потом ухожу на шаг 70. См. рисунок:

64839

Этот блок не отрабатывается, потому что в первом квадрате MEM.MemFill постоянно включен выход MemFill, хотя разрешение EN уже отключено.
И во втором квадрате MEM.MemFill выход MemFill постоянно активен. Из-за этого квадрат move постоянно переключает bState в значение 70.

Разве отсутствие входного сигнала EN не должно блокировать все выходы в квадрате? Это было бы логичнее!

Евгений Кислов
26.12.2022, 18:50
Есть вопрос.
Каждый раз перед приёмом информации мне нужно очистить приемные буфера (.)(.)
Я использую шаги (CASE). На шаге 65 я использую функциональный блок MEM.MemFill. Потом ухожу на шаг 70. См. рисунок:

64839

Этот блок не отрабатывается, потому что в первом квадрате MEM.MemFill постоянно включен выход MemFill, хотя разрешение EN уже отключено.
И во втором квадрате MEM.MemFill выход MemFill постоянно активен. Из-за этого квадрат move постоянно переключает bState в значение 70.

Разве отсутствие входного сигнала EN не должно блокировать все выходы в квадрате? Это было бы логичнее!

Разработчики стандарта МЭК 61131-3 считают иначе:

64842

64841

Т.е. для функций состояние выходов при EN = FALSE не специфицировано и определяется конкретной реализацией.
Для ФБ состояние выходов при EN = FALSE специфицировано - они сохраняют свои значения из предыдущего вызова.

Разработчики CODESYS выбрали для функций ту же реализацию обработки выходов при EN = FALSE, что и для ФБ - и это вполне закономерно.

Собственно, если вы ENO заведете на EN - то ваша проблема исчезнет сама собой.

ВладОвен
26.12.2022, 18:58
Спасибо за разъяснения.
Как бы вы решили такую задачу? Как словить именно фронт выходного сигнала MemFill? Есть какие-либо "одновибраторы - фронтовики" ? :)
Триггер может какой?

Евгений Кислов
26.12.2022, 19:03
Спасибо за разъяснения.
Как бы вы решили такую задачу? Как словить именно фронт выходного сигнала MemFill? Есть какие-либо "одновибраторы - фронтовики" ? :)
Триггер может какой?

1. Соединял бы по цепочке ENO с EN следующего квадратика.
2. R_TRIG

ВладОвен
27.12.2022, 10:09
Так:
64868

Второй очищающий квадрат постоянно включен.
Получается он постоянно очищает второй буфер.

Честно говоря, не понял логики.
Что я делаю не так?

PS. Разобрался...
Евгений, а этот R-Trig он при фронте на входе дает единичный импульс на выходе? Так?

Евгений Кислов
27.12.2022, 11:10
Евгений, а этот R-Trig он при фронте на входе дает единичный импульс на выходе? Так?

Именно так.

ВладОвен
27.12.2022, 11:58
Евгений, подскажите, правильно ли я вызываю метод? (основная прога называется main). См.рис.:

64875

Это прием пакета через RS-232. Асинхронные прилеты пакетов заставляют контролировать целостность и склеивать иногда разорванные данные.
Поэтому реализован обычный метод, который реально вызывается 1 раз в 10 секунд (реально наблюдал) для склейки двух буферов.
Весь автомат заточен так, что bState приравнивается к 85 только когда пакет оказался разорванным. В остальных (99%) случаях этот шаг пропускается.
Правильно ли я понял, что метод не запускается сам по себе и не отнимает ресурс ПЛК.

Евгений Кислов
27.12.2022, 12:00
Правильно ли я понял, что метод не запускается сам по себе и не отнимает ресурс ПЛК.

Пока вы не вызываете метод в своем коде - он "не запускается".

ВладОвен
27.12.2022, 13:52
Евгений, а где можно почитать об этих сигналах EN и ENO ?

Евгений Кислов
27.12.2022, 13:57
Евгений, а где можно почитать об этих сигналах EN и ENO ?

В стандарте МЭК 61131-3.
Еще в справке для CoDeSys V2.3 есть неплохое объяснение (стр. 186)
http://www.kipshop.ru/CoDeSys/steps/codesys_v23_ru.pdf

В справке для CODESYS V3.5, по-моему, особой информации об этом нет, только это:
https://content.helpme-codesys.com/en/CODESYS%20LD%20FBD/_cds_fbd_ld_il_element_box_en_eno.html

DenisV
27.12.2022, 14:19
Добрый день.
Посмотрите видео:
https://youtu.be/Q3hqQlqcESo?t=5503

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

Евгений Кислов
27.12.2022, 15:48
Спасибо, вроде разобрался, получилось. Теперь возник такой вопрос, а есть ли переменная, которая сигнализирует о наличии связи с мастером , на случай если связь обрывается и необходимо обнулить некоторые значения? ( потому что я так понял стандартный сторожевой таймер обнуляет все значения)

Вы используете Modbus RTU или Modbus TCP?

DenisV
27.12.2022, 18:12
Вы используете Modbus RTU или Modbus TCP?

Modbus TCP

Евгений Кислов
27.12.2022, 18:16
Для стандартного компонента нет надежного способа определить отсутствие запросов от мастера.

Можете поднять слэйв через нашу библиотеку OwenCommunication - в ней у ФБ MB_TcpSlave есть выход xNewRequest - по нему можно определить наличие или отсутствие запросов от мастера.

ВладОвен
28.12.2022, 14:26
Всем привет!
С наступающим Новым годом!

(Евгений, я разобрался сам :))

ВладОвен
28.12.2022, 16:37
Подскажите по такому вопросу.

У меня в проекте есть 4 задачи (PRG).
Как сделать так, чтобы при запуске ПЛК первой выполнялась гарантированно именно FirstPRG, а дальше - уже рандомно.

Спасибо.

fatlortroll
28.12.2022, 16:42
День добрый.
Подскажите пожалуйста, как корректно отобразить версию ПО, задаваемую в информации о проекте?
Вроде бы для этого надо использовать функции GetVersion или GetVersionProperty, но они выдают версию библиотеки alarmmanager.

Евгений Кислов
28.12.2022, 16:44
День добрый.
Подскажите пожалуйста, как корректно отобразить версию ПО, задаваемую в информации о проекте?
Вроде бы для этого надо использовать функции GetVersion или GetVersionProperty, но они выдают версию библиотеки alarmmanager.

Добры день.
См. узел Info в дереве проекта.
п. 3.8:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Targets_v3.0.pdf

Евгений Кислов
28.12.2022, 17:36
Подскажите по такому вопросу.

У меня в проекте есть 4 задачи (PRG).
Как сделать так, чтобы при запуске ПЛК первой выполнялась гарантированно именно FirstPRG, а дальше - уже рандомно.

Спасибо.

У вас все они выполняются в одной задаче?
Тогда добавьте ее первой в списке программ, привязанных к задаче.

ВладОвен
28.12.2022, 19:09
Нет. У меня 4 задачи.
См. фото.
И нужно, чтобы старт ПЛК происходил именно с задачи License.
Подскажите, как это реализовать?
64917

З.Ы. Хорошо-ли плодить задачи? Но я это сделал из-за разной периодичности вызовов. Где-то 10 мСек, а где-то и 1 Сек.

Евгений Кислов
28.12.2022, 19:16
Подскажите, как это реализовать?

Поставить ей приоритет 0, а остальным задачам - приоритет выше нуля.


З.Ы. Хорошо-ли плодить задачи?

Нет.


Но я это сделал из-за разной периодичности вызовов. Где-то 10 мСек, а где-то и 1 Сек.

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

service
29.12.2022, 11:16
Добрый день! Создан функциональный блок, в программе он вызывается много раз. Изменили (добавили или убавили количество входов/выходов). Возможно ли сделать так, чтобы вызываемые блоки обновлялись с новыми вх/вых, не удаляя и добавляя блок заново?

Евгений Кислов
29.12.2022, 11:21
Добрый день! Создан функциональный блок, в программе он вызывается много раз. Изменили (добавили или убавили количество входов/выходов). Возможно ли сделать так, чтобы вызываемые блоки обновлялись с новыми вх/вых, не удаляя и добавляя блок заново?

Добрый день.
См. скриншот:

64927

Lisov-R
29.12.2022, 15:45
Добрый день! Вопрос по библиотеке OSCAT_BASIC.ONTIME. Из примера в ютуб мы получаем переменную типа LTIME. В визуализации я пытаюсь отобразить эту переменную в формате вывода %t, но получаю вывод даты и время. Как мне получить только часы (для премера: 498884 часа).

Евгений Кислов
29.12.2022, 15:57
Добрый день! Вопрос по библиотеке OSCAT_BASIC.ONTIME. Из примера в ютуб мы получаем переменную типа LTIME. В визуализации я пытаюсь отобразить эту переменную в формате вывода %t, но получаю вывод даты и время. Как мне получить только часы (для премера: 498884 часа).

Добрый день.
Какую версию CODESYS вы используете?
Какой конкретно формат вывода вы используете?
Покажите скриншот, на котором будет виден "вывод даты и времени."

Lisov-R
29.12.2022, 17:28
Добрый день.
Какую версию CODESYS вы используете?
Какой конкретно формат вывода вы используете?
Покажите скриншот, на котором будет виден "вывод даты и времени."

CODESYS 3.5.16
Если %t[HH] то доходит до 23 и начинает с 0, чо не поставь в [] интерпретируется как дата и время т.е. выводит число, месяц, год, часы и минуты.
64939
64940

Евгений Кислов
29.12.2022, 17:57
CODESYS 3.5.16
Если %t[HH] то доходит до 23 и начинает с 0, чо не поставь в [] интерпретируется как дата и время т.е. выводит число, месяц, год, часы и минуты.
64939
64940

У вас что-то не то с коэффициентом. 6133 секунд - это явно не 7098 дней.
Но суть не в этом.
Вам нужно значение переменной On_Sec разделить на 3600.0 (т.е. перевести в часы; в минуте 60 секунд, в часе 60 минут) и присвоить переменной типа REAL. И уже ее отображать в визуализации

ВладОвен
30.12.2022, 11:14
Здравствуйте.
Подскажите, как проще реализовать такую задачу.
Я получаю от прибора величину объема в см.куб.
Но на экран хочу вывести ее и в см.куб. и в м.куб. (на выбор оператора).
Создал переменную, которая запоминает выбор оператора.
См.Рис.
64965

Как проще реализовать переключение между этими величинами в настройках визуализации?
Спасибо.

Евгений Кислов
30.12.2022, 11:21
Добрый день.


Как проще реализовать переключение между этими величинами в настройках визуализации?

Именно так, как и сделали - с помощью радио-кнопки.

ВладОвен
30.12.2022, 11:32
Это понятно. :)
Я имел ввиду, как в текстовом поле выходной переменной задать переключение между двумя переменными?

Евгений Кислов
30.12.2022, 12:00
Это понятно. :)
Я имел ввиду, как в текстовом поле выходной переменной задать переключение между двумя переменными?

Формируйте ее значение в коде.

В стиле:



udiVisuValue := SEL(xShowInCubicMetre, udiValueInCubicCentimetre, udiValueInCubicMetre);

ВладОвен
30.12.2022, 12:22
Спасибо. Понял. Буду реализовывать.

Подскажите еще. В языке ST такой метод срабатывал:

Объявление: sInput, sOutput : STRING;
refInput, refOutput : REFERENCE TO STRING;

Реализация: refInput REF= sInput;
refOutput REF= sOutput;

Как это реализовать на CFC? Так не работает:

64966

Или работает? Синяя палка остановилась на блоке MOVE и - БАЦ! - исключение.
Поэтому два вопроса:

1. Синяя палка останавливается на блоке - это значит именно этот блок виноват? Или нет?
2. Как реализовать refInput REF= sInput на CFC? (пост именно об этом)

Спасибо

Евгений Кислов
30.12.2022, 12:39
Спасибо. Понял. Буду реализовывать.

Подскажите еще. В языке ST такой метод срабатывал:

Объявление: sInput, sOutput : STRING;
refInput, refOutput : REFERENCE TO STRING;

Реализация: refInput REF= sInput;
refOutput REF= sOutput;

Как это реализовать на CFC? Так не работает:

64966

Или работает? Синяя палка остановилась на блоке MOVE и - БАЦ! - исключение.
Поэтому два вопроса:

1. Синяя палка останавливается на блоке - это значит именно этот блок виноват? Или нет?
2. Как реализовать refInput REF= sInput на CFC? (пост именно об этом)

Спасибо

См. скриншот:

64967

ВладОвен
30.12.2022, 12:55
Евгений, что у вас с лицом? (ава) :)

Евгений Кислов
30.12.2022, 12:59
Евгений, что у вас с лицом? (ава) :)

Решил везде использовать один и тот же аватар, так что теперь так.

ВладОвен
30.12.2022, 13:35
Спасибо, заработало.
Но обратите внимание: через EN-ENO не работает. А было бы неплохо.
64973

Евгений Кислов
30.12.2022, 13:51
Спасибо, заработало.
Но обратите внимание: через EN-ENO не работает. А было бы неплохо.
64973

По EN можно изменять значение sInput.
А дальше - как на моем скрине выше.

Selva982
06.01.2023, 17:00
Всем привет, просьба дать совет начинающему
После установки кодесис требует плагин:
65015
При нажатии на кнопку нет и после открытия проекта
пишет:
65016

Не дает устанавливать таргеты.

Может не все установил:

65017

Кто-нибудь сталкивался с такой проблемой?
Какой именно плагин требуется?

Евгений Кислов
06.01.2023, 17:07
Добрый день.


Кто-нибудь сталкивался с такой проблемой?

Да, сталкивались. Один из примеров успешного решения проблемы:
https://owen.ru/forum/showthread.php?t=37070


Какой именно плагин требуется?

Для полноценной работы CODESYS нужна большая часть плагинов, входящих в состав дистрибутива.

Selva982
06.01.2023, 17:35
Я по этой же инструкции https://youtu.be/3KcJWZEVXCg
и переустанавливал,
но судя по ошибке, можно ли
узнать какой все-таки плагин нужен?

Есть ли какая-то последовательность деинсталляции?
Удаляем сам кодесис, Installer, а надо ли удалять
framework.net, MS Visual C++, Codemeter?
Если удалять, то как нужно удалять
через панель управления или через файл установщика?

Евгений Кислов
06.01.2023, 17:45
можно ли узнать какой все-таки плагин нужен?

Проблема в не в конкретном плагине. Вам просто сейчас так кажется, потому что из-за конкретного плагина вы не можете продвинуться дальше в создании проекта.
Даже если вы установите конкретный плагин, связанный с ошибкой на вашем скриншоте - то появится следующая ошибка из-за отсутствия следующего плагина и т.д.

Поэтому:


Для полноценной работы CODESYS нужна большая часть плагинов, входящих в состав дистрибутива.



а надо ли удалять framework.net, MS Visual C++, Codemeter?

Нет.

Selva982
06.01.2023, 18:34
ОК, попробую удалить кодесис, Installer
через установщик

Selva982
06.01.2023, 19:51
При переустановке кодесис выдал ошибку:
65018
"Кодесис не может быть установлен в выбранную папку, потому что папка не пуста.
Пожалуйста, выберите пустую или несуществующую папку в качестве папки назначения."

Указываем ему новую папку для установки или надо удалять старую папку?
Но старую удалять не дает:
65019

Кстати, во второй, т.е. в последней "старой"папке Сodesys folder1
осталось 1,87 ГБ (где последний раз был установлен кодесис)
хотя в панели управления показывает, что программы якобы нет.

Евгений Кислов
06.01.2023, 20:15
Указываем ему новую папку для установки или надо удалять старую папку?

Лучше удалить старую - заодно разберетесь, что это за пользователь "СИСТЕМА" и почему вы под своим текущим пользователем не можете просто удалить папку.
Вероятно, проблемы при предыдущей установке CODESYS тоже связаны с этой "СИСТЕМОЙ".

Selva982
07.01.2023, 13:44
[QUOTE=Евгений Кислов;398090]Лучше удалить старую - заодно разберетесь...

Удалил файлы "удаленной" программы деинсталлятором, затем остатки добил вручную.
Ошибка "не пустой папки" исчезла, но появилась другая системная:

"Требуемый файл не может быть установлен, поскольку CAB-файл Data1.cab имеет недопустимую цифровую подпись. Это может указывать на то, что CAB-файл поврежден. WinVerifyTrust вернул ошибку 24592."

Попробую разобраться. Всех с Рождеством!

Selva982
07.01.2023, 14:50
Предыдущую ошибку устранил. Но в процессе установки появлялась другая:
65031

"It is possible that packages from this path could not be installed:
(Возможно, что пакеты с этого пути не могли быть установлены...)

Это критично или не обращать внимания?

Евгений Кислов
07.01.2023, 14:58
Это критично.

Lapu-Leen
08.01.2023, 14:12
Приветствую всех. Скорее всего уже не раз задавали этот вопрос, но через поиск не смог найти ответ (если он вообще есть в данном случае). Собственно, можно ли, что либо сделать если жутко тормозит проект на CFC в среде CodeSys v3.5 SP16? Ну или хотя бы на будущее, понять, в чём причина? Может писать на ST или это никак не повлияет? С железом всё ОК, пробовал на разных ПК, нагрузки на систему практически нет, а вот любое редактирование проекта вызывает зависание секунд на 10- 30. В старой версии CodeSys 2.3 с похожими по масштабу проектами такого никогда не замечал. Пробовал ставить SP17, но лично я никакой разницы увы не заметил.

Евгений Кислов
09.01.2023, 06:15
Приветствую всех. Скорее всего уже не раз задавали этот вопрос, но через поиск не смог найти ответ (если он вообще есть в данном случае). Собственно, можно ли, что либо сделать если жутко тормозит проект на CFC в среде CodeSys v3.5 SP16? Ну или хотя бы на будущее, понять, в чём причина? Может писать на ST или это никак не повлияет? С железом всё ОК, пробовал на разных ПК, нагрузки на систему практически нет, а вот любое редактирование проекта вызывает зависание секунд на 10- 30. В старой версии CodeSys 2.3 с похожими по масштабу проектами такого никогда не замечал. Пробовал ставить SP17, но лично я никакой разницы увы не заметил.

Добрый день.
Причина, вероятно, в значительном количестве элементов на холсте в вашем проекте.
В ST таких проблем быть не должно.

Карбофос
09.01.2023, 09:10
Здравствуйте. Вот такое окно при запуске SP17 p.3:
65046

Предыстория: устанавливал среду, отошел от компьютера в процессе. Предполагаю, что инсталлер запросил права администратора и не дождался ответа, установка завершилась неудачно. Потом я полностью удалил эту версию, вместе с папкой в Program files, попытался установить снова - и снова неудачно. С третьего раза, вроде как установолась, но при запуске такое вот окошко.

Евгений Кислов
09.01.2023, 09:16
Здравствуйте. Вот такое окно при запуске SP17 p.3:
65046

Предыстория: устанавливал среду, отошел от компьютера в процессе. Предполагаю, что инсталлер запросил права администратора и не дождался ответа, установка завершилась неудачно. Потом я полностью удалил эту версию, вместе с папкой в Program files, попытался установить снова - и снова неудачно. С третьего раза, вроде как установолась, но при запуске такое вот окошко.

Добрый день.
У вас среда установилась без плагинов.
Удалите ее и установите заново по инструкции: https://youtu.be/3KcJWZEVXCg

Lisov-R
09.01.2023, 12:05
У вас что-то не то с коэффициентом. 6133 секунд - это явно не 7098 дней.
Но суть не в этом.
Вам нужно значение переменной On_Sec разделить на 3600.0 (т.е. перевести в часы; в минуте 60 секунд, в часе 60 минут) и присвоить переменной типа REAL. И уже ее отображать в визуализации

Спасибо! Я думал есть более изысканное решение, именно так и реализовал. А по поводу 6133 сек, так там и множитель хороший, не буду же я пару суток ждать чтоб увидеть смену 24часов.

Андрей Чернов
09.01.2023, 15:07
Добрый день! Есть ли возможность с HMI записывать свои значения в переменные без перезаписи их контроллером? Вроде "фиксировать значение", но без надобности открывать проект в кодесис?
Например для симуляции значений при неисправном датчике.

yurya
09.01.2023, 15:31
Добрый день.
При работе с AFD-E по Modbus использую соответствующий шаблон.
Хочу на аналоговый вход подключить термистор двигателя, для контроля температуры, и по Modbus контролировать значение соответствующего параметра. Возможно это?

Lisov-R
09.01.2023, 15:46
Здравствуйте! Использую диалог OVD.DateTimeSetOwen в СПК 110 м01. При открытии далога стоит начальная дата 1970г и все остальное с начала времен. Что я не так делаю, хотелось бы видеть текущее время. И что за окно с предупреждением.65056
65057
65058

Евгений Кислов
09.01.2023, 16:01
Добрый день! Есть ли возможность с HMI записывать свои значения в переменные без перезаписи их контроллером? Вроде "фиксировать значение", но без надобности открывать проект в кодесис?
Например для симуляции значений при неисправном датчике.

Добрый день.
Это возможно, но вам потребуется три набора переменных:

1. Переменные, считываемые с датчиков.
2. Переменные для "симуляции".
3. Переменные, фактически используемые в коде, выбираемые из набора 1 или 2 в зависимости от какого-то условия (например, флага режима симуляции).

В коде можно сделать что-то в стиле:



rVar := SEL(xIsDebugMode, rModbusVar, rHmiVar);

Евгений Кислов
09.01.2023, 16:08
Добрый день.
При работе с AFD-E по Modbus использую соответствующий шаблон.
Хочу на аналоговый вход подключить термистор двигателя, для контроля температуры, и по Modbus контролировать значение соответствующего параметра. Возможно это?

Добрый день.
В шаблоне этот параметр отсутствует. Вам потребуется добавить кроме шаблона еще Modbus Slave Com Port с тем же адресом устройства и прописать в нем запрос на чтение нужного AI.
Мы добавим эти параметры в следующую версию шаблона.

Евгений Кислов
09.01.2023, 16:09
Здравствуйте! Использую диалог OVD.DateTimeSetOwen в СПК 110 м01. При открытии далога стоит начальная дата 1970г и все остальное с начала времен. Что я не так делаю, хотелось бы видеть текущее время. И что за окно с предупреждением.65056
65057
65058

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

yurya
09.01.2023, 16:18
Добрый день.
В шаблоне этот параметр отсутствует. Вам потребуется добавить кроме шаблона еще Modbus Slave Com Port с тем же адресом устройства и прописать в нем запрос на чтение нужного AI.
Мы добавим эти параметры в следующую версию шаблона.

При добавлении Modbus Slave Com Port с тем же адресом ошибка при компиляции.

Евгений Кислов
09.01.2023, 16:35
При добавлении Modbus Slave Com Port с тем же адресом ошибка при компиляции.

Именно ошибка, а не предупреждение?
Если да - то, значит, вы используете версию V3.5 SP14 Patch 3 (или ниже) - там еще не было возможности добавить несколько слэйвов с одинаковыми адресами.
Тогда вам придется отказаться от использования шаблона.

Lisov-R
09.01.2023, 16:35
Добрый день.
Выложите, пожалуйста, простейший проект, в котором я смогу повторить вашу проблему.

Отправил Вам на электронку

yurya
09.01.2023, 16:39
Именно ошибка, а не предупреждение?
Если да - то, значит, вы используете версию V3.5 SP14 Patch 3 (или ниже) - там еще не было возможности добавить несколько слэйвов с одинаковыми адресами.
Тогда вам придется отказаться от использования шаблона.

Спасибо. Понял.

Евгений Кислов
09.01.2023, 18:03
Отправил Вам на электронку

Подскажите, какую версию CODESYS вы используете?
Вы тестируете проект на реальном контроллере или в симуляторе?

Lisov-R
10.01.2023, 08:34
Подскажите, какую версию CODESYS вы используете?
Вы тестируете проект на реальном контроллере или в симуляторе?

Версия 3.5.16
Реальный СПК110 М01 версия прошивки 1.3.0928.2149

Евгений Кислов
10.01.2023, 08:59
Версия 3.5.16
Реальный СПК110 М01 версия прошивки 1.3.0928.2149

Пришлите, пожалуйста, в личку номер вашего телефона и данные для доступа по AeroAdmin.

Paoloricci
10.01.2023, 17:41
Добрый день! Подскажите пожалуйста момент по работе с БД sqlite.
Вопрос в следующем - есть примитивный тестовый проект, в котором с термодатчика снимается значение типа real, оно привязано к тренду, а тот в свою очередь сохраняется на SD карту.
Открываю полученную sqlite через SqliteBrowser, и вижу как бы имеющиеся значения температуры и времени от тренда, даже представление в виде графика (причем почти схожего с графиком живого тренда), однако все значения - и времени и температуры - не пойму в каком виде представлены. Как их привести в понятный формат? Чтоб время было временем, а температура - вещественным значением, типа real ?
На скриншоте - TS это должно быть время и дата, Val1 - значение температуры
ПЛК 210-04, Codesys 3.5.sp17 p3
65075

Евгений Кислов
10.01.2023, 17:50
Добрый день! Подскажите пожалуйста момент по работе с БД sqlite.
Вопрос в следующем - есть примитивный тестовый проект, в котором с термодатчика снимается значение типа real, оно привязано к тренду, а тот в свою очередь сохраняется на SD карту.
Открываю полученную sqlite через SqliteBrowser, и вижу как бы имеющиеся значения температуры и времени от тренда, даже представление в виде графика (причем почти схожего с графиком живого тренда), однако все значения - и времени и температуры - не пойму в каком виде представлены. Как их привести в понятный формат? Чтоб время было временем, а температура - вещественным значением, типа real ?
На скриншоте - TS это должно быть время и дата, Val1 - значение температуры
ПЛК 210-04, Codesys 3.5.sp17 p3
65075

Добрый день.

1. Метка времени сохраняется формате Unix Timestamp (https://ru.wikipedia.org/wiki/Unix-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F) в микросекундах.

2. У вас на скриншоте значение температуры отображается в "сыром" виде.
Нужно перевести во Float.
См. скриншоты:

65076 65077

https://www.h-schmidt.net/FloatConverter/IEEE754.html

Paoloricci
10.01.2023, 18:00
Благодарю Евгений за понятное разъяснение!
Вытекающий доп вопрос - внутри SqliteBrowser нет таких встроенных конвертаций?

Евгений Кислов
10.01.2023, 18:11
Благодарю Евгений за понятное разъяснение!
Вытекающий доп вопрос - внутри SqliteBrowser нет таких встроенных конвертаций?

Не знаю - вам стоит погуглить этот вопрос.

MUSulmanin
11.01.2023, 15:55
65101
Добрый день.
Подскажите, как с этим бороться? Никакой пароль не подходит(

Евгений Кислов
11.01.2023, 16:02
65101
Добрый день.
Подскажите, как с этим бороться? Никакой пароль не подходит(

Добрый день.
Расскажите подробности.
При подключении к какому устройству появляется это окно?
При каких обстоятельствах оно появилось в первый раз?

MUSulmanin
11.01.2023, 16:15
Я подключаюсь к Raspberry Pi 4.
Всё было very well пока я не удалил SP15 (на машине стояла SP15 и SP17)...решил освободить место.
Ни каких паролей я не ставил это точно.
На форуме уже была такая проблема, но как решили её так и не написали(

Евгений Кислов
11.01.2023, 16:22
Ни каких паролей я не ставил это точно.

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



На форуме уже была такая проблема, но как решили её так и не написали(

Скорее всего - перепрошили контроллер.
Или удалили файлы управления пользователями:
https://forge.codesys.com/forge/talk/Runtime/thread/7959e0c66c/

MUSulmanin
11.01.2023, 16:51
Спасибо, буду пробовать)

Карбофос
12.01.2023, 12:28
Здравствуйте. Вот такое окно при запуске SP17 p.3:
65046

Предыстория: устанавливал среду, отошел от компьютера в процессе. Предполагаю, что инсталлер запросил права администратора и не дождался ответа, установка завершилась неудачно. Потом я полностью удалил эту версию, вместе с папкой в Program files, попытался установить снова - и снова неудачно. С третьего раза, вроде как установолась, но при запуске такое вот окошко.


Добрый день.
У вас среда установилась без плагинов.
Удалите ее и установите заново по инструкции: https://youtu.be/3KcJWZEVXCg

В общем, сколько бы раз я не пытался установить СП17 (уже и ВПН включал, и папку установки менял), плагины упорно не хотят ставиться. Естественно, ролик тот я смотрел, "полную уставновку" выбирал.

Плагины можно отдельно доуставновить? Или может можно как-то скопировать установленную среду с плагинами с другого компьютера? На рабочем ноутбуке у меня СП17 работает нормально.

Евгений Кислов
12.01.2023, 12:33
В общем, сколько бы раз я не пытался установить СП17 (уже и ВПН включал, и папку установки менял), плагины упорно не хотят ставиться. Естественно, ролик тот я смотрел, "полную уставновку" выбирал.

Плагины можно отдельно доуставновить? Или может можно как-то скопировать установленную среду с плагинами с другого компьютера? На рабочем ноутбуке у меня СП17 работает нормально.

Да, можно.
В CODESYS Installer делаете экспорт конфигурации.
На другом ПК запускаете VPN и делаете импорт.

65132

Карбофос
12.01.2023, 12:45
Да, можно.
В CODESYS Installer делаете экспорт конфигурации.
На другом ПК запускаете VPN и делаете импорт.


При попытке импорта выдает такое. С VPN:
65133

То что файл 8 кб весит, это норма?

Евгений Кислов
12.01.2023, 12:59
При попытке импорта выдает такое. С VPN:
65133

То что файл 8 кб весит, это норма?

Да, это текстовый файл.
Про недоступность плагинов не могу дать комментарий, к сожалению.

Карбофос
12.01.2023, 13:22
Про недоступность плагинов не могу дать комментарий, к сожалению.

А где плагины физически располагаются в файловой системе? Хочу покопаться на предмет отсутствия прав на запись или существующих мусорных файлов.

Евгений Кислов
12.01.2023, 13:26
А где плагины физически располагаются в файловой системе? Хочу покопаться на предмет отсутствия прав на запись или существующих мусорных файлов.

У меня путь выглядит так:
C:\Program Files (x86)\CODESYS 3.5.17.30\CODESYS\PlugIns

Lisov-R
12.01.2023, 15:25
Добрый день!
Не пойму в чем дело. Не работают таймеры. Выдает по ним ошибки всевозможные как будто codesys их видит в первый раз.
65135

Cs-Cs
12.01.2023, 15:33
Lisov-R Это ж библиотека, да? Я свою писал и, когда подключил Util (как раз для таймеров), такое же было.
Помогла полная очистка всех и вся. Ещё помогла запись объявлений (типов) через Util.TON и так далее.
Но я могу не быть не прав, и тут может быть конфликт библиотек.

fatlortroll
12.01.2023, 15:45
Попробуйте задать полное имя типа таймера. Т.е. не TON, а Standard.TON . Потому что на ONTIM_M ругани нет, у него задано полное имя типа OSCAT_BASIC.ONTIME .

fatlortroll
12.01.2023, 15:52
У кого есть опыт установки на один компьютер двух версий CoDeSys 3.5?
Изначально была установлена 3.5 SP14 P3+ , установил 3.5 SP17 P3 , и в ней невозможно даже создать проект, ошибки на ImagePool, Visualization, Менеджер визуализации (в дереве устройств помечены красным крестиком), много неразрешённых placeholder-ов, относящихся к визуализации, в менеджере библиотек.
Что можно сделать для исправления этих ошибок?

Lisov-R
12.01.2023, 16:18
Попробуйте задать полное имя типа таймера. Т.е. не TON, а Standard.TON . Потому что на ONTIM_M ругани нет, у него задано полное имя типа OSCAT_BASIC.ONTIME .


Lisov-R Это ж библиотека, да? Я свою писал и, когда подключил Util (как раз для таймеров), такое же было.
Помогла полная очистка всех и вся. Ещё помогла запись объявлений (типов) через Util.TON и так далее.
Но я могу не быть не прав, и тут может быть конфликт библиотек.

Вы правы дело было не в бабине...! Не мог даже и подумать что при создании библиотек эта великая программа не подтягивает стандартные блоки. Вначале подтянул OSCAT_BASIC с ней заработала. Потом уже обратил внимание что Standard нет в менеджере библиотек. Вылечил.
Всем огромное спасибо!!!

Cs-Cs
12.01.2023, 16:33
Не мог даже и подумать что при создании библиотек эта великая программа не подтягивает стандартные блоки. Вначале подтянул OSCAT_BASIC с ней заработала.
В том и разница между Проектом и Библиотекой. Библиотека, к примеру, может содержать какую-нибудь математику, которой никакие другие (даже стандартные) библиотеки не требуются. Вот они и не подтягиваются по умолчанию.

Потом уже обратил внимание что Standard нет в менеджере библиотек. Вылечил.
Ага!

Евгений Кислов
12.01.2023, 16:54
У кого есть опыт установки на один компьютер двух версий CoDeSys 3.5?
Изначально была установлена 3.5 SP14 P3+ , установил 3.5 SP17 P3 , и в ней невозможно даже создать проект, ошибки на ImagePool, Visualization, Менеджер визуализации (в дереве устройств помечены красным крестиком), много неразрешённых placeholder-ов, относящихся к визуализации, в менеджере библиотек.
Что можно сделать для исправления этих ошибок?

Добрый день.
Удалите CODESYS V3.5 SP17 Patch 3 и установите заново по инструкции:
https://youtu.be/3KcJWZEVXCg

coctailnina
13.01.2023, 11:55
Добрый день!
Есть ПЛК 150-220-АМ.
Вопрос: можно ли работать с этим ПЛК в CodeSys 3.5?

Евгений Кислов
13.01.2023, 11:58
Добрый день!
Есть ПЛК 150-220-АМ.
Вопрос: можно ли работать с этим ПЛК в CodeSys 3.5?

Добрый день.
Нет, ПЛК150 программируется только в CoDeSys V2.3.

Lisov-R
13.01.2023, 13:46
Добрый день!
Сделал библиотеку с фреймами и ФБ. В визуализации добавил фреймы как диалоги. Я правильно понимаю что входные и выходные переменные обновляются только при открытии и закрытие диалога или я нагло косячу?

Евгений Кислов
13.01.2023, 13:47
Добрый день!
Сделал библиотеку с фреймами и ФБ. В визуализации добавил фреймы как диалоги. Я правильно понимаю что входные и выходные переменные обновляются только при открытии и закрытие диалога или я нагло косячу?

Добрый день.
Да, это стандартное поведение.
Если надо, чтобы обновлялось "на лету" - то есть специальный атрибут:
https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_pragma_var_in_out_as_pointer.html

yurya
13.01.2023, 13:59
Добрый день.
На ПК установлены CODESYS 3.5.11.54 и 3.5.14.3. Можно ли установить на этот ПК еще и 3.5.17.3? Старые версии нужны для поддержки старых проектов.

Евгений Кислов
13.01.2023, 14:01
Добрый день.
На ПК установлены CODESYS 3.5.11.54 и 3.5.14.3. Можно ли установить на этот ПК еще и 3.5.17.3? Старые версии нужны для поддержки старых проектов.

Добрый день.
Да, можно.
Инструкция по установке:
https://youtu.be/3KcJWZEVXCg

Lisov-R
13.01.2023, 14:10
Добрый день.
Да, это стандартное поведение.
Если надо, чтобы обновлялось "на лету" - то есть специальный атрибут:
https://content.helpme-codesys.com/en/CODESYS%20Visualization/_visu_pragma_var_in_out_as_pointer.html

65149
65150

Это на реальном ПЛК

Евгений Кислов
13.01.2023, 14:13
65149
65150

Это на реальном ПЛК

Вы к экземпляру диалога/фрейма все VAR_IN_OUT привязали?
Их нельзя оставлять непривязанными.

Lisov-R
13.01.2023, 14:19
Вы к экземпляру диалога/фрейма все VAR_IN_OUT привязали?
Их нельзя оставлять непривязанными.

Не все.
Этот атрибут только с in_out работает?

Евгений Кислов
13.01.2023, 14:22
Не все.
Этот атрибут только с in_out работает?

Да, поэтому он так и называется.

fatlortroll
13.01.2023, 14:24
> Удалите CODESYS V3.5 SP17 Patch 3 и установите заново по инструкции

Не получается, у нас прокси на интернеты, а CoDeSys Installer с ним работать не может.

Евгений Кислов
13.01.2023, 14:25
> Удалите CODESYS V3.5 SP17 Patch 3 и установите заново по инструкции

Не получается, у нас прокси на интернеты, а CoDeSys Installer с ним работать не может.

Попробуйте всё равно - в принципе, все нужные плагины входят в дистрибутив.
При обычных обстоятельствах можно обойтись без интернета, если на ПК есть нужные версии .NET.

fatlortroll
13.01.2023, 14:55
Да вот уже весь день то так, то сяк пробую -- всё ему не нравится.
Т.е. за прокси инсталлятор принципиально работать не умеет?

MUSulmanin
13.01.2023, 15:36
Добрый день. Подскажите, использую библиотеку MQTT_Client, но при компиляции вываливается куча ошибок: неизвестный тип SysSokcet23.sockaddress. Я правильно думаю, что работая на 64-битной версии я не смогу использовать библиотеку? Заранее спасибо)

MUSulmanin
13.01.2023, 15:36
Сам на Codesys 3 64-bit

capzap
13.01.2023, 15:47
Добрый день. Подскажите, использую библиотеку MQTT_Client, но при компиляции вываливается куча ошибок: неизвестный тип SysSokcet23.sockaddress. Я правильно думаю, что работая на 64-битной версии я не смогу использовать библиотеку? Заранее спасибо)

скорее всего это из-за того что работаетв среде КДС3.5 а библиотеку используете из КДС2.3

fatlortroll
13.01.2023, 15:53
Добавьте в менеджере библиотек SysSocket23 .

MUSulmanin
13.01.2023, 15:53
Нет, эта библиотека MQTT.Library 3.5.13.18. Она для Codesys 3.5 это точно) В самой библиотеке есть SysSokcet23.
65152

MUSulmanin
13.01.2023, 15:55
65153
А вот что за ошибки

fatlortroll
13.01.2023, 15:58
> В самой библиотеке есть SysSokcet23

Система его не находит, синей волнистой линией подчёркивает. Возможно, не совпадает версия. Попробуйте добавить её явно.

ВладОвен
13.01.2023, 16:17
Здравствуйте.
Подскажите, есть ли функция, которая возвращает часть строки между позициями символов X и Y ?

Евгений Кислов
13.01.2023, 16:25
Добрый день. Подскажите, использую библиотеку MQTT_Client, но при компиляции вываливается куча ошибок: неизвестный тип SysSokcet23.sockaddress. Я правильно думаю, что работая на 64-битной версии я не смогу использовать библиотеку? Заранее спасибо)

Вы понимаете правильно.
Можете попробовать другую библиотеку:
https://github.com/stefandreyer/CODESYS-MQTT

Евгений Кислов
13.01.2023, 16:26
Здравствуйте.
Подскажите, есть ли функция, которая возвращает часть строки между позициями символов X и Y ?

Добрый день.
Можете использовать функцию MID из библиотеки Standard для этого.

Lisov-R
13.01.2023, 16:46
Да, поэтому он так и называется.

Я по названию так и понял, но я думал может еще и для INPUT есть.
Пришлось перевести переменные из INPUT в IN_OUT. И не сразу дошло что нужно для каждой переменной прописывать.
Еще с одной ерундой не могу разобраться, отображение русского текста и то в одном месте. Текст присваивается в свойствах фрейма.
65156
65157
Шрифт Arial; 9, использовать unicode галочка стоит

Евгений Кислов
13.01.2023, 16:54
Я по названию так и понял, но я думал может еще и для INPUT есть.
Пришлось перевести переменные из INPUT в IN_OUT. И не сразу дошло что нужно для каждой переменной прописывать.
Еще с одной ерундой не могу разобраться, отображение русского текста и то в одном месте. Текст присваивается в свойствах фрейма.
65156
65157
Шрифт Arial; 9, использовать unicode галочка стоит

А тип переменной какой? Нужен WSTRING.

Lisov-R
13.01.2023, 17:06
А тип переменной какой? Нужен WSTRING.

При вводе значения в параметрах фрейма получаем
65158

Евгений Кислов
13.01.2023, 17:08
При вводе значения в параметрах фрейма получаем
65158

...потому что для WSTRING значения записываются в двойных кавычках ("Нория").

Lisov-R
13.01.2023, 17:15
...потому что для WSTRING значения записываются в двойных кавычках ("Нория").

Спасибо огромное)

Lisov-R
13.01.2023, 17:18
И еще назрел вопрос. Можно ли реализовать журнал событий (действий оператора) подобный журналу аварий. В журнал ПЛК нет желания писать.

Евгений Кислов
13.01.2023, 17:37
И еще назрел вопрос. Можно ли реализовать журнал событий (действий оператора) подобный журналу аварий. В журнал ПЛК нет желания писать.

См. пример.
https://ftp.owen.ru/CoDeSys3/99_ForumFiles/Example_VisuUserActionsLog_3514v1.projectarchive

Андрей Чернов
15.01.2023, 14:34
Добрый день. Сделал ФБ в codesys для вызова его экземпляров в других ФБ по типу библиотеки. При попытке его вызова выдает такое. Это невозможность обработать какое-то действие в самом ФБ или какая-то проблема с именами ФБ и вызовом экземпляра?

65176

Евгений Кислов
15.01.2023, 15:43
Добрый день. Сделал ФБ в codesys для вызова его экземпляров в других ФБ по типу библиотеки. При попытке его вызова выдает такое. Это невозможность обработать какое-то действие в самом ФБ или какая-то проблема с именами ФБ и вызовом экземпляра?

65176

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

Андрей Чернов
15.01.2023, 20:02
Добрый день.
По скриншоту не получится ничего сказать.
Выложите простейший проект, в котором это воспроизводится, и подробно пошагово опишите, как воспроизвести - посмотрим, в чем дело.

https://drive.google.com/file/d/1MaLHIH6htvf2QcleZgsG3yWogKwtzuEV/view?usp=share_link

При попытке вызвать FB Merc234 или Mercury234 в Main task -> PLC_PRG выдает сообщение об ошибке описанное выше.

Евгений Кислов
16.01.2023, 06:49
https://drive.google.com/file/d/1MaLHIH6htvf2QcleZgsG3yWogKwtzuEV/view?usp=share_link

При попытке вызвать FB Merc234 или Mercury234 в Main task -> PLC_PRG выдает сообщение об ошибке описанное выше.

У меня проблема повторяется, если использовать автообъявление.
Видимо, баг CODESYS.

Если сначала объявить экземпляр блока в области объявления, а потом вручную (а не через окно выбора) ввести его тип и имя экземпляра в элемент на холсте - то ошибки не возникает.

Андрей Чернов
16.01.2023, 07:42
У меня проблема повторяется, если использовать автообъявление.
Видимо, баг CODESYS.

Если сначала объявить экземпляр блока в области объявления, а потом вручную (а не через окно выбора) ввести его тип и имя экземпляра в элемент на холсте - то ошибки не возникает.

Действительно. Без автообъявления блок вызывается корректно. Всю голову уже сломал откуда там исключение. Хотя даже добавлял POU для неявных проверок. Спасибо Вам большое!

sssssaaaaabbbbb
16.01.2023, 10:22
Здравствуйте, как можно присвоить элементу структуры в массиве значение? 65194

saii
16.01.2023, 10:35
Здравствуйте, как можно присвоить элементу структуры в массиве значение? 65194



astw_mass1[1].ST_1.wVar1 := 999;

sssssaaaaabbbbb
16.01.2023, 10:49
astw_mass1[1].ST_1.wVar1 := 999;


Так тоже не получается 65197

saii
16.01.2023, 11:06
Пардон:


astw_mass1[1].wVar1 := 999;

sssssaaaaabbbbb
16.01.2023, 11:32
Пардон:


astw_mass1[1].wVar1 := 999;


СПАСИБО!!!

yaroslavcik
16.01.2023, 21:09
Здравствуйте,
CodeSys3.5.14SP3

есть 2 ПЛК210 в одно сети, на оба залиты проекты, при чем на каждый ПЛК еще навешано по несколько модулей Мх210 и с обоих ОРС-мастерскада считывает данные. Но не могу между ПЛК наладить обмен. Использую библиотеку OwenCommunication 3.5.11.6, там есть параметр Settings - выставил везде 10. IP и Маска везде одинаковые.
Например, на одном ПЛК в разделе где подключены модули Мх210 создаю Modbus TCP устройство, с адресом интересующего ПЛК, прописываю тег (real) и в нем лежит число. При этом возле устройства горит зеленый индикатор(кружек) но периодически мигает обрыв шины (либо треугольник или восклицательный знак). а по итоге при чтении из ПЛК приходит 0.

Что еще можно глянуть, куда копать?!

РЗ
читаю через команду 3, читаю адрес 0х000с, длинной 2 слова, в читаемом контроллере адрес тега 12, нумерация начинается с 0.

РЗ по пробовал по UDP подключить, тож не работает

yaroslavcik
16.01.2023, 21:45
извиняюсь опечатка - IP разные, маски одинаковые

Евгений Кислов
17.01.2023, 06:23
Здравствуйте,
CodeSys3.5.14SP3

есть 2 ПЛК210 в одно сети, на оба залиты проекты, при чем на каждый ПЛК еще навешано по несколько модулей Мх210 и с обоих ОРС-мастерскада считывает данные. Но не могу между ПЛК наладить обмен. Использую библиотеку OwenCommunication 3.5.11.6, там есть параметр Settings - выставил везде 10. IP и Маска везде одинаковые.
Например, на одном ПЛК в разделе где подключены модули Мх210 создаю Modbus TCP устройство, с адресом интересующего ПЛК, прописываю тег (real) и в нем лежит число. При этом возле устройства горит зеленый индикатор(кружек) но периодически мигает обрыв шины (либо треугольник или восклицательный знак). а по итоге при чтении из ПЛК приходит 0.

Что еще можно глянуть, куда копать?!

РЗ
читаю через команду 3, читаю адрес 0х000с, длинной 2 слова, в читаемом контроллере адрес тега 12, нумерация начинается с 0.

РЗ по пробовал по UDP подключить, тож не работает

Добрый день.
Обеспечьте подключение по AeroAdmin к ПК, с которого есть доступ к обоим ПЛК.
Пришлите мне в личку или на почту ваш контактный телефон и ID/PIN для AeroAdmin.

Карбофос
17.01.2023, 08:26
Здравствуйте. Подскажите, есть ли возможность в ST перебрать поля структуры в цикле? Ну вот нужно мне, допустим, сравнить каждый элемент (поле) структуры сравнить с неким значением, к ним только по именам можно обращаться, или как-то по индексу?

Евгений Кислов
17.01.2023, 08:34
Здравствуйте. Подскажите, есть ли возможность в ST перебрать поля структуры в цикле? Ну вот нужно мне, допустим, сравнить каждый элемент (поле) структуры сравнить с неким значением, к ним только по именам можно обращаться, или как-то по индексу?

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

Карбофос
17.01.2023, 08:39
Добрый день.
Покажите содержимое вашей структуры, пожалуйста.

Ну вот как пример: допустим мы хотим посчитать количество полей, которые равны TRUE

TYPE MY_TYPE :
STRUCT

DI1 : BOOL;
DI2 : BOOL;
DI3 : BOOL;
DI4 : BOOL;
DI5 : BOOL;
DI6 : BOOL;
DI7 : BOOL;
DI8 : BOOL;
DI9 : BOOL;

END_STRUCT
END_TYPE

Евгений Кислов
17.01.2023, 08:56
Ну вот как пример: допустим мы хотим посчитать количество полей, которые равны TRUE

TYPE MY_TYPE :
STRUCT

DI1 : BOOL;
DI2 : BOOL;
DI3 : BOOL;
DI4 : BOOL;
DI5 : BOOL;
DI6 : BOOL;
DI7 : BOOL;
DI8 : BOOL;
DI9 : BOOL;

END_STRUCT
END_TYPE

В вашем случае, на мой взгляд, вместо структуры проще использовать переменную типа WORD.
Чтобы посчитать число бит в TRUE - можно будет сделать ее обход в цикле FOR с помощью функции GETBIT из библиотеки Util.

Карбофос
17.01.2023, 09:01
Чтобы посчитать число бит в TRUE - можно будет сделать ее обход в цикле FOR с помощью функции GETBIT из библиотеки Util.

Это да. Но если там переменные типа WORD или REAL? Собственно вопрос, есть ли у Codesys стандартные средства для перебора структуры, или нет, просто если они есть, хотелось бы иметь в виду это.

Евгений Кислов
17.01.2023, 09:05
Это да. Но если там переменные типа WORD или REAL? Собственно вопрос, есть ли у Codesys стандартные средства для перебора структуры, или нет, просто если они есть, хотелось бы иметь в виду это.

Стандартных средств нет, если только по указателю через смещения в памяти проходить.
Либо сделать UNION для представления структуры в подходящем виде (в виде массива байт, например).

Карбофос
17.01.2023, 09:16
Стандартных средств нет, если только по указателю через смещения в памяти проходить.
Либо сделать UNION для представления структуры в подходящем виде (в виде массива байт, например).

Понял, спасибо.

yaroslavcik
17.01.2023, 09:31
Добрый день.
Обеспечьте подключение по AeroAdmin к ПК, с которого есть доступ к обоим ПЛК.
Пришлите мне в личку или на почту ваш контактный телефон и ID/PIN для AeroAdmin.

Спасибо большое, надо было указать правильный Unit-ID в конфигураторе ModBus TCPSlave

sssssaaaaabbbbb
17.01.2023, 11:27
Здравствуйте, подскажите . как вставить перечисления в структуру? 65207 - вот так видно только первое значение и то не цифру, а слово , а надо цифру

Евгений Кислов
17.01.2023, 11:28
Здравствуйте, подскажите . как вставить перечисления в структуру? 65207 - вот так видно только первое значение

Добрый день.
Вы сделали правильно.
Что значит "видно только первое значение"?
Покажите скриншотом.

sssssaaaaabbbbb
17.01.2023, 11:34
Добрый день.
Вы сделали правильно.
Что значит "видно только первое значение"?
Покажите скриншотом.

65208 вот тут не значение а слово