This is topic TRACE MODE и PLC Fatek FBs 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/001140.html

Posted by Alex33 (Участник № / Member № 5973) on :
 
Помогите разобраться с соответствием регистров ТМ и регистрами PLC. В контроллере их адреса указанны как диапазоны (например: выходные регистры R3904-R3967, или регистры данных D0-D3999).
Как их пересчитать для ТМ (в ТМ это уже будет канал?), особенно если числовая часть одинаковая (3950 есть в обоих диапазонах).

[ 08.02.2013, 08:47: Сообщение отредактировал / Message edited by AdAstra Technical Support ]
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Видимо, речь идет о протоколе Modbus RTU?
В этом случае надо уточнить Modbus-функции, которые используются для чтения этих переменных.
Для разных групп Modbus-регистров могут использоваться разные функции чтения - 3 и 4.
Соответственно надо использовать функции
Rout_Word(3) – считать слово данных типа out и
Rin_Word(4) – считать слово данных типа in.

Адреса переменных разных групп при этом могут быть одинаковыми.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
контроллер связан с ПК через Ethernet (Modbas ТСР/IP).
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Указанные рекомендации справедливы и для Modbus TCP/IP.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Обмен хочу организовать как по Modbas ASCII (видео нашел только для СОМ), так и через прямую запись/чтение в/из регистров.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Встроенного драйвера Modbus ASCII в Trace Mode 6 нет.
С некоторыми ограничениями можно организовать такой обмен в Trace Mode 6 профессионального формата (см.http://www.adastra.ru/products/drivers/modbus/).
В следующем релизе будет рассмотрена аналогичная возможность обмена по TCP.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
по фильму "Демонстрация настройки TRACE MODE на протоколы MODBUS RTU и TCP" в очередной раз создал проект со своим реальным IP адресом, запустил...
все входные регистры =0, хотя я их заполнил значениями, в выходные регистры значения заношу, но не знаю куда, т.к. отображаемые регистры (через WinProLadder) остаются равными 0.
В ролике речь идет о первых регистрах (1-100 для входных и 10-19 для выходных), но в modsim это уже входные 30001-30100 и выходные 40010-40019.
Здесь http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/000866.html#000003 речь идет о смещении адресов на 0х1000.
Вопрос:
какой номер надо писать в Rin_Word(4)#???, чтобы прочитать значение из выходного регистра контроллера R3904
какой номер надо писать в W_Word(6)#???, чтобы записать значение во входной регистр контроллера R3840
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В документации на PLC должно быть указано, в каком формате задаются адреса регистров - 16-ричном или десятичном, и существует ли смещение адресов (в ModSim32, например, смещение равно 1).
В Trace Mode 6 адреса переменных задаются в 16-ричном формате.
Если указанные адреса в PLC заданы в десятичном формате, то в Trace Mode 6 надо задавать, соответственно, для выходного регистра 0xf40, а для регистра данных 0xf00.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Вы говорите:
quote:
...(в ModSim32, например, смещение равно 1)...

так почему-же входящий регистр в ТМ 1 уменьшенный на 1 => 0 получает данные из регистра Modsim (адрес в первой строке) 30001. [duno / незнайка]
откуда добавилось 30000 [Недоумение / Confused]
 
Posted by Nico (Участник № / Member № 5342) on :
 
30000 - от кода функции см стандартное распределение
памяти ModBus
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
quote:
В документации на PLC должно быть указано, в каком формате задаются адреса регистров - 16-ричном или десятичном,
все адреса расписаны в десятичном формате
quote:
существует ли смещение адресов (в ModSim32, например, смещение равно 1).
про смещение ни слова не нашел.

единственно нашел:
R3840-R3903 CH0-CH63 - регистры входов для аналоговых и цифровых входов
R3904-R3967 CH0-CH63 - регистры выходов для аналоговых и цифровых выходов
R3968-R3999 ТР0-ТР31 - регистры необработанной температуры для измерений температуры

ТМ (через Rin_Word(4)) с Modsim работает как на одном компе, так и на разнесенных в сетке, с присвоением компу IP контроллера, адрес-1.
При отключении Modsim с дальнейшим подключением Fateka на тот-же IP и адрес-1...нули (проверил все каналы от 0 до 65535).
порт в IP указывал :500 .

Раз не получается (надеюсь пока) получить данные, может можно проверить установку связи? Подскажите пожалуйста.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
А почему порт указывали 500?
Так задано в PLC?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Задайте ключ
DEBUGON=400
в файле конфигурирования запуска узла (см. раздел "Приложения/Задание параметров мониторов").
В профайлерном протоколе будут сообщения об ошибках обмена по сети.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
при подключении WinProLadeer указывается:
протокол ТСР,
порт №500 и IP адрес
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Забыл, ещё
Station Namber: 1
 
Posted by Nico (Участник № / Member № 5342) on :
 
R840-R3903 -> 3840,... это адреса регистров в ModBus их и надо задавать [Улыбка / Smile] )
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Их в первую очередь опрашивал.
на PLC сделал заполнение этих регистров со сдвигом (+1 регистр каждую секунду) - глухо...читает нули (если читает, проверить смогу завтра по DEBUGON=400)
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Вот результаты, ошибок не вижу...
code:
(10:27:44) INF_LOAD:Starting... mbtcp_0
(10:27:44) INF_RTM:Detected NT5.RTM 5.1
(10:27:44) INF_RTM:Base TRACE MODE 6 Profiler T-Factory RTM+ ver. 6.08.0
(10:27:44) ._.:RTM
(10:27:44) INF_LOAD:max channel = 65535
(10:27:44) INF_LOAD:Load Channels = 101
(10:27:44) INF_LOAD:Templates=0 (math=0 sql=0 scr=0 doc=0 pnl=0)
(10:27:44) INF_LOAD:Objects = 3
(10:27:44) INF_RTM:Timer=0.055s CalcLoop=550ms
(10:27:44) INF_LOAD:LoadTime=0.031s CalcPeriod=550ms
(10:27:44) INF_RTM:free_mem=434(452) handle=0 user=0 gui=0 after load
(10:27:44) INF_RTM:DayLight disabled
(10:27:46) INF_RTM:ModeSwitch e15=0000 e18=0000 e20=0000 [0]
(10:27:46) INF_RTM:mode=2(Work) e15=00 e18=00 e20=00 [0-0-src4]
(10:27:46) INF_RTM:start time is 0 s
(10:27:46) INF_RTM:free_mem=434 handle=0 user=0 gui=0 after start
(10:27:46) INF_GRAPH:popup=0 scrref=0 trend=0,0 update=0
(10:28:46) INF_RTM:stoping...
(10:28:46) INF_RTM:mode=5(Stop) e15=00 e18=00 e20=00 [0-0-src0]
(10:28:46) INF_RTM:stop time is 0.562 s
(10:28:46) INF_RTM:number of calculation = 106
(10:28:46) INF_RTM:END OF WORK
(10:28:46) INF_RTM:free_mem=434(452) handle=181 user=154 gui=1568 after load
(10:28:46) INF_RTM:DayLight disabled
(10:29:29) INF_RTM:ModeSwitch e15=0000 e18=0000 e20=0000 [0]
(10:29:29) INF_RTM:mode=2(Work) e15=00 e18=00 e20=00 [0-0-src4]
(10:29:29) INF_RTM:start time is 0 s
(10:29:29) INF_RTM:free_mem=434 handle=181 user=154 gui=1568 after start
(10:29:29) INF_GRAPH:popup=0 scrref=0 trend=0,0 update=0
(10:32:15) INF_RTM:stoping...
(10:32:16) INF_RTM:mode=5(Stop) e15=00 e18=00 e20=00 [0-0-src0]
(10:32:16) INF_RTM:stop time is 1.594 s
(10:32:16) INF_RTM:number of calculation = 405
(10:32:16) INF_RTM:END OF WORK


 
Posted by Nico (Участник № / Member № 5342) on :
 
для перезапуска проекта в МРВ желательно выходить из него
ни какой отладки по TCP протоклам НЕТ !
или не задана отладка по сети(DEBUG=400) или каналов для связи с у-вами по TCP не обнаружено
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Пришлите, пожалуйста, Ваш проект (вместе с папкой проекта после сеанса) на адрес hotline@adastra.ru.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
quote:
Отправитель / Originally posted by Nico:
для перезапуска проекта в МРВ желательно выходить из него
ни какой отладки по TCP протоклам НЕТ !
или не задана отладка по сети(DEBUG=400) или каналов для связи с у-вами по TCP не обнаружено

DEBUG=400 или DEBUGON=400 ?
Создал файл с именем TMcom_1.cnf
в нем строки
DEBUG=400
END_OF_CNF
пустая

DEBUGON=400 пробовал тоже, хотя в инструкции такой команды не нашел.
имя проекта mbtcp.prj
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
quote:
Отправитель / Originally posted by Nico:
R840-R3903 -> 3840,... это адреса регистров в ModBus их и надо задавать [Улыбка / Smile] )

Вы имели в виду задавать для W_WORD(6), т.к. для записи в них значений в контроллере нет доступа, видимо только из вне...
 
Posted by Nico (Участник № / Member № 5342) on :
 
естественно нет
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Имя файла в Вашем проекте должно быть TMcom_0.cnf. Ваш конфигурационный файл не читается, поэтому диагностики сетевого обмена нет.
2. Вы пишете о том, что задали порт 500, а в проекте задан порт 505.
3. Для упрощения процесса отладки оставьте в узле только 1 канал MODBUC-обмена.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
судя по ответу:
(17:51:37) INF_TCP:HOST 192.168.0.69:27666 connect to 192.168.16.60:505
(17:53:6) ERR_TCP:ModBus recieve error from unit_1(192.168.16.60:505) err=4 Rin_Word(4)#1
достучаться получается, но не получить данные.
 
Posted by Nico (Участник № / Member № 5342) on :
 
у-во отвечает кодом ошибки
попробывать исп 3 функцию(Rout_W)

оставить 1 канал в ТМ и менять адрес регистра
вручную (атрибут 91) наблюдая за недостоверностью
канала и записями в файле
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Подключиться получается на каналах 500, 502, 505, но дальше ошибка о получении данных (функция 4).
quote:
Отправитель / Originally posted by Nico:
у-во отвечает кодом ошибки
попробывать исп 3 функцию(Rout_W)

оставить 1 канал в ТМ и менять адрес регистра
вручную (атрибут 91) наблюдая за недостоверностью
канала и записями в файле

пошла функция 3 [prey / молящийся] [Улыбка / Smile]
Для контроля наличия данных в регистрах и их соответствия получаемым, установил ModScan32
Через 04:INPUT REGISTER не получил ни одного значения, только 01:COIL STATUS и 03:HOLDING REGISTER дают значения.
указание канала после IP адреса убрал, т.к. если после открытия проекта первым указать :500, то потом на какой не меняй (502, 505), в файле сообщает о подключении через порт 500, а дальше ошибки о получении данных. При отсутствии адреса в строке IP сам подключается к 505.
 
Posted by Nico (Участник № / Member № 5342) on :
 
"указание канала после IP адреса убрал " - ????
вообще через : после IP это порт
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
"при подключении WinProLadeer указывается:
протокол ТСР, порт №500 и IP адрес "

Вполне возможно, что эта среда программирования общается с контроллером через порт 500, а для обмена по Modbus TCP используется все-таки порт 502 (стандарт для Modbus TCP).
Для чистоты эксперимента уберите из строки "Дополнительно" указание порта и удалите из папки узла файл ip_modbus (именно в нем может запоминаться какое-то старое назначение порта).
По умолчанию будет задан порт 502.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
quote:
Отправитель / Originally posted by Nico:
"указание канала после IP адреса убрал " - ????
вообще через : после IP это порт

согласен, ошибся.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
"при подключении WinProLadeer указывается:
протокол ...
.... задан порт 502.

Сделал. Вот содержание итогового файла ip_modbus :
;502 Port
1 192.168.16.60

раньше ; не было, но все работает через :502, спасибо.
code:
 (17:46:23) INF_LOAD:Starting... CGR_0
(17:46:23) INF_RTM:Detected NT5.RTM 5.1
(17:46:23) INF_RTM:Base TRACE MODE 6 Profiler T-Factory RTM+ ver. 6.08.0
(17:46:23) ._.:RTM
(17:46:23) INF_LOAD:max channel = 65535
(17:46:23) INF_LOAD:Load Channels = 5
(17:46:23) INF_LOAD:Templates=1 (math=0 sql=0 scr=1 doc=0 pnl=0)
(17:46:23) INF_LOAD:Objects = 3
(17:46:23) INF_RTM:Timer=0.055s CalcLoop=550ms
(17:46:30) INF_TCP:HOST 192.168.0.69:3591 connect to 192.168.16.60:502

Если возможно, в шапке темы замените FBc на FBs.
 
Posted by Nico (Участник № / Member № 5342) on :
 
Ура
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Получается, что в файле ip_modbus
;502 Port - это комментарий, т.е. три варианта:

;502 Port
1 192.168.16.60

502 Port
1 192.168.16.60

1 192.168.16.60

имеют равное значение, т.к. порт 502 присваивается автоматически, если не указан другой.
Всем большое спасибо.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Для передачи данных в контроллер использую W_Word(6):
- направление Output
- формат аналог
Связан с каналом CALL:
- тип вызова ChGrroupReq
- параметр 0
- тип Output
в котором аргумент тип OUT.

Данная связка работает (передает значения в контроллер), если в атрибут канала EXEC помещать единицу.
Как можно сделать постоянную передачу данных?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Единая система передачи сигналов по внешним интерфейсов предполагает, что передача должна происходить только при изменении передаваемых параметров.
Если канал ChGroupReq будет типа INPUT, он будет пытаться всегда передавать сигналы с собственным периодом обработки, независимо от того, изменились значения его аргументов или нет.
Это может существенно увеличить трафик по каналу связи, что чаще всего нежелательно.
В следующем релизе такой канал будет отрабатывать передачу данных в том случае, если они изменились.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Изменил тип ChGroupReq на INPUT, написал программку на увеличение аргумента на 1, с передачей в канал - нет передачи без EXEC=1 (привязал на кнопку на экране)...
Через просмотр компонентов всё меняется, но передачи нет [duno / незнайка] пока кнопку не нажму.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Прошу прощения за неточность формулировки.
Именно для того, чтобы не перегружать трафик, в релизе 6.08 такой канал типа INPUT не работает.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Если я правильно понял, то в этом (6.08) релизе для передачи значения канала в контроллер надо:
- тип Output
- EXEC=1
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Правильно.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
2 байта передаются. 4 - не лезет. Нужен другой тип канала?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Функция W_Word(6) по стандарту передает только 1 слово - 2 байта.
Чтобы передавать одновременно несколько последовательно адресованных регистров, надо использовать функцию W_Word(16).
"Источник" настроить на адрес начального регистра передаваемого массива.
Для каждого регистра надо у канала CALL_ChGrroupReq задать аргумент с типом данных UINT. При срабатывании канала будет сформирована команда записи в регистры по количеству заданных аргументов.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Создал у канала CALL_ChGrroupReq 2 аргумента с типом данных UINT, привязал оба к 4-байтному аргументу - передается два одинаковых обрезанных значения. Как разбить 4-х байтное значение на 2 части?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Это зависит от того, что является источником 4-байтового числа и каков его формат.
В общем случае задача должна решаться с помощью программы.
 
Posted by Alex33 (Участник № / Member № 5973) on :
 
Т.е. для передачи или считывания 4-байтового числа (к примеру это текущее время ОС как число секунд с 1.01.1970) с контроллера, встроенной функции не существует и надо программно разделять/соединять значения?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В стандарте Modbus нет 4-байтовых чисел.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2