Форум TRACE MODE: техническая поддержка
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
Послать новую тему / Post New Topic  
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ОТКРЫТЫЕ ФОРУМЫ / OPEN FORUMS » TRACE MODE 6 бесплатная версия / TRACE MODE 6 Free version » Чтение регистров по Modbus TCP

   
Автор / Author Тема / Topic: Чтение регистров по Modbus TCP
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
Добрый день, уважаемые форумчане! Прошу помощи.
Пытаюсь читать данные с регистров по Modbus TCP ничего не получается, а вот записывать значения получается. В чем причина не могу понять, все перепробовал уже. Посмотрел кучу обучающих видео, все делаю аналогично, запись работает, чтение нет. Опишу последовательность своих действий.
Новый проект->В "Источниках приемниках" создаю группу MODBUS -> далее создаю компонент на чтение Rin_Word(4) -> открываю свойства, номер порта "0", адрес ПЛК "1", адрес канала в шестнадцатиричной системе "313b" (или 12603) -> тип протокола "TCP/IP" -> направление "Input"-> формат "Аналог"-> IP адрес "192.168.0.21" (в моем случае это адрес ПЛК в сети). Далее перетаскиваю созданный компонент Rin_Word(4) при помощи drag & drop в группу "Каналы". Затем открываю компонент "Экран" создаю атрибут "Текст" далее из группы "Каналы" перетаскиваю компонент Rin_Word(4) в атрибуты экрана, после чего при помощи drag & drop беру аргумент и переношу на атрибут "Текст", затем сохраняю проект, нажимаю на кнопку "Сохранить для МРВ" устанавливаю курсор на узел "RTM" и нажимаю на кнопку "Запустить профайлер", после открытия окна "Профайлера" нажимаю на кнопку "Запустить", в поле атрибута "Текст" появляется значение "0", при том что в регистре по этому адресу я записываю другие значения и это никак не отражается в атрибуте "Текст". Сдвиг регистров учтен. В моем случае это (адрес регистра ПЛК-1).

Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Откройте "Панель МРВ" при запуске профайлера, найдите в дереве каналов канал, связанный с "Источником" Rin_Word(4), и посмотрите в окне справа его значение и атрибут ДОСТОВЕРНОСТЬ (атрибут 4).
Каким образом и в какой регистр Вы записываете "другие значения"?

"записывать значения получается".
Из Trace Mode? В тот же контроллер? Как Вы это настраиваете в Trace Mode 6?

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Откройте "Панель МРВ" при запуске профайлера, найдите в дереве каналов канал, связанный с "Источником" Rin_Word(4), и посмотрите в окне справа его значение и атрибут ДОСТОВЕРНОСТЬ (атрибут 4).
Каким образом и в какой регистр Вы записываете "другие значения"?

"записывать значения получается".
Из Trace Mode? В тот же контроллер? Как Вы это настраиваете в Trace Mode 6?

Зашел в "Панель МРВ" атрибут [004] - значение его "_F".
Запись значений осуществляю следующим образом.
В группе "MODBUS" создаю компонент W_Word(6), в его свойствах: номер порта "0", Адрес "1", Канал "0х313a" (или 12602 учитывая смещение в ПЛК адрес при этом 12603), протокол "TCP/IP", направление "Output", формат "Аналог", IP адрес "192.168.0.21" далее перетаскиваю этот компонент в группу "Каналы", на Экране создаю элемент "Кнопка" или "Значение аргумента" добавляю этот компонент из группы "Каналы" в "Аргументы экрана" и привязываю к элементу "Кнопка" либо "Значение аргумента". Все работает, значения пишутся в регистры. Запись значений в регистры осуществляется в онлайн режиме с ПЛК (BECKHOFF) средствами TWINCAT. Есть ли у Вас возможность подключиться к моему ПК, к которому подключен ПЛК, и посмотреть в чем причина ну и подсказать?

Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Надо внимательно ознакомиться со стандартом Modbus.

1. Если у канала Rin_Word(4), возникает признак недостоверности (атрибут 4 показывает F), это означает, что в запросе чтения существует ошибка:
неверный адрес устройства, неверный адрес регистра, неправильная Modbus-функция.
Возможно также, что в настройках IP-адреса в этом "Источнике" все-таки есть ошибка.

2. Писать можно только в регистры типа HOLDING.
Читать можно из регистров HOLDING (функцией Rout_Word(3)) и INPUT (функцией Rin_Word(4)).
Если Вы пишете в регистр HOLDING, то прочитать его содержимое функцией Rin_Word(4) нельзя.

3. Чтобы считывать то, что Вы записываете, адреса регистров в функциях записи и чтения должны быть одинаковы. У Вас чтение осуществляется из регистра 12603, а пишете Вы по адресу 12602.

4. Бывают устройства, в которых используются отступления от Modbus-стандарта. Это можно увидеть только в документации на устройство.

5. Настройка "Источника" на функцию чтения "направление "Input"-> формат "Аналог"-> " вызовет создание канала типа FLOAT, но отображать он будет целочисленное значение регистра.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Надо внимательно ознакомиться со стандартом Modbus.

1. Если у канала Rin_Word(4), возникает признак недостоверности (атрибут 4 показывает F), это означает, что в запросе чтения существует ошибка:
неверный адрес устройства, неверный адрес регистра, неправильная Modbus-функция.
Возможно также, что в настройках IP-адреса в этом "Источнике" все-таки есть ошибка.

2. Писать можно только в регистры типа HOLDING.
Читать можно из регистров HOLDING (функцией Rout_Word(3)) и INPUT (функцией Rin_Word(4)).
Если Вы пишете в регистр HOLDING, то прочитать его содержимое функцией Rin_Word(4) нельзя.

3. Чтобы считывать то, что Вы записываете, адреса регистров в функциях записи и чтения должны быть одинаковы. У Вас чтение осуществляется из регистра 12603, а пишете Вы по адресу 12602.

4. Бывают устройства, в которых используются отступления от Modbus-стандарта. Это можно увидеть только в документации на устройство.

5. Настройка "Источника" на функцию чтения "направление "Input"-> формат "Аналог"-> " вызовет создание канала типа FLOAT, но отображать он будет целочисленное значение регистра.

Спасибо большое! Все заработало при смене функции Rin_Word(4) на функцию Rout_Word(4).
Еще такой вопрос. Как сделать ярлык для запуска Профайлера и сразу его запуск не загружая среду разработки TRACE MODE (для оператора).

Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
Еще такой вопрос. Как считывать и записывать знаковые переменные? Если ПЛК может передавать по сети Modbus TCP только переменные типа WORD (UINT) и/или INT (знаковое). При использовании функции Rout_Float(3) получаемое значение от ПЛК очень мало и находится в пределах "0" хотя текущее значение в регистре меняется от -20 до +20. Нашел в инструкции что нужно создавать текстовый документ, открыть и записать в него значение от 0 до 3 затем сохранить и переименовать его как modbus, затем изменить его расширение на ".set" но так и не понял где именно его создать и как изменить его расширение. И какое значение для моего случая в него записать.
Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
В разделе "Отладка проекта":
"rtc. Дополнительные ключи команды запуска
Вид отображения графических экранов может быть задан с помощью следующих ключей команды запуска МРВ (см. также Задание параметров работы мониторов ):

<МРВ> <узел> [/fullscreen [/hidemenu]] [/run] [/windows] [/windowsxp]

/fullscreen – в полноэкранном режиме; если ключ не задан – в окне;

/fullscreen /hidemenu – в полноэкранном режиме без меню;

/run – запуск узла. Если в узле существуют каналы класса ПОЛЬЗОВАТЕЛЬ, МРВ пытается запустить узел от лица пользователя с логином default и паролем default;

/windows и /windowsxp – переопределяют стиль по умолчанию. Windows Vista и Windows 7: ключ /windows устраняет уменьшение ширины полосы прокрутки (ошибка Qt).

Ключи работают, если узел содержит хотя бы один экран."

Указанную командную строку можно поместить в ярлык.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Для отображения целочисленных знаковых переменных надо использовать Rout_Word(4) (формат ДИСКРЕТ) и привязать к этому источнику канал HEX16 с установкой флажка "Вид представления DEC".
Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
В разделе "Отладка проекта":
"rtc. Дополнительные ключи команды запуска
Вид отображения графических экранов может быть задан с помощью следующих ключей команды запуска МРВ (см. также Задание параметров работы мониторов ):

<МРВ> <узел> [/fullscreen [/hidemenu]] [/run] [/windows] [/windowsxp]


/fullscreen – в полноэкранном режиме; если ключ не задан – в окне;

/fullscreen /hidemenu – в полноэкранном режиме без меню;

/run – запуск узла. Если в узле существуют каналы класса ПОЛЬЗОВАТЕЛЬ, МРВ пытается запустить узел от лица пользователя с логином default и паролем default;

/windows и /windowsxp – переопределяют стиль по умолчанию. Windows Vista и Windows 7: ключ /windows устраняет уменьшение ширины полосы прокрутки (ошибка Qt).

Ключи работают, если узел содержит хотя бы один экран."

Указанную командную строку можно поместить в ярлык.

Где находится раздел "Отладка проекта"?
Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Для отображения целочисленных знаковых переменных надо использовать Rout_Word(4) (формат ДИСКРЕТ) и привязать к этому источнику канал HEX16 с установкой флажка "Вид представления DEC".

Сделал, получается следующее:
При положительном значении в регистре от 0 до 20, все хорошо, при отрицательном естественно 65535 и вниз до 65516. Как можно инвертировать эти значения в отрицательные от -20 до 0?

Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
1. В справочной системе раздел "Отладка проекта/Профайлер с поддержкой графических экранов/rtc.Дополнительные ключи команды запуска".

2. Вы действительно установили у канала HEX16 флажок "Вид представления DEC"?
Непосредственно в "Панели МРВ" можно ввести в такой канал 65516 и получить в реальном значении -20.
Для отображения на экране тип данных аргумента экрана должен быть INT.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by St_Denis_St:
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Для отображения целочисленных знаковых переменных надо использовать Rout_Word(4) (формат ДИСКРЕТ) и привязать к этому источнику канал HEX16 с установкой флажка "Вид представления DEC".

Сделал, получается следующее:
При положительном значении в регистре от 0 до 20, все хорошо, при отрицательном естественно 65535 и вниз до 65516. Как можно инвертировать эти значения в отрицательные от -20 до 0?

С отображением разобрался, в атрибутах поля "Текст" указал формат %hd. А вот как быть с трендом? Как добиться верного построения кривой?
Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Задайте тип данных аргумента REAL, а в ГЭ "Текст" формат "Float %g".
На тренд этот аргумент будет выводиться как аналоговая кривая.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
1. В справочной системе раздел "Отладка проекта/Профайлер с поддержкой графических экранов/rtc.Дополнительные ключи команды запуска".

2. Вы действительно установили у канала HEX16 флажок "Вид представления DEC"?
Непосредственно в "Панели МРВ" можно ввести в такой канал 65516 и получить в реальном значении -20.
Для отображения на экране тип данных аргумента экрана должен быть INT.

С отображением разобрался и с построением кривой по значению читаемому из регистра. А вот с тем как запускать только Профайлер без запуска среды разработки, пока не понятно. В теории я предполагаю что нужно создать файл rtc.exe в котором написать строку <MPB><RTM_1>[/fullscreen [/hidemenu]] [/run] [/windows] [/windowsxp]
Вопрос где создавать этот файл? RTM_1 - правая кнопка мыши, "создать компонент" -> "Документ" -> переименовать в "rtc.exe" и в него вписать строку выше. Или его нужно создать в папке проекта? в основной папке где name.exe или в папке RTM_1?

Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Файл rtc.exe размещен в папке инструментальной среды Trace Mode 6.
Ваша задача - записать в ярлык указанную командную строку:
<путь к rtc.exe>rtc.exe <путь к *.dbb><Name>.dbb /run
Например,
c:\WORK\Trace_Mode_6_102\rtc.exe c:\WORK\TM6_test\Котельная\ARM\Котельная_0.dbb /run

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
Файл rtc.exe размещен в папке инструментальной среды Trace Mode 6.
Ваша задача - записать в ярлык указанную командную строку:
<путь к rtc.exe>rtc.exe <путь к *.dbb><Name>.dbb /run
Например,
c:\WORK\Trace_Mode_6_102\rtc.exe c:\WORK\TM6_test\Котельная\ARM\Котельная_0.dbb /run

В какой ярлык? rtc.exe это файл запуска, а в какой файл нужно вписать этот путь?
Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
На рабочем столе или в папке АВТОЗАГРУЗКА проведите стандартную процедуру "Создать ярлык" на базе указанной командной строки, отредактированной в соответствии с размещением и наименованием инструментальной среды и папки узла.

Если Вы не знакомы с такими процедурами, привлеките Вашего системного администратора.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
На рабочем столе или в папке АВТОЗАГРУЗКА проведите стандартную процедуру "Создать ярлык" на базе указанной командной строки, отредактированной в соответствии с размещением и наименованием инструментальной среды и папки узла.

Если Вы не знакомы с такими процедурами, привлеките Вашего системного администратора.

В версии BASE эта функция работает? Я сделал все, но почему то при запуске ярлыка выводится сообщение, что не найден файл *.dbb (ну и в командной строке при вводе команды /run ярлык не создается...)
Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
В базовой версии автозапуск реализуется.

Если выводится "сообщение, что не найден файл *.dbb ", значит, Вы неправильно указали либо путь к файлу *.dbb, либо наименование файла *.dbb. Проверяйте.
Читайте указанный раздел в справочной системе "Отладка проекта/Профайлер с поддержкой графических экранов/rtc. Дополнительные ключи команды запуска".

Ключ /run в командной строке указывает на автоматический запуск узла проекта после его загрузки профайлером.

Ярлык создается средствами ОС.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
St_Denis_St
Forum Member / Участник форума
Участник № / Member № 7259


Icon 1 отправлено / posted      Профиль для / Profile for St_Denis_St           Редактировать/удалить сообщение / Edit/Delete Post 
quote:
Отправитель / Originally posted by AdAstra Technical Support:
В базовой версии автозапуск реализуется.

Если выводится "сообщение, что не найден файл *.dbb ", значит, Вы неправильно указали либо путь к файлу *.dbb, либо наименование файла *.dbb. Проверяйте.
Читайте указанный раздел в справочной системе "Отладка проекта/Профайлер с поддержкой графических экранов/rtc. Дополнительные ключи команды запуска".

Ключ /run в командной строке указывает на автоматический запуск узла проекта после его загрузки профайлером.

Ярлык создается средствами ОС.

Можно ли создавать архив по значению считываемому из регистра и потом его читать и экспортировать в EXEL например? Как это реализовать?
Сообщения / Posts 33 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Все перечисленные функции демонстрируются в уроках "Быстрого старта".

Передавать в EXEL лучше на лету, а не после архивирования, с помощью SQL-запросов через ODBC.

Можно экспортировать архивные данные в текстовый или XML-файл, который потом лего импортировать в таблицу Excel.

Т.к. пост не соответствует теме топика, топик закрывается.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Послать новую тему / Post New Topic  
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
Открыть тему / Open Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2