PDA

Просмотр полной версии : CODESYS V3.5. Настройка обмена с другими устройствами (Modbus, ОВЕН, OPC и др.)



Страницы : 1 2 3 [4] 5 6

Евгений Кислов
26.03.2022, 12:31
Покажите как лучше.

Cм. скриншот.

59908

Евгений Кислов
26.03.2022, 12:58
ну тогда я вообще ничего не понял

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

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

Евгений Кислов
26.03.2022, 13:13
Да, уже понял, что политика в вашей компании за те 4 года которые я не работал изменилась. И заготовка не моя, а ваша.

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

Эдуард_Н
04.04.2022, 20:10
Здравствуйте. Подскажите для чего служат входные регистры в Modbus TCP Slave Device ? Если они только для чтения из slave устройства то как их считать, использовать код функции 0х04?

ASo
04.04.2022, 20:25
Это input регистры внешнего относительно ПЛК мастера MODBUS TCP.
А вообще, все это описано в документации по обмену через модбас.

Эдуард_Н
04.04.2022, 20:27
Это input регистры внешнего относительно ПЛК мастера MODBUS TCP.
А вообще, все это описано в документации по обмену через модбас.

Спасибо. Значит это регистры отправленные от мастера к слэйву? В документации мне не очень понятно.

Эдуард_Н
04.04.2022, 20:32
Если у меня СПК является слэйв устройством и мне надо только считывать с него то нужно использовать регистры временного хранения?

Евгений Кислов
05.04.2022, 06:15
Если у меня СПК является слэйв устройством и мне надо только считывать с него то нужно использовать регистры временного хранения?

В вашем случае проще использовать входные регистры.

Эдуард_Н
05.04.2022, 10:33
В вашем случае проще использовать входные регистры.

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

Евгений Кислов
05.04.2022, 10:43
мы вчера пробовали считать их, но не получилось. У входных регистров адресация со скольки начинается?

C нулевого.

Эдуард_Н
05.04.2022, 10:51
C нулевого.

Если с нулевого и Номер 255 то обращается к регистрам временного хранения.

Евгений Кислов
05.04.2022, 10:55
Если с нулевого и Номер 255 то обращается к регистрам временного хранения.

Покажите настройки вашего Modbus Master'a.

Эдуард_Н
05.04.2022, 11:02
Покажите настройки вашего Modbus Master'a.

60116 Это то что надо?

Евгений Кислов
05.04.2022, 11:14
60116 Это то что надо?

Функция чтения 03 - это функция чтения регистров временного хранения (holding регистров).
Для чтения входных регистров необходимо использовать функцию 04.

Рекомендую прочитать какую-то статью про основы Modbus - например, п. 2.2 в этом документе:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v2.2.pdf

Эдуард_Н
05.04.2022, 11:28
Функция чтения 03 - это функция чтения регистров временного хранения (holding регистров).
Для чтения входных регистров необходимо использовать функцию 04.

Рекомендую прочитать какую-то статью про основы Modbus - например, п. 2.2 в этом документе:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v2.2.pdf

Да, получилось. СПАСИБО. Этот мануал мы и читаем.

Эдуард_Н
05.04.2022, 17:12
Подскажите, а адрес слейв устройства 255 где в СПК задаётся?

Евгений Кислов
05.04.2022, 17:22
Подскажите, а адрес слейв устройства 255 где в СПК задаётся?

Этот адрес нигде не задается.

Эдуард_Н
08.04.2022, 05:34
Здравствуйте. При использовании шаблонов модулей Mx110 в настройках Modbus_Master_COM_Port режим передачи лучше оставить RTU или можно использовать ASCII ?

Евгений Кислов
08.04.2022, 06:17
Здравствуйте. При использовании шаблонов модулей Mx110 в настройках Modbus_Master_COM_Port режим передачи лучше оставить RTU или можно использовать ASCII ?

Лучше оставить RTU.

ВалераМ
21.04.2022, 08:10
Здравствуйте. Подскажите пожалуйста какие настройки нужны в CDS при подключении панели. 60425 Вроде всё норм сделал, а всё равно индикатор моргает зеленый с восклицательным знаком. TCP порт Error пишет, хотя тот же 502. В соотнесении входов написано шина не запущена.

Евгений Кислов
21.04.2022, 08:11
Здравствуйте. Подскажите пожалуйста какие настройки нужны в CDS при подключении панели. 60425 Вроде всё норм сделал, а всё равно индикатор моргает зеленый с восклицательным знаком.

Добрый день.
Обеспечьте удаленный доступ, чтобы мы смогли вам помочь.

capzap
21.04.2022, 08:15
Здравствуйте. Подскажите пожалуйста какие настройки нужны в CDS при подключении панели. 60425 Вроде всё норм сделал, а всё равно индикатор моргает зеленый с восклицательным знаком.

модбасТСР не совсем как RTU, адрес UnitID задавать последовательно не нужно, оставляйте его по умолчанию или ищите в документации на слейвы, какие значения нужно ставить, обычно это 0, 1 и 255

ВалераМ
21.04.2022, 08:31
Добрый день.
Обеспечьте удаленный доступ, чтобы мы смогли вам помочь.

К сожалению нет возможности. А на панели оператора овен нет шаблонов? Вот мучал мучал, теперь другая ошибка, но конект всё равно отваливается по таймауту60426

ВалераМ
21.04.2022, 08:39
А вот еще, данные все передает, корректно, но TCP Slave синим подчеркнут, и восклицательный знак стоит. И Error code пишет TCP port error. А данные все и с панели и на панель уходят. Что за парадокс? 6042760428

kondor3000
21.04.2022, 09:07
А вот еще, данные все передает, корректно, но TCP Slave синим подчеркнут, и восклицательный знак стоит. И Error code пишет TCP port error. А данные все и с панели и на панель уходят. Что за парадокс? 6042760428

Возможно версия TCP слейва не совпадает с версией CDS 3.5 или с версией ПЛК. Скрины из Информации сделайте.

ВалераМ
21.04.2022, 10:40
Возможно версия TCP слейва не совпадает с версией CDS 3.5 или с версией ПЛК. Скрины из Информации сделайте.
Оказывается всё норм, просто надо было подтвердить диагностику.

ВладОвен
27.04.2022, 10:17
Здравствуйте.
Подскажите, а как создать свой шаблон на свое устройство?
Допустим сделали устройство. Испытали его. Связали входы/выходы. Расписали комменты. Как это устройство оформить в шаблон, что-бы другой человек через 100500 лет мог взять это устройство, подключить шаблон "из коробки" и начать работу?
Спасибо.

kondor3000
27.04.2022, 10:25
Здравствуйте.
Подскажите, а как создать свой шаблон на свое устройство?
Допустим сделали устройство. Испытали его. Связали входы/выходы. Расписали комменты. Как это устройство оформить в шаблон, что-бы другой человек через 100500 лет мог взять это устройство, подключить шаблон "из коробки" и начать работу?
Спасибо.

Можно сохранить ваш программный блок как библиотеку. Добавив эту биб-ку в проект, вы вызовете свой блок как шаблон, но связи с физическими входами, выходами ПЛК опять придётся создавать.
На счёт 100500 лет загадывать не стоит)) Тут версии CDS 3.5 меняются раз в 3 года (или чаще) и не всегда полностью заменяемые.

ВладОвен
27.04.2022, 10:45
...но связи с входами, выходами ПЛК опять придётся создавать.

Хм... Так вот этого и хотелось бы избежать. :)

kondor3000
27.04.2022, 10:48
Хм... Так вот этого и хотелось бы избежать. :)

Тогда просто сохраните проект и заливайте его в такой же ПЛК хоть 100500 раз.

Евгений Кислов
27.04.2022, 11:24
Здравствуйте.
Подскажите, а как создать свой шаблон на свое устройство?
Допустим сделали устройство. Испытали его. Связали входы/выходы. Расписали комменты. Как это устройство оформить в шаблон, что-бы другой человек через 100500 лет мог взять это устройство, подключить шаблон "из коробки" и начать работу?
Спасибо.

Добрый день.
Если вы "устройством" называете ПЛК, то см. C:\Program Files (x86)\<директория установки CODESYS>\CODESYS\Templates

По аналогии можно создавать свои шаблоны проектов - мы делаем их для своих ПЛК, например:

60494

ВладОвен
27.04.2022, 13:53
Здравствуйте.
Не совсем так. Я хотел бы что-бы моё кастомное устройство было в пункте "Добавить устройство". См. рисунок:
60497

И потом попадало в дерево проекта.

Евгений Кислов
27.04.2022, 13:56
Здравствуйте.
Не совсем так. Я хотел бы что-бы моё кастомное устройство было в пункте "Добавить устройство". См. рисунок:
60497

И потом попадало в дерево проекта.

Наши шаблоны устройств - это внутренняя разработка, и мы не распространяем их исходники и инструкции по ним.
Насчет RealLab - по-моему, там только девдеск с готовыми запросами (.xml) - можно открыть текстовым редактором и понять принцип их создания.

VadimS
23.05.2022, 10:58
Здравствуйте. Хотел поделиться наблюдением.
После обновления софта модуля МВ210-101 с версии 1.0 до последней 1.1.13 (модуль 21го года), перестали корректно обрабатываться данные со входа 4-20мА (у меня на пятом канале висит датчик давления Пд100).
Все датчики температуры, каналы прямого измерения сопротивления работают стабильно, токовый ввод "скачет" в пределах плюс-минус 0,2 атм. при среднем в 3 атм.
Откат на версию 1.0 решил проблему.
Показания сбоили и при работе из конфигуратора, и при чтении с ПЛК200 (софт на ПЛК работал, заменил прошивку модуля -пошла чехарда, откатил - все нормализовалось).
Когда показания скакали - поменял БП, поменял датчик, изменял настройки модуля - ничего не помогло.

Евгений Кислов
23.05.2022, 20:51
Здравствуйте. Хотел поделиться наблюдением.
После обновления софта модуля МВ210-101 с версии 1.0 до последней 1.1.13 (модуль 21го года), перестали корректно обрабатываться данные со входа 4-20мА (у меня на пятом канале висит датчик давления Пд100).
Все датчики температуры, каналы прямого измерения сопротивления работают стабильно, токовый ввод "скачет" в пределах плюс-минус 0,2 атм. при среднем в 3 атм.
Откат на версию 1.0 решил проблему.
Показания сбоили и при работе из конфигуратора, и при чтении с ПЛК200 (софт на ПЛК работал, заменил прошивку модуля -пошла чехарда, откатил - все нормализовалось).
Когда показания скакали - поменял БП, поменял датчик, изменял настройки модуля - ничего не помогло.

Добрый день.
Спасибо за информацию, передам разработчикам для анализа.

ВалераМ
24.05.2022, 10:42
Всем здравствуйте, подскажите плиз, что тут не так. Никак с панелью 310 ой не могу спаяться. 6081760818
Вроде всё норм, связь есть. А данные ну никак. Что только не делал.
Подскажите что проверить?

Евгений Кислов
24.05.2022, 10:46
Всем здравствуйте, подскажите плиз, что тут не так. Никак с панелью 310 ой не могу спаяться. 6081760818
Вроде всё норм, связь есть. А данные ну никак. Что только не делал.

Добрый день.
Какую версию CODESYS вы используете?

ВалераМ
24.05.2022, 11:10
Добрый день.
Какую версию CODESYS вы используете?

V3.5 SP16 Patch 3

Евгений Кислов
24.05.2022, 11:12
V3.5 SP16 Patch 3

В данной версии адрес TCP Slave ПЛК всегда равен 255.
Задайте в настройках элемента панели адрес 255 (сейчас у вас выбран адресм 1).

ВалераМ
24.05.2022, 11:26
А почему панель не сохраняет записанное значение? Хотя я прописываю мониторинг функцией 3х и завожу в PRG. Также и с битовым переключателем. Ощущение что 3Х функция вообще не контачит

Евгений Кислов
24.05.2022, 11:46
панель не сохраняет записанное значение?

Опишите подробно, как вы это определяете.

ВалераМ
24.05.2022, 11:54
6084860849 Записал в контроллер число функцией 4х, в контроллере просто прямая связь и выход назад чтоб панель прочитала функцией 3х

Евгений Кислов
24.05.2022, 12:21
6084860849 Записал в контроллер число функцией 4х, в контроллере просто прямая связь и выход назад чтоб панель прочитала функцией 3х

4x и 3x - это не функции, а области памяти Modbus.
Подробнее здесь в п. 1.1.1:
https://ftp.owen.ru/CoDeSys3/98_Books/ModbusTips.pdf

Если нужно, чтобы панель прочитала то, что записала - используйте 4x.

ВалераМ
24.05.2022, 12:27
4x и 3x - это не функции, а области памяти Modbus.
Подробнее здесь в п. 1.1.1:
https://ftp.owen.ru/CoDeSys3/98_Books/ModbusTips.pdf

Если нужно, чтобы панель прочитала то, что записала - используйте 4x.

В соотнесении контроллера Регистры временного хранения и входные регистры это одно и тоже получается?

Евгений Кислов
24.05.2022, 12:50
В соотнесении контроллера Регистры временного хранения и входные регистры это одно и тоже получается?

Нет, это разные области памяти.

Регистры временного хранения - это то, что в спецификации Modbus называется holding registers (доступны для чтения и записи).
Входные регистры - это то, что в спецификации Modbus называется input registers (доступны только для чтения).

ВалераМ
25.05.2022, 07:11
Всем здравствуйте. Не могу понять чем или как эти регистры прочитать панелью?60884
Именно биты, индикаторами на панели. Уже столько вариантов перепробовал

Евгений Кислов
25.05.2022, 07:18
Всем здравствуйте. Не могу понять чем или как эти регистры прочитать панелью?60884
Именно биты, индикаторами на панели. Уже столько вариантов перепробовал

Добрый день.
Индикаторы не поддерживают чтение input-регистров (3x).
Поэтому нужно действовать так: использовать функциональную область с действием Копировать регистр или Копировать группу регистров, чтобы считать значения этих регистров в памяти панели
(например, 3x0 --- >PSW300).
Далее к индикаторам привязывать биты памяти панели - PSW300.0, PW300.1 и т.д.

ВалераМ
25.05.2022, 08:42
Добрый день.
Индикаторы не поддерживают чтение input-регистров (3x).
Поэтому нужно действовать так: использовать функциональную область с действием Копировать регистр или Копировать группу регистров, чтобы считать значения этих регистров в памяти панели
(например, 3x0 --- >PSW300).
Далее к индикаторам привязывать биты памяти панели - PSW300.0, PW300.1 и т.д.
Скопировал сразу десяток с нуля по 10 и ни один не читается, точно беды нет с чтением? 60887

Евгений Кислов
25.05.2022, 08:45
Скопировал сразу десяток с нуля по 10 и ни один не читается, точно беды нет с чтением? 60887

Беды точно нет.
Выложите ваши проекты для ПЛК и СП - посмотрим, в чем у вас проблема.

ВалераМ
25.05.2022, 08:52
Беды точно нет.
Выложите ваши проекты для ПЛК и СП - посмотрим, в чем у вас проблема.

https://fex.net/ru/s/tcrdknc Ну с регистрами хранения норм, а с входными не норм

Евгений Кислов
25.05.2022, 09:08
https://fex.net/ru/s/tcrdknc Ну с регистрами хранения норм, а с входными не норм

У вас в слэйве всего 2 input-регистра, а опрашивать в панели вы пытаетесь 10.
Настройте в панели двух регистров - тогда всё будет работать корректно.

ВалераМ
25.05.2022, 10:51
У вас в слэйве всего 2 input-регистра, а опрашивать в панели вы пытаетесь 10.
Настройте в панели двух регистров - тогда всё будет работать корректно.

Так я же 10 сделал только после того как 2 не получилось. Так стоп, а почему при смене адреса входных регистров с %QW0 на %QW2 у меня не работало? Я пробовал опрашивать 3х2-3х4 регистры. Я ж говорил что множество вариантов пробовал.
Так вот значит в чем беда, в КДС2.3 хоть и не существующие регистры опрашивай, он из них существующие покажет а остальные нет. А тут и не говорит об ошибке никакой.
Спасибо за помощь!!! Большущее!

ВалераМ
26.05.2022, 11:18
Всех приветствую. При вводе в переменную типа Риал ввожу значение 12.04 отображает в программе 12. А пид регулятор только Риал принимает. Хотелось бы до сотых повысить точность, можно такого добиться.
И еще вопрос по PFW регистрам в панели в них как писать и с них считывать. Потому что например Уставку на панели задать. Наверное тоже копированием регистров.

capzap
26.05.2022, 12:08
Всех приветствую. При вводе в переменную типа Риал ввожу значение 12.04 отображает в программе 12. А пид регулятор только Риал принимает. Хотелось бы до сотых повысить точность, можно такого добиться.
И еще вопрос по PFW регистрам в панели в них как писать и с них считывать. Потому что например Уставку на панели задать. Наверное тоже копированием регистров.

в розовое поле, где отображается просто 12 ткните ЛКМ на треугольник, что там показывает?

ЗЫ и да, начните читать хоть немного документацию и пользоваться подсказками, например нажмите на кружок с буквой i на скрине, он приведет Вас к нужному месту Вашего вопроса 60909

ВалераМ
26.05.2022, 12:18
в розовое поле, где отображается просто 12 ткните ЛКМ на треугольник, что там показывает?

ЗЫ и да, начните читать хоть немного документацию и пользоваться подсказками, например нажмите на кружок с буквой i на скрине, он приведет Вас к нужному месту Вашего вопроса 60909

Я очень извиняюсь. И благодарю.

gazpromITR
05.06.2022, 06:04
Добрый день.
Есть СПК 110, Создаю проект "стандартный" проект в CodeSys v 3.5 sp5 patch 5. Подключение к ПЛК происходит без проблем, добавляю MODBUS, Modbus Master, COM Port - возникает ошибка 61077 "[ERROR] Без имени2: Modbus_Master_COM_Port [Device: Modbus_COM]: C0046: Идентификатор 'IoDrvModbus.IoDrvModbusComPort' не задан" . Версия таргет-файла 3.5.4.26 . Помогите разобраться с проблемой.

Евгений Кислов
05.06.2022, 09:21
Добрый день.
Есть СПК 110, Создаю проект "стандартный" проект в CodeSys v 3.5 sp5 patch 5. Подключение к ПЛК происходит без проблем, добавляю MODBUS, Modbus Master, COM Port - возникает ошибка 61077 "[ERROR] Без имени2: Modbus_Master_COM_Port [Device: Modbus_COM]: C0046: Идентификатор 'IoDrvModbus.IoDrvModbusComPort' не задан" . Версия таргет-файла 3.5.4.26 . Помогите разобраться с проблемой.

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

gazpromITR
05.06.2022, 10:04
Добрый день.
Выложите скриншоты вкладки Информация (ее видно на вашем скриншоте справа вверху) и менеджера библиотек.
Вкладка "Информация" : 61078

Евгений Кислов
05.06.2022, 10:43
Вкладка "Информация" : 61078

ПКМ на каждый компонент Modbus в дереве проекта - Обновить устройство - выбрать подходящую версию.

Как понять, какая версия подходящая - см. Приложение А (стр. 191), столбец 3.5.4.30:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.0.pdf

gazpromITR
05.06.2022, 12:07
ПКМ на каждый компонент Modbus в дереве проекта - Обновить устройство - выбрать подходящую версию.

Как понять, какая версия подходящая - см. Приложение А (стр. 191), столбец 3.5.4.30:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.0.pdf

Не нашел "выбрать подходящую версию" 61079

Евгений Кислов
05.06.2022, 12:14
Не нашел "выбрать подходящую версию" 61079

Инструменты - Опции - Cвойства - Заданные наборы свойств - Профессиональный.
После этого - в окне на вашем скриншоте появятся дополнительные галочки.

gazpromITR
05.06.2022, 14:06
Инструменты - Опции - Cвойства - Заданные наборы свойств - Профессиональный.
После этого - в окне на вашем скриншоте появятся дополнительные галочки.

Спасибо, при добавлении модулей ввыода-вывода возникает другая ошибка - ------ Компиляция : Приложение: Device.Application -------
типизировать код...
[WARNING] Без имени5: C0200: Отсутствует разрешение для заполнителя CmpCodeMeter
[ERROR] Без имени5: MV110_16D_DN [Device: Modbus_COM: Modbus_Master_COM_Port]: C0077: Неизвестный тип: 'Mx110_Drivers.Mv110_16DdnDriver'
Компиляция завершена -- 1 ошибок, 1 предупреждений
61080

Евгений Кислов
05.06.2022, 14:40
Спасибо, при добавлении модулей ввыода-вывода возникает другая ошибка - ------ Компиляция : Приложение: Device.Application -------
типизировать код...
[WARNING] Без имени5: C0200: Отсутствует разрешение для заполнителя CmpCodeMeter
[ERROR] Без имени5: MV110_16D_DN [Device: Modbus_COM: Modbus_Master_COM_Port]: C0077: Неизвестный тип: 'Mx110_Drivers.Mv110_16DdnDriver'
Компиляция завершена -- 1 ошибок, 1 предупреждений
61080

Опять не ту версию выбираете.
Установите этот пакет:
https://ftp.owen.ru/CoDeSys3/04_Library/04_Components/Mx110Drivers_v3.5.4.13.package

Удалите из дерева проекта шаблон, который уже добавили.
Добавьте заново, на этот раз выбрав версию 3.5.4.13.

gazpromITR
08.06.2022, 12:25
Спасибо огромное, вроде все работает. А подскажите, это я изначально что-то не так делал, или эти "танцы с бубном" это обычная ситуация при работе с codesys? Вроде на сайте выбирал нужный ПЛК, очень понравилось что под конкретную модель весь необходимый софт предлагается, а по факту ставишь его и нужно еще на форум обратится.

Евгений Кислов
08.06.2022, 12:31
Спасибо огромное, вроде все работает. А подскажите, это я изначально что-то не так делал, или эти "танцы с бубном" это обычная ситуация при работе с codesys? Вроде на сайте выбирал нужный ПЛК, очень понравилось что под конкретную модель весь необходимый софт предлагается, а по факту ставишь его и нужно еще на форум обратится.

Вы выбирали неподходящие версии компонентов.
Если вы только начинаете работать с CODESYS - то "танцы с бубном" являются нормальной ситуацией, характерной для начального этапа знакомства практически с любым сложным ПО.

ВладОвен
13.06.2022, 13:03
Привет. Подскажите, как правильно поступить.
На шине ModBus висит 5 устройств. Из 4-х нужно постоянно читать данные. А из 5-го их нужно читать только при открытом экране визуализации 'display05'.
Первые 4 устройства у меня в дереве проекта привязаны к соответствующим переменным и читаются автоматически. Тут все норм.
А как задать условия чтения 5-го устройства? Я хочу, чтобы это устройство НЕ читалось, при других экранах визуализации, кроме экрана 'display05'.

IF find(VisuElems.CURRENTVISU, 'display05') = 1 THEN // Проверяем текущий экран визуализации (проверяем равенство строковых переменных)

// Как обратиться к устройству ModBus №5 (читать регистр № 36) только в этом месте, не мешая другим устройствам?

END_IF

Евгений Кислов
13.06.2022, 13:33
Привет. Подскажите, как правильно поступить.
На шине ModBus висит 5 устройств. Из 4-х нужно постоянно читать данные. А из 5-го их нужно читать только при открытом экране визуализации 'display05'.
Первые 4 устройства у меня в дереве проекта привязаны к соответствующим переменным и читаются автоматически. Тут все норм.
А как задать условия чтения 5-го устройства? Я хочу, чтобы это устройство НЕ читалось, при других экранах визуализации, кроме экрана 'display05'.

IF find(VisuElems.CURRENTVISU, 'display05') = 1 THEN // Проверяем текущий экран визуализации (проверяем равенство строковых переменных)

// Как обратиться к устройству ModBus №5 (читать регистр № 36) только в этом месте, не мешая другим устройствам?

END_IF


Если обмен настроен через дерево проекта - то так:
https://owen.ru/forum/showthread.php?t=28167&page=5&p=304649&viewfull=1#post304649

ВладОвен
17.06.2022, 09:01
Спасибо. Так работает нормально.
Скажите, а есть ли способ посчитать количество ушедших/пришедших пакетов по шине ModBus для одного из устройств (конкретного)?

Евгений Кислов
17.06.2022, 09:14
Спасибо. Так работает нормально.
Скажите, а есть ли способ посчитать количество ушедших/пришедших пакетов по шине ModBus для одного из устройств (конкретного)?

https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.0.pdf
См. п. 4.6 - системные переменные компонентов Modbus Slave COM Port и Modbus TCP Slave

С помощью xDone можно определить число принятых корректных пакетов.
С помощью xError и byModbusError можно определить число принятых пакетов с кодами ошибок и число запросов, оставшихся без ответа.

Сложив эти три числа - получим число отправленных пакетов.

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

ВладОвен
22.06.2022, 10:46
Здравствуйте. Опять есть вопрос по обмену. Подскажите как быть.

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

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

Что нужно подвесить на кнопку (событие OnMouseClick), чтобы нажатие на нее вызвало отправку одиночного пакета modbus (одиночная запись командой modbus-06).

Евгений, в приведенных вами ответах не нашел нужного.


Если обмен настроен через дерево проекта - то так...
Тут привязка к конкретному экрану визуализации. Полезная штука, но это не то.


С помощью xDone можно определить число принятых корректных пакетов...
Тут статистика по конкретному устройству целиком. Полезно, но это не то.

Подскажите как быть.
Спасибо.

Евгений Кислов
22.06.2022, 10:57
Что нужно подвесить на кнопку (событие OnMouseClick), чтобы нажатие на нее вызвало отправку одиночного пакета modbus (одиночная запись командой modbus-06)

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

См. стр. 39 и далее, параметр "Триггер"
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Modbus_v3.0.pdf

ВладОвен
22.06.2022, 11:26
Спасибо. Вроде разобрался.
В этом slave-устройстве имеется 1 канал для пакетного чтения и 7 каналов для индивидуальной записи.
А переменная xTrigger будет действовать на все 7 каналов записи одновременно? Т.е. нажатие на кнопку произведет сразу 7 индивидуальных записей?
(Я не нашел переменную xTrigger на каждый канал записи. Переменная есть только на всё устройство.)

Евгений Кислов
22.06.2022, 11:36
Спасибо. Вроде разобрался.
Но получается, что в этом slave-устройстве имеется 1 канал для пакетного чтения и 7 каналов для индивидуальной записи.
Т.е. переменная xTrigger будет действовать на все 7 каналов записи одновременно? Т.е. нажатие на кнопку произведет сразу 7 индивидуальных записей?

xTrigger действует на все каналы устройства с типом Передний фронт.

ВладОвен
22.06.2022, 12:10
Для того, что-бы получить переменные xTrigger для каждого из каналов, я клонировал мое slave-устройство.
61356

И в каждом клоне описал свой индивидуальный канал записи. Тогда у каждого устройства (читай: у каждого канала записи) теперь есть своя переменная xTrigger.
Эту переменную (generator01cloneX.xTrigger) и привязал к кнопке
Всё работает, но есть проблемы:
Компилятор ругается на дублирование адресов slave-устройств-клонов. Это не ошибка, а предупреждение. Работать можно.
Пропадает наглядность проекта в IDE.
Костыль... Ёпта!

Евгений Кислов
22.06.2022, 12:16
Для того, что-бы получить переменные xTrigger для каждого из каналов, я клонировал мое slave-устройство.
61356

И в каждом клоне описал свой индивидуальный канал записи. Тогда у каждого устройства (читай: у каждого канала записи) теперь есть своя переменная xTrigger.
Эту переменную (generator01cloneX.xTrigger) и привязал к кнопке
Всё работает, но есть проблемы:
Компилятор ругается на дублирование адресов slave-устройств-клонов. Это не ошибка, а предупреждение. Работать можно.
Пропадает наглядность проекта в IDE.
Костыль... Ёпта!

Вам не нужно клонировать устройство.
Забудьте вообще про xTrigger - в вашем случае он не нужен.
Перейдите на вкладку соотнесения входов-выходов - там будут каналы триггеров для каждого канала типа Передний фронт.
Привяжите к каждому триггерному каналу свою переменную.
Ссылку на руководство я уже выше привел.

61357 61358

ВладОвен
05.07.2022, 10:57
Привет.
Подключил датчик и хочу забрать от него параметр из регистра Modbus.
Как правильно привязать переменную (тип WORD)?
Туда, где показано зеленым или красным? Зачем там два таких поля? В чем разница? (см. рисунок)
61535

Евгений Кислов
05.07.2022, 11:04
Привет.
Подключил датчик и хочу забрать от него параметр из регистра Modbus.
Как правильно привязать переменную (тип WORD)?
Туда, где показано зеленым или красным? Зачем там два таких поля? В чем разница? (см. рисунок)
61535

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

ВладОвен
05.07.2022, 12:03
Спасибо за ответ.
Подскажите, будет ли работать сл. метод:

1. Есть структура sensorsRAW. В нее попадают сырые значения от десяти датчиков из сети ModBus.

rPressurePatm_RAW: REAL := 0.0; // Давление в атмосфере, кПа ABS (необработанное значение)
rPressurePvac_RAW: REAL := 0.0; // Давление вакуума (готовность вакуума), кПа ABS (необработанное значение)
...
2. Есть "Конверсия единиц CODESYS3.5" В которой эти сырые значения преобразуются масштабированием и смещением (соответствующие коэффициенты K и B)
3. Есть структура sensors. В ней должны лежать уже конвертированные величины от этих десяти датчиков.

rPressurePatm: REAL := ExchangePressurePatm.Convert(PLC_PRG.stSensorsRaw. rPressurePatm_RAW) ; // Давление в атмосфере, кПа ABS
rPressurePvac: REAL := ExchangePressurePvac.Convert(PLC_PRG.stSensorsRaw. rPressurePvac_RAW); // Давление вакуума (готовность вакуума), кПа ABS
...

Но почему-то во второй структуре (sensors) числа не меняются. Может нельзя вставлять функцию .Convert (.Reverse) прямо вот так в структуру?
Может .Convert (.Reverse) нужно вставлять в основной код программы?

Евгений Кислов
05.07.2022, 12:05
Выложите простейший проект, на котором можно воспроизвести описанную ситуацию.

ВладОвен
05.07.2022, 12:51
Вот проект.
Там только 2 датчика.
Они читаются через ModBus, конвертируются.
proj001.project (https://owen.ru/forum/attachment.php?attachmentid=61538&stc=1&d=1657014642)

Я думаю, что функцию преобразования .Convert и .Reverse нельзя вставлять тупо в структуру. Их надо вызывать в PLC_PRG.

Евгений Кислов
05.07.2022, 13:04
В выложенном проекте Unit Conversion не используется в принципе.
И что важнее - Unit Conversion выполняется только в контексте визуализации, так что для вашего случая (масшатабирование одной переменной программы и запись этого значения в другую) - этот функционал не подойдет.

ВладОвен
05.07.2022, 13:17
В выложенном проекте Unit Conversion не используется в принципе.

Это почему?.. Преобразования ExchangePressure из Unit Conversion должны ложиться в структуру sensors.

TYPE sensors :STRUCT
rPressurePatm: REAL := ExchangePressurePatm.Convert(PLC_PRG.stSensorsRaw. wPressurePatm_RAW) ; // Давление в атмосфере, кПа ABS
rPressurePvac: REAL := ExchangePressurePvac.Convert(PLC_PRG.stSensorsRaw. wPressurePvac_RAW); // Давление вакуума, кПа ABS
END_STRUCT
END_TYPE
И я думал, что теперь, в основной программе где-бы я не использовал переменные этой структуры, то они всегда будут уже преобразованы.

ВладОвен
05.07.2022, 13:21
Unit Conversion выполняется только в контексте визуализации...

Это учебный проект.
В рабочем проекте у меня 3 параллельные многошаговые задачи. И там много где внезапно (независимо друг от друга) вычитывается значение этих преобразованных величин.

Ладно, Евгений - забудьте. Просто я думал, что .Convert (.Reverse) можно вписывать прямо вот так в структуру. Но оно работает только в основном цикле программы.
Сейчас я это проверю...

Евгений Кислов
05.07.2022, 13:21
Вы думали неправильно.
Код, который вы написали, выполняется только при инициализации переменных после загрузки проекта.

ВладОвен
05.07.2022, 13:58
Да. Халява не прошла. :)
Спасибо за разъяснения.

ВладОвен
05.07.2022, 14:13
Подскажите, а как заставить ModBud принимать значение в регистре не WORD, а INT? (см. рисунок)
У меня прилетает значение от датчика целое от -10000 до 10000. И когда датчик отдаст значение -314, то оно будет недостоверным.
61539

Евгений Кислов
05.07.2022, 14:14
Подскажите, а как заставить ModBud принимать значение в регистре не WORD, а INT? (см. рисунок)
У меня прилетает значение от датчика целое от -10000 до 10000.
61539

Используйте в коде оператор WORD_TO_INT.

TYTAHXAMOH
20.07.2022, 08:19
Подскажите, как получить переменные из DB S7-300? Здесь (https://www.youtube.com/watch?v=oxgniY4tzTQ&ab_channel=sagarchavan)чувак показывает что это возможно но не делится как он это сделал

Евгений Кислов
20.07.2022, 08:28
Подскажите, как получить переменные из DB S7-300? Здесь (https://www.youtube.com/watch?v=oxgniY4tzTQ&ab_channel=sagarchavan)чувак показывает что это возможно но не делится как он это сделал

В видео показано, как использовать приложение на node-red (https://nodered.org/) в качестве шлюза протоколов между S7-300 (протокол S7) и Raspberry Pi с CODESYS (протокол OPC UA).
По node-red много статей и видео в интернете - найти информацию должно быть несложно.
К наших контроллерам это никак не относится.

TYTAHXAMOH
20.07.2022, 09:05
В видео показано, как использовать приложение на node-red (https://nodered.org/) в качестве шлюза протоколов между S7-300 (протокол S7) и Raspberry Pi с CODESYS (протокол OPC UA).
По node-red много статей и видео в интернете - найти информацию должно быть несложно.
К наших контроллерам это никак не относится.

то есть - прямого рабочего способа нет?

Евгений Кислов
20.07.2022, 09:08
то есть - прямого рабочего способа нет?

С каким именно устройством вы хотите S7-300 связать?

TYTAHXAMOH
20.07.2022, 09:22
А какое устройство на это способно? Для начала думал просто нарисовать визуализацию с виртуальным Control Win V3 которая бы получала данные из DB S7-300 по Profinet

TYTAHXAMOH
20.07.2022, 09:27
С каким именно устройством вы хотите S7-300 связать?

Сижу в одной сети с S7-300. Панелью Weintek могу вытащить данные по сети из него, самописной прогой могу вытащить данные, даже ардуиной могу вытащить DB по вайфаю. А контроллером Овен никак?

capzap
20.07.2022, 09:36
самописной прогой могу вытащить данные

улыбнуло, так напишите под плк прогу

Евгений Кислов
20.07.2022, 09:59
Сижу в одной сети с S7-300. Панелью Weintek могу вытащить данные по сети из него, самописной прогой могу вытащить данные, даже ардуиной могу вытащить DB по вайфаю. А контроллером Овен никак?

Можно по Modbus TCP, но для S7-300 библиотеки Modbus платные, насколько я помню.

TYTAHXAMOH
21.07.2022, 11:48
Можно по Modbus TCP, но для S7-300 библиотеки Modbus платные, насколько я помню.

Можно ли на контроллере овен запустить OPC UA клиента, чтобы он собирал данные с OPC UA серверов?

Евгений Кислов
21.07.2022, 11:57
Можно ли на контроллере овен запустить OPC UA клиента, чтобы он собирал данные с OPC UA серверов?

Нет, OPC UA клиент у нас не поддерживается.

miniuser
21.07.2022, 13:56
Добры день. По ссылке https://habr.com/ru/post/655465/ интересная статья. Если подойти творчески то наверное можно сделать обмен и с owen

Vitorgan
29.07.2022, 15:31
Доброго дня, товарищи я привык к codesys 2.3, да, ненавижу его за некоторые косяки, перелопаченные тоннами PDF файлы. Но я с ним подружился, прям крепко) но вот с 3.5 это тихий ужас.... Я понимал что опять придется перечитывать кучу PDF, помимо всего 3.5 я познакомился с соотношениями версий всего что только может быть.... Я просто пытаюсь соединить СПК107 старенький еще без ethernet порта с Мастерскадой. Подскажите пожалуйста, какой codesys мне все-таки поставить? у меня стоит -CODESYS_3.5_SP5_Patch5 и таргет для СПК107 - owen_target_install_3.5.4.26 , читал инструкцию из данной темы по настройке связи через OPC Modbus universal , ну ни один скрин важный не соответствует тому что я вижу у себя:
что в инструкции 61908

у меня: 61909

в инструкции 61910

у меня:61911

Открыть пример я тоже не могу 61912

Что я не так делаю? Помогите пожалуйста, вот версия прошивки на СПК 61913

capzap
29.07.2022, 15:37
Открыть пример я тоже не могу 61912]

ну явно же просматривается что проект создан в версии не меньше 3.5.17, конечно в своей среде не откроете

Vitorgan
29.07.2022, 16:11
ну явно же просматривается что проект создан в версии не меньше 3.5.17, конечно в своей среде не откроете

Я это понимаю, по другому спрошу, существует ли инстукция по соединению СПК107 2013г. с Masterscadа, в которой окно с галочками, настройками соответствует моему?

Евгений Кислов
29.07.2022, 16:12
Я это понимаю, по другому спрошу, существует ли инстукция по соединению СПК107 2013г. с Masterscadа, в которой окно с галочками, настройками соответствует моему?

Добрый день.
Вот наиболее близкая к вашей прошивке инструкция:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_OPC_SCADA_v.1.1.pdf

Версии компонентов Ethernet и Modbus TCP Slave Device выбирайте самые новые из тех, которые у вас доступны.

Vitorgan
29.07.2022, 16:35
Спасибо, буду изучать, а подскажите пожалуйста, в 3.5 это обязательное условие соотношение переменных (входов/выходов) в 2.3 была возможность создать структуру, и в ФБ запихивать переменные уходящие/приходящие со скады (понятное дело с правильным заполнением списка (без наложения одних на другие).

6191561916

В данной версии возможен такой вариант?

Евгений Кислов
29.07.2022, 17:12
Спасибо, буду изучать, а подскажите пожалуйста, в 3.5 это обязательное условие соотношение переменных (входов/выходов) в 2.3 была возможность создать структуру, и в ФБ запихивать переменные уходящие/приходящие со скады (понятное дело с правильным заполнением списка (без наложения одних на другие).

6191561916

В данной версии возможен такой вариант?

Наиболее близкий с точки зрения функциональности к 2.3 вариант - использование библиотеки Modbus Slave.
Посмотрите здесь п. 7:
https://ftp.owen.ru/CoDeSys3/11_Documentation/01_SPK/SPK_Modbus_v.1.1.pdf

Можно дополнительно посмотреть видео:
https://youtu.be/3eGtH3U_EN4

На вход pBuffer блока MB_SLAVE можно передать указатель на структуру.

Vitorgan
29.07.2022, 17:47
Отлично) по видео становиться все понятно, а еще вопрос, если я работаю через USB B на СПК107, он же как TCP идет, получается другая библиотека нужна?

Евгений Кислов
29.07.2022, 17:49
Отлично) по видео становиться все понятно, а еще вопрос, если я работаю через USB B на СПК107, он же как TCP идет, получается другая библиотека нужна?

А как вы планировали USB B использовать?
К чему вы подключаете так СПК и зачем, какая длина кабеля?

Vitorgan
29.07.2022, 18:08
А как вы планировали USB B использовать?
К чему вы подключаете так СПК и зачем, какая длина кабеля?

Да это не рабочий объект, на рабочих только плк 110,160 .
Хочется некоторые вещи, где эмуляция не прокатит, отработать не в полевых условиях, а для домашних нужд давным давно был приобретён данный СПК, вот и хочется его использовать вместо ПЛК, так как отдавать пол сотни деревянных для отладки в домашних условиях не хочется.
А по usb я им соединяюсь с ПК или ноутбуком

Vitorgan
29.07.2022, 18:39
Отлично) по видео становиться все понятно, а еще вопрос, если я работаю через USB B на СПК107, он же как TCP идет, получается другая библиотека нужна?

А если использовать библиотеку я привязан к WORD? Или же могу массив 4 байтовых переменных сделать?

Евгений Кислов
29.07.2022, 18:44
А если использовать библиотеку я привязан к WORD? Или же могу массив 4 байтовых переменных сделать?

На вход pBuffer можно передать указатель на что угодно.

Что касается TCP - в понедельник утром я отправлю вам на почту, указанную при регистрации на форуме, аналогичную библиотеку для Modbus TCP.

Vitorgan
29.07.2022, 18:47
На вход pBuffer можно передать указатель на что угодно.

Что касается TCP - в понедельник утром я отправлю вам на почту, указанную при регистрации на форуме, аналогичную библиотеку для Modbus TCP.

Буду ждать, спасибо большое!

Vitorgan
03.08.2022, 15:46
Что касается TCP - в понедельник утром я отправлю вам на почту
Евгений, все получилось, все работает! Еще раз спасибо.
Для общего развития, не подскажите почему адрес первого тега DWORD в OPC начинается не с 0 а с 2, опытным путем понял что адресация сдвинута ровно на один Dword, просто понимать почему так происходит

Евгений Кислов
03.08.2022, 15:50
Евгений, все получилось, все работает! Еще раз спасибо.
Для общего развития, не подскажите почему адрес первого тега DWORD в OPC начинается не с 0 а с 2, опытным путем понял что адресация сдвинута ровно на один Dword, просто понимать почему так происходит

Покажите свою структуру и настройки OPC.

Vitorgan
03.08.2022, 17:23
62001620026200362004

В опс первый тег с адреса 2 начинается, тогда все ок

а в 0 адресе вот такое значение 62005

Евгений Кислов
03.08.2022, 17:31
Это не структура, это функциональный блок. Под него память распределяется особым образом.
Используйте именно структуру - тогда сдвигов не будет.
См. здесь п. 1.1 (и отдельно обратите внимание на 1.1.4):
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysMemoryManipulation.pdf

Vitorgan
03.08.2022, 18:01
Это не структура, это функциональный блок. Под него память распределяется особым образом.
Используйте именно структуру - тогда сдвигов не будет.
См. здесь п. 1.1 (и отдельно обратите внимание на 1.1.4):
https://ftp.owen.ru/CoDeSys3/98_Books/CodesysMemoryManipulation.pdf

Вот так бывает, ошибка привела к пониманию как распределяется память, интересный pdf. Спасибо, все заработало как надо

Юрий Хайретдинов
14.09.2022, 07:25
Добрый день. Установил версию CODESYS V3.5 SP17 patch3. При добавлении устройства МВ110-24.8АС отсутствует в настройках вкладка "Общее", где задается адрес опрашиваемого устройства. Подскажите, как это поправить.
В версии SP14 все работает. Вкладка есть.

Евгений Кислов
14.09.2022, 07:40
Добрый день. Установил версию CODESYS V3.5 SP17 patch3. При добавлении устройства МВ110-24.8АС отсутствует в настройках вкладка "Общее", где задается адрес опрашиваемого устройства. Подскажите, как это поправить.
В версии SP14 все работает. Вкладка есть.

Добрый день.
У вас V3.5 SP17 Patch 3 установился без плагинов.
Переустановите его, проконтролировав, что выбран режим полной установки (Complete).
Для установки запускайте .exe (не .msi) от имени администратора. В момент установки должно быть доступно подключение к интернету.

Юрий Хайретдинов
15.09.2022, 09:02
Добрый день. Может ли ПЛК200-02 с подключенным к нему энкодером выдавать не только количество импульсов, а еще и частоту? Необходимо для расчета положения и скорости.

Евгений Кислов
15.09.2022, 09:12
Добрый день. Может ли ПЛК200-02 с подключенным к нему энкодером выдавать не только количество импульсов, а еще и частоту? Необходимо для расчета положения и скорости.

Добрый день.
Частоту вы можете рассчитать в своем коде.

Юрий Хайретдинов
15.09.2022, 09:31
Быстрые дискретные входы (FDI) также могут работать в дополнительных режимах:
• обработка сигналов энкодера (до 45 кГц);
• измерение частоты (сигнал прямоугольной формы частотой от 0 Гц до 95 кГц);
• подсчет количества импульсов (до 95 кГц).

Евгений Кислов
15.09.2022, 09:34
Быстрые дискретные входы (FDI) также могут работать в дополнительных режимах:
• обработка сигналов энкодера (до 45 кГц);
• измерение частоты (сигнал прямоугольной формы частотой от 0 Гц до 95 кГц);
• подсчет количества импульсов (до 95 кГц).

Это справедливое замечание - в РЭ некорректная формулировка.
Я уже просил наших технических писателей исправить ее - в следующей версии РЭ этот текст изменится.

Юрий Хайретдинов
15.09.2022, 09:55
Это справедливое замечание - в РЭ некорректная формулировка.
Я уже просил наших технических писателей исправить ее - в следующей версии РЭ этот текст изменится.

Это относится ко всей линейке ПЛК2хх?

Евгений Кислов
15.09.2022, 10:04
Это относится ко всей линейке ПЛК2хх?

Да, это касается всей линейки.

Уточнил - РЭ с исправлениями уже выложили на сайте.

62641

SMV
30.09.2022, 10:32
Добрый день, коллеги!
В примере с сайта "Настройка контроллера в режиме Modbus TCP Slave через конфигурация 3.5.17.3" показана работа контроллера в режиме Slave. В программе записываются данные в область регистров временного хранения. В режиме онлайн в данные регистры информация не записывается, а по факту обнуляется. Читаю третьей функцией Modbus Pool. Контроллер заменил на ПЛК-210.
Пояснительная бригада, прошу разъяснить.

Евгений Кислов
30.09.2022, 10:35
Добрый день, коллеги!
В примере с сайта "Настройка контроллера в режиме Modbus TCP Slave через конфигурация 3.5.17.3" показана работа контроллера в режиме Slave. В программе записываются данные в область регистров временного хранения. В режиме онлайн в данные регистры информация не записывается, а по факту обнуляется. Читаю третьей функцией Modbus Pool. Контроллер заменил на ПЛК-210.
Пояснительная бригада, прошу разъяснить.

Добрый день.


В режиме онлайн в данные регистры информация не записывается

Что вы под этим подразумеваете? Покажите скриншотом.

SMV
30.09.2022, 10:41
Добрый день.



Что вы под этим подразумеваете? Покажите скриншотом.

62897
62898

Евгений Кислов
30.09.2022, 10:42
Выложите ваш проект, пожалуйста.

SMV
30.09.2022, 10:46
https://disk.yandex.ru/d/QzX2Pb5Z5OvxBQ

Евгений Кислов
30.09.2022, 10:49
https://disk.yandex.ru/d/QzX2Pb5Z5OvxBQ

Вам нужно вот эту галочку установить.

62899

В примере, на которой вы ссылаетесь - она установлена.

SMV
30.09.2022, 11:47
Вам нужно вот эту галочку установить.

62899

В примере, на которой вы ссылаетесь - она установлена.

Спасибо! Спасибо!

Эдуард_Н
28.10.2022, 13:18
В шаблонах Mx110 и др. устройств не собираетесь вывести наружу параметры наклон и сдвиг характеристики?

Евгений Кислов
28.10.2022, 13:23
В шаблонах Mx110 и др. устройств не собираетесь вывести наружу параметры наклон и сдвиг характеристики?

Речь, как я понимаю, о модулях аналоговых входов. В текущий момент сделать это невозможно, потому что эти параметры недоступны по протоколу Modbus.
Но в будущем мы внесем в эти модули ряд аппаратных изменений (как в сентябре сделали это с дискретными модулями (https://owen.ru/news/mx110_obnovlenie_01092022)) - и одновременно обновим прошивку.
В этой прошивке настройки входов будут доступны по Modbus, и вместе с ней мы выпустим и шаблон для CODESYS с их поддержкой.

capzap
31.10.2022, 10:47
пришел прибор под SP17, поставил среду (правда удалил предыдущую), поставил таргеты, открыл проект и с ошибкой что теперь делать? 63537 Сделал самое простое - за комментировал, но мало ли на что влияет

Евгений Кислов
31.10.2022, 11:03
пришел прибор под SP17, поставил среду (правда удалил предыдущую), поставил таргеты, открыл проект и с ошибкой что теперь делать? 63537 Сделал самое простое - за комментировал, но мало ли на что влияет

Добрый день.
Это перечисление перенесли в библиотеку OwenTypes.
Так что можете добавить ее в проекте и указать вместо OwenWatchdog ее пространство имен - OwenTypes.

capzap
31.10.2022, 12:01
ок, спасибо, без него то будет работать? Ни на что ведь не влияет

ЗЫ не нашел и такое пространство 63544

Евгений Кислов
31.10.2022, 12:09
ок, спасибо, без него то будет работать? Ни на что ведь не влияет

ЗЫ не нашел и такое пространство 63544

Будет работать и без него.
Чтобы появилось пространство - надо сначала библиотеку в менеджер библиотек добавить.

capzap
01.11.2022, 14:31
в догонку, в новой SP17 поменялись порты ethernet, как бы тоже ни на что особо не влияет, но визуально выглядит не красиво 63563

Евгений Кислов
02.11.2022, 10:33
в догонку, в новой SP17 поменялись порты ethernet, как бы тоже ни на что особо не влияет, но визуально выглядит не красиво 63563

Спасибо за замечание. Это ошибка гравировки - мы с ней разберемся.

capzap
10.11.2022, 13:18
вновь спрошу про SP17, надеюсь теперь уже точно по теме: 63755
на скрине все что осталось от шаблона. Два варианта есть, это добавить вручную аналоговые входы или использовать шаблон. Скачаный шаблон не ставиться заканчивается этим 63756

Евгений Кислов
10.11.2022, 13:31
вновь спрошу про SP17, надеюсь теперь уже точно по теме: 63755
на скрине все что осталось от шаблона. Два варианта есть, это добавить вручную аналоговые входы или использовать шаблон. Скачаный шаблон не ставиться заканчивается этим 63756

Чтобы установить какой-либо пакет - нужно сначала закрыть среду разработки, как и написано в сообщении.

capzap
10.11.2022, 13:45
да, точно так и есть

MUSulmanin
18.11.2022, 11:50
Добрый день.
Подскажите, будет ли работать Ваша библиотека OwenVendorProtocols на Raspberry PI?

Евгений Кислов
18.11.2022, 11:54
Добрый день.
Подскажите, будет ли работать Ваша библиотека OwenVendorProtocols на Raspberry PI?

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

Эдуард_Н
21.11.2022, 05:55
К СПК подключены модули 16Д, 16Р, 8А и 2А, на один порт. Постоянно отваливается, кратковременно, модуль 2А. Что можно сделать кроме того, что подключить к другому порту?

Евгений Кислов
21.11.2022, 08:56
Что можно сделать кроме того, что подключить к другому порту?

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

Эдуард_Н
21.11.2022, 14:10
Выложить проект и информацию о версиях прошивок всех опрашиваемых модулей.

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

Sashakkk
06.12.2022, 14:00
Добрый день. Инструкция CODESYS V3.5. Протокол Modbus версия 3.0 на стр.63 рис.4.6.9 изменение настроек COM порта. Прописываю строку в программе, как в инструкции: Modbus_Serial_Device.UpdateComPortSettings(4,19200 , IoDrvModbusSerialSlaveLibrary.SysCom.SYS_COM_PARIT Y.SYS_NOPARITY); и Modbus_СОМ выпадает в ошибку (не запущено). Но когда в паритете прописываю .SYS_ODDPARITY или SYS_EVENPARITY то изменения проходят и Modbus_СОМ работает. В чём может быть причина?

Евгений Кислов
06.12.2022, 14:05
Добрый день. Инструкция CODESYS V3.5. Протокол Modbus версия 3.0 на стр.63 рис.4.6.9 изменение настроек COM порта. Прописываю строку в программе, как в инструкции: Modbus_Serial_Device.UpdateComPortSettings(4,19200 , IoDrvModbusSerialSlaveLibrary.SysCom.SYS_COM_PARIT Y.SYS_NOPARITY); и Modbus_СОМ выпадает в ошибку (не запущено). Но когда в паритете прописываю .SYS_ODDPARITY или SYS_EVENPARITY то изменения проходят и Modbus_СОМ работает. В чём может быть причина?

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

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

Отправил на почту

Евгений Кислов
06.12.2022, 16:00
Отправил на почту

Проект получил, завтра утром проверю и отпишусь.

Евгений Кислов
07.12.2022, 07:48
Отправил на почту


Проект получил, завтра утром проверю и отпишусь.

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

Sashakkk
07.12.2022, 08:01
Воспроизвел у себя. Это баг на стороне CODESYS.
Можете поднять слэйв через библиотеку OwenCommunication - в ней таких проблем не будет.

Спасибо, буду пробовать.

knoppix
07.12.2022, 13:33
Возник такой вопрос, сейчас в Codesys V3.5 SP17 Patch 3 при настройке ModbusTCPSlave появилась возможность выставить настройку "Запись". Тогда как в обучающих видео этот функционал отсутствует и рекомендуется использовать библиотеку OwenCommunicaton. Какой способ предпочтительнее? Или эти два способа сейчас полностью равнозначны?

Евгений Кислов
07.12.2022, 13:39
Возник такой вопрос, сейчас в Codesys V3.5 SP17 Patch 3 при настройке ModbusTCPSlave появилась возможность выставить настройку "Запись". Тогда как в обучающих видео этот функционал отсутствует и рекомендуется использовать библиотеку OwenCommunicaton. Какой способ предпочтительнее? Или эти два способа сейчас полностью равнозначны?

Настройка "Запись" позволяет организовать запись в holding-регистры со стороны программы контроллера.

Но даже сейчас описанные два способа неравнозначны.

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

Кроме того, наш блок поддерживает запрет обработки определенных запросов, чтение файлов с помощью 20 функции Modbus и у него нет искуственного ограничений на число регистров (у нас - 65355, у стандартного компонента - 4096)

С другой стороны, в стандартном компоненте области памяти Modbus раздельные (т.е. Discrete Inputs/Coils/Input регистры/Holding регистры - это отдельные области памяти с совпадающей адресацией), а у нас все они "наложены" друг на друга. Наша библиотека будет работать только на наших ПЛК, а стандартный компонент - на всех ПЛК с CODESYS V3.5, у которых активирована лицензия Modbus.

Так что выбор конкретного способа зависит от особенностей вашей задачи.

knoppix
07.12.2022, 13:44
Настройка "Запись" позволяет организовать запись в holding-регистры со стороны программы контроллера.

Но даже сейчас описанные два способа неравнозначны.

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

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

Спасибо за ответ. Я про равнозначность имел ввиду тот самый базовый функционал в виде возможности записи в holding-регистры со стороны программы контроллера. А вот замечание пре RETAIN отличное, воспользуюсь вашим блоком.

pro100user
20.01.2023, 18:14
Коллеги! Наверное кто-то уже сталкивался с такой проблемой:
1. Связка по Ethernet СПК110 (Master) <--------> СП310 (Slave).
2. На обоих устройствах в визуализации клавиши. Они должны быть связаны друг с другом. Они дублируют друг друга.
При нажатии одной клавиши - другая реагирует, и наоборот. Они не должны дребезжать.
3.СПК110 (Master) среда программирования CodeSys 3.5.
4.СП310 (Master) среда программирования Конфигуратор СП300.
Вопросы:
1.Как связать на CFC или на ST эти две клавиши, чтобы не было дребезга, так как получается петля?
(Идет сигнал на запись по триггерной переменной в CП310. Затем идет считывание из СП310 и получается замкнутый круг.)
2.Как определить программно, что переменная изменилась из-за нажатия клавиши, а не по считыванию или по записи?
3.Как устранить дребезг, связанный с зацикливанием? Как разорвать порочный круг?

Если у кого есть решение - подскажите, а лучше приложите примерчик на CodeSys 3.5. Буду весьма признателен.

Евгений Кислов
24.01.2023, 12:53
Коллеги! Наверное кто-то уже сталкивался с такой проблемой:
1. Связка по Ethernet СПК110 (Master) <--------> СП310 (Slave).
2. На обоих устройствах в визуализации клавиши. Они должны быть связаны друг с другом. Они дублируют друг друга.
При нажатии одной клавиши - другая реагирует, и наоборот. Они не должны дребезжать.
3.СПК110 (Master) среда программирования CodeSys 3.5.
4.СП310 (Master) среда программирования Конфигуратор СП300.
Вопросы:
1.Как связать на CFC или на ST эти две клавиши, чтобы не было дребезга, так как получается петля?
(Идет сигнал на запись по триггерной переменной в CП310. Затем идет считывание из СП310 и получается замкнутый круг.)
2.Как определить программно, что переменная изменилась из-за нажатия клавиши, а не по считыванию или по записи?
3.Как устранить дребезг, связанный с зацикливанием? Как разорвать порочный круг?

Если у кого есть решение - подскажите, а лучше приложите примерчик на CodeSys 3.5. Буду весьма признателен.

Добрый день.
См. пример. Создан в V3.5 SP17 Patch 3.

https://ftp.owen.ru/CoDeSys3/99_ForumFiles/Example_pro100user.project
https://ftp.owen.ru/CoDeSys3/99_ForumFiles/Example_pro100user.txp

pro100user
24.01.2023, 16:26
Добрый день.
См. пример. Создан в V3.5 SP17 Patch 3.

https://ftp.owen.ru/CoDeSys3/99_ForumFiles/Example_pro100user.project
https://ftp.owen.ru/CoDeSys3/99_ForumFiles/Example_pro100user.txp

Евгений! Спасибо за оперативный ответ. Стало ясно как разорвать петлю.

knoppix
25.01.2023, 08:22
Возникла такая проблема, для коммуникации с внешним миром используется библиотека OwenCommunication (3.5.11.6) и блок OCL.MB_TcpSlave. Где-то раз в 12-13 часов любая коммуникация с ПЛК пропадает, выход usiCurrentCountClients становится равным 0, при этом на блоке никаких ошибок не висит, количество подключённых клиентов не превышает допустимое (8), обычно подключено 3-4 клиента, задачи в ПЛК выполняются. Восстановление связи происходит только после перезагрузи ПЛК по питанию, сбросы, полная перезаливка программы не помогает. Также не подгружаются файлы в оболочке ПЛК, а в логах с высокой частотой выходит ошибка:

Could not open /dev/random: Too many open files (24) вызванная компонентом SysCrypto.

Евгений Кислов
25.01.2023, 10:16
Возникла такая проблема, для коммуникации с внешним миром используется библиотека OwenCommunication (3.5.11.6) и блок OCL.MB_TcpSlave. Где-то раз в 12-13 часов любая коммуникация с ПЛК пропадает, выход usiCurrentCountClients становится равным 0, при этом на блоке никаких ошибок не висит, количество подключённых клиентов не превышает допустимое (8), обычно подключено 3-4 клиента, задачи в ПЛК выполняются. Восстановление связи происходит только после перезагрузи ПЛК по питанию, сбросы, полная перезаливка программы не помогает. Также не подгружаются файлы в оболочке ПЛК, а в логах с высокой частотой выходит ошибка:

Could not open /dev/random: Too many open files (24) вызванная компонентом SysCrypto.

Добрый день.
По описанию - происходит утечка хэндлов (дескрипторов).
Проверить это можно так - в дереве проекта в узле Debug присвойте TRUE каналу Enable Debug и наблюдайте за значением канала Open Files.
Если оно систематически растет - то происходит утечка дескрипторов.
Пример возможной причины - регулярно происходит открытие файлов без их закрытия.

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

vozlov
28.01.2023, 18:28
В Codesys 3.5 SP17 не работает галочка "Наложение входов и выходов" для Modbus TCP Slave?

В 3.5 SP14 все работало (и там, и там были одни и те же значения, т.е. можно было читать и 3-й, и 4-й функциями). В 3.5 SP17 данные есть только в области входов, в области регистров хранения нули.

В проекте для 3.5 SP17 даунгрейднул версию Modbus TCP до 3.5.14 - снова все заработало

Евгений Кислов
28.01.2023, 18:51
В Codesys 3.5 SP17 не работает галочка "Наложение входов и выходов" для Modbus TCP Slave?

В 3.5 SP14 все работало (и там, и там были одни и те же значения, т.е. можно было читать и 3-й, и 4-й функциями). В 3.5 SP17 данные есть только в области входов, в области регистров хранения нули.

В проекте для 3.5 SP17 даунгрейднул версию Modbus TCP до 3.5.14 - снова все заработало

Да, есть такой баг - еще не поправили.

65544

vozlov
29.01.2023, 19:10
Да, есть такой баг - еще не поправили.

65544

Это закрытый баг-трекер? Хотелось бы поднять приоритет у данного бага :)

Евгений Кислов
29.01.2023, 19:12
Это закрытый баг-трекер? Хотелось бы поднять приоритет у данного бага :)

Да, закрытый.

Андрей Чернов
31.01.2023, 14:55
В Codesys 3.5 SP17 не работает галочка "Наложение входов и выходов" для Modbus TCP Slave?

В 3.5 SP14 все работало (и там, и там были одни и те же значения, т.е. можно было читать и 3-й, и 4-й функциями). В 3.5 SP17 данные есть только в области входов, в области регистров хранения нули.

В проекте для 3.5 SP17 даунгрейднул версию Modbus TCP до 3.5.14 - снова все заработало

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

Ryjkoff
01.02.2023, 09:44
В Codesys 3.5 SP17 не работает галочка "Наложение входов и выходов" для Modbus TCP Slave?

В 3.5 SP14 все работало (и там, и там были одни и те же значения, т.е. можно было читать и 3-й, и 4-й функциями). В 3.5 SP17 данные есть только в области входов, в области регистров хранения нули.

В проекте для 3.5 SP17 даунгрейднул версию Modbus TCP до 3.5.14 - снова все заработало\
Здравствуйте.
Можно поинтересоваться, как вы даунгрейднули до Modbus TCP 3.5.14 ?

Евгений Кислов
02.02.2023, 16:05
Как определить что в проекте используется шаблон а не стандартный слейв. Если вкладка соотнесение входов/выходов начинается с чего угодно, но не со слова ModbusGenericSerialSlave то это шаблон серии Mx110 ?

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

vozlov
03.02.2023, 10:06
Можно ли как-нибудь в стандартном ModbusTCP Slave Device 3.5.14.0 ограничить количество одновременных клиентских подключений?

Евгений Кислов
03.02.2023, 10:15
Можно ли как-нибудь в стандартном ModbusTCP Slave Device 3.5.14.0 ограничить количество одновременных клиентских подключений?

Такой возможности нет.

vozlov
03.02.2023, 19:37
это legacy-костыль прежних времен, когда нельзя было изменять значения holding-регистров из кода программы.
Уже несколько лет в его использовании сложно найти какой-то смысл.

Что делаю не так?

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

В Input registers данные записываются без проблем

Евгений Кислов
03.02.2023, 19:39
Галочку Writeable на вкладке General поставили?

vozlov
03.02.2023, 19:44
Галочку Writeable на вкладке General поставили?

Галочка Writable превращает Holding registers в Input registers, адреса меняются с %IW на %QW:

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

А нужны именно честные Holding, которые будут читаться извне функцией 03 - Read Holding Registers

Евгений Кислов
03.02.2023, 19:46
"Галочка Writable превращает Holding registers в Input registers, адреса меняются с %IW на %QW"

Вы ошибаетесь. Галочка делает holding регистры доступными для изменения из кода программы, вот и всё.
Считываться они по-прежнему будут функцией 03.

vozlov
03.02.2023, 19:49
Вы ошибаетесь. Галочка делает holding регистры доступными для изменения из кода программы, вот и всё.
Считываться они по-прежнему будут функцией 03.

Пробовал, почему-то не вышло - функцией 03 считывались нули, а функцией 04 - считывались данные.

В целом, такой подход выглядит еще как больший костыль, чем наложение, которое было раньше. Т.е. часть %QW будет читаться функцией 3, а часть - функцией 4?

Евгений Кислов
03.02.2023, 19:52
Пробовал, почему-то не вышло - функцией 03 считывались нули, а функцией 04 - считывались данные.


Покажите скринами - какие значения у вас в holding регистрах и что вы видите в мастере.
Вот пример - может, с ним станет понятнее, как надо действовать:
https://youtu.be/Q3hqQlqcESo?t=5501


В целом, такой подход выглядит еще как больший костыль, чем наложение, которое было раньше. Т.е. часть %QW будет читаться функцией 3, а часть - функцией 4?

Пользователю вообще не надо думать о %QW.
Пользователь работает с переменными, привязанными к регистрам.

Андрей Чернов
08.02.2023, 16:34
Добрый день.
Не очень понимаю как настроить связь между двумя ПЛК 210 по средством GVL отправитель/получатель. Хочу из одного плк передавать в другой пачку переменных. Есть два шкафа управления, в каждом стоит плк, в обоих случаях плк выполняют роль мастера. Подключаю между собой плк на 2 порт eth. В проекте, который на ПЛК-ОС я добавил GVL отправителя. 65777
Затем добавил в этот проект ПЛК-получателя(ПЛК-ЖБ) и добавил в нем GVL получателя. 65778 Что следует сделать в проекте ПЛК-ЖБ чтобы получать данные с ПЛК-ОС?

Евгений Кислов
08.02.2023, 16:49
Добрый день.
Не очень понимаю как настроить связь между двумя ПЛК 210 по средством GVL отправитель/получатель. Хочу из одного плк передавать в другой пачку переменных. Есть два шкафа управления, в каждом стоит плк, в обоих случаях плк выполняют роль мастера. Подключаю между собой плк на 2 порт eth. В проекте, который на ПЛК-ОС я добавил GVL отправителя. 65777
Затем добавил в этот проект ПЛК-получателя(ПЛК-ЖБ) и добавил в нем GVL получателя. 65778 Что следует сделать в проекте ПЛК-ЖБ чтобы получать данные с ПЛК-ОС?

Добрый день.
См. видеопример:
https://www.youtube.com/watch?v=-MYbECw9Ots&t=4982s

Андрей Чернов
09.02.2023, 09:04
Добрый день.
См. видеопример:
https://www.youtube.com/watch?v=-MYbECw9Ots&t=4982s

Получается мне необходимо перенести обе программы плк в один проект?

Евгений Кислов
09.02.2023, 09:06
Получается мне необходимо перенести обе программы плк в один проект?

Это самый простой способ.
Второй вариант - через экспорт/импорт файла. Его я рассматривал здесь (во второй половине видео):
https://youtu.be/46_XHKU9UoI

Андрей Чернов
09.02.2023, 09:16
Это самый простой способ.
Второй вариант - через экспорт/импорт файла. Его я рассматривал здесь (во второй половине видео):
https://youtu.be/46_XHKU9UoI

А сложный - это поднять на плк слейв, например библиотекой owenCommunication, и опрашивать его другим плк добавив в него слейв-плк стандартными средствами, верно?

Евгений Кислов
09.02.2023, 09:40
А сложный - это поднять на плк слейв, например библиотекой owenCommunication, и опрашивать его другим плк добавив в него слейв-плк стандартными средствами, верно?

Я вообще имел в виду способы настройки обмена через сетевые переменные (добавление всех ПЛК в один проект проще, чем экспорт/импорт файлов).
Но ваше утверждение тоже в целом верно.

xjkpt
10.02.2023, 14:56
Как разбить MIB на подпапки? ФБ агент SNMP c одним TypeDevice занимает порт и выключает экземпляр агента c другим TypeDevice. Только менять порты в браузере/включать нужный агент, или я что-то упускаю?

Евгений Кислов
10.02.2023, 16:14
Как разбить MIB на подпапки? ФБ агент SNMP c одним TypeDevice занимает порт и выключает экземпляр агента c другим TypeDevice. Только менять порты в браузере/включать нужный агент, или я что-то упускаю?

Да, можно использовать несколько экземпляров ФБ с разными портами.
Мы не предусматривали группировку, у нас реализация с плоским списком.

kaftanati
16.02.2023, 09:22
Всем привет,
Прошу помощи с настройкой обмена.

Суть:
СПК 107 - Master Modbus RTU. Пытается читать переменные из слейва (ПР200, INT 0x0200). При отладке: стрелочки обмена зеленые: ошибок нет, но в данных канала "не обновлено". И, что интересно: в списке использований переменной есть ошибка.
ПО СПК обновлен до последних версий с сайта.
OPC сервер, висящий в той же сети, но запускаемый, естественно, когда спк молчит - все

65958 65959 65961 65962

Евгений Кислов
16.02.2023, 09:24
Всем привет,
Прошу помощи с настройкой обмена.

Суть:
СПК 107 - Master Modbus RTU. Пытается читать переменные из слейва (ПР200, INT 0x0200). При отладке: стрелочки обмена зеленые: ошибок нет, но в данных канала "не обновлено". И, что интересно: в списке использований переменной есть ошибка.
ПО СПК обновлен до последних версий с сайта.
OPC сервер, висящий в той же сети, но запускаемый, естественно, когда спк молчит - все

65958 65959 65961 65962

Добрый день.
См. информацию здесь:
https://owen.ru/forum/showthread.php?t=28167&p=343792&viewfull=1#post343792

kaftanati
16.02.2023, 09:35
Добрый день.
См. информацию здесь:
https://owen.ru/forum/showthread.php?t=28167&p=343792&viewfull=1#post343792
Спасибо! Помогло!

ВалераМ
06.03.2023, 12:03
Всех приветствую. Подскажите пожалуйста как контроллером ПЛК210 считать данные с MXConfigurator или ПЛК Mitsubishi FX5U. Возможно ли с помощью .csv файла импортировать каналы или OPC UA клиентом? Связь пытаюсь настроить по TCP.

Евгений Кислов
06.03.2023, 12:11
Всех приветствую. Подскажите пожалуйста как контроллером ПЛК210 считать данные с MXConfigurator или ПЛК Mitsubishi FX5U. Возможно ли с помощью .csv файла импортировать каналы или OPC UA клиентом? Связь пытаюсь настроить по TCP.

Добрый день.
У нас нет опыта работы с Mitsubishi.

Вот видеопримеры настройки обмена по Modbus TCP и OPC UA, которые демонстрируют, как это выполняется на стороне наших ПЛК:

https://youtu.be/mkpY3u7K8Kg
https://youtu.be/iO5phx9zENM

ВалераМ
06.03.2023, 12:21
Вот видеопримеры настройки обмена по Modbus TCP и OPC UA, которые демонстрируют, как это выполняется на стороне наших ПЛК:

https://youtu.be/mkpY3u7K8Kg
https://youtu.be/iO5phx9zENM
А контроллер может быть клиентом OPC? Я слышал вроде как есть драйвер отдельный?

Евгений Кислов
06.03.2023, 12:24
А контроллер может быть клиентом OPC? Я слышал вроде как есть драйвер отдельный?

В наших контроллерах работа в режиме OPC UA Client не поддерживается.

vozlov
06.03.2023, 22:35
Подскажите, штатно CoDeSys поддерживает Modbus RTU over TCP? Или как такой обмен настроить?

Евгений Кислов
07.03.2023, 06:16
Подскажите, штатно CoDeSys поддерживает Modbus RTU over TCP? Или как такой обмен настроить?

Поддерживает в режиме master. См. в библиотеке OwenCommunication ФБ MB_TcpClient.

vozlov
07.03.2023, 09:34
Поддерживает в режиме master. См. в библиотеке OwenCommunication ФБ MB_TcpClient.

Только через библиотеку OwenCommunication, верно? Штатно имелось в виду через интерфейс CoDeSys, их стандартными устройствами.

Евгений Кислов
07.03.2023, 09:38
Только через библиотеку OwenCommunication, верно? Штатно имелось в виду через интерфейс CoDeSys, их стандартными устройствами.

Стандартные средства CODESYS не поддерживают этот протокол.

ВалераМ
07.03.2023, 10:12
Всем добра! Подскажите пожалуйста, как работает библиотека CmpOPCUAClient Implementation ? Есть документалка как либо или примеры на эту библиотеку?

Евгений Кислов
07.03.2023, 11:14
Всем добра! Подскажите пожалуйста, как работает библиотека CmpOPCUAClient Implementation ? Есть документалка как либо или примеры на эту библиотеку?

Добрый день.
На наших контроллерах эта библиотека не поддерживается.

vozlov
08.03.2023, 19:41
Есть вот такая проблема с обменом по Modbus TCP со слейвом (RESPONSE INVALID HEADER):

https://s1.hostingkartinok.com/uploads/images/2023/03/4e3ac7eedecb6fc3fd92cc3516b9b2c8.png

Различными Modbus-сканерами этот слейв опрашивается. Проведенный анализ показал, что проблема может быть связана с тем, что слейв шлет "лишний" байт в каждом ответе:

https://s1.hostingkartinok.com/uploads/images/2023/03/663596a7428761fe31748d80a374e63f.png

Поэтому CoDeSyS-реализация Modbus TCP мастера отбраковывает данный ответ, и данные не принимает. Библиотека OwenCommunication - тоже.

Подскажите, как проще "подстроиться" под данную явно кривую реализацию слейва? Что-то изменить на стороне слейва возможности нет.

Евгений Кислов
08.03.2023, 19:55
Подскажите, как проще "подстроиться" под данную явно кривую реализацию слейва?

Использовать ФБ UNM_TcpRequest из библиотеки OwenCommunication.

vozlov
08.03.2023, 19:58
Использовать ФБ UNM_TcpRequest из библиотеки OwenCommunication.

Существует ли готовый пример реализации "правильного" Modbus TCP с использованием данного ФБ? Чтобы убрать в нем строгую проверку длины ответа...

Евгений Кислов
08.03.2023, 20:01
Существует ли готовый пример реализации "правильного" Modbus TCP с использованием данного ФБ? Чтобы убрать в нем строгую проверку длины ответа...

У вас цель - полностью сделать "правильную" реализацию Modbus TCP с использованием данного ФБ или решить конкретную проблему с вашим конкретным слэйвом с "кривой реализацией" протокола?
Если второе - то достаточно хардкодом задать нужные запросы и написать примитивный парсер ответов, вычленяющий данные по известным байтовым смещениям.
Вся нужная для этого информация на вашем скриншоте с Communication Traffic есть.

vozlov
08.03.2023, 20:09
У вас цель - полностью сделать "правильную" реализацию Modbus TCP с использованием данного ФБ или решить конкретную проблему с вашим конкретным слэйвом с "кривой реализацией" протокола?
Если второе - то достаточно хардкодом задать нужные запросы и написать примитивный парсер ответов, вычленяющий данные по известным байтовым смещениям.
Вся нужная для этого информация на вашем скриншоте с Communication Traffic есть.

Цель - решить проблему с кривым слейвом. Имея готовую "правильную" реализацию Modbus TCP это сделать очень просто - заменить проверку длины ответа (строгое равенство =) на >=.

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

vozlov
08.03.2023, 20:17
В ответе слейва прямо в двух местах вставляются байты обозначающие сколько пакет несёт полезной информации, эмулятор слейва читается без проблем?

Вопрос только в лишнем байте (последнем), который не дает использовать (предположительно) штатный Modbus TCP / реализацию Modbus TCP в OwenCommunication.

Утилиты опроса по Modbus (например, Modbus Poll), опрашивают данный слейв, отображают данные, несмотря на некорректные ответы (лишний байт в конце).

Евгений Кислов
08.03.2023, 20:26
Имея готовую "правильную" реализацию Modbus TCP

Тогда вам придется реализовать его самостоятельно.
Мы не распространяем исходники своих библиотек.

vozlov
08.03.2023, 20:31
Тогда вам придется реализовать его самостоятельно.
Мы не распространяем исходники своих библиотек.

Имелся в виду пример CoDeSys-реализации Modbus TCP с использованием UNM_TcpRequest. Не исходники "правильного" MB_TcpRequest.

Евгений Кислов
08.03.2023, 20:32
Имелся в виду пример CoDeSys-реализации Modbus TCP с использованием UNM_TcpRequest. Не исходники "правильного" MB_TcpRequest.

Это синонимичные вещи. MB_TcpRequest построен на базе UNM_TcpRequest.
Поскольку обычно производители слэйвов не имеют привычки вставлять в ответ лишние байты - то ни у кого не возникало поводов создавать альтернативную open-source реализацию.

vozlov
08.03.2023, 20:34
Ещё раз спрошу, Ваш мастер без проблем опрашивает правильные слейвы. Не сторонние мастера, а что там у Вас плк или панель?

Да. Мастер (ПЛК200) без проблем опрашивает правильные слейвы штатным драйвером CoDeSyS и блоком MB_TcpRequest библиотекой OwenCommunication.

Этот слейв оба варианта не могут опросить.

sco-scorpion
10.03.2023, 22:04
Подскажите, для управления ПЧ AFD-E есть шаблон в котором управление происходит по отправке командного слова и подтверждающий Бит записи
66430
хочу повторить код запроса без шаблона, часть кода есть - это отправка самого командного слова

VAR
...
fbKnopTrig: R_TRIG;
END_VAR


// Проверка привода на готовность
fbComControl1
(
xEnable := TRUE,
udiComPort := 5,
udiBaudrate := 9600,
udiByteSize := 8,
eParity := OCL.COM_PARITY.NONE,
eStopBit := OCL.COM_STOPBIT.ONE
);

IF fbComControl1.xActive THEN

fbKnopTrig(CLK := xKnop);

IF fbKnopTrig.Q THEN
eState := 20;
END_IF

CASE eState OF

0: // ожидание команды

10: // Опрос состояния AFD-E

20: // запуск AFD-E

wCmdWord := 22;
fbMbSerialRequest.xExecute := TRUE;
fbMbSerialRequest.hCom := fbComControl1.hCom;
fbMbSerialRequest.xIsAsciiMode := FALSE;
fbMbSerialRequest.usiSlaveId := 15; // адрес слейва
fbMbSerialRequest.eFuncCode := OCL.MB_FC.WRITE_SINGLE_REGISTER; // функция
fbMbSerialRequest.uiDataAddr := 4864; // адрес начального запроса
fbMbSerialRequest.uiDataCount := 1; // число регистров
fbMbSerialRequest.pData := ADR(wCmdWord);
fbMbSerialRequest.szSize := SIZEOF(wCmdWord);

fbMbSerialRequest();

// fbMbSerialRequest.xError := xError;
// fbMbSerialRequest.eError := wError;


IF fbMbSerialRequest.xDone OR fbMbSerialRequest.xError THEN

fbMbSerialRequest(xExecute := FALSE);
eState := 0;

END_IF

END_CASE

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

664316643266433

Евгений Кислов
10.03.2023, 22:09
а вот куда записывать бит не понятно

Аналогом бита записи шаблона является вход xExecute в fbMbSerialRequest.
В вашем коде аналогом этого бита является xKnop.

sco-scorpion
10.03.2023, 22:52
Аналогом бита записи шаблона является вход xExecute в fbMbSerialRequest.
В вашем коде аналогом этого бита является xKnop.
В тех поддержке написали что регистр 4864 всегда должен быть в значении 22
Т.Е. надо сделать зацикливание в программе я правильно понимаю?

IF fbMbSerialRequest.xDone OR fbMbSerialRequest.xError THEN

fbMbSerialRequest(xExecute := FALSE);
eState := 20;

END_IF

Евгений Кислов
10.03.2023, 22:56
Я не вижу причин делать "зацикливание в программе".

sco-scorpion
10.03.2023, 22:58
Я не вижу причин делать "зацикливание в программе".
Не могли бы Вы объяснить как правильнее написать?

Евгений Кислов
10.03.2023, 23:01
Не могли бы Вы объяснить как правильнее написать?

Напомните, пожалуйста, почему вы решили использовать библиотеку, а не настроить опрос через шаблон?

sco-scorpion
10.03.2023, 23:15
Напомните, пожалуйста, почему вы решили использовать библиотеку, а не настроить опрос через шаблон?

Изучить опрос через библиотеку. В реальном проекте буду использовать шаблон если не будет никаких неожиданностей.

Евгений Кислов
10.03.2023, 23:17
Изучить опрос через библиотеку. В реальном проекте буду использовать шаблон если не будет никаких неожиданностей.

С помощью шаблона у вас получилось для ПЧВ организовать требуемое поведение?

sco-scorpion
10.03.2023, 23:27
С помощью шаблона у вас получилось для ПЧВ организовать требуемое поведение?

Да, получилось

Евгений Кислов
10.03.2023, 23:31
Да, получилось

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

knoppix
16.03.2023, 13:44
С чем может быть связан ErrorCode 60 - RESPONSE_CRC_FAIL? Ошибка возникает при попытке записи в удаленное устройство данных длинной свыше 30, для чтения и записи используется блок OCL.MB_SerialRequest, eFuncCode - OCL.MB_FC.WRITE_MULTIPLE_REGISTERS.
Различные варианты Tameout пробовал выставлять. В какую сторону стоит копать? Не хотелось бы разбивать данные на две записи, тем более набора данных длиной свыше 50 не планируется.

Евгений Кислов
16.03.2023, 13:47
С чем может быть связан ErrorCode 60 - RESPONSE_CRC_FAIL? Ошибка возникает при попытке записи в удаленное устройство данных длинной свыше 30, для чтения и записи используется блок OCL.MB_SerialRequest, eFuncCode - OCL.MB_FC.WRITE_MULTIPLE_REGISTERS.
Различные варианты Tameout пробовал выставлять. В какую сторону стоит копать? Не хотелось бы разбивать данные на две записи, тем более набора данных длиной свыше 50 не планируется.

Добрый день.
Какое у вас время цикла задачи MainTask?

capzap
16.03.2023, 13:48
С чем может быть связан ErrorCode 60 - RESPONSE_CRC_FAIL? Ошибка возникает при попытке записи в удаленное устройство данных длинной свыше 30, для чтения и записи используется блок OCL.MB_SerialRequest, eFuncCode - OCL.MB_FC.WRITE_MULTIPLE_REGISTERS.
Различные варианты Tameout пробовал выставлять. В какую сторону стоит копать? Не хотелось бы разбивать данные на две записи, тем более набора данных длиной свыше 50 не планируется.

проблема скорее всего в удаленном устройстве

knoppix
16.03.2023, 13:59
Добрый день.
Какое у вас время цикла задачи MainTask?

По умолчанию, 10мс.

Евгений Кислов
16.03.2023, 14:00
По умолчанию, 10мс.

Если поставить 20 мс - то ошибка всё равно будет воспроизводиться?

knoppix
16.03.2023, 21:09
Если поставить 20 мс - то ошибка всё равно будет воспроизводиться?

Спасибо, помогло, сперва увеличил до 100мс, ошибка исчезла, потом увеличил скорость опроса до 115200, и на 20мс все стало работать стабильно.

RomeoVar
16.03.2023, 22:43
С чем может быть связан ErrorCode 60 - RESPONSE_CRC_FAIL
А на что вообще указывает эта ошибка?
С ней жить можно, но хотелось бы понять суть
Ведь если смотреть стандарт Modbus то при определении ошибки в пакете (ну того же CRC) просто повторяется запрос и инициатор запроса либо получает правильные данные, либо не получает их вообще.
Или я не прав?

Евгений Кислов
17.03.2023, 07:10
С чем может быть связан ErrorCode 60 - RESPONSE_CRC_FAIL
А на что вообще указывает эта ошибка?
С ней жить можно, но хотелось бы понять суть
Ведь если смотреть стандарт Modbus то при определении ошибки в пакете (ну того же CRC) просто повторяется запрос и инициатор запроса либо получает правильные данные, либо не получает их вообще.
Или я не прав?

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

RomeoVar
17.03.2023, 07:37
Поделюсь результатами экспериментов - может кому пригодится.
На текущий момент время цикла стоит 5 мс. При этом мое фактическое время цикла в среднем 400 мкс, макс 700 мкс
Увеличение времени цикла ни до 10 ни до 20 мс. в моем случае эффекта не возымело. Ошибка возникала
А вот снижение скорости с 115200 до 57600 помогла.
При этом если на скорости 115200 затрачиваемое время на обмен занимало 35 мс. то на 57600 35-45 мс. что не ктитично и меня более чем устраивает.
Провел еще один эксперимент- уменьшил время цикла до 3 мс. при скорости 57600 время на обмен стало занимать от 27 до 33 мс. Ошибок пока не возникало.

Видимо используемый мною драйвер сервопривода не очень хорошо работает на 115200
В итоге решил остановиться на скорости 57600 c временем цикла задачи 10 мс. При таком раскладе время затрачиваемое на обмен 70 мс. всегда. Решил что так будет надежнее
Ошибок после 2-х часов работы - ни одной

Андрей Чернов
17.03.2023, 16:46
Добрый день!

Есть система: панель(сп310), плк210 и модем IRZ для отправки данных. Панель является мастером и общается с плк по modbus tcp через OCL mb tcp slave. Необходимо чтобы модем опрашивал плк. Можно ли опрашивать тот же ocl slave по тем же адресам массива word`ов или необходимо добавить еще регистров(например было 0..999, а станет 0...1999)? В данный момент нет возможности испытать, т.к. все оборудование на объекте в другом городе.

Евгений Кислов
17.03.2023, 18:47
Добрый день!

Есть система: панель(сп310), плк210 и модем IRZ для отправки данных. Панель является мастером и общается с плк по modbus tcp через OCL mb tcp slave. Необходимо чтобы модем опрашивал плк. Можно ли опрашивать тот же ocl slave по тем же адресам массива word`ов или необходимо добавить еще регистров(например было 0..999, а станет 0...1999)? В данный момент нет возможности испытать, т.к. все оборудование на объекте в другом городе.

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

66596

sco-scorpion
21.03.2023, 09:22
Подскажите к порту подключено 2 устройства к чему или к кому обращаться что бы узнать код ошибки или ошибку, если одно устройство отвалится или запрос отправляет не тот?

Евгений Кислов
21.03.2023, 09:24
Подскажите к порту подключено 2 устройства к чему или к кому обращаться что бы узнать код ошибки или ошибку, если одно устройство отвалится или запрос отправляет не тот?

AFD_E_Trav.byModbusError
AFD_E_Trav.xError

AFD_E_Wind.byModbusError
AFD_E_Wind.xError

ВладОвен
22.03.2023, 17:28
С помощью xDone можно определить число принятых корректных пакетов.
С помощью xError и byModbusError можно определить число принятых пакетов с кодами ошибок и число запросов, оставшихся без ответа.

Сложив эти три числа - получим число отправленных пакетов.

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

Подскажите, как при помощи xDone можно определить число принятых корректных пакетов?
Я настроил и подключил прибор МВ110-226-16д к своему ПЛК. Программа заточена на чтение 1 раз в секунду из МВ110. И она действительно так работает. Лампочка на МВ110 подмигивает 1 раз в секунду.
Задача, которая должна словить количества принятых корректных пакетов запускается 50 раз в секунду.
Я вижу:
66671

Я слежу на xDone. Он всегда поднят. wCount3 увеличивается на 50 за 1 секунду. wCount4 не увеличивается.
Я слежу за xBusy. Он всегда опущен. wCount1 не увеличивается. wCount2 увеличивается на 50 за 1 секунду.

Может я неправильно настроил параметр "Всегда обновлять переменные: ВКЛ.2 (всегда в задаче цикла шины)"?

Евгений Кислов
22.03.2023, 17:32
По скриншоту непонятно, как настроен обмен.
Выложите ваш проект - посмотрим, что происходит.

ВладОвен
22.03.2023, 18:06
Выложите ваш проект - посмотрим, что происходит.

Вот: 66672

Евгений Кислов
22.03.2023, 18:10
Вот: 66672

Обмен настроен через стандартный компонент Modbus Slave Com Port.
Изначальная задача: "посчитать количество ушедших/пришедших пакетов по шине ModBus для одного из устройств".

См. пример:
https://owen.ru/forum/showthread.php?t=28167&p=403643&viewfull=1#post403643

ВладОвен
23.03.2023, 11:40
Спасибо за пример. Я разобрался.
Этот счетчик пакетов считает пакеты всего устройства целиком.
А существует ли счетчик, который считает пакеты по каналам?
66686

Евгений Кислов
23.03.2023, 11:50
Спасибо за пример. Я разобрался.
Этот счетчик пакетов считает пакеты всего устройства целиком.
А существует ли счетчик, который считает пакеты по каналам?
66686

В данный момент нет, но такое пожелание зафиксировано в баг-трекере CODESYS.

66688

sco-scorpion
23.03.2023, 12:48
AFD_E_Trav.byModbusError
AFD_E_Trav.xError

AFD_E_Wind.byModbusError
AFD_E_Wind.xError

а есть ФБ для конвертации кода ошибки в текст?

Евгений Кислов
23.03.2023, 12:56
а есть ФБ для конвертации кода ошибки в текст?

Да, см. функцию PChV_M01_ERROR_TO_WSTRING в библиотеке Mx110 Assistant.

sco-scorpion
23.03.2023, 12:59
Да, см. функцию PChV_M01_ERROR_TO_WSTRING в библиотеке Mx110 Assistant.

так это относится к ПЧ, а у меня ошибки связи Modbus

Евгений Кислов
23.03.2023, 13:04
так это относится к ПЧ, а у меня ошибки связи Modbus

Да, вы правы. Той функции, что вам нужна, нет, но несложно ее реализовать самостоятельно.

l120l
19.04.2023, 11:49
Добрый день. Подскажите, в чем может быть проблема?
При компиляции выдает следующие ошибки:
------ Компиляция : Приложение: Device.Application -------
типизировать код...
генерировать код...
генерировать глобальные инициализации ...
генерировать код инициализации...
[WARNING] iodrvmodbus, 3.5.4.0 (3s - smart software solutions gmbh): UpdateSlaveFBTriggers [ModbusSlaveComPort]: C0196: Неявная конверсия из типа без знака 'UINT' в тип со знаком 'INT': возможно изменение знака
[ERROR] СПК107 SP5 P5: C0189: ';' требуется вместо 'м'
[ERROR] СПК107 SP5 P5: C0046: Идентификатор 'HandleMousedownInfoNested' не задан
[ERROR] СПК107 SP5 P5: C0009: Обнаружен недопустимый символ 'м'
[ERROR] СПК107 SP5 P5: C0189: ';' требуется вместо 'GenElemInst379'
[ERROR] СПК107 SP5 P5: Internal error in Statement: (GenElemInst379[0] := BYTE#0); : System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в ..(IndexAccessExpression ) в _3S.CoDeSys.LanguageModelManager.IndexAccessExpres sion.( ) в ..(AssignmentExpression ) в _3S.CoDeSys.LanguageModelManager.AssignmentExpress ion.( ) в ..(ExpressionStatement ) в _3S.CoDeSys.LanguageModelManager.ExpressionStateme nt.( ) в ..(SequenceStatement )
[ERROR] СПК107 SP5 P5: C0018: 'GenElemInst379[0]' is no valid assignment target
[ERROR] СПК107 SP5 P5: C0046: Идентификатор 'GenElemInst379' не задан
[ERROR] Internal error:System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта. в _3S.CoDeSys.LanguageModelManager.CompileContext.( Signature , Signature , CompileContext , Boolean ) в _3S.CoDeSys.LanguageModelManager.CompileContext.( Boolean ) в _3S.CoDeSys.LanguageModelManager.CompileContext.Ge nerateCodeInit(Boolean bOnlineChange, Boolean bSignatureDone, CompileContext comconRef, Signature& signGlobalImplicit, Boolean bLinkAll) в _3S.CoDeSys.LanguageModelManager.LanguageModelMana ger.(Guid , Boolean , Boolean , Boolean , IOnlineChangeDetails& , IMessage[]& , IMessage[]& )
Компиляция завершена -- 8 ошибок, 1 предупреждений : загрузка невозможна!

Евгений Кислов
19.04.2023, 11:52
Добрый день.
Вы используете CODESYS V3.5 SP5 Patch 5?

l120l
19.04.2023, 11:56
Да, так как работаю СПК107 версии 5.472.

Евгений Кислов
19.04.2023, 12:01
Да, так как работаю СПК107 версии 5.472.

А какие версии компонентов Modbus вы используете? (Modbus COM, Modbus Master и т. д.)
Вы используете шаблоны Mx110?
Если да - то какой версии?

l120l
19.04.2023, 12:05
Modbus Master, COM Port Версия: 3.5.5.0
Да, использую версии 3.5.4.13

Евгений Кислов
19.04.2023, 12:15
Modbus Master, COM Port Версия: 3.5.5.0
Да, использую версии 3.5.4.13

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

l120l
19.04.2023, 13:17
Доступ к загрузке получил, но при ее выполнении появляется следующая ошибка:
67409

xjkpt
24.04.2023, 08:20
Не знаю, как поступать с Ethernet компонентом. Изначально я считал, что его настройки должны совпадать с настройками связи контроллера, но установленные в нем адрес, маска, шлюз будто бы ни на что не влияют, связь со слейвами не теряется при несовпадении их адресов. Допустим, необходимо динамически менять ip-адреса modbus tcp устройств. Дать возможность оператору устанавливать адрес и маску родительского компонента самостоятельно? Копировать туда параметры контроллера? Не трогать его вообще?

И можно ли как-то менять программно тайм-ауты и unit-id tcp устройств?

Евгений Кислов
24.04.2023, 08:53
Дать возможность оператору устанавливать адрес и маску родительского компонента самостоятельно? Копировать туда параметры контроллера? Не трогать его вообще?

Лучше - не трогать. Этот компонент не влияет на сетевые настройки контроллера - их можно изменить в конфигураторе или (для СПК) через узел Network.


Допустим, необходимо динамически менять ip-адреса modbus tcp устройств.
...
И можно ли как-то менять программно тайм-ауты и unit-id tcp устройств?


Таймауты и Unit ID, насколько я понимаю, нельзя.
IP-адреса можно:
https://owen.ru/forum/showthread.php?t=28167&page=5&p=296714&viewfull=1#post296714

Khedron
25.04.2023, 15:40
Здравствуйте.
Нужно опрашивать на одном порту RS485 модули Мх110 по MODBUS и несколько устройств с самописным протоколом используя UNM_SerialRequest.
Попалась как раз не нормальная ситуация, как уже отвечали (https://owen.ru/forum/showthread.php?t=23897&page=36&p=367564&viewfull=1#post367564) на форуме.
Как совместить опрос на одном порту по двум протоколам? Я так понимаю, нужно самому контроллировать открытие/закрытие порта и ставить блокирующие флаги, чтобы по очереди вызывался опрос устройств и модулей?
Возможно ли совместить настройку модулей Мх110 через конфигуратор и управление опросом из программы?

kondor3000
25.04.2023, 16:12
Здравствуйте.
Нужно опрашивать на одном порту RS485 модули Мх110 по MODBUS и несколько устройств с самописным протоколом используя UNM_SerialRequest.
Попалась как раз не нормальная ситуация, как уже отвечали (https://owen.ru/forum/showthread.php?t=23897&page=36&p=367564&viewfull=1#post367564) на форуме.
Как совместить опрос на одном порту по двум протоколам? Я так понимаю, нужно самому контроллировать открытие/закрытие порта и ставить блокирующие флаги, чтобы по очереди вызывался опрос устройств и модулей?
Возможно ли совместить настройку модулей Мх110 через конфигуратор и управление опросом из программы?

Делал опрос по разным протоколам, на одном порту, один RTU, другой не стандартный ( но на одной скорости 115200, четности и стоп битах, 8N1)
Проcто переключая 2 программы опроса через 300 ms, всё работало без ошибок. Опрос через биб-ки.
Иначе придётся открывать и закрывать порты, что будет очень медленно.