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

Евгений Кислов
17.01.2023, 11:37
65208 вот тут не значение а слово

Смысл перечисления именно в том, чтобы заменить цифру на символьное имя.
Если имя не нужно - используйте тип UINT или другой целочисленный тип вместо перечисления.
Если вы наведете на nul курсор (туда, где на вашем скриншоте стрелочка), то должна появиться всплывающая подсказка с цифрой '0'.

sssssaaaaabbbbb
17.01.2023, 11:41
Смысл перечисления именно в том, чтобы заменить цифру на символьное имя.
Если имя не нужно - используйте тип UINT или другой целочисленный тип вместо перечисления.
Если вы наведете на nul курсор (туда, где на вашем скриншоте стрелочка), то должна появиться всплывающая подсказка с цифрой '0'.

значения тут еще одни и теже, они ж должны быть соответствующие 65209

Евгений Кислов
17.01.2023, 11:47
значения тут еще одни и теже, они ж должны быть соответствующие 65209

Вы ошибаетесь.
Перечисление устанавливает связь между числом и символьным именем.
Т.е. если в элементе вашего массива будет значение 0 - то оно будет отображаться как nul, если 1 - one и т.д.
У вас сейчас все элементы массива имеют значение 0 (вероятно, вы вообще не используете их в коде) - поэтому логично, что для всех них отображается nul.

sssssaaaaabbbbb
18.01.2023, 10:29
Вы ошибаетесь.
Перечисление устанавливает связь между числом и символьным именем.
Т.е. если в элементе вашего массива будет значение 0 - то оно будет отображаться как nul, если 1 - one и т.д.
У вас сейчас все элементы массива имеют значение 0 (вероятно, вы вообще не используете их в коде) - поэтому логично, что для всех них отображается nul.

Сапасибо , разобрался!!! А еще скажите, копался но не нашел ответ. Когда добавляешь устройство, то редактирование доступно, но после запуска уже нет. Как изменить количество регистров после 1 запуска программы ModbusTCP_Slave_Device/ Станица Конфигурации ? 65218

Евгений Кислов
18.01.2023, 11:32
Сапасибо , разобрался!!! А еще скажите, копался но не нашел ответ. Когда добавляешь устройство, то редактирование доступно, но после запуска уже нет. Как изменить количество регистров после 1 запуска программы ModbusTCP_Slave_Device/ Станица Конфигурации ? 65218

Закройте это окно редактора и откройте заново.

sssssaaaaabbbbb
18.01.2023, 15:53
Добрый день, возможно ли на ОВЕН ПЛК210 создать работающие в разных режимах(МОДБАС ТСР мастер/слав) четыре разных сети 65221. Сделал в конфигураторе четыре разных сети, пингуются без проблем, НО когда в прроекте делаю одной сети Мастер а второй слайв, то ошибки. А когда всем слейв ставлю, то только один работает.65222

Евгений Кислов
18.01.2023, 16:00
Добрый день, возможно ли на ОВЕН ПЛК210 создать работающие в разных режимах(МОДБАС ТСР мастер/слав) четыре разных сети 65221. Сделал в конфигураторе четыре разных сети, пингуются без проблем, НО когда в прроекте делаю одной сети Мастер а второй слайв, то ошибки. А когда всем слейв ставлю, то только один работает.65222

Добрый день.
Выложите скриншот настроек любого из Modbus TCP Slave Device.

sssssaaaaabbbbb
18.01.2023, 16:17
Добрый день.
Выложите скриншот настроек любого из Modbus TCP Slave Device.

Вот 65223 65224 65225 65226 65227 65228

Евгений Кислов
18.01.2023, 16:23
На последнем скриншоте - поставьте галочку Привязать к адаптеру.
Сделайте это в каждом компоненте.

Карбофос
19.01.2023, 10:02
Можно ли настроить кодесис, чтобы для всех новых проектов эта настройка по умолчанию была "Без защиты"?

65240

Евгений Кислов
19.01.2023, 10:13
Можно ли настроить кодесис, чтобы для всех новых проектов эта настройка по умолчанию была "Без защиты"?

65240

Если создаете проект на основе шаблона проекта - то можно это на уровне шаблона задать.

Карбофос
19.01.2023, 10:31
Если создаете проект на основе шаблона проекта - то можно это на уровне шаблона задать.

Просто открыть через кодесис файл, например "C:\Program Files (x86)\CODESYS 3.5.14.30\CODESYS\Templates\TemplateSPK1xxM01.proj ect", изменить настройку и сохранить? Или хитрее алгоритм?

Евгений Кислов
19.01.2023, 10:35
Просто открыть через кодесис файл, например "C:\Program Files (x86)\CODESYS 3.5.14.30\CODESYS\Templates\TemplateSPK1xxM01.proj ect", изменить настройку и сохранить? Или хитрее алгоритм?

Да, именно так, как вы описали.

Карбофос
19.01.2023, 10:40
Понял, спасибо!

TATARin
20.01.2023, 16:49
Здравствуйте господа знатоки. Необходимо организовать резервный канал связи ПЛК210(OPC UA)-masterSCADA v3.9 по средствам модемов НЕВОД5(433МГц), топология сети - звезда. в арсенале: ПЛК210 - 20шт; Moxa nport5232-20шт; Moxa mgate - 1шт. На просторах интернета(https://moxa.ru/forum/index.php?/profile/12168-dumkoo/content/&type=forums_topic_post&change_section=1) нашёл вот такую схему65284, доработав её вот так6528665285 и передать переменные получилось, но есть нюансы:
1- на ПК, который подключён к Nport, в приложении Modbus Slave ,нужно установить - Modbus RTU поверх TCP/IP6528865287 и только тогда получается передать переменные. Как реализовать данную настройку на ПЛК210?
2- Как вы видите в примере передача данных осуществляется по средствам Ethernet интерфейса через порт 505. Как настроить данный порт на ПЛК210?
3-Меня терзают смутные сомнения - правильный ли я путь выбрал для соединения ПЛК210(OPC UA сервера) с MasterSCADA?

Евгений Кислов
20.01.2023, 16:59
Добрый день.
Кто именно в вашей системе выполняет роль Modbus Master?
Как связаны Modbus и OPC UA, который вы два раза упоминаете? Какой протокол в итоге нужно использовать?
Нарисуйте (хотя бы в Paint; лучше в Visio или чем-то аналогичном) структурную схему, на которой будут изображены все устройства вашей системы, связи между ними и используемые интерфейсы и протоколы.

TATARin
20.01.2023, 17:19
Вот схема.65290

Евгений Кислов
20.01.2023, 17:34
У ПЛК210 нет штатных средств для работы в режиме Slave по протоколу Modbus RTU over TCP.
Зачем именно в вашем случае используются NPort? Можно ли убрать их из схемы и RS-485 от Невод подключить к RS-485 ПЛК?

TATARin
20.01.2023, 17:40
Для точности вот так.65292

TATARin
20.01.2023, 17:44
Если так будет проще, то можно убрать Nport. Я просто думал пробросить Ethernet через НЕВОД5.

TATARin
20.01.2023, 17:57
Ещё думаю если ПЛК210 на linux работает, может попробовать организовать PPP соединение. Только как это сделать?

Евгений Кислов
20.01.2023, 18:02
Ещё думаю если ПЛК210 на linux работает, может попробовать организовать PPP соединение. Только как это сделать?

У нас есть штатный компонент для работы с модемами по GPRS. Внутри он использует pppd.
https://youtu.be/pPrzdSb3Am4


Если так будет проще, то можно убрать Nport. Я просто думал пробросить Ethernet через НЕВОД5.

Если убрать NPort - то на интерфейс RS-485 контроллера будут приходить обычные Modbus RTU пакеты.
Т.е. можно использовать стандартный компонент для работы в режиме Modbus RTU Slave или библиотеку.

TATARin
21.01.2023, 16:04
Как мне в таком случае организовать передачу переменных в MasterSCADA? Что мне прописывать в настройках OPC UA клиента?65331

Евгений Кислов
21.01.2023, 16:12
Как мне в таком случае организовать передачу переменных в MasterSCADA?

С помощью MasterOPC Universal Modbus Server (или другого аналогичного OPC-сервера), который будет выполнять роль Modbus TCP Master.
Использовать OPC UA вы не сможете, потому что MGate - это конвертер Modbus TCP/Modbus RTU. Он не сможет работать с OPC UA.

TATARin
21.01.2023, 16:35
Это мне все тэги прописывать в MasterOPC Universal Modbus Server? Это такой гемор! GPRS модем может работать с OPC UA?

TATARin
21.01.2023, 16:41
Я просмотрел видеоролик и понял, что GPRS модему в отдельных случаях может быть присвоен IP адрес, а значит все прелести такого соединения будут доступны. Это касается OPC UA?

Евгений Кислов
21.01.2023, 16:49
Я просмотрел видеоролик и понял, что GPRS модему в отдельных случаях может быть присвоен IP адрес, а значит все прелести такого соединения будут доступны. Это касается OPC UA?

Да, можно использовать OPC UA поверх GPRS.
На стороне контроллера потребуется внешний IP-адрес.

TATARin
21.01.2023, 17:06
Отлично. Я так понимаю это возможно благодаря PPPd соединению? Если мы настроим PPPD соединения вместо GPRS модема с невод 5?

Евгений Кислов
21.01.2023, 17:21
Отлично. Я так понимаю это возможно благодаря PPPd соединению? Если мы настроим PPPD соединения вместо GPRS модема с невод 5?

PPPD используется для работы с GPRS-модемом, а не вместо него.

TATARin
21.01.2023, 20:13
Хорошо. Как настроить PPPD соединения для работы с модемом невод5? Ведь если грубо, то по большому счёту разница у модема ПМ01 и невод5 только в несущей частоте. Протоколы у них прозрачны, а интерфейсы идентичны. Тут вопрос только как настроить ПЛК210 на работу с невод5 через PPPD соединения?

Евгений Кислов
21.01.2023, 20:33
Хорошо. Как настроить PPPD соединения для работы с модемом невод5? Ведь если грубо, то по большому счёту разница у модема ПМ01 и невод5 только в несущей частоте. Протоколы у них прозрачны, а интерфейсы идентичны. Тут вопрос только как настроить ПЛК210 на работу с невод5 через PPPD соединения?

Если ваш модем поддерживает стандартный набор AT-команд - то подойдет инструкция из этого видео:
https://youtu.be/pPrzdSb3Am4

TATARin
21.01.2023, 20:43
Так эту ссылку Вы мне уже скидывали. Новенькое что-то есть? Может быть примеры работы с модемами других производителей?

Евгений Кислов
21.01.2023, 21:08
Так эту ссылку Вы мне уже скидывали. Новенькое что-то есть? Может быть примеры работы с модемами других производителей?

Если модем поддерживает стандартный набор AT-команд - то с точки зрения ПЛК нет разницы, кто является его производителем.
Настройка проводится по принципу, показанному в видео.

ВладОвен
23.01.2023, 10:23
Привет.
Подскажите, есть ли в языке CFC графический элемент проверки условия (IF), но с выводом ELSE ?

Евгений Кислов
23.01.2023, 10:31
Привет.
Подскажите, есть ли в языке CFC графический элемент проверки условия (IF), но с выводом ELSE ?

Добрый день.
Можно интерпретировать значение FALSE на выходе ENO как переход к ELSE.
Т.е. инвертируйте значение ENO и запускайте от него те блоки, которые соответствуют вашему "ELSE".

ВладОвен
23.01.2023, 12:19
Подскажите, как реализовать элемент "Тренд", но фиксировать в нем переменную, не по времени, а по фронту кастомного флага?
Т.е. мне нужно следить за переменной в течении длительного времени на дисплее, но только, тогда, когда флаг взводится (один раз в 30 секунд).

Может использовать какой-либо буфер на 5000 элементов? А как тогда его отрисовать на экране?
Спасибо.

Евгений Кислов
23.01.2023, 12:21
Подскажите, как реализовать элемент "Тренд", но фиксировать в нем переменную, не по времени, а по фронту кастомного флага?
Т.е. мне нужно следить за переменной в течении длительного времени на дисплее, но только, тогда, когда флаг взводится (один раз в 30 секунд).

Может использовать какой-либо буфер на 5000 элементов? А как тогда его отрисовать на экране?
Спасибо.

См. скриншот.
К параметру Record condition привяжите ваш "кастомный флаг".
Флаг должен устанавливаться на время не менее 2 заданных интервалов вызова VISU_TASK.

65356

ВладОвен
23.01.2023, 12:47
Флаг должен устанавливаться на время не менее 2 заданных интервалов вызова VISU_TASK.

Евгений, Вы уверены? Может "не менее 2 заданных интервалов вызова TrandRecordingTask" ?

Евгений Кислов
23.01.2023, 13:06
Евгений, Вы уверены? Может "не менее 2 заданных интервалов вызова TrandRecordingTask" ?

Вероятно, вы правы, и привязываться нужно к TrendRecordingTask.

Юрий.С
23.01.2023, 13:13
Добрый день! Как реализовать ждущий мультивибратор с регулировкой длительности выходного импульса и времени задержки(есть такой фб в библиотеках)

Евгений Кислов
23.01.2023, 13:19
Добрый день! Как реализовать ждущий мультивибратор с регулировкой длительности выходного импульса и времени задержки(есть такой фб в библиотеках)

Добрый день.
Такой ФБ можно реализовать на базе блока TP из библиотеки Standard.
У TP нет времени ожидания (он сразу запускается по команде), поэтому задержку придется реализовать самостоятельно.

thecatvlz
24.01.2023, 09:38
Добрый день. Пытаюсь адаптировать проект СПК107 из sp14 в sp17. Делаю в соответствии с Вашими рекомендациями в записи вебинара. Вроде бы всё хорошо, но получаю вот такие две ошибки. Подскажите пожалуйста, что нужно откорректировать.

И второй вопрос. Есть ли инструкция по переносу проекта из sp14 в sp16? Возникают ошибки по трендам.
Либо как лучше поступить в такой ситуации: у меня два контроллера СПК, один запрограммирован в sp14, второй в sp16 (прошивка у обоих 1.2.0803.1220), требуется привести оба к одной версии кодесис. В принципе без разницы к какой. Желательно обойтись без перепрошивки

65393

Евгений Кислов
24.01.2023, 10:32
Добрый день. Пытаюсь адаптировать проект СПК107 из sp14 в sp17. Делаю в соответствии с Вашими рекомендациями в записи вебинара. Вроде бы всё хорошо, но получаю вот такие две ошибки. Подскажите пожалуйста, что нужно откорректировать.

И второй вопрос. Есть ли инструкция по переносу проекта из sp14 в sp16? Возникают ошибки по трендам.
Либо как лучше поступить в такой ситуации: у меня два контроллера СПК, один запрограммирован в sp14, второй в sp16 (прошивка у обоих 1.2.0803.1220), требуется привести оба к одной версии кодесис. В принципе без разницы к какой. Желательно обойтись без перепрошивки

65393

Добрый день.

1.

В менеджере библиотек отройте содержимое библиотеки OwenVisuDialogs и в списке параметров KeypadDefaultLanguage выставьте для обоих параметров значение KEYPAD_LANG.RUS_LC (см. скриншот).
В принципе, можно выставить и другое значение - например, KEYPAD_LANG.ENG_LC - главное, чтобы перед точкой было написано KEYPAD_LANG, а не LANG.

65394

2. Отдельной инструкции нет; перенос проекта из любой версии в любую происходит по одним и тем же принципам.
Что касается вашей проблемы - выложите, пожалуйста, скриншот с ошибками трендов и проект, в котором она проявляется.

alex6725
24.01.2023, 11:05
Здраствуйте, при использовании кода из примера 11.2.5. Таблица для СПК.Визуализация возникает ошибка: C0037: 'xDone' не является входом 'GetDateAndTime'

Евгений Кислов
24.01.2023, 11:10
Здраствуйте, при использовании кода из примера 11.2.5. Таблица для СПК.Визуализация возникает ошибка: C0037: 'xDone' не является входом 'GetDateAndTime'

Вы пытаетесь что-то записать в xDone (:=), а надо проверить его значение на истину (=).
Т.е. замените в строке 3 ":=" на "=" (а можно вообще удалить =TRUE, оставив только IF GetDateAndTime.xDone THEN).

thecatvlz
24.01.2023, 11:14
Благодарю за помощь, проблема решена. Что касается переноса в sp16, там указанная проблема также решилась тем, что я позволил кодесису самостоятельно обновить версии компонентов, хоть Вы и не рекомендуете так делать. Надеюсь, это мне боком не вылезет. Там тоже была проблема с языком, решил так же по Вашей рекомендации

Николай Суриков
25.01.2023, 13:05
Добрый день коллеги. Подскажите в чем может быть проблема или может кто-нибудь сталкивался с таким.
Добавляю в проект десять переменных для отправки в облако.
65445
Если их все выделяю в символьной конфигурации, то облако отваливается полностью и плк не на связи.
Хотя переменные импортируются в облако, но данные не приходят.
65447
Если убираю выделение вот с этих двух переменных, то все работает как надо.
65446
В компоненте OwenCloud в ПЛК ошибок нет.
65448

Всего в облако передается 52 переменные.

Евгений Кислов
25.01.2023, 13:14
Добрый день коллеги. Подскажите в чем может быть проблема или может кто-нибудь сталкивался с таким.

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

yurya
25.01.2023, 16:01
Добрый день.
Проект в CODESYS 3.5.11.54. Можно ли увидеть архив при работе с виртуальным контроллером?

Евгений Кислов
25.01.2023, 16:16
Добрый день.
Проект в CODESYS 3.5.11.54. Можно ли увидеть архив при работе с виртуальным контроллером?

Добрый день.
О каком именно архиве речь?

yurya
25.01.2023, 16:36
Добрый день.
Проект в CODESYS 3.5.11.54. Можно ли увидеть архив при работе с виртуальным контроллером?

Нашел........

farta
27.01.2023, 11:38
Добрый день!
Пишу программу обработки дискретных и аналоговых сигналов.
В качестве модуля ввода-вывода используется корзина ICP DAS ET-87p8-MTCP (2 модуля аналогового ввода, 4 модуля дискретного ввода и 2 модуля дискретного вывода)

Ситуация следующая:
Настроил между ими связь (сконфигурировал устройство "Ethernet", добавил и сконфигурировал Modbus TCP Master и Modbus TCP Slave). В Modbus TCP Slave сконфигурировал каналы для обращения к каждому модулю ввода-вывода данной корзины (пришлось долго разбираться с адресацией параметров ICP DAS'а), данные выводятся стандартными функциями на чтение/запись. Данные аналоговых модулей выводятся в формате WORD (16 бит).

65507

значение 10000 примерно соответствует 27-28 градусам цельсия

Вопрос:
Как перевести данные из формата в WORD в формат REAL? Для примера приведу считываемый аналоговым модулем ввода параметр температуры. Сам параметр выводится в Codesys только в формате dec (в ПО для конфигурирования ICP DAS можно посмотреть эти данные в формате value, dec и hex).
Просмотрел библиотеку OwenCommunication, подходящих блоков не нашел, а стандартные переводы типа WORD_TO_REAL положительного результата не дал.

65506

Может я проглядел какой блок, который решит мою проблему, или может быть существует способ из этих 16 бит собрать число типа REAL

Евгений Кислов
27.01.2023, 11:44
Добрый день.
Выложите документацию на ваш модуль аналогового входа, в которой приведена карта регистров.
Приложите скриншоты настроек входов модуля.

capzap
27.01.2023, 11:47
Добрый день!
Пишу программу обработки дискретных и аналоговых сигналов.
В качестве модуля ввода-вывода используется корзина ICP DAS ET-87p8-MTCP (2 модуля аналогового ввода, 4 модуля дискретного ввода и 2 модуля дискретного вывода)

Ситуация следующая:
Настроил между ими связь (сконфигурировал устройство "Ethernet", добавил и сконфигурировал Modbus TCP Master и Modbus TCP Slave). В Modbus TCP Slave сконфигурировал каналы для обращения к каждому модулю ввода-вывода данной корзины (пришлось долго разбираться с адресацией параметров ICP DAS'а), данные выводятся стандартными функциями на чтение/запись. Данные аналоговых модулей выводятся в формате WORD (16 бит).
65507
значение 10000 примерно соответствует 27-28 градусам цельсия

Вопрос:
Как перевести данные из формата в WORD в формат REAL? Для примера приведу считываемый аналоговым модулем ввода параметр температуры. Сам параметр выводится в Codesys только в формате dec (в ПО для конфигурирования ICP DAS можно посмотреть эти данные в формате value, dec и hex).
Просмотрел библиотеку OwenCommunication, подходящих блоков не нашел, а стандартные переводы типа WORD_TO_REAL положительного результата не дал.
65506
Может я проглядел какой блок, который решит мою проблему, или может быть существует способ из этих 16 бит собрать число типа REAL

у сименса это примерно так делается 65508

farta
27.01.2023, 12:14
К сожалению, не нашел документацию с описанием карты регистров
Вообще в принципе, большинство документации на ICP DAS (и на корзину ET/87p8-MTCP, и на отдельные модули ввода/вывода) невнятная, большинство информации находил путем экспериментов
В ПО на ICP DAS в секции мапинга прописаны адреса ячеек

65511

сначала думал, что адресация параметров для AI имеет вид 3xxxx (как написано синим цветом на скриншоте выше), однако при обращении таким образом не понятно, куда именно он обращается
путем экспериментов пришел к выводу, что адресация, указанная на скриншоте в секции мапинга, точно совпадает с адресом параметра, а к конкретному модулю кодесис обращается сам посредством встроенных функций

65512


P.S. Не знаю, почему в скриншоте ПО на ICP DAS не отображаются значения value, но в кодесисе данные отображаются корректно

Евгений Кислов
27.01.2023, 12:42
Вообще в принципе, большинство документации на ICP DAS (и на корзину ET/87p8-MTCP, и на отдельные модули ввода/вывода) невнятная, большинство информации находил путем экспериментов

Тогда проще всего написать в техподдержку ICP DAS и уточнить у них формат хранения аналоговых значений.

fatlortroll
27.01.2023, 14:43
День добрый.
Подскажите пожалуйста, какой библиотекой из стандартных нужно пользоваться для работы с файлами из нескольких потоков (задач)?
Сейчас использую SysFile, но несмотря на синхронизацию BOLT-ом периодически затирают друг друга записи в файле. Есть подозрение, что после завершения SysFileFlush ещё некоторое время производится запись файла.

Евгений Кислов
27.01.2023, 16:04
День добрый.
Подскажите пожалуйста, какой библиотекой из стандартных нужно пользоваться для работы с файлами из нескольких потоков (задач)?
Сейчас использую SysFile, но несмотря на синхронизацию BOLT-ом периодически затирают друг друга записи в файле. Есть подозрение, что после завершения SysFileFlush ещё некоторое время производится запись файла.

Добрый день.
Насколько я знаю - специальных библиотек для работы с файлами из нескольких потоков не существует.

fatlortroll
27.01.2023, 16:06
Т.е. даже с учётом синхронизации -- будет затирание данных в файле?

Евгений Кислов
27.01.2023, 16:11
Т.е. даже с учётом синхронизации -- будет затирание данных в файле?

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

fatlortroll
27.01.2023, 16:32
Значит, у меня криво реализована синхронизация:



// Mt_GVL
VAR_GLOBAL
DataDefender_ : CAA.BOLT; //
END_VAR




// Журнал сообщений
FUNCTION_BLOCK FINAL LoggerActions
VAR CONSTANT
UnlockWaitTimeMax_ : TIME := T#20ms;
END_VAR
VAR
FileHandle_ : SysTypes.RTS_IEC_HANDLE := SysTypes.RTS_INVALID_HANDLE;
END_VAR




// Добавить в лог сообщение об ошибке.
METHOD MsgError : SysTypes.RTS_IEC_RESULT
VAR
CtValue : CAA.COUNT := 0;
UnlockWaitTime : TIME := T#0ms;
END_VAR

UnlockWaitTime := TIME();
WHILE ((UnlockWaitTime + UnlockWaitTimeMax_) > TIME()) AND_THEN
(Mt_GVL.DataDefender_.Reserve(CtValue) = TRUE)
DO
// Здесь работа с файлом, запись в него форматированной строки и flush по завершении записи.
CtValue := 0;
UnlockWaitTime := T#0ms;
Mt_GVL.DataDefender_.Free();
END_WHILE


Вот так сделано сейчас. Оставил только то, что относится к синхронизации. Если видны какие-либо ошибки -- покажите, пожалуйста.

fatlortroll
27.01.2023, 16:46
Похоже, весь код -- одна большая ошибка.

А как правильно сделать -- пока не пойму.

Евгений Кислов
27.01.2023, 16:49
Давайте лучше по нашему обычному сценарию?
Какую практическую задачу из вашей предметной области вы пытаетесь сейчас решить? (без попытки пригвоздить себя к конкретной реализации)

fatlortroll
27.01.2023, 21:55
> Какую практическую задачу из вашей предметной области вы пытаетесь сейчас решить?

Запись в один файл из нескольких потоков. Журнал действий пользователей, и системы.

Евгений Кислов
27.01.2023, 21:56
> Какую практическую задачу из вашей предметной области вы пытаетесь сейчас решить?

Запись в один файл из нескольких потоков. Журнал действий пользователей, и системы.

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

fatlortroll
27.01.2023, 22:12
> Ну ок, пойдём длинным путём.

:-D Ну не могу я выложить всё, не могу! :-D

В одном потоке читаются по modbus входы/выходы, во втором -- логика приложения.

Cs-Cs
27.01.2023, 22:12
> Какую практическую задачу из вашей предметной области вы пытаетесь сейчас решить?
Запись в один файл из нескольких потоков. Журнал действий пользователей, и системы.
А если сделать какой-то один объект (FB) с методом AddToLog()?
Пусть внутри FB файл всегда будет открыт, а AddToLog туда будет писать?

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

fatlortroll
27.01.2023, 22:14
Если чтение I/O сложить в один поток с логикой, получатся неприличные задержки.

А, там ещё вместе с I/O ещё обмен данными с шестью частотниками.

fatlortroll
27.01.2023, 22:19
> А если сделать какой-то один объект (FB) с методом AddToLog()

Так и сделано, но, похоже, там конкуренция среди них. И я криво реализовал синхронизацию.

Cs-Cs
27.01.2023, 22:22
> А если сделать какой-то один объект (FB) с методом AddToLog()
Так и сделано, но, похоже, там конкуренция среди них. И я криво реализовал синхронизацию.
А что ты называешь потоками? Разные задачи?

А если сделать очередь? =) Типа при вызове AddToLog всё пишется в очередь (массив структур с данными), а потом он спокойно скидывается на диск. В одном, своём потоке (задаче)

Евгений Кислов
27.01.2023, 22:24
Шаман, как обычно, смотрит в корень - то, что события могут формироваться в разных потоках, не мешает обрабатывать их в каком-то одном потоке.


Если чтение I/O сложить в один поток с логикой, получатся неприличные задержки.

Использование SysFile и других библиотек с синхронными вызовами - действительно довольно простой способ получить "неприличные задержки".
Для большинства библиотек есть асинхронные варианты - например, в случае файлов это библиотека CAA File.

fatlortroll
27.01.2023, 22:25
> А что ты называешь потоками? Разные задачи?

Ага.

> А если сделать очередь?

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

fatlortroll
27.01.2023, 22:26
> обрабатывать их в каком-то одном потоке

Но от синхронизации записи никуда не деться, в любом случае.

Евгений Кислов
27.01.2023, 22:27
> обрабатывать их в каком-то одном потоке

Но от синхронизации записи никуда не деться, в любом случае.

Если это один поток и всё же SysFile - о какой вообще синхронизации речь?
Вызовы SysFileOpen, SysFileWrite и т.д. - блокирующие.

fatlortroll
27.01.2023, 22:30
Возможно, я некорректно представляю модель исполнения CoDeSys, но разве при вызове метода ФБ из разных потоков (задач) не может случиться коллизия, даже если функции внутри этого метода блокирующие?

Евгений Кислов
27.01.2023, 22:43
Возможно, я некорректно представляю модель исполнения CoDeSys, но разве при вызове метода ФБ из разных потоков (задач) не может случиться коллизия, даже если функции внутри этого метода блокирующие?

А зачем вообще об этом думать?

Пример реализации, совпадающий с озвученной выше Шаманом идеей ("простое лучше сложного (https://ru.wikipedia.org/wiki/%D0%94%D0%B7%D0%B5%D0%BD_%D0%9F%D0%B0%D0%B9%D1%82% D0%BE%D0%BD%D0%B0)"):
- глобальный ARRAY [FIRST_EVENT...LAST_EVENT] OF BOOL
- из разных потоков по событиям взводим нужные флаги массива (доступ к массиву по константным индексам - можно через красивый ENUM - все события заранее известны и определены)
- в одном конкретном потоке: открываем файл, в цикле проходим по массиву - для каждого установленного флага вызываем SysFileWrite (и здесь же можно реализовать форматирование сообщения, если требуется) и сбрасываем флаг - после выхода из цикла закрываем файл

Cs-Cs
27.01.2023, 22:54
Да! Евгений Кислов всё рассказал!
Я такое делал с очередью отправки СМСок: брал массив на 20-30 событий, через вызов функции пихал их туда.
При этом инкремент счётчика занятых элементов делал именно в той функции.
А основная задача, медленная, извлекала события из этого массива-очереди, и пихала их в модем, ожидая отправку каждого из них.
Задумка была на тот случай, с которым ты и столкнулся: "Ой! А вдруг разом десяток аварий будет, и тонна СМСок прилетит".

Всё-таки расскажи нам, ЧТО там у тебя ТАКОГО интересного! У меня проект (я ща как раз его дальше ваяю, в ночи), где опрашивается 9 штук модулей по SysCom (очень-очень быстро). И ещё и отслеживанием ошибок связи с ними и логгеньем в тревоги ПЛК... Вот у тебя ещё быстрее, чем у меня? Я хочу это представить! =)

fatlortroll
28.01.2023, 09:17
> ЧТО там у тебя ТАКОГО интересного

Всего лишь промышленный станок. Ничего интересного. :-)

ADS
28.01.2023, 16:14
Добрый день, подскажите пожалуйста. Не выходит залить прошивку в виртуальный ПЛК т.к. таргет версии 3.5.6, а сам ПЛК 3.5.5. Как найти и поставить версии 3.5.5 control win? (Галочка "показать старые версии" не дает эффекта нужного)65529

Евгений Кислов
28.01.2023, 16:24
Добрый день, подскажите пожалуйста. Не выходит залить прошивку в виртуальный ПЛК т.к. таргет версии 3.5.6, а сам ПЛК 3.5.5. Как найти и поставить версии 3.5.5 control win? (Галочка "показать старые версии" не дает эффекта нужного)65529

Добрый день.
Таргет 3.5.5.0 входит в состав CODESYS V3.5 SP5 Patch 5.
Как я понимаю (судя по версии рантайма виртуальника) - вы эту версию устанавливали?
Тогда см. п. 8.2 здесь:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_FAQ_v.1.3.pdf

После этого галочка "показать старые версии" действительно должна показать старые версии.

fatlortroll
30.01.2023, 10:44
В общем, в очередной раз оказалось "сам дурак". Размер строки, отдаваемой форматтером сообщений журнала оказался недостаточен для отдельных сообщений, что и привело к эффекту "наложения" записей друг на друга. Увеличил размер строки -- всё работает, синхронизация синхронизируется, журнал пишется.

Cs-Cs
30.01.2023, 10:53
В общем, в очередной раз оказалось "сам дурак". Размер строки, отдаваемой форматтером сообщений журнала оказался недостаточен для отдельных сообщений, что и привело к эффекту "наложения" записей друг на друга. Увеличил размер строки -- всё работает, синхронизация синхронизируется, журнал пишется.
Это не дурак =) Это - БАЛАМУТ! =))

fatlortroll
30.01.2023, 11:08
Смелое заявление, требующее обоснования! :-)

ADS
30.01.2023, 11:27
Добрый день.
Таргет 3.5.5.0 входит в состав CODESYS V3.5 SP5 Patch 5.
Как я понимаю (судя по версии рантайма виртуальника) - вы эту версию устанавливали?
Тогда см. п. 8.2 здесь:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_FAQ_v.1.3.pdf

После этого галочка "показать старые версии" действительно должна показать старые версии.

Спасибо большое. Получилось

TATARin
31.01.2023, 09:39
Здравствуйте Евгений. Дело в том, что видеоинструкция не соответствует реалиям. Скрины прилагаю.6558965590

Евгений Кислов
31.01.2023, 09:43
Здравствуйте Евгений. Дело в том, что видеоинструкция не соответствует реалиям. Скрины прилагаю.6558965590

Добрый день.
Какая у вас версия прошивки ПЛК?

TATARin
31.01.2023, 10:20
plc210 1.3.0309.125765591

Евгений Кислов
31.01.2023, 10:22
plc210 1.3.0309.125765591

В этой прошивке еще не было поддержки GPRS для модемов.
В начале видео по вашей ссылке об этом должно быть упомянуто.

TATARin
31.01.2023, 12:49
Хорошо.В таком случае как подключить модем стороннего производителя? И предать, и считать переменные через модем с данной прошивкой?

Евгений Кислов
31.01.2023, 12:54
Хорошо.В таком случае как подключить модем стороннего производителя? И предать, и считать переменные через модем с данной прошивкой?

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

TATARin
31.01.2023, 13:02
Т.е. Вы рекомендуете обновить прошивку, так?

TATARin
31.01.2023, 13:21
Я скачал файл прошивки и в файле readme написано - "Перепрошивка с версии 1.2.xxxx.xxxx / 1.3.xxxx.xxxx на версию 2.4.xxxx.xxxx поддерживается только для устройств, выпущенных начиная с июля 2020 года (с 512 Мб flash-памяти)". Вроде всё совпадает. Прошивать?

Евгений Кислов
31.01.2023, 13:45
Т.е. Вы рекомендуете обновить прошивку, так?

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

DuMa
02.02.2023, 17:50
Здравствуйте.
В наличии СПК110. Codesys3.5.
Проект сохраняет снимок экрана на USB-флешку.
Если USB-флешку вытащить из СПК110 например спустя менее 5сек после команды записи снимка – то получаем файл с НУЛЕВЫМ размером – этот файл не открывается (пишет файл повреждён).
Если выждать около 1минуты, то с файлом всё в порядке – картинка отрывается – всё как положено.

ВОПРОС:
Как определить, что формирование файла на USB-флешке завершилось (не обязательно снимок с экрана, а может файл архива, который формируется архиватором)?
Существует ли параметр, что обмен СПК110 с USB-флешкой завершён – и USB-флешку можно демонтировать,

Евгений Кислов
02.02.2023, 18:35
Здравствуйте.
В наличии СПК110. Codesys3.5.
Проект сохраняет снимок экрана на USB-флешку.
Если USB-флешку вытащить из СПК110 например спустя менее 5сек после команды записи снимка – то получаем файл с НУЛЕВЫМ размером – этот файл не открывается (пишет файл повреждён).
Если выждать около 1минуты, то с файлом всё в порядке – картинка отрывается – всё как положено.

ВОПРОС:
Как определить, что формирование файла на USB-флешке завершилось (не обязательно снимок с экрана, а может файл архива, который формируется архиватором)?
Существует ли параметр, что обмен СПК110 с USB-флешкой завершён – и USB-флешку можно демонтировать,

Добрый день.
Вы можете в коде определить размер файла (например, см. в библиотеке CAA File ФБ GetSize).
Или запускать таймер на ожидание (значение подберите опытным путем).
Какого-то отдельного параметра "что обмен СПК110 с USB-флешкой завершён" - нет.

DuMa
02.02.2023, 19:02
Понял – действую через таймер.

А вот всё-таки,
в проекте присутствует узел «Drives».
Если его включить (канал «Enable Drives») и перед демонтажём USB-флешки из СПК110 подать команду «Размонтировать USB Flash» (канал «USB Unmount»), дождаться сигнала «Размонтирование USB Flash завершено» (канал «USB Unmount done»), только после это демонтировать USB-флешку из СПК110.
В этом случае данные не будут потеряны?

Евгений Кислов
02.02.2023, 19:10
Понял – действую через таймер.

А вот всё-таки,
в проекте присутствует узел «Drives».
Если его включить (канал «Enable Drives») и перед демонтажём USB-флешки из СПК110 подать команду «Размонтировать USB Flash» (канал «USB Unmount»), дождаться сигнала «Размонтирование USB Flash завершено» (канал «USB Unmount done»), только после это демонтировать USB-флешку из СПК110.
В этом случае данные не будут потеряны?

Да, не должны быть потеряны.
Я думал, вы так и действуете (дожидаетесь Unmount Done).
Вынимать флешки из контроллера "на горячую" - не лучшая идея.

DuMa
02.02.2023, 19:15
Unmount Done - принято.

Евгений Кислов, спасибо за информацию.

DmitriiAnyushin
02.02.2023, 19:52
Добрый день! Панель СПК107 (проишивки 14 и 17). Подскажите пожалуйста, в какой момент retain переменные записываются в энергонезависимую память (циклически или при пропадании питания) и что произойдёт с retain переменными (и с энергонезависимой памятю) при исчерпании ресурса количества записи? Спасибо!

Евгений Кислов
02.02.2023, 20:23
Добрый день! Панель СПК107 (проишивки 14 и 17). Подскажите пожалуйста, в какой момент retain переменные записываются в энергонезависимую память (циклически или при пропадании питания) и что произойдёт с retain переменными (и с энергонезависимой памятю) при исчерпании ресурса количества записи? Спасибо!

Добрый день.
https://www.owen.ru/forum/showthread.php?t=28167&p=308592&viewfull=1#post308592

DmitriiAnyushin
03.02.2023, 08:38
Добрый день.
https://www.owen.ru/forum/showthread.php?t=28167&p=308592&viewfull=1#post308592
Понял. Спасибо! А теоретически, если ресурс количества циклов записи все же будет исчерпан, то что произойдёт с этими данными? Они просто не будут сохранять значения при пропадании питания или оборудование выйдет из строя?

vozlov
03.02.2023, 10:03
Такой вопрос - в свойствах проекта указан автор и версия. В веб ни автор, ни версия не отображаются, пишет "не указано":

https://s1.hostingkartinok.com/uploads/images/2023/02/9fb2f9bad0583db3b3712d3430d3bf15.png

Где это нужно указать, чтобы отображалось?

Евгений Кислов
03.02.2023, 10:11
Добрый день.
Нужно поставить галочку Automatically generate 'Project Information' POUs.

65696

Карбофос
03.02.2023, 14:14
Такой вопрос возник: если несколько версий Кодесис стоит на компьютере, файлы проектов открываются из проводника той версией, что установлена последней. Это можно изменить? Через виндовый диалог "открыть с помощью" не получается.

Евгений Кислов
03.02.2023, 14:15
Такой вопрос возник: если несколько версий Кодесис стоит на компьютере, файлы проектов открываются из проводника той версией, что установлена последней. Это можно изменить? Через виндовый диалог "открыть с помощью" не получается.

Открывать конкретный проект конкретной версией запуском файла проекта нельзя, насколько я знаю.

vozlov
03.02.2023, 20:04
CoDeSyS предлагает обновиться до Patch 6:

https://s1.hostingkartinok.com/uploads/images/2023/02/d475708d15b219ff974e854e62910c03.png

Где-нибудь есть описание, что было изменено / исправлено? Будет ли корректно работать с ПЛК200 CoDeSyS с данным патчем?

Евгений Кислов
03.02.2023, 20:15
CoDeSyS предлагает обновиться до Patch 6:

https://s1.hostingkartinok.com/uploads/images/2023/02/d475708d15b219ff974e854e62910c03.png

Где-нибудь есть описание, что было изменено / исправлено? Будет ли корректно работать с ПЛК200 CoDeSyS с данным патчем?

65705

Будет, но смысл остается загадкой.

vozlov
03.02.2023, 21:00
65705

Будет, но смысл остается загадкой.

Если патчи выпускают, значит, это кому-нибудь нужно...

Карбофос
06.02.2023, 08:29
открыть свойства ярлыка и посмотерть что используется опцией Profile

Я в меню "Открыть с помощью" указывал сам экзешник SP16p3, не ярлык, но открываются проекты все равно SP14p3 (на компьютере, где 14 был установлен последним). На другом компьютере последним установлен SP17p3, там все проекты открываются им.

Карбофос
06.02.2023, 09:17
ой как запущено то всё, я про ярлык говорил, думал Вас наведет это на мысль создать для проекта ярлык и задать в нем свойства с нужной версией КДС и соответствующим проектом как в справке написано 65718

Задача не в этом. Задача - открывать все новые (и вообще все) проекты именно в SP16.

Карбофос
06.02.2023, 11:21
у Вас создаются новые проекты по сотне в день? Делайте ярлыки на каждый проект, держите из в одном месте, это будет удобнее чем в папке с самими проектами, где помимо них создается куча дополнительных файлов выискивать нужный. Создавать новый проект, ну так и ярлык самой КДС можно отредактировать чтоб открывал нужный релиз, первая мысль у меня была про это, но на моем ПК нет других запускаемых файлов кроме последней установленной 65719. Если занимаетесь установкой через задний проход, то тогда только так (https://owen.ru/forum/showthread.php?t=20069&p=400367&viewfull=1#post400367)

Ну и к чему все эти колкости? Нечего по делу, сказать, лучше бы помолчали. Естественно, приходится сначала открыть нужную версию Кодесис, и из нее открывать проекты, к чему писать очевидное?
А редактирование ярлыка как поможет? Он может быть на рабочем столе, в меню Пуск, еще черти-где, как система поймет, что нужно воспользоваться именно им? Я указывал непосредственно экзешник в "Открыть с помощью", но система упорно открывает проекты в другой версии, значит это прописывается где-то в системе, в реестре например - это я и хотел выяснить, когда задавал вопрос здесь. Если Евгений не может на него ответить - ну и черт с ней, пусть будет как будет. Зато вам прям неймется свое эго тут показать, но по делу - ни слова.

yurya
06.02.2023, 12:11
Добрый день.
Проект в CODESYS 3.5.11.54. Для чтения статуса ошибок KIPPRIBOR AFD-E в руководстве «Преобразователи частоты KIPPRIBOR AFD-E. Протокол связи Modbus RTU» используется функция 0х07 (чтение состояния).
Каналы Modbus Slave эту функцию не поддерживают. В шаблоне AFD-E это тоже не предусмотрено. Какую функцию можно использовать для чтения статуса ошибок?

Евгений Кислов
06.02.2023, 12:40
Добрый день.
Проект в CODESYS 3.5.11.54. Для чтения статуса ошибок KIPPRIBOR AFD-E в руководстве «Преобразователи частоты KIPPRIBOR AFD-E. Протокол связи Modbus RTU» используется функция 0х07 (чтение состояния).
Каналы Modbus Slave эту функцию не поддерживают. В шаблоне AFD-E это тоже не предусмотрено. Какую функцию можно использовать для чтения статуса ошибок?

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

yurya
06.02.2023, 12:48
Добрый день.
К сожалению, единственный вариант - отказаться от шаблона и вообще опроса по этому порту через дерево проекта и организовать обмен через библиотеку OwenCommunication.
В ней есть ФБ UNM_SerialRequest, который позволяет отправить произвольный запрос байт и получить ответ.

Спасибо за ответ.

Евгений Кислов
06.02.2023, 12:57
Спасибо за ответ.

Дискретные и аналоговые входы я кстати добавил в новую версию шаблона.)
Уже доступна на форуме, на днях обновим на сайте.

beatitas
06.02.2023, 16:28
Добрый день.
пытаюсь реализовать отправку ошибок в телеграмм текстом на русском языке.

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

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

Прошу направить на путь истинный)

65727

Евгений Кислов
06.02.2023, 16:31
Добрый день.
пытаюсь реализовать отправку ошибок в телеграмм текстом на русском языке.

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

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

Прошу направить на путь истинный)

65727

Добрый день.
Какой именно модуль вы опрашиваете? МВ210-101?
По-моему, проще использовать готовую функцию ANALOG_SENSOR_ERROR_TO_WSTRING из библиотеки Mx210 Assistant - она заменит большую часть кода на скриншоте.

capzap
06.02.2023, 16:38
Но получается какой то некрасивый монстр.
Может есть более адекватный способ, это сделать?

Прошу направить на путь истинный)
можно создать массив строк, примерно такой ARRAY[241..254] OF WSTRING; заполнить его соответствующими строками и конкатить только значение подставляя вместо индекса массива переменную ошибки, количество квадратов сократится

beatitas
06.02.2023, 17:07
Добрый день.
Какой именно модуль вы опрашиваете? МВ210-101?
По-моему, проще использовать готовую функцию ANALOG_SENSOR_ERROR_TO_WSTRING из библиотеки Mx210 Assistant - она заменит большую часть кода на скриншоте.

Евгений, спасибо огромное) так намного короче и удобнее)
Впредь буду сначала читать описание библиотеки, прежде чем писать код)

65729

Но создав этот конструкт получил снова
'globalVariablesList.poolWaterTempSensError' is not a valid value for strict ENUM type 'ANALOG_SENSOR_ERRORS'

Эту ошибку забираю с ПЛК200, но остальные буду брать с МВ210-101, думаю там взлетит сразу.
Тут просто создал глобальную переменную poolWaterTempSensError: USINT; (*Ошибки датчика температуры*)
и назначил её каналу Status первого аналогового входа.

65730

beatitas
06.02.2023, 17:11
можно создать массив строк, примерно такой ARRAY[241..254] OF WSTRING; заполнить его соответствующими строками и конкатить только значение подставляя вместо индекса массива переменную ошибки, количество квадратов сократится

Спасибо огромное. Это как раз отвечает на второй, ещё не заданный вопрос - где ошибки будут кастомные, собираться из типовых кусков (типа номер датчика + участок ошибки + текст ошибки) и их проще таскать из массива.
Но с ходу не смог нагуглить красивого примера. Из официальной документации вроде понятно, но там примеры слишком куцые)

Извиняюсь за два сообщения. думал форум склеит автоматом как ipb

Евгений Кислов
06.02.2023, 17:21
Тут просто создал глобальную переменную poolWaterTempSensError: USINT; (*Ошибки датчика температуры*)

Вместо USINT используйте Mx210Assistant.ANALOG_SENSOR_ERRORS.
Тогда "взлетит".

В свежих версиях и функция, и ENUM входят еще в состав библиотеки OwenTypes, которая сразу присутствует в проекте, если он создан на основе шаблона.

Teinrus
07.02.2023, 15:52
Добрый день. Вопрос следующего характера, ПЛК 210 необходимо подключить к Postgresql есть пример на сайте но при заполнении данных ответ не поступает, вопрос на что следует обратить внимание? И так же в примере(видео уроке) от Евгения необходимо сделать изменения в файле конфигурации(для базы MS SQL) в прошивке для SP 17 такого файла нет. необходимы ли изменения для SP 17 или этот вопрос решен?

Евгений Кислов
07.02.2023, 15:57
Добрый день. Вопрос следующего характера, ПЛК 210 необходимо подключить к Postgresql есть пример на сайте но при заполнении данных ответ не поступает, вопрос на что следует обратить внимание? И так же в примере(видео уроке) от Евгения необходимо сделать изменения в файле конфигурации(для базы MS SQL) в прошивке для SP 17 такого файла нет. необходимы ли изменения для SP 17 или этот вопрос решен?

Добрый день.
1. Попробуйте сначала команду из терминала Linux выполнить и посмотрите, что будет в ответе.
2. Вы ошибаетесь, такой файл там есть (я только что еще раз это проверил). Возможно, вы случайно его удалили.

MUSulmanin
07.02.2023, 16:39
Добрый день. Проблема в опросе Slave-ПЛК Masterом-ПЛК через преобразователь Modbus TCP IP/ Modbus RTU фирмы ICP-CON.
Master - 100.90.1.66
Slave - адр.-4, Input Registr 40960
ICP CON - 10.90.1.30
Подскажите, правильно ли я произвел настройку?
Физика работает: через Modbus Poll все работает.
65750
65749

Евгений Кислов
07.02.2023, 16:47
Добрый день. Проблема в опросе Slave-ПЛК Masterом-ПЛК через преобразователь Modbus TCP IP/ Modbus RTU фирмы ICP-CON.
Master - 100.90.1.66
Slave - адр.-4, Input Registr 40960
ICP CON - 10.90.1.30
Подскажите, правильно ли я произвел настройку?
Физика работает: через Modbus Poll все работает.
65750
65749

Добрый день.
Адрес регистра, вероятно, надо задать как 16#3C0 или 16#3BF.
Пояснения здесь, начиная со стр. 11:
https://ftp.owen.ru/CoDeSys3/98_Books/ModbusTips.pdf

MUSulmanin
07.02.2023, 16:47
К сожалению это я деала)

Евгений Кислов
07.02.2023, 16:49
К сожалению это я деала)

Тогда выкладывайте все скриншоты из Modbus Poll.

MUSulmanin
07.02.2023, 16:50
Мне больше вопрос волнует правильно ли я делаю, через "Ethernet_1 / Modbus TCP Master / Modbus TCP Slave / Slave COM Port" ?
Топология верна по вашему мнению?

Евгений Кислов
07.02.2023, 16:50
Мне больше вопрос волнует правильно ли я делаю, через "Ethernet_1 / Modbus TCP Master / Modbus TCP Slave / Slave COM Port" ?
Топология верна по вашему мнению?

Если у вас именно конвертер протоколов Modbus TCP/RTU - то топология верная.

MUSulmanin
07.02.2023, 16:53
65751

Вот рабочий вариант

MUSulmanin
07.02.2023, 16:54
преобразователь ICP CON 2235i

capzap
07.02.2023, 16:54
Добрый день. Проблема в опросе Slave-ПЛК Masterом-ПЛК через преобразователь Modbus TCP IP/ Modbus RTU фирмы ICP-CON.
Master - 100.90.1.66
Slave - адр.-4, Input Registr 40960
ICP CON - 10.90.1.30
Подскажите, правильно ли я произвел настройку?
Физика работает: через Modbus Poll все работает.
65750
65749

не закралась ли ошибка в IP адрес контроллера, локальная сеть класса А начинается с 10 а не со ста

Евгений Кислов
07.02.2023, 16:58
65751

Вот рабочий вариант

На первом скриншоте видно, что выбран протокол Modbus RTU over TCP, а не Modbus TCP.
Т.е. у вас конвертер не протоколов, а интерфейсов (и, собственно, это написано в описании ICP CON 2235i).
Стандартные драйвера CODESYS не поддерживают протокол Modbus RTU over TCP.
Для наших контроллеров мы разработали библиотеку OwenCommunication, где этот протокол поддерживается.
Рекомендую использовать их.)

MUSulmanin
07.02.2023, 17:04
65752
Вот настройки

MUSulmanin
07.02.2023, 17:26
Я правильно понял, что нужно использовать UNM_TCPRequest?

Евгений Кислов
07.02.2023, 17:27
Я правильно понял, что нужно использовать UNM_TCPRequest?

Нет, вы поняли неправильно. См. ФБ MB_TcpRequest, вход xIsRtuOverTcp.

MUSulmanin
07.02.2023, 17:34
Спасибо. Буду юзать)

Serg52
07.02.2023, 17:43
Добрый день!
В середине января при вызове виртуального контроллера стало появляться сообщение о скором завершении действия лицензии.
Указывался срок до 11.02., а сегодня, 7.02., при попытке запустить трассировку произошёл полный сбой, проект закрылся.
При повторной загрузке проекта исчезла пиктограмма виртуального контроллера из системного трея Windows.
Нигде в документации не встречал сообщений о сроках действия лицензий на что бы то ни было.
Прошу помощи.

Евгений Кислов
07.02.2023, 17:52
Добрый день!
В середине января при вызове виртуального контроллера стало появляться сообщение о скором завершении действия лицензии.
Указывался срок до 11.02., а сегодня, 7.02., при попытке запустить трассировку произошёл полный сбой, проект закрылся.
При повторной загрузке проекта исчезла пиктограмма виртуального контроллера из системного трея Windows.
Нигде в документации не встречал сообщений о сроках действия лицензий на что бы то ни было.
Прошу помощи.

Добрый день.
Сообщение было такое же, как здесь?
https://owen.ru/forum/showthread.php?t=37378

Если да - то оно просто информирует о том, что скоро будут просрочены SSL-сертификаты.
Ничего страшного в этом нет.

Ваш сбой, вероятно, вообще с этим не связан.
Попробуйте запустить виртуальный контроллер из меню Пуск или через ярлык.
Как создать ярлык:
http://www.owen.ru/forum/showthread.php?t=28167&p=271282&viewfull=1#post271282

Serg52
07.02.2023, 18:00
Добрый день.
Сообщение было такое же, как здесь?
https://owen.ru/forum/showthread.php?t=37378

Если да - то оно просто информирует о том, что скоро будут просрочены SSL-сертификаты.
Ничего страшного в этом нет.

Ваш сбой, вероятно, вообще с этим не связан.
Попробуйте запустить виртуальный контроллер из меню Пуск или через ярлык.
Как создать ярлык:
http://www.owen.ru/forum/showthread.php?t=28167&p=271282&viewfull=1#post271282

Да! Именно так.
Спасибо!

Эдуард_Н
08.02.2023, 06:14
обновил проект под SP17 и заругался на это:65764

Евгений Кислов
08.02.2023, 07:20
обновил проект под SP17 и заругался на это:65764

В SP17 мы удалили библиотеку OwenWatchdog. Перечисление ExceptionHandling теперь находится в библиотеке OwenTypes - она входит в состав пакета таргет-файлов.

Эдуард_Н
08.02.2023, 10:24
В SP17 мы удалили библиотеку OwenWatchdog. Перечисление ExceptionHandling теперь находится в библиотеке OwenTypes - она входит в состав пакета таргет-файлов.

Что делать?

Serg52
08.02.2023, 10:24
Доброе Вам утро!
Перед сбоем и исчезновением виртуального контроллера при попытке установить связь с ним стал самопроизвольно выскакивать экран, который невозможно никак убрать, кроме как через Диспетчер устройств.
При попытке запуска виртуального контроллера из меню Пуск (файл CODESYS Control Win V3) запускается программа на чёрном фоне.
6576765768

Евгений Кислов
08.02.2023, 10:40
Доброе Вам утро!
Перед сбоем и исчезновением виртуального контроллера при попытке установить связь с ним стал самопроизвольно выскакивать экран, который невозможно никак убрать, кроме как через Диспетчер устройств.
При попытке запуска виртуального контроллера из меню Пуск (файл CODESYS Control Win V3) запускается программа на чёрном фоне.
6576765768

Добрый день.

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

2. Вывод лога ("программа на чёрном фоне.") - это нормально и даже полезно.
Но если он вас раздражает - создайте ярлык (ссылку, как это сделать, я оставлял выше) и не указывайте в нем ключ -d.

Евгений Кислов
08.02.2023, 10:42
Что делать?

На вашем скриншоте - замените OwenWatchdog на OwenTypes.
Добавьте в проекте библиотеку OwenTypes.
После этого ошибка исчезнет.

Serg52
08.02.2023, 10:59
Добрый день.

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

2. Вывод лога ("программа на чёрном фоне.") - это нормально и даже полезно.
Но если он вас раздражает - создайте ярлык (ссылку, как это сделать, я оставлял выше) и не указывайте в нем ключ -d.

Спасибо, Евгений! Вы настоящий мастер!
Странным образом после перезагрузки ПК ярлык контроллера самовосстановился в трее.
Есть ещё вопрос: как в ТРАССИРОВКе вывести параметры каждый на своём поле (ось Х общая, а У - у каждого своя)? V3.5.17 3

Евгений Кислов
08.02.2023, 11:03
Спасибо, Евгений! Вы настоящий мастер!
Странным образом после перезагрузки ПК ярлык контроллера самовосстановился в трее.
Есть ещё вопрос: как в ТРАССИРОВКе вывести параметры каждый на своём поле (ось Х общая, а У - у каждого своя)? V3.5.17 3

Пожалуйста.)
Конфигурация трассировки - Отображение - Ось Y - Добавить ось Y.
В настройках переменной трассировки выберите нужную ось.

65770

Serg52
08.02.2023, 11:44
Пожалуйста.)
Конфигурация трассировки - Отображение - Ось Y - Добавить ось Y.
В настройках переменной трассировки выберите нужную ось.

65770

Это я уже делал, получалось. Хочется, чтобы эти оси были одна над другой. И ещё, не получается просмотреть "спрятавшиеся уже" события.

Евгений Кислов
08.02.2023, 12:05
Это я уже делал, получалось. Хочется, чтобы эти оси были одна над другой. И ещё, не получается просмотреть "спрятавшиеся уже" события.

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

Эдуард_Н
08.02.2023, 13:42
На вашем скриншоте - замените OwenWatchdog на OwenTypes.
Добавьте в проекте библиотеку OwenTypes.
После этого ошибка исчезнет.

Большое спасибо.

Эдуард_Н
08.02.2023, 13:57
теперь можно два модема добавлять?

Евгений Кислов
08.02.2023, 14:22
теперь можно два модема добавлять?

Да, можно.

Teinrus
08.02.2023, 17:05
Добрый день.
1. Попробуйте сначала команду из терминала Linux выполнить и посмотрите, что будет в ответе.
2. Вы ошибаетесь, такой файл там есть (я только что еще раз это проверил). Возможно, вы случайно его удалили.

Да файлик я все таки нашёл, спасибо большое. Вопрос следующего характера а нужно ли в нем прописывать host если мы его указываем в визуализации тестового проекта?

Евгений Кислов
08.02.2023, 17:10
Да файлик я все таки нашёл, спасибо большое. Вопрос следующего характера а нужно ли в нем прописывать host если мы его указываем в визуализации тестового проекта?

Файл касается исключительно Ms SQL.
Для него нужно прописывать, потому что в команде отдается название секции хоста в файле.
Возможно, можно прямо в команде как-то отдавать IP хоста и остальные настройки, но в момент изучения вопроса у меня за разумное время не получилось найти такого варианта - поэтому в примере рассмотрено использование файла конфигурации.

DmitriiAnyushin
09.02.2023, 14:56
Здравствуйте! Среда разработки Codesys 3.5 SP17. Панели СПК107 (v14 и v17). На реальном оборудовании проект работает, но если я загружаю его в эмулятор, то проект переходит в STOP и на нижней панели красным мигает - программа загружена - исключение. В журнале сообщение "sourceposition*app=sim.device.application]. Подскажите пожалуйста, в чем может быть проблема? Спасибо!
65810

Евгений Кислов
09.02.2023, 15:00
Здравствуйте! Среда разработки Codesys 3.5 SP17. Панели СПК107 (v14 и v17). На реальном оборудовании проект работает, но если я загружаю его в эмулятор, то проект переходит в STOP и на нижней панели красным мигает - программа загружена - исключение. В журнале сообщение "sourceposition*app=sim.device.application]. Подскажите пожалуйста, в чем может быть проблема? Спасибо!
65810

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

DmitriiAnyushin
09.02.2023, 15:07
А у симулятора есть ограничения? А этот функционал как-нибудь можно узнать (это настройки самого проекта или код)? В некоторых проектах просто симуляция запускается, хотя различий как таковых в проектах нет (codesys ругается на действие, я все содержимое действия коментил, но проблема не ушла)

Евгений Кислов
09.02.2023, 15:24
А у симулятора есть ограничения? А этот функционал как-нибудь можно узнать (это настройки самого проекта или код)? В некоторых проектах просто симуляция запускается, хотя различий как таковых в проектах нет (codesys ругается на действие, я все содержимое действия коментил, но проблема не ушла)

Да, есть ограничения. Лучше использовать виртуальный контроллер.
https://youtu.be/RgtfIOgKwTY

Teinrus
09.02.2023, 15:49
Файл касается исключительно Ms SQL.
Для него нужно прописывать, потому что в команде отдается название секции хоста в файле.
Возможно, можно прямо в команде как-то отдавать IP хоста и остальные настройки, но в момент изучения вопроса у меня за разумное время не получилось найти такого варианта - поэтому в примере рассмотрено использование файла конфигурации.

Подскажите может можно получить более подробную информацию? или связаться со службой поддержки по этому поводу?

Евгений Кислов
09.02.2023, 15:55
Подскажите может можно получить более подробную информацию? или связаться со службой поддержки по этому поводу?

Можете мне в скайп написать - ссылка в подписи.

DmitriiAnyushin
10.02.2023, 11:07
Да, есть ограничения. Лучше использовать виртуальный контроллер.
https://youtu.be/RgtfIOgKwTY

Пытаюсь подключиться к виртуальному контроллеру. Делаю все по видеоинструкции (по текстовой тоже пытался). На первом этапе контроллер (имя ноутбука) он видит, то как только я хочу подключиться, то Codesys выдает окно логирования. Вводил и Owner без пароля, и нового созданного пользователя, и системного пользователя, но каждый раз появляется ошибка что никакое устройство не отвечает на запрос поиска. Подскажите пожалуйста, в чем может быть проблема? Спасибо!
65824
65825
65826

Евгений Кислов
10.02.2023, 11:17
Пытаюсь подключиться к виртуальному контроллеру. Делаю все по видеоинструкции (по текстовой тоже пытался). На первом этапе контроллер (имя ноутбука) он видит, то как только я хочу подключиться, то Codesys выдает окно логирования. Вводил и Owner без пароля, и нового созданного пользователя, и системного пользователя, но каждый раз появляется ошибка что никакое устройство не отвечает на запрос поиска. Подскажите пожалуйста, в чем может быть проблема? Спасибо!
65824
65825
65826

А как вы смогли создать пользователя, если у вас не получается подключиться?
Что такое "системный пользователь"?
Пробовали Administrator/Administrator?

DmitriiAnyushin
10.02.2023, 11:26
А как вы смогли создать пользователя, если у вас не получается подключиться?
Что такое "системный пользователь"?
Пробовали Administrator/Administrator?

Ну я пользователя в проекте создал (Owner без пароля для создания новых пользователей работает)
Системный пользователь, я имел ввиду пользователя windows
Да пробовал. Я на форуме находил вопрос, что выскакивает окно логирования и не подключается к контроллеру, но там речь шла о реальном контроллере, а не виртуальном (к реальному СПК у меня ноут подключается)

Я просто никогда раньше не пользовался виртуальным контроллером. Там в настройках никаких разрешений давать не надо?

Евгений Кислов
10.02.2023, 11:32
Ну я пользователя в проекте создал (Owner без пароля для создания новых пользователей работает)
Системный пользователь, я имел ввиду пользователя windows
Да пробовал. Я на форуме находил вопрос, что выскакивает окно логирования и не подключается к контроллеру, но там речь шла о реальном контроллере, а не виртуальном (к реальному СПК у меня ноут подключается)

Я просто никогда раньше не пользовался виртуальным контроллером. Там в настройках никаких разрешений давать не надо?

Нет, не надо. И пользователи не возникают сами по себе - они всегда кем-то создаются.
Тогда:
Попробуйте в папке C:\ProgramData\CODESYS\CODESYSControlWinV3\<какие-то символы>\ удалить все файлы формата .csv.

DenisV
10.02.2023, 14:57
Здравствуйте, решил попробовать использовать библиотеку Owen Communication для настройки ПЛК210 в качестве Modbus Slave устройства и столкнулся с непривычным для себя поведением. Например, у меня есть INPUT_REGISTER с адресом 0 и HOLDING_REGISTER c адресом 0, каждый содержит переменную типа real, при использовании стандартного шаблона это будут два разных real-а, один который можно просто прочитать, второй прочитать/записать при этом при записи HOLDING_REGISTER-а, INPUT_REGISTER не изменится. Теперь не совсем понятно как добиться аналогично поведения при использовании Owen Communication, если я, например, создам два экземпляра функционального блока MB_TcpSlave и подам в них разные массивы данных, то при записи HOLDING_REGISTER_а будет меняться INPUT_REGISTER, в соответствии с этим вопрос как добиться аналогичного с шаблоном поведения? То есть иными словами, если я правильно понял, то отключить в библиотеке наложение области данных?

DmitriiAnyushin
10.02.2023, 15:04
Нет, не надо. И пользователи не возникают сами по себе - они всегда кем-то создаются.
Тогда:
Попробуйте в папке C:\ProgramData\CODESYS\CODESYSControlWinV3\<какие-то символы>\ удалить все файлы формата .csv.

Да, когда удалил все csv в данной папке, всё загрузилось. Спасибо!
Только вот проблема из-за которой я с эмулятора на виртуальный ПЛК решил перейти не решилась - контроллер так же уходит в стоп (и порт по библиотеке ComService перестал открываться). Выяснил, что эмулятор (и виртуальный контроллер) ругаются на методы (M) и действия (A) в некоторых FB (даже если удалить из них весь код). Причём реальный СПК их выполняет как надо. Когда заменил методы и действия на обычные FUN программа на эмуляторе заработала как надо (на реальном СПК думаю проблем тоже не возникнет).
Подскажите, есть ли какие-либо ограничения в использовании действий и методов? (все проекты конвертировал из Codesys SP16 в Codesys SP17 с обновлением всех компонентов (в связи с выходом новых СПК). На Codesys SP16 таких проблем не возникало

Евгений Кислов
10.02.2023, 16:20
Да, когда удалил все csv в данной папке, всё загрузилось. Спасибо!
Только вот проблема из-за которой я с эмулятора на виртуальный ПЛК решил перейти не решилась - контроллер так же уходит в стоп (и порт по библиотеке ComService перестал открываться). Выяснил, что эмулятор (и виртуальный контроллер) ругаются на методы (M) и действия (A) в некоторых FB (даже если удалить из них весь код). Причём реальный СПК их выполняет как надо. Когда заменил методы и действия на обычные FUN программа на эмуляторе заработала как надо (на реальном СПК думаю проблем тоже не возникнет).
Подскажите, есть ли какие-либо ограничения в использовании действий и методов? (все проекты конвертировал из Codesys SP16 в Codesys SP17 с обновлением всех компонентов (в связи с выходом новых СПК). На Codesys SP16 таких проблем не возникало

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

Что касается ComService - то при запуске на виртуальном контроллере нужно было указать номер виртуального COM-порта ПК.
Вообще, это устаревшая библиотека - рекомендую вместо нее использовать ФБ COM_Control из библиотеки OwenCommunication.

Евгений Кислов
10.02.2023, 16:23
Здравствуйте, решил попробовать использовать библиотеку Owen Communication для настройки ПЛК210 в качестве Modbus Slave устройства и столкнулся с непривычным для себя поведением. Например, у меня есть INPUT_REGISTER с адресом 0 и HOLDING_REGISTER c адресом 0, каждый содержит переменную типа real, при использовании стандартного шаблона это будут два разных real-а, один который можно просто прочитать, второй прочитать/записать при этом при записи HOLDING_REGISTER-а, INPUT_REGISTER не изменится. Теперь не совсем понятно как добиться аналогично поведения при использовании Owen Communication, если я, например, создам два экземпляра функционального блока MB_TcpSlave и подам в них разные массивы данных, то при записи HOLDING_REGISTER_а будет меняться INPUT_REGISTER, в соответствии с этим вопрос как добиться аналогичного с шаблоном поведения? То есть иными словами, если я правильно понял, то отключить в библиотеке наложение области данных?

Добрый день.
В рамках библиотеки мы осознанно реализовали модель памяти с наложением всех областей Modbus друг на друга.
Т.е. у нас все регистры сразу и HOLDING (доступны для чтения функцией 0x03 и записи функциями 0x06/0x10) и INPUT (доступны для чтения функцией 0x03).
Если вам нужно, чтобы некоторые регистры были доступны только для чтения - то это можно сделать через запрет запросов (ForbiddenRequests).
Подробнее см. в документации.

beatitas
11.02.2023, 16:12
Добрый день.
Какой именно модуль вы опрашиваете? МВ210-101?
По-моему, проще использовать готовую функцию ANALOG_SENSOR_ERROR_TO_WSTRING из библиотеки Mx210 Assistant - она заменит большую часть кода на скриншоте.

Евгений, по Вашему совету все заработало. Но появился другой вопрос - можно ли получать и текст и код ошибки.
Задача в том, что когда вход не равен "0" (NO_ERRORS) - у меня происходит запись сообщения в переменную для телеграмма. И отправляется.
Получается, если я использую тип переменной - Mx210Assistant.ANALOG_SENSOR_ERRORS; - на выходе будет текст.
Если тип REAL, то он одаст число - код ошибки.
И его надо сравнивать с текстом-константой NO_ERRORS или можно как то получить его числом - "0" и использовать блок EQ?

Евгений Кислов
11.02.2023, 16:17
Если тип REAL, то он одаст число - код ошибки.

"Он" - это кто? Покажите скриншотом, что именно у вас происходит.

beatitas
11.02.2023, 16:40
"Он" - это кто? Покажите скриншотом, что именно у вас происходит.

По Вашему совету присвоил тип переменной:

65845

назначил её входу:

65844

А функцию хотел реализовать такую:

65846

То есть, как только значение входа меняется с 0 (NO_ERRORS) на любое другое - происходит отправка сообщения.

И теперь не понимаю как правильно - преобразовать NO_ERRORS в 0 и сравнивать уже нулём или можно получить числовое значение со входа одновременно с текстовым?

Евгений Кислов
11.02.2023, 16:43
И теперь не понимаю как правильно - преобразовать NO_ERRORS в 0 и сравнивать уже нулём или можно получить числовое значение со входа одновременно с текстовым?

NO_ERROR - это просто символьное представление значения "0".
Можете оставить, как у вас есть сейчас, но для повышения читабельности - лучше заменить 0 на Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERROR.

beatitas
12.02.2023, 12:32
NO_ERRORS - это просто символьное представление значения "0".
Можете оставить, как у вас есть сейчас, но для повышения читабельности - лучше заменить 0 на Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERRORS.

Евгений, спасибо. действительно с 0 работает. но вот Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERRORS куда только не вписывал - так и не заработало. и как тип переменной и как саму переменную с которой сравниваем. компилятор ругается.

Не могу разобраться почему в одном месте не работает блок AND. Ни в симуляторе ни в железе. В остальных местах кода работаеют нормально. Даже пробовал ставить блинк между переменной и блоком AND (типа аналог Sample&Hold) на 1 секунду. всё равно на выходе блока не появляется TRUE

65854

Поздравляю с наступающим 10 000)

Евгений Кислов
12.02.2023, 12:48
но вот Mx210Assistant.ANALOG_SENSOR_ERRORS.NO_ERRORS куда только не вписывал - так и не заработало. и как тип переменной и как саму переменную с которой сравниваем. компилятор ругается.

Мы с вами немного ошиблись - код ошибки называется NO_ERROR (без S на конец).

Вот пример (eAiStatus имеет тип Mx210Assistant.ANALOG_SENSOR_ERRORS):

65861


Теперь не могу понять почему эта конструкция не работает. И в симуляторе и на железе. При этом в других местах кода блоки AND работают как и должны. Пробовал даже блинк в симуляторе добавлять, чтобы каждую секунду слал - не работает.

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


Поздравляю с наступающим 10 000)

Спасибо. =)

beatitas
12.02.2023, 13:13
Мы с вами немного ошиблись - код ошибки называется NO_ERROR (без S на конец).
По скрину складывается ощущение, что этот фрагмент кода у вас не вызывается (например, он добавлен в программу, не привязанную к задачу).
Выложите, пожалуйста, простейший проект, в котором я смогу это повторить - тогда смогу назвать точную причину.


Надеюсь правильно упаковал в архив. Этот блок находится в POU poolMain. Программа вызывается через таск менеджер. Более того она работает сейчас на реальном контроллере. А вот когда у нас пропадает сигнал на poolFlowStatus - PoolCommonAlarm должна уйти в 1 и остановить всё. Но ничего не останавливается в железе.


https://www.icloud.com/iclouddrive/07f5yMjkkNsHsV4d1mQULoDTw#test%D0%9F%D0%9B%D0%9A20 0

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

Евгений Кислов
12.02.2023, 13:33
Надеюсь правильно упаковал в архив. Этот блок находится в POU poolMain. Программа вызывается через таск менеджер. Более того она работает сейчас на реальном контроллере. А вот когда у нас пропадает сигнал на poolFlowStatus - PoolCommonAlarm должна уйти в 1 и остановить всё. Но ничего не останавливается в железе.


https://www.icloud.com/iclouddrive/07f5yMjkkNsHsV4d1mQULoDTw#test%D0%9F%D0%9B%D0%9A20 0

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

На самом деле - и здесь блок AND работает, как ожидалось.
Это можно определить, выполнив команду Отладка - Переключить режим контроля выполнения.

Тогда станет видно, что на самом деле в момент выполнения данного блока AND poolCirculationPumpsEnable равен FALSE.
И это логично - ведь прямо чуть выше на него заведен выход F_TRIG_0, который как раз равен FALSE.

65858

На вашем скриншоте в посте выше вы видите, что poolCirculationPumpsEnable равен TRUE потому, что он равен этому значению в конце рабочего цикла, так как далее в программе ему действительно присваивается TRUE:

65859

То есть - фактически каждый цикл задачи в poolCirculationPumpsEnable генерируется единичный импульс.
Но таймеру недостаточно импульса - таймеру нужно, чтобы TRUE на входе IN удерживалось в течение всей его работы.

Вам нужно перестроить логику своей программы с учетом всего вышесказанного.

ADS
13.02.2023, 14:39
Здравствуйте. Подскажите пожалуйста способ решения проблемы. Хочу сделать проект под СПК207. Установил необходимые таргеты, но почему-то пишет, что отсутствуют необходимые библиотеки, если посмотреть через менеджер библиотек в проекте. Подскажите пожалуйста способ вылечить. Картинки прилагаю.658776587865879

glazastik
13.02.2023, 14:44
VPN поставьте и всё скачается,
из-за санкций блокируют РФ

Евгений Кислов
13.02.2023, 16:04
Здравствуйте. Подскажите пожалуйста способ решения проблемы. Хочу сделать проект под СПК207. Установил необходимые таргеты, но почему-то пишет, что отсутствуют необходимые библиотеки, если посмотреть через менеджер библиотек в проекте. Подскажите пожалуйста способ вылечить. Картинки прилагаю.658776587865879

Добрый день.
Установите архив репозитория (ссылка в подписи) и эту библиотеку:
https://ftp.owen.ru/CoDeSys3/04_Library/02_Manual_installation/07_CmpSysExec/1.0.0.2/CmpSysExec_1.0.0.2.compiled-library

Teinrus
13.02.2023, 18:47
Доброго времени суток. Подскажите а есть ли библиотека для работы со временем? Суть в том что есть две переменные котовые в себе хранят дату и время необходимо найти разницу меджу ними, и при этом учитывать день.

Евгений Кислов
13.02.2023, 19:38
Доброго времени суток. Подскажите а есть ли библиотека для работы со временем? Суть в том что есть две переменные котовые в себе хранят дату и время необходимо найти разницу меджу ними, и при этом учитывать день.

Добрый день.
Начиная с CODESYS V3.5 SP17 в библиотеку Util добавлена соответствующая функция:
https://content.helpme-codesys.com/en/libs/Util/Current/TimerSwitch/Functions/GetTimeStampsDifference.html

ВладОвен
14.02.2023, 17:54
Привет.
Не могу понять почему логика CFC работает именно так.
См. рисунок.

65920

Когда шаговый автомат равняется 70, то запускается блок получения значений из целевого устройства. Этот процесс может дать ошибку или зависнуть.
Поэтому существует обводной таймер для выхода из тупика.
На рисунке именно таймер и помог системе не зависнуть. Основной же блок отработал, но выдал результат с ошибкой.
Шаговый автомат перешел на шаг 80.

Вопрос.
А почему линия осталась синего цвета? Сравнение 80 и 70 должно было дать результат FALSE.
Но этого стабильно долго не происходит.

Почему?

Евгений Кислов
14.02.2023, 18:20
По одному скриншоту с куском POU без какого-либо контекста - нельзя дать однозначный ответ.
Сделайте простейший проект, в котором это получится повторить, и выложите сюда - посмотрим, в чём дело.

Солнечный заяц
15.02.2023, 10:40
здравствуйте, spk1xxm01 v2.4.0923.1000 неожиданно потребовал создать пользователей.
65935
Среда разработки, ПК, сама панель не менялись. Откат настроек панели до заводских и загрузка старого проекта (когда не возникало такого окна) не дает результата: пользователей все равно нужно создавать. Ума не приложу, что произошло.
ПС CDS 35 sp17 p3

Евгений Кислов
15.02.2023, 10:43
здравствуйте, spk1xxm01 v2.4.0923.1000 неожиданно потребовал создать пользователей.
65935
Среда разработки, ПК, сама панель не менялись. Откат настроек панели до заводских и загрузка старого проекта (когда не возникало такого окна) не дает результата: пользователей все равно нужно создавать. Ума не приложу, что произошло.
ПС CDS 35 sp17 p3

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

Солнечный заяц
15.02.2023, 11:03
Добрый день.
У вас повредился конфиг-файл в памяти контроллера.
Такое, например, может произойти при разрыве связи во время загрузки проекта или если после загрузки проекта сразу снять питание с контроллера.
Простейший способ решения проблемы - перепрошить контроллер на ту же версию прошивки, что в нем сейчас, со сбросом настроек.

Спасибо за быстрый ответ!
Т.е. при прошивке на ту же версию, можно использовать веб-конфигуратор, просто установить галочку "сброс настроек"?

Евгений Кислов
15.02.2023, 11:05
Спасибо за быстрый ответ!
Т.е. при прошивке на ту же версию, можно использовать веб-конфигуратор, просто установить галочку "сброс настроек"?

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

Kotenko
15.02.2023, 13:42
Добрый день, не нашел более подходящей темы для моего вопроса. На CDS 3-16 хочу виртуальный контроллер (Control Win) связать с онлайн симуляцией EasyBuilderPro или еще как с проектом для HMI. Но пока пишет нет связи с ПЛК, прикладываю фото настроек. 6594765948

Евгений Кислов
15.02.2023, 13:45
Добрый день, не нашел более подходящей темы для моего вопроса. На CDS 3-16 хочу виртуальный контроллер (Control Win) связать с онлайн симуляцией EasyBuilderPro или еще как с проектом для HMI. Но пока пишет нет связи с ПЛК, прикладываю фото настроек. 6594765948

Добрый день.
Порт надо было оставить 1740.
P.S. - привет Борису!

Kotenko
15.02.2023, 13:57
Спасибо, заработало!
п.с. передал:)

ВладОвен
15.02.2023, 15:08
Привет.
Хочу быстро очистить все поля структуры.
Делаю так:

MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=33, byFillValue:=0);

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

capzap
15.02.2023, 15:14
Привет.
Хочу быстро очистить все поля структуры.
Делаю так:

MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=33, byFillValue:=0);

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

Евгений Кислов
15.02.2023, 15:28
Привет.
Хочу быстро очистить все поля структуры.
Делаю так:

MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=33, byFillValue:=0);

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



MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=SIZEOF(stStruct), byFillValue:=0);

ВладОвен
15.02.2023, 15:54
Спасибо за ответы.

ВладОвен
15.02.2023, 17:31
Привет.
Не могу понять почему логика CFC работает именно так.
См. рисунок.

65920



Евгений, а может это быть связано с тем, что функциональный блок устанавливает флаг xDone навсегда, а не на один цикл ПЛК?
Я смотрел стандартные блоки из библиотек (например, открытие порта). И там установка флага идет только на один цикл ПЛК.
Может и тут нужно установить это?

Евгений Кислов
15.02.2023, 17:34
Евгений, а может это быть связано с тем, что функциональный блок устанавливает флаг xDone навсегда, а не на один цикл ПЛК?
Я смотрел стандартные блоки из библиотек (например, открытие порта). И там установка флага идет только на один цикл ПЛК.
Может и тут нужно установить это?

https://owen.ru/forum/showthread.php?t=20069&p=401227&viewfull=1#post401227

ВладОвен
16.02.2023, 13:40
https://owen.ru/forum/showthread.php?t=20069&p=401227&viewfull=1#post401227

Вот пробный проект.
Код на CFC работает неправильно.
Код на ST работает правильно.

Евгений Кислов
16.02.2023, 13:45
Вот пробный проект.
Код на CFC работает неправильно.
Код на ST работает правильно.

Куда мне в нем нужно смотреть, чтобы увидеть, что "код на CFC работает неправильно"?

ВладОвен
16.02.2023, 14:02
Куда мне в нем нужно смотреть, чтобы увидеть, что "код на CFC работает неправильно"?

В этом проекте два POU. Один написан на CFC, второй на ST.
В обоих POU реализован одинаковый шаговый автомат CASE.

Алгоритм такой:

Шаг1. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
Шаг2. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
Шаг3. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
Шаг4. Увеличивается счетчик циклов на 1. И перевод указателя автомата на шаг 1.

Получается, что счетчик циклов должен увеличиваться на 1 за 3 секунды.

Но в POU на CFC это не так. Там счетчик циклов бежит существеннее быстрее.
А в POU на ST отрабатывает правильно.

Почему так?

ВладОвен
16.02.2023, 14:14
Евгений. Я разорался....
Спасибо за помощь. Не ломайте голову.
Сейчас напишу что было не так...

Код, который ловит спад состояния флага xExecute работал неправильно. И не переводил по спаду функциональный блок в исходное состояние. А из-за этого флаг xDone оставался поднятым. Поэтому автомат работал некорректно.

В функциональном блоке functionBlock (исправленный правильный код):


// Логика xExecute
IF xExecute AND NOT xExecuteTrig THEN // Передний фронт xExecute
// Сброс в исходное состояние и запуск
xDone := FALSE;
statusFB := 010;
ELSIF NOT xExecute AND xExecuteTrig THEN // Задний фронт xExecute
// Сброс в исходное состояние и остановка
xDone := FALSE;
statusFB := 000;
END_IF
xExecuteTrig := xExecute;

capzap
16.02.2023, 14:41
Евгений. Я разорался....

меньше кода - меньше ошибок


xDone := FALSE;
IF xExecute XOR xExecuteTrig THEN
statusFB := 10 * BOOL_TO_BYTE(xExecute);
END_IF
xExecuteTrig := xExecute;

ВладОвен
16.02.2023, 15:08
capzap (https://owen.ru/forum/member.php?u=10755) https://owen.ru/forum/images/statusicon/user-online.png, получается в вашем коде xDone будет установлен только один цикл ПЛК?

capzap
16.02.2023, 15:26
capzap (https://owen.ru/forum/member.php?u=10755) https://owen.ru/forum/images/statusicon/user-online.png, получается в вашем коде xDone будет установлен только один цикл ПЛК?

Вы разве как то по другому используете этот ФБ?

ResИлья
17.02.2023, 18:53
Добрый день, подскажите почему CODESYS Control Win V3 не запускается.
Нажимая на кнопку Start PLC не происходит запуска 65991
Появляется окошко 65992
Настройки пользователей при этом не активны 65993
В чём может быть проблема?

Евгений Кислов
17.02.2023, 18:56
Добрый день, подскажите почему CODESYS Control Win V3 не запускается.
Нажимая на кнопку Start PLC не происходит запуска 65991
Появляется окошко 65992
Настройки пользователей при этом не активны 65993
В чём может быть проблема?

Добрый день.
Просто нажмите в этом окошке Ок.
Создавать пользователя не обязательно.

SemAndr
18.02.2023, 17:14
Последовательно установил Codesys от версии SP14 до версии SP17. Сейчас создал проект в последней версии. Пока что контроллера нет в наличии, хотел запуститься на виртуальном контроллере. А у него почему-то версия таргета 3.5.10.10. В проекте, соответственно, таргет ставлю 3.5.17.30. При попытке подключения появляется ошибка, что версии таргетов не соответствуют. Нигде не могу найти, как поменять таргет у виртуального контроллера. Подскажите, как это делается, пожалуйста.

Евгений Кислов
18.02.2023, 17:26
Последовательно установил Codesys от версии SP14 до версии SP17. Сейчас создал проект в последней версии. Пока что контроллера нет в наличии, хотел запуститься на виртуальном контроллере. А у него почему-то версия таргета 3.5.10.10. В проекте, соответственно, таргет ставлю 3.5.17.30. При попытке подключения появляется ошибка, что версии таргетов не соответствуют. Нигде не могу найти, как поменять таргет у виртуального контроллера. Подскажите, как это делается, пожалуйста.

Добрый день.
Правой кнопкой на узел Device в дереве проекта - Обновить устройство.
Если в списке не будет доступна версия таргета виртуального контроллера 3.5.17.30 - то он почему-то не установился вместе с новой версией CODESYS (по умолчанию - должен устанавливаться).
В этом случае рекомендую переустановить CODESYS.

SemAndr
18.02.2023, 17:38
660016600266003

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

SemAndr
18.02.2023, 19:42
Попробовал в переустановку программы. Таргет виртуального контроллера теперь обновился, но появилась другая проблема. Теперь при установке появляются ошибки при установке. Не может установить какие-то дополнения в пакете установщика. Пробовал разные варианты - пока ничего не получилось. Можно эти пакеты установить дополнительно? Или как-то убрать с компьютера информацию об установке программы, чтобы поставить ее с чистого листа? Не хочется ось переустанавливать для этого.66010660116601266013

Евгений Кислов
18.02.2023, 19:47
Попробовал в переустановку программы. Таргет виртуального контроллера теперь обновился, но появилась другая проблема. Теперь при установке появляются ошибки при установке. Не может установить какие-то дополнения в пакете установщика. Пробовал разные варианты - пока ничего не получилось. Можно эти пакеты установить дополнительно? Или как-то убрать с компьютера информацию об установке программы, чтобы поставить ее с чистого листа? Не хочется ось переустанавливать для этого.66010660116601266013

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

SemAndr
19.02.2023, 07:07
Получилось. Спасибо!

Эдуард_Н
19.02.2023, 10:22
Подскажите почему в CODESYS V3.5 SP17 Patch 3 в вашем примере из видео в "Visualization Manager" есть пункт "поддержка клиентских анимаций и наложение сходных элементов", у меня в проекте этого пункта нет? Переустанавливать CODESYS V3.5 SP17 Patch 3 пробовал.

Евгений Кислов
19.02.2023, 10:23
Подскажите почему в CODESYS V3.5 SP17 Patch 3 в вашем примере из видео в "Visualization Manager" есть пункт "поддержка клиентских анимаций и наложение сходных элементов", у меня в проекте этого пункта нет? Переустанавливать CODESYS V3.5 SP17 Patch 3 пробовал.

Вероятно, вы используете СПК - на нем эта технология не поддерживается.

Эдуард_Н
19.02.2023, 10:29
Вероятно, вы используете СПК - на нем эта технология не поддерживается.

Точно так, а я то размечтался.

Эдуард_Н
19.02.2023, 16:40
в примере требует вот это 66018, где это настраивается и как?

Евгений Кислов
19.02.2023, 16:41
в примере требует вот это 66018, где это настраивается и как?

В каком именно примере?
Что именно вы хотите сделать?

Эдуард_Н
19.02.2023, 16:50
В каком именно примере?
Что именно вы хотите сделать?
Просто запустить, пример отсюда https://www.youtube.com/watch?v=3KcJWZEVXCg

Евгений Кислов
19.02.2023, 16:57
Просто запустить, пример отсюда https://www.youtube.com/watch?v=3KcJWZEVXCg

По ссылке нет какого-то примера, там просто демонстрируется установка новой версии CODESYS.
Что именно вы хотите сделать?

Эдуард_Н
19.02.2023, 17:06
По ссылке нет какого-то примера, там просто демонстрируется установка новой версии CODESYS.
Что именно вы хотите сделать?
Извините нето кинул, https://www.youtube.com/watch?v=RLnvs60t-jE&t=1324s
Просто хочу запустить на компе, а он спрашивает пароль.

Евгений Кислов
19.02.2023, 17:20
Извините нето кинул, https://www.youtube.com/watch?v=RLnvs60t-jE&t=1324s
Просто хочу запустить на компе, а он спрашивает пароль.

Значит, предварительно кто-то этот пароль установил.
Как его сбросить - описано здесь:
https://owen.ru/forum/showthread.php?t=28167&p=401060&viewfull=1#post401060

Эдуард_Н
19.02.2023, 17:43
Значит, предварительно кто-то этот пароль установил.
Как его сбросить - описано здесь:
https://owen.ru/forum/showthread.php?t=28167&p=401060&viewfull=1#post401060

Теперь просит его создать. 6602166023. Где-то есть почитать за эти пароли?

Евгений Кислов
19.02.2023, 18:03
Теперь просит его создать. 6602166023. Где-то есть почитать за эти пароли?

Стр. 15:
https://ftp.owen.ru/CoDeSys3/99_ForumFiles/CODESYS_V3.5_SP17_features_forum.pdf

Эдуард_Н
19.02.2023, 18:33
Стр. 15:
https://ftp.owen.ru/CoDeSys3/99_ForumFiles/CODESYS_V3.5_SP17_features_forum.pdf

Спасибо большое!!!

ResИлья
20.02.2023, 09:55
Добрый день.
Просто нажмите в этом окошке Ок.
Создавать пользователя не обязательно.

После того как нажимаю ОК ничего не происходит, Control Win не запускается.

Евгений Кислов
20.02.2023, 10:42
После того как нажимаю ОК ничего не происходит, Control Win не запускается.

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

Эдуард_Н
21.02.2023, 06:15
Подскажите, что это :66074?

Евгений Кислов
21.02.2023, 06:33
Подскажите, что это :66074?

Это индикатор unbound-плейсхолдера (https://content.helpme-codesys.com/en/LibDevSummary/reuse.html).
Общий смысл - такие библиотеки не имеют явной зависимости от таргет-файла и версии компилятора.

Newcomer
21.02.2023, 14:21
Добрый день

Можно ли CODESYS V3.5 SP14 Patch 3 обновить до CODESYS V3.5 SP17 Patch 3 или CODESYS V3.5 SP14 Patch 3 надо удалить, а потом ставить CODESYS V3.5 SP17 Patch 3 ?

Евгений Кислов
21.02.2023, 14:23
Добрый день

Можно ли CODESYS V3.5 SP14 Patch 3 обновить до CODESYS V3.5 SP17 Patch 3 или CODESYS V3.5 SP14 Patch 3 надо удалить, а потом ставить CODESYS V3.5 SP17 Patch 3 ?

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

Newcomer
21.02.2023, 14:26
Добрый день.
Версии CODESYS устанавливаются независимо.
Не удаляйте CODESYS V3.5 SP14 Patch 3 и установите CODESYS V3.5 SP17 Patch 3 в отдельную директорию в точности по инструкции:
https://youtu.be/3KcJWZEVXCg

А почему не рекомендуется удалять CODESYS V3.5 SP14 Patch 3 ? У меня места на диске маловато для установки CODESYS V3.5 SP17 Patch 3.

Newcomer
21.02.2023, 14:28
CODESYS V3.5 SP17 Patch 3 на ПК с Windows 7 установить нельзя ?

Cs-Cs
21.02.2023, 15:19
CODESYS V3.5 SP17 Patch 3 на ПК с Windows 7 установить нельзя ?
Нет! Поэтому я в бюджет следующего заказа-щита закладываю новый комп =/

Эдуард_Н
22.02.2023, 04:18
Нужно ли устанавливать в CODESYS V3.5 SP17 Patch 3 все те обновления (онлайн) которые показаны в инсталлере?

Евгений Кислов
22.02.2023, 06:18
Нужно ли устанавливать в CODESYS V3.5 SP17 Patch 3 все те обновления (онлайн) которые показаны в инсталлере?

На ваше усмотрение.

Эдуард_Н
22.02.2023, 13:10
На ваше усмотрение.

СПК не будет хандрить?

DenisV
22.02.2023, 13:13
На ваше усмотрение.

А я вот заметил, что какие-то обновления влияют на возможность открытия проекта с предыдущими плагинами, а какие-то нет. То есть в одном случае будет предложено обновить плагины в проекте, а в другом Codesys будет считать, что проект сделан в другом окружении. Можно ли как-то заранее определить какое будет поведение проекта до установки плагина?

Евгений Кислов
22.02.2023, 13:17
А я вот заметил, что какие-то обновления влияют на возможность открытия проекта с предыдущими плагинами, а какие-то нет, можно ли как-то заранее определить какое будет поведение проекта до установки плагина?

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

Эдуард_Н
22.02.2023, 17:53
СПК поддерживают сейчас CODESYS Visualization 4.2.0.0 и CODESYS Visualization 4.3.0.0 ?

Евгений Кислов
22.02.2023, 18:02
СПК поддерживают сейчас CODESYS Visualization 4.2.0.0 и CODESYS Visualization 4.4.0.0?

Вы, видимо, имели в виду 4.3.0.0, так как 4.4.0.0 еще не вышел.
Корректный ответ следующий - в СПК сейчас система исполнения 3.5.17.30.
Соответственно, тот функционал плагинов, который не требует более высокой версии системы исполнения - будет работать.
Остальной функционал - не будет.

У пользователя есть две модели поведения:

1. использовать версию плагина, которая входит в дистрибутив CODESYS V3.5 SP17 Patch 3 (4.1.1.0). Это штатная для нас версия плагина, которую мы используем давно и знаем все ее нюансы. Техподдержка мгновенно откроет проект с этой версией плагина и оперативно предоставит вам комментарии по вашему вопросу.
2. использовать более новую версию плагина (4.2.0.0 и выше). В таком случае пользователь должен:

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

Эдуард_Н
22.02.2023, 18:08
Вы, видимо, имели в виду 4.3.0.0, так как 4.4.0.0 еще не вышел.
Корректный ответ следующий - в СПК сейчас система исполнения 3.5.17.30.
Соответственно, тот функционал плагинов, который не требует более высокой версии системы исполнения - будет работать.
Остальной функционал - не будет.

У пользователя есть две модели поведения:

1. использовать версию плагина, которая входит в дистрибутив CODESYS V3.5 SP17 Patch 3 (4.1.1.0). Это штатная для нас версия плагина, которую мы используем давно и знаем все ее нюансы. Техподдержка мгновенно откроет проект с этой версией плагина и оперативно предоставит вам комментарии по вашему вопросу.
2. использовать более новую версию плагина (4.2.0.0 и выше). В таком случае пользователь должен:

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


Спасибо, всё так как я и думал.

Newcomer
23.02.2023, 21:18
Добрый день

Пытаюсь установить на ноутбук с Windows 10 CODESYS V3.5 SP17 Patch 3. Установка начинается, доходит до места (см.картинку) и дальше не идет. Все делал как в видео. В чем причина ?

При установке на рабочем столе появляется 1 иконка. Если щелкнуть по ней 2 раза, то начинается запуск программы, но выскакивает сообшение.

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

Пытаюсь установить на ноутбук с Windows 10 CODESYS V3.5 SP17 Patch 3. Установка начинается, доходит до места (см.картинку) и дальше не идет. Все делал как в видео. В чем причина ?

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

Newcomer
23.02.2023, 21:35
Добрый день.
В зависимости от характеристик ноутбука - на этом месте установщик может и час провисеть.
И еще - если подключено несколько мониторов - проверьте, что на каком-то из них не открылось окно с просьбой разрешить что-то сделать от имени администратора.

Добавил в предыдущем посте 2 картинки. На том месте висит часа 2. У меня монитор на ноуте погашен, а внешний работает.

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

Евгений Кислов
23.02.2023, 21:49
Отчет об ошибке при запуске CODESYS.

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

Newcomer
23.02.2023, 22:05
Т.е. у вас установка корректно так и не завершилась?
Сколько свободного места на диске, на который устанавливался CODESYS?

Нет не завершилась. Только одна иконка на рабочем столе появилась, а на видео две иконки появились.

Места свободного 50 Гб.

Евгений Кислов
23.02.2023, 22:17
Тогда предлагаю удалить (через Панель управления - Программы и компоненты) и установить заново.

Newcomer
23.02.2023, 22:23
Тогда предлагаю удалить (через Панель управления - Программы и компоненты) и установить заново.

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

Евгений Кислов
24.02.2023, 07:41
Удалил. При повторной установке получилось то же самое. У меня вопрос - при установке надо не моргая смотреть на монитор дабы не пропустит какое-то сообщение ?

Нет, такой необходимости нет.
Видимо, у вас на уровне конфигурации системы есть какая-то специфика, которая не дает CODESYS корректно завершить установку.
Уточните, у вас ОС 32-битная или 64-битная?
Что можно попробовать сделать, на мой взгляд:
- установить свежую версию CODESYS Installer (https://disk.yandex.ru/d/aHZZq9xR11s3Hw) и установить CODESYS через него (потребуется подключение к интернету через VPN);
- установить CODESYS на виртуальной машине

ВладОвен
24.02.2023, 12:25
Привет.
Подскажите, существует ли функция, которая собирает значение DWORD из 4-х отдельных байт в принимаемом массиве, наподобие этой:



MEM.MemMove(pSource:=ADR(arrReceive[10]), pDestination:=ADR(dwValue), uiNumberOfBytes:=4); // Забираем готовое значение


Но! Которая собирает их старшим байтом вперед?

Или может быть проще как-то собрать это самостоятельно поэлементно так:



dwValue := arrReceive[13] + (arrReceive[12] *256) + (arrReceive[11] *256*256) + (arrReceive[10] *256*256*256); // Забираем готовое значение


Спасибо.

А то китайцы - такие китайцы - умудрились в своих железках сделать передачу задом на перед...
https://aliexpress.ru/item/1005003380449974.html