1. Попробуйте в узле LeftSide переключить бит управления подтяжкой RS-485.Цитата:
Что делать?
2. Выложите ваш проект, пожалуйста.
1. Попробуйте в узле LeftSide переключить бит управления подтяжкой RS-485.Цитата:
Что делать?
2. Выложите ваш проект, пожалуйста.
turkish945 А ты наш шлейф физически проверял? Что будет если наплевать на него и подключить датчик на кусок витой пары, например?
Сразу тогда будет понятно про железо или софт
Все, нашел проблему. Это мой косяк :)
Решил проверить шлейф и обнаружил, что одно из устройств, которое на нем висит - не подключено, соответственно в этом месте линия разорвана, соединил - заработало.
Но теперь не считывается значение. Возможно я что-то не так делаю - первый раз RS485 без шаблонов настраиваю...
В докуме к устройству написано:
Прибор поддерживает выполнение функций ModBus:
03 – чтение значений из нескольких регистров хранения;
06 – запись значения в один регистр хранения.
и далее табличка, в которой для параметра "измеренное значение температуры" указан номер первого регистра hex 0х0102.
У слейва настроил канал:
Вложение 50054
почему-то выдает значение 0. Температура при этом точно не 0 :)
Да и через конфигуратор смотрел, там все нормально отображается....
Выложите, пожалуйста, скриншот, на котором это будет видно.Цитата:
почему-то выдает значение 0.
Вложение 50056
вроде все видно
да, теперь работает, спасибо!
а в чем суть этой настройки? И где этот цикл шины? В конфигураторе задач я такой не нашел...
И еще вопрос: как определить, что произошло считывание? Там температура считывается значением х100, мне надо его поделить на 100 соответственно. Если я буду это делать по xDone слейва, будет как надо работать? То есть xDone = true только один цикл?
См. п. 4 здесь:Цитата:
а в чем суть этой настройки? И где этот цикл шины? В конфигураторе задач я такой не нашел...
https://ftp.owen.ru/CoDeSys3/98_Book...kManagment.pdf
Проще это делать в цикле, а не по каким-то условиям.Цитата:
И еще вопрос: как определить, что произошло считывание? Там температура считывается значением х100, мне надо его поделить на 100 соответственно. Если я буду это делать по xDone слейва, будет как надо работать? То есть xDone = true только один цикл?
Это совершенно не ресурсоемкая операция, и нет смысла на ней экономить.
Добрый день,
использую контроллер PLC210-03-CS, прошивка plc210 1.2.0415.1822, Codesys V3.5 SP14 Patch 3, OwenTargets 3.5.14.3003
установлены шаблоны для устройств Mx210 - Mx210Templates_v3.5.11.6
Настроен обмен через Modbus TCP Master с использованием шаблонов устройств.
Оконечное устройство MВ210-101 не подключено к шине.
Ожидаемое поведение:
после определения что устройство не отвечает, для устройства устанавливается флаг ошибки, по каждому из каналов устанавливается статус "Нет связи с модулем" (FIELDBUS_ERROR), и не меняется до успешного установления связи с модулем и получения актуальных данных.
Фактическое поведение:
после определения, что устройство не отвечает, устанавливается флаг ошибки, устанавливается статус "Нет связи с модулем", но при повторных попытках подключения, флаг ошибки на некоторое время сбрасывается, а статус устанавливается в значение NO_ERROR.
Таким образом, в программе может возникнуть ситуация использования некорректных данных получаемых, например, с аналогового входа. Какие могут быть способы устранения данной проблемы?
Добрый день.
Посмотрите это видео:
https://youtu.be/IFUN4cYskRI
Оно несколько на другую тему, но созданные в его рамках флаги можно использовать и при валидации данных, полученных от модуля (например, перед копированием значений переменных, привязанных к каналам, в другие переменные программы).
Здравствуйте!
Есть несколько устройств, подключенных к СПК107 по RS-485 не по шаблону. Мне необходимо, чтобы при отказе или отключении устройства загоралась условная лампочка. Как определить статус устройства? Тут, на скриншоте ничего не подходит (например xError только мигает, мне нужно чтобы стабильно отображалась онорма лили ошибка):
Вложение 51120
Добрый день.
Посмотрите это видео:
https://youtu.be/IFUN4cYskRI
Добрый день.
Судя по описанию - у вас панель является мастером, и вы некорректно настроили обмен (указали адреса отсутствующих в ПЛК регистров и т.д.).
Рекомендую начать с примера:
https://ftp.owen.ru/SP300/01_Example...odesys_3.5.zip
Спасибо, буду пробовать!
Здравствуйте, использую библиотеку OwenCommunication 3.5.11.3 на СПК107[М01] для связи по протоколу Modbus RTU с OPC сервером.
СПК - Master, OPC - Slave.
В проекте отправляется несколько запросов. Первые три отправляются и получают ответ, на 4-м запросе выставляется флаг xBusy в TRUE и не проходит. Все последующие запросы игнорируются.
Подскажите в чем может быть проблема?
Если нужно могу приложить все файлы, но сразу скажу, что проект громоздкий, в нем используется самописная библиотека.
CodeSYS 3.5 SP14 Patch 3, таргет-файл 3.5.14.30
Здравствуйте.
К ПЛК210 планируется подключение газоанализаторов Бинар-2Д по модбасу.
Естественно, протокол у них свой. Можете помочь с написанием модуля опроса?
Добрый день!
Постарался убрать по максиму, но лишнее все же осталось.
Прикладываю архив проекта и конфигурацию OPC.
Добрый день.
Проще всего будет использовать библиотеку OwenCommunication.
https://ftp.owen.ru/CoDeSys3/04_Libr...mpiled-library
Вот пример, на который можно ориентироваться (в нем показывается, как опросить устройство по протоколу DCON - это тоже простой строковый протокол):
https://youtu.be/uH3hnXmc0fw
Из-за количества оберток разобраться в коде довольно трудно, но, кажется, у вас в пределах цикла ПЛК производится несколько вызовов экземпляра OCL.MB_SerialRequest с разными аргументами.
Так делать нельзя - нужно дождаться завершения одной транзакции и только после этого переходить к следующей.
ФБ библиотеки работают асинхронно.
Вложение 51453
Код достался мне, скажем так, по наследству :) Он действительно написан не очень очевидно, тем не менее, спасибо большое, вы натолкнули меня на верную мысль.
Я дописал код так, чтобы каждый запрос сначала вернул xDone, а только потом уже идет следующий вызов запроса.
Вложение 51468
Добрый день.
Codesys OPC Server v 3 в MasterScada добавляется.
Но при попытке вставить переменные получаю ошибку как на стр. 32 руководства
«CODESYS V3.5 Настройка связи с верхним уровнем». Рекомендованного в руководстве файла OPC.bat нет.
Подскажите, в чем проблема?
СПК110, пакет 3.5.11.5004.
Коллеги ,доброго времени, глупый вопрос : есть огромная куча слайв MODBUS устройств,подключенные через 3х портовые IP шлюзы...Нажмите на изображение для увеличения. Вложение 51736
ipadres-адрес шлюза,надеюсь ?
Unit-ID - это адрес непосредственно слайв MODBUS устройства ?
но у шлюза несколько портов..пусть будет три..Где это прописать?
как быть с тем что слайв MODBUS устройства на одном шлюзе до 60 ? нужно создать копии с одинаковым IP адресом но разными Unit-ID?
шлюз : tGW 735 ,3х портовый ,на каждом порту от 4 до 10 устройств ...соответственно нужно вычитывать и иногда записывать в определенные регистры
и самое неприятное ,шлюзы MD-CCM18A/N там до 60 устройств..но я так понял все они в одном адресном пространстве и для них необходимо только создать каналы , давайте я вам руководства по нему на почту скину ,может что подскажите...в открытом доступе что то найти по нему сложно
Так у вас tGW 735 или MD-CCM18A/N? Или MD-CCM18A подключены к tGW 735?
и то и другое естественно через коммутатор по езернету
С tGW 735 все понятно - там каждому COM-порту соответствует TCP-порт (502, 503, 504) - на каждый порт нужно в CODESYS добавлять компонент Modbus TCP Slave и указывать там соответствующий порт.
У MD-CCM18A/N - тоже самое, но порт, как я понимаю, один.
Далее под Modbus TCP Slave надо добавлять Modbus Slave COM Port - и вот там указываются Slave ID.
Посмотрите второй скриншот в этом посте:
https://owen.ru/forum/showthread.php...l=1#post338820
В рамках разных Modbus TCP Slave могут быть добавлены слэйвы с совпадающими ID - это нормально.
вот за это вам ОГРОМНОЕ СПАСИБО) только вот среда не позволяет добавить к TCP Slave устройство COM Slave...
Вложение 51737