ModBus
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: ModBus
Во-первых, вы можете залезть в пример и посмотреть, где возникает проблема.
Проверяйте установленный адрес устройства. Должны совпадать.
Проверяйте установленный адрес устройства. Должны совпадать.
-
- interested
- Сообщения: 5
- Зарегистрирован: 30 мар 2015, 21:33
- Версия LabVIEW: 09
- Контактная информация:
Re: ModBus
ошибки не показывает, на симуляции все ок, просто нет ответа от slave
я с недавно, думаю что для ответа нужно строить обратную связь?
bus hound показывает только что есть вход, ответа нет
я с недавно, думаю что для ответа нужно строить обратную связь?
bus hound показывает только что есть вход, ответа нет
-
- interested
- Сообщения: 5
- Зарегистрирован: 30 мар 2015, 21:33
- Версия LabVIEW: 09
- Контактная информация:
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: ModBus
с какой стороны симуляция?
В примере у вас - мешанина. Вы определитесь, кто у вас мастер, а кто слейв. Хотя то, что у вас уже на этапе инициализации возникает код 1073676294, означает, что в буфере появились лишние данные, которые, скорее всего генерирует контроллер, и он является мастером.
Чтобы поднять слейв под Labview, надо конфигурировать и запускать MB Serial Slave Daemon из палитры, причем вне цикла. Этот демон САМ принимает посылки от мастера и обрабатывает их. Для того, чтобы его потом остановить, необходимо сбросить глобальную переменную Serial Demon Running, взять которую вы можете из этого демона. Чтение-запись из под ячеек (как у вас сделано внизу) - асинхронное, т.е в этой реализации нет событий по изменению значения какой-то ячейки.
У вас еще одна погрешность, касающаяся принципов программирования: инициализацию портов и прочих вещей нужно выносить из циклов, если только вы не собираетесь менять параметры. Здесь на каждой итерации вы зачем-то инициализируете порт, хотя закрываете его только при выходе.
С точки зрения архитектуры должно быть наоборот: контроллер, как оконечное устройство, является Slave, имеет свой набор ячеек, обновляет их. А устройства более высокого уровня опрашивают оконечные устройства и задают им параметры работы.
В клиент-серверной терминологии Мастер - клиент. Устанавливает соединение и производит запросы на чтение и изменение ячеек. Slave - сервер. Выполняет запросы клиента. Сам ничего не делает.причем мастер сам контроллер, а в качестве slave,
В примере у вас - мешанина. Вы определитесь, кто у вас мастер, а кто слейв. Хотя то, что у вас уже на этапе инициализации возникает код 1073676294, означает, что в буфере появились лишние данные, которые, скорее всего генерирует контроллер, и он является мастером.
Чтобы поднять слейв под Labview, надо конфигурировать и запускать MB Serial Slave Daemon из палитры, причем вне цикла. Этот демон САМ принимает посылки от мастера и обрабатывает их. Для того, чтобы его потом остановить, необходимо сбросить глобальную переменную Serial Demon Running, взять которую вы можете из этого демона. Чтение-запись из под ячеек (как у вас сделано внизу) - асинхронное, т.е в этой реализации нет событий по изменению значения какой-то ячейки.
У вас еще одна погрешность, касающаяся принципов программирования: инициализацию портов и прочих вещей нужно выносить из циклов, если только вы не собираетесь менять параметры. Здесь на каждой итерации вы зачем-то инициализируете порт, хотя закрываете его только при выходе.
С точки зрения архитектуры должно быть наоборот: контроллер, как оконечное устройство, является Slave, имеет свой набор ячеек, обновляет их. А устройства более высокого уровня опрашивают оконечные устройства и задают им параметры работы.
-
- interested
- Сообщения: 5
- Зарегистрирован: 30 мар 2015, 21:33
- Версия LabVIEW: 09
- Контактная информация:
Re: ModBus
контроллер Master посылает запросы на чтение/запись в (holding registers) Slave то есть
как из MB Serial Slave Daemon вытащить эти сами Holding registers тоже из глобальных переменных?
и что не относится на моей схеме к Slave ?
просто будет у меня в роде виртуального испытательного стенда (данные по модбас пойдут на обработку и симуляцию) как то так %)
как из MB Serial Slave Daemon вытащить эти сами Holding registers тоже из глобальных переменных?
и что не относится на моей схеме к Slave ?
совершенно верно, в моем случае контроллер будет управлять преобразователями частоты (для них он мастер а они Slave), а сам контроллер получает данные от датчиков и компьютера.С точки зрения архитектуры должно быть наоборот: контроллер, как оконечное устройство, является Slave, имеет свой набор ячеек, обновляет их. А устройства более высокого уровня опрашивают оконечные устройства и задают им параметры работы
просто будет у меня в роде виртуального испытательного стенда (данные по модбас пойдут на обработку и симуляцию) как то так %)
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: ModBus
Возьмите MB Serial Example Slave, там все есть, что вам нужно. Только не забудьте параметры порта поставить, там по умолчанию всё.что не относится на моей схеме к Slave ?
Той функцией, которую вы использовали, просто вы не проинициализировали банки. В примере все это есть.как из MB Serial Slave Daemon вытащить эти сами Holding registers тоже из глобальных переменных?
-
- interested
- Сообщения: 5
- Зарегистрирован: 30 мар 2015, 21:33
- Версия LabVIEW: 09
- Контактная информация:
Re: ModBus
2 Borjomy_1
поменял только на чтение холдинг регистров, quantity =10, и бауд рейт под себя 19200
с первого раза не заработало, думаю из-за того что библиотека modbus была не правильно установлена
осталось выяснить как вытащить в мою блок-схему данные из холдингов,
как вытащить из массива RegisterHoldings нужные аргументы?
все работает спасибо за помощь !!!Возьмите MB Serial Example Slave, там все есть, что вам нужно. Только не забудьте параметры порта поставить, там по умолчанию всё.
поменял только на чтение холдинг регистров, quantity =10, и бауд рейт под себя 19200
с первого раза не заработало, думаю из-за того что библиотека modbus была не правильно установлена
осталось выяснить как вытащить в мою блок-схему данные из холдингов,
как вытащить из массива RegisterHoldings нужные аргументы?
-
Aleksey Feoktistov
- leader
- Сообщения: 898
- Зарегистрирован: 20 янв 2009, 00:15
- Награды: 6
- Версия LabVIEW: 2015
- Откуда: Tyumen
- Поблагодарили: 2 раза
- Контактная информация:
Re: ModBus
Возникла проблема с использованием библиотеки Modbus.
Необходимо подключиться к устройству (Slave) по протоколу Modbus
Функция Greate Master Interface.vi отрабатывает без ошибок.
Прочитать данные с устройства не получается, появляется ошибка SubVIs.lvlib:RTU Data Unit.lvclass:Read ADU Packet.vi:5030001.
Кто-нибудь сталкивался с такой проблемой? LabVIEW 2014
Необходимо подключиться к устройству (Slave) по протоколу Modbus
Функция Greate Master Interface.vi отрабатывает без ошибок.
Прочитать данные с устройства не получается, появляется ошибка SubVIs.lvlib:RTU Data Unit.lvclass:Read ADU Packet.vi:5030001.
Кто-нибудь сталкивался с такой проблемой? LabVIEW 2014
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: ModBus
Unit ID = 4 это действительно так? По умолчанию устройствам назначаются 0 или 1. Еще как вариант - несоответствие параметров протокола обмена COM (четность, скорость и прочее) или интерфейса. Скорее всего функция Create только открывает соединение, т.е никакого первоначального обмена не производит, поэтому может выдавать только грубую ошибку типа недоступного порта или неправильной скорости.
-
Aleksey Feoktistov
- leader
- Сообщения: 898
- Зарегистрирован: 20 янв 2009, 00:15
- Награды: 6
- Версия LabVIEW: 2015
- Откуда: Tyumen
- Поблагодарили: 2 раза
- Контактная информация:
Re: ModBus
Через OPC сервер опрос идет ошибок нет. Но нужно сделать без OPC (это принципиально важно)
Адрес прибора действительно "4"
Адрес прибора действительно "4"
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: ModBus
А внутрь библиотеки залезть и посмотреть, на каком этапе возникает ошибка? ошибка 56, кстати, при работе в сети, означает TimeOut
-
Aleksey Feoktistov
- leader
- Сообщения: 898
- Зарегистрирован: 20 янв 2009, 00:15
- Награды: 6
- Версия LabVIEW: 2015
- Откуда: Tyumen
- Поблагодарили: 2 раза
- Контактная информация:
-
Aleksey Feoktistov
- leader
- Сообщения: 898
- Зарегистрирован: 20 янв 2009, 00:15
- Награды: 6
- Версия LabVIEW: 2015
- Откуда: Tyumen
- Поблагодарили: 2 раза
- Контактная информация:
Re: ModBus
Скачал библиотеку NI Modbus.llb
Попробовал запустить MB Serial Example Master.vi
Все работает без ошибок, но данных почему-то нет
Попробовал запустить MB Serial Example Master.vi
Все работает без ошибок, но данных почему-то нет
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: ModBus
ID = 4 выставили?
Может быть проблема с адресами (попытка доступа к банку и адресу, которого нет в контроллере)
Может быть проблема с адресами (попытка доступа к банку и адресу, которого нет в контроллере)
-
Aleksey Feoktistov
- leader
- Сообщения: 898
- Зарегистрирован: 20 янв 2009, 00:15
- Награды: 6
- Версия LabVIEW: 2015
- Откуда: Tyumen
- Поблагодарили: 2 раза
- Контактная информация:
Re: ModBus
да это тут вообще не причемBorjomy_1 писал(а):ID = 4 выставили?
Может быть проблема с адресами (попытка доступа к банку и адресу, которого нет в контроллере)
я периодически меняю скорость и номер Com порта.
Сейчас настройки:
Com2
скорость 19200
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 19 Ответы
- 7875 Просмотры
-
Последнее сообщение Artem.spb
-
- 38 Ответы
- 13296 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 5 Ответы
- 250 Просмотры
-
Последнее сообщение IvanLis