ModBus

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: ModBus

Сообщение Borjomy_1 »

Во-первых, вы можете залезть в пример и посмотреть, где возникает проблема.
Проверяйте установленный адрес устройства. Должны совпадать.
AlexNester
interested
interested
Сообщения: 5
Зарегистрирован: 30 мар 2015, 21:33
Версия LabVIEW: 09
Контактная информация:

Re: ModBus

Сообщение AlexNester »

ошибки не показывает, на симуляции все ок, просто нет ответа от slave
я с :labview: недавно, думаю что для ответа нужно строить обратную связь?

bus hound показывает только что есть вход, ответа нет
Вложения
modbus1.png
bus hound.png
AlexNester
interested
interested
Сообщения: 5
Зарегистрирован: 30 мар 2015, 21:33
Версия LabVIEW: 09
Контактная информация:

Re: ModBus

Сообщение AlexNester »

вот как работает с ответом

и настройки modbus slave
Вложения
bus hound2.png
modbus.png
настройки порта modbus slave
настройки порта modbus slave
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: ModBus

Сообщение Borjomy_1 »

с какой стороны симуляция?
причем мастер сам контроллер, а :labview: в качестве slave,
В клиент-серверной терминологии Мастер - клиент. Устанавливает соединение и производит запросы на чтение и изменение ячеек. Slave - сервер. Выполняет запросы клиента. Сам ничего не делает.

В примере у вас - мешанина. Вы определитесь, кто у вас мастер, а кто слейв. Хотя то, что у вас уже на этапе инициализации возникает код 1073676294, означает, что в буфере появились лишние данные, которые, скорее всего генерирует контроллер, и он является мастером.
Чтобы поднять слейв под Labview, надо конфигурировать и запускать MB Serial Slave Daemon из палитры, причем вне цикла. Этот демон САМ принимает посылки от мастера и обрабатывает их. Для того, чтобы его потом остановить, необходимо сбросить глобальную переменную Serial Demon Running, взять которую вы можете из этого демона. Чтение-запись из под :labview: ячеек (как у вас сделано внизу) - асинхронное, т.е в этой реализации нет событий по изменению значения какой-то ячейки.
У вас еще одна погрешность, касающаяся принципов программирования: инициализацию портов и прочих вещей нужно выносить из циклов, если только вы не собираетесь менять параметры. Здесь на каждой итерации вы зачем-то инициализируете порт, хотя закрываете его только при выходе.

С точки зрения архитектуры должно быть наоборот: контроллер, как оконечное устройство, является Slave, имеет свой набор ячеек, обновляет их. А устройства более высокого уровня опрашивают оконечные устройства и задают им параметры работы.
AlexNester
interested
interested
Сообщения: 5
Зарегистрирован: 30 мар 2015, 21:33
Версия LabVIEW: 09
Контактная информация:

Re: ModBus

Сообщение AlexNester »

контроллер Master посылает запросы на чтение/запись в (holding registers) Slave то есть :labview:

как из MB Serial Slave Daemon вытащить эти сами Holding registers тоже из глобальных переменных?

и что не относится на моей схеме к Slave ?

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

просто :labview: будет у меня в роде виртуального испытательного стенда (данные по модбас пойдут на обработку и симуляцию) как то так %)
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: ModBus

Сообщение Borjomy_1 »

что не относится на моей схеме к Slave ?
Возьмите MB Serial Example Slave, там все есть, что вам нужно. Только не забудьте параметры порта поставить, там по умолчанию всё.
как из MB Serial Slave Daemon вытащить эти сами Holding registers тоже из глобальных переменных?
Той функцией, которую вы использовали, просто вы не проинициализировали банки. В примере все это есть.
AlexNester
interested
interested
Сообщения: 5
Зарегистрирован: 30 мар 2015, 21:33
Версия LabVIEW: 09
Контактная информация:

Re: ModBus

Сообщение AlexNester »

2 Borjomy_1
Возьмите MB Serial Example Slave, там все есть, что вам нужно. Только не забудьте параметры порта поставить, там по умолчанию всё.
все работает спасибо за помощь !!! :thank:

поменял только на чтение холдинг регистров, quantity =10, и бауд рейт под себя 19200

с первого раза не заработало, думаю из-за того что библиотека modbus была не правильно установлена

осталось выяснить как вытащить в мою блок-схему данные из холдингов,
как вытащить из массива RegisterHoldings нужные аргументы?
Вложения
Modbus RTU.png
Аватара пользователя
Aleksey Feoktistov

Activity Gold Silver Black
leader
leader
Сообщения: 898
Зарегистрирован: 20 янв 2009, 00:15
Награды: 6
Версия LabVIEW: 2015
Откуда: Tyumen
Поблагодарили: 2 раза
Контактная информация:

Re: ModBus

Сообщение Aleksey Feoktistov »

Возникла проблема с использованием библиотеки Modbus.
Необходимо подключиться к устройству (Slave) по протоколу Modbus
Функция Greate Master Interface.vi отрабатывает без ошибок.
Прочитать данные с устройства не получается, появляется ошибка SubVIs.lvlib:RTU Data Unit.lvclass:Read ADU Packet.vi:5030001.
Кто-нибудь сталкивался с такой проблемой?
Mofbus Serial
Mofbus Serial
LabVIEW 2014
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: ModBus

Сообщение Borjomy_1 »

Unit ID = 4 это действительно так? По умолчанию устройствам назначаются 0 или 1. Еще как вариант - несоответствие параметров протокола обмена COM (четность, скорость и прочее) или интерфейса. Скорее всего функция Create только открывает соединение, т.е никакого первоначального обмена не производит, поэтому может выдавать только грубую ошибку типа недоступного порта или неправильной скорости.
Аватара пользователя
Aleksey Feoktistov

Activity Gold Silver Black
leader
leader
Сообщения: 898
Зарегистрирован: 20 янв 2009, 00:15
Награды: 6
Версия LabVIEW: 2015
Откуда: Tyumen
Поблагодарили: 2 раза
Контактная информация:

Re: ModBus

Сообщение Aleksey Feoktistov »

Через OPC сервер опрос идет ошибок нет. Но нужно сделать без OPC (это принципиально важно)
Адрес прибора действительно "4"
настройки прибора.png
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: ModBus

Сообщение Borjomy_1 »

А внутрь библиотеки залезть и посмотреть, на каком этапе возникает ошибка? ошибка 56, кстати, при работе в сети, означает TimeOut
Аватара пользователя
Aleksey Feoktistov

Activity Gold Silver Black
leader
leader
Сообщения: 898
Зарегистрирован: 20 янв 2009, 00:15
Награды: 6
Версия LabVIEW: 2015
Откуда: Tyumen
Поблагодарили: 2 раза
Контактная информация:

Re: ModBus

Сообщение Aleksey Feoktistov »

Посмотрел содержимое
error.png
Аватара пользователя
Aleksey Feoktistov

Activity Gold Silver Black
leader
leader
Сообщения: 898
Зарегистрирован: 20 янв 2009, 00:15
Награды: 6
Версия LabVIEW: 2015
Откуда: Tyumen
Поблагодарили: 2 раза
Контактная информация:

Re: ModBus

Сообщение Aleksey Feoktistov »

Скачал библиотеку NI Modbus.llb
Попробовал запустить MB Serial Example Master.vi
Все работает без ошибок, но данных почему-то нет
Modbus_Serial_Master.png
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: ModBus

Сообщение Borjomy_1 »

ID = 4 выставили?
Может быть проблема с адресами (попытка доступа к банку и адресу, которого нет в контроллере)
Аватара пользователя
Aleksey Feoktistov

Activity Gold Silver Black
leader
leader
Сообщения: 898
Зарегистрирован: 20 янв 2009, 00:15
Награды: 6
Версия LabVIEW: 2015
Откуда: Tyumen
Поблагодарили: 2 раза
Контактная информация:

Re: ModBus

Сообщение Aleksey Feoktistov »

Borjomy_1 писал(а):ID = 4 выставили?
Может быть проблема с адресами (попытка доступа к банку и адресу, которого нет в контроллере)
да это тут вообще не причем :D
я периодически меняю скорость и номер Com порта.
Сейчас настройки:
Com2
скорость 19200
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Коммуникация с приборами»