This is topic Нет связи с ПЛК Delta через Modbus TCP in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000866.html

Posted by Hip67 (Участник № / Member № 4427) on :
 
доброго времени суток.
в базовой системе Trace Mode 6.06 не могу установить связь с контроллером DVP28SV по Ethernet. к контроллеру подключен модуль DVPEN01, которому задан IP адрес 192.168.1.5. через родную утилиту Delta в плк записана программа и с ней обмен идет хорошо. далее в TM в источниках\приемниках - modbus создаю компонент Rin_Word(4), чтобы прочитать данные из D10 регистра ПЛК. конфигурация компонента: Номер порта 0; адрес 0х3 (сетевой адрес ПЛК); канал 0х100А (адрес регистра); тип протокола TCPIP; направление Input; формат дискрет; IP адрес 192.168.1.5.
данный источник перевожу в каналы, затем в аргументы экрана и привязываю ГЭ "шкала" и "текст" к получившемуся аргументу. запускаем МРВ и видим ноль как на шкале, так и на текстовой панеле.
в чем может быть проблема или что делается не так?
заранее спасибо.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
1) Проверить атрибут Достоверность канала.
2) Если Достоверность в нуле - смотреть логическую цепочку связей от источника до ГЭ на экране - возможно где-то ошибка в привязках.
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
Спасибо. связь установить удалось, но до сих пор непонятно, каким компонентом можно записать значение в регистры данных и внутренние реле?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Тут все зависит от диапазона этих адресов внутри контроллера - это влияет на номер функции ModBus. Буквально недавно сам делал проект на этом контроллере, у меня в нем диапазоны данных были начиная с адреса 3000 и далее. Так в проекте для чтения данных использовал описатель Rout_Word(3) - третья функция ModBus, чтение выходных регистров в формате WORD. А передавал в контроллер данные через описатели W_Word(16) - передача целочисленного значения в формате WORD. Все работало и по ModBusRTU (через RS когда тестировал проект в процессе разработки) и сейчас работает нормально по ModBusTCP (уже на объекте).

Да, насчет смещения не забываем - у этого контроллера регистр для ModBus параметра указывать надо со смещением 0х1000.
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
Romсheg

смещение? то есть, допустим, чтобы отправить число в регистр D100, который в контроллере имеет адрес 0x1064, я должен воспользоваться W_Word(16) с настройкой адреса регистра 0х2064?
и с какими именно моделями имели опыт, что данные лежали от 3000?
быть может, для разных контроллеров - разное смещение?
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Неее - вы уже сами верно выше указали, что при чтении регистра D10 из контроллера его адрес в настройке источника/приемника в проекте ТМ6 задавали как 0x100A. Вот оно и есть это смещение 0x1000 относительно номера регистра в контроллере.
В моем проекте, например, регистр 3001 в проекте в описателе задавался как 0x1bb9.

Модель там без разницы, если не ошибаюсь, место расположения данных в нем так определил тот, кто программировал сам контроллер.
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
теперь понял, что за смещение. только ни через W_Word(16), как было указано выше, ни через W_Word(6), как было сделано в тестовом примере, данные в регистр контроллера не приходят. передаю через кнопку "ввести и передать" на МРВ. в окне просмотра компонентов число появляется на нужном канале, но в сам контроллер не доходит (проверял и самим ТМ6 и родной программой)
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
А что с атрибутом Достоверность этого передающего канала после попытки посылки?
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
имеете ввиду бит достоверности? после ввода числа он меняется с T на F
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Это значит, что на переданный пакет от МРВ ТМ6 устройство не ответило, либо ответило ошибкой.

Что-то неверно в настройках описателя. Можете его параметры настройки перечислить?
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
могу, конечно
1) источники\приемники - W_Word(16)#2, кодировка TW0, номер порта 0, адрес 0х3, канал 0х100А, тип протокола ТСР\IP, направление output, формат дискрет, ipадрес 192.168.1.5.
2) это всё переношу в каналы, оттуда в аргументы экрана.
3) в аргументах экрана появляется аргумент W_Word_16__2_R, тип IN, тип данных REAL, Привязка W_Word(16)#2:Реальное значение (Система.RTM_1.WRITE)
4) этот аргумент привязываю к кнопке. в свойствах её ставлю "ввести и передать"

а результат всех этих действий я уже описал.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Хмм, для начала некоторые логические ошибки при привязках: у вас на экране кнопка должна результат передавать в аргумент типа OUT, который должен быть привязан к атрибуту Вход канала, который связан с источником/приемником ModBus. Тогда будет верная настройка передачи параметра. Реальное значение - оно не для приема параметра в канале, из него можно только читать данные, если посмотрите схему обработки данных в канале в справке - то сразу увидите это.
В остальном - настройка вроде верная, если вы действительно хотите передавать значение в регистр D10 контроллера, у которого задан IP=192.168.1.5, а его логических сетевой адрес=3.
Рекомендую посмотреть лог Профайлера после работы проекта - возможно сообщения об ошибках помогут понять более точно, что же приходит в ответ от контроллера на вашу посылку.
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
кнопку перепривязал к аргументу, который привязал к атрибуту "Входное значение" канала W_Word(16)#2. в окне компонентов МРВ видно, что при отправке, значение попадает в атрибут In. в Q и R появляется такое же число. при этом достоверность все также меняется на F.
а вот с логом МРВ можно поточнее? в папке с проектом я нашел только следующие логи, но, очевидно, к обмену сообщениями с контроллером они не имеют никакого отношения.

tm6_log.txt
12:07:40 0000 00000000[0] 20.10.2010
12:07:40 0000 00000000[0] Start
12:07:44 0016 00000001[219] Graph loop is big(t)
12:09:38 0000 00000000[0] Stop


16_2.txt
(12:37:7) INF_LOAD:Starting... 16_2
(12:37:7) INF_RTM:Detected NT5.RTM 5.1
(12:37:7) ._.:Base TRACE MODE 6 Profiler ver. 6.07.0
(12:37:7) INF_LOAD:Load Channels = 6
(12:37:7) INF_LOAD:Templates=1
(12:37:7) INF_LOAD:Objects = 3
(12:37:7) INF_RTM:Timer=0.055s CalcLoop=55ms
(12:37:7) INF_RTM:start time is 0 s
(12:37:8) INF_RTM:ModeSwitch e15=0000 e18=0000 e20=0000 [0]
(12:37:8) INF_RTM:mode=2(Work) e15=00 e18=00 e20=00 [0-0]
(12:37:8) WRN_DDE:Не удается связать службу диспетчера общих баз данных (DSDM)
(12:37:8) INF_RTM:ModBus-IN Rout_Word(3)#4 : IP=192.168.1.2 UNIT=17 CMD=3 CH=1046 Q=0
(12:37:8) INF_RTM:ModBus-OUT W_Word(16)#2 : IP=192.168.1.5 UNIT=3 CMD=11 CH=100a Q=0
(12:37:8) INF_RTM:ModBus-IN D100 : IP=192.168.1.5 UNIT=3 CMD=3 CH=1064 Q=0
(12:37:8) INF_RTM:ModBus-IN T1 : IP=192.168.1.5 UNIT=3 CMD=3 CH=0601 Q=0
(12:37:8) INF_RTM:ModBus-IN D10 : IP=192.168.1.5 UNIT=3 CMD=3 CH=100a Q=0
(12:37:8) INF_RTM:Idle period = 990
(12:37:12) INF_RTM:stoping...
(12:37:12) INF_RTM:mode=5(Stop) e15=00 e18=00 e20=00 [0-0]
(12:37:12) INF_RTM:stop time is 0.828 s
(12:37:12) INF_RTM:number of calculation = 46
(12:37:12) ._.:END OF WORK
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
А канал, что на чтение этого регистра настроен - вот этот:
(12:37:8) INF_RTM:ModBus-IN D10 : IP=192.168.1.5 UNIT=3 CMD=3 CH=100a Q=0

Он тоже недостоверность дает или он нормально считывает этот регистр?
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
quote:
Отправитель / Originally posted by Romсheg:
А канал, что на чтение этого регистра настроен - вот этот:
(12:37:8) INF_RTM:ModBus-IN D10 : IP=192.168.1.5 UNIT=3 CMD=3 CH=100a Q=0

Он тоже недостоверность дает или он нормально считывает этот регистр?

этот канал показывает всё верно. достоверность Т, и значение 0.
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Странно - если считывает значение, то и посылать вроде должен без проблем. Тогда остается еще один метод, мне также его пришлось выполнить: надо таймауты настроить в файле ip_modbus, что в папке узла система генерирует. А то по-умолчанию там не совсем подходящие стоят. Я вот у себя в проекте таймауты некоторые другие параметры точно увеличивал. Сами параметры смотрите по хэлпу.
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
надо попробовать. сегодня перешел на новый ноутбук, на котором даже то, что исправно считывалось до этого, теперь через какое-то время показывает недостоверность. связь с контроллером, конечно не идеальная (3 свитча), но ТМ что-то слишком уж капризен [Улыбка / Smile]
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Да тут не сам ТМ капризничает, контроллер малость "туговат на ухо" при работе через TCP. [Усмешка / Big Grin]
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
а значения приоритетов потоков в окне редактирования узла RTM могут повлиять на общее качество связи?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Повлиять могут. И в значительной степени - в худшую сторону.
 
Posted by Hip67 (Участник № / Member № 4427) on :
 
Собственно, с недостоверностями чтения разобрался. подобрал настройки в ip_modbus.а с записью все те же проблемы [Неодобрение / Frown]
после передачи значения выскакивает недостоверность.
а вот и сама ошибка из лога. (debug := 400)

(13:40:26) ERR_TCP:ModBus recieve error from unit_23 err=10 W_Word(16)#2
 
Posted by Romсheg (Участник № / Member № 3792) on :
 
Смотрите по документации на протокол ModBus, что именно значит 10-я ошибка. Контроллер похоже отвечает, но отвечает ошибкой на вашу посылку.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2