Считывание с прибора по modbus

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Danzel
beginner
beginner
Сообщения: 49
Зарегистрирован: 22 янв 2016, 10:41
Версия LabVIEW: 12
Контактная информация:

Считывание с прибора по modbus

Сообщение Danzel »

Приветствую всех!
Помогите! Написал программу для передачи информации по modbus c одного из устройств, в зависимости от выбранного адреса. Имеются 3 одинаковых устройства. Не могу сделать чтобы программа одновременно считывала сразу с трех устройств информацию.
Как я понимаю нужно на вход кластера Slave adress подать массив из 3-х адресов или как то по иному пути
Вложения
1.JPG
Сова.vi
(23 КБ) 168 скачиваний
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Считывание с прибора по modbus

Сообщение AndreyDmitriev »

А эти устройства - они к одному СОМ порту подключены или всё-таки к трём разным?
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Считывание с прибора по modbus

Сообщение Kosist »

Вставлю и свои пять копеек...
У Вас в цикле каждый раз будет производиться инициализация коммуникации, и в результате - на второй итерации цикла выскочит ошибка. Инициализировать нужно раз, перед циклом.
Потом, не стоит использовать три функции Index Array - достаточно потянуть нижний край первой иконки вниз, на три позиции - и брать элементы массива из него.
Также, Вы не выводите кластер ошибки з функции - индикатора Код Ошибки Вам будет недостаточно, нужно использовать и кластер ошибки.
И, есть более новая версия библиотеки для Modbus, можете установить ее из-под VIPM (VI Package Manager).
Мы делили апельсин - много наших полегло...
Danzel
beginner
beginner
Сообщения: 49
Зарегистрирован: 22 янв 2016, 10:41
Версия LabVIEW: 12
Контактная информация:

Re: Считывание с прибора по modbus

Сообщение Danzel »

AndreyDmitriev писал(а):А эти устройства - они к одному СОМ порту подключены или всё-таки к трём разным?
Да, они все к одному com порту подключены.
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Считывание с прибора по modbus

Сообщение Blackman »

Так как все приборы сидят на одном порту их нельзя считывать одновременно. Только по одному с заданным адресом по очереди. Параметры передачи должны быть одинаковые во всех приборах. Адреса должны быть разные для всех приборов. Нулевой адрес использовать нельзя. Это адрес для одновременной передачи во все приборы. В этом случае приборы должны только слушать. Никто отвечать не должен.
Остальные рекомендации согласно ответу от Kosist
Danzel
beginner
beginner
Сообщения: 49
Зарегистрирован: 22 янв 2016, 10:41
Версия LabVIEW: 12
Контактная информация:

Re: Считывание с прибора по modbus

Сообщение Danzel »

В ModBus на одной физической линии сети RS485 не может быть опрошено сразу несколько slave?
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Считывание с прибора по modbus

Сообщение Blackman »

На одной физической линии нет. Кратко схема такая: Master->Запрос к Slave Адрес 1->Ожидание ответа от Slave Адрес 1->Получение ответа от Slave Адрес 1, Master->Запрос к Slave Адрес 2->Ожидание ответа от Slave Адрес 2->Получение ответа от Slave Адрес 2 и т.д.
Здесь документация по протоколу
http://labviewportal.org/viewtopic.php? ... 500#p67928
Borjomy_1

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

Re: Считывание с прибора по modbus

Сообщение Borjomy_1 »

Инициализацию выносите за цикл. Далее внутри цикла While делаете цикл FOR на три итерации. На каждой итерации меняете адрес устройства. У каждого устройства должен быть свой адрес, чтобы они не отвечали разом.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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