- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Modbus
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
Ребят подскажите:Карта устройства
WriteStartReg - 0
WriteRegCnt - 200
ReadStartReg - 2000
ReadRegCnt - 400
------------------------------
А команды следующие-
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -1600
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 1
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 5
P2.Cmd[0].DevAdd - 1
_______________________
Вопрос по функции 5, считать бит данных с устройства будет (P2.Cmd[0].DevAdd - 1) я так понял с адреса регистр 00002-> в ведомом устройстве.А вот тег как узнать (P2.Cmd[0].IntAdd -1600), я думал что он должен быть в диапазоне либо WriteData:0-199, ReadData:2000-2399?
WriteStartReg - 0
WriteRegCnt - 200
ReadStartReg - 2000
ReadRegCnt - 400
------------------------------
А команды следующие-
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -1600
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 1
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 5
P2.Cmd[0].DevAdd - 1
_______________________
Вопрос по функции 5, считать бит данных с устройства будет (P2.Cmd[0].DevAdd - 1) я так понял с адреса регистр 00002-> в ведомом устройстве.А вот тег как узнать (P2.Cmd[0].IntAdd -1600), я думал что он должен быть в диапазоне либо WriteData:0-199, ReadData:2000-2399?
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
Вас нисколько не смущает, что у обоих групп один и тот же индекс команды?ArtemKat22 писал(а): ↑12 апр 2021, 20:46 А команды следующие-
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -1600
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 1
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 5
P2.Cmd[0].DevAdd - 1
P2.Cmd[0]....
Или это у Вас настройки разных модулей? Модули-то какие кстати?
Это раз.
Теперь о теге P2.Cmd[х].IntAdd и его значениях 2100 либо 1600. Это смещение во внутреннем массиве данных контроллера, обычно выраженное в тех же "попугаях", что и операнд команды.
Для команды 3 (чтение регистров) это массив данных чтения и смещение в словах, а для команды 5 (запись бита) это массив данных записи и смещение в битах. Если соблаговолите указать-таки тип модуля, я Вам, глядишь, мануал подгоню
Почитаете...
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
1. Модуль MVI56-MCMR . 1 модуль.
2. судя по мануалу, на моем примере функция 5 запишет данные в ведомое устройство по адресу 2 , когда значение WriteData[100].0 изменится(P2.Cmd[0].IntAdd -1600/16=100).
3. А функция 3, с адреса 90 в ведомом устройстве, запишет в ReadData[100].0 , а прочитаю я их по адресам с 40091 по 40095.
ПРАВИЛЬНО ВСЕ?
2. судя по мануалу, на моем примере функция 5 запишет данные в ведомое устройство по адресу 2 , когда значение WriteData[100].0 изменится(P2.Cmd[0].IntAdd -1600/16=100).
3. А функция 3, с адреса 90 в ведомом устройстве, запишет в ReadData[100].0 , а прочитаю я их по адресам с 40091 по 40095.
ПРАВИЛЬНО ВСЕ?
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
Если модуль один, то вряд ли у Вас верная запись конфигурации. Не может быть, чтобы по одному и тому же порту одна и та же команда имела две дефиниции.
Или Вами выложены две разных конфигурации?
Отправлено спустя 2 минуты 42 секунды:
И вроде как смещение у Вас там для пятой функции не 1600, а 2100.
"Тщательнее надоть!
Мой калькулятор в телефоне подсказывает, что 2100 бит с начала массива это 4-й бит 131-го слова. А Ваш какой результат выдаёт?
Или Вами выложены две разных конфигурации?
Отправлено спустя 2 минуты 42 секунды:
Судя по мануалу, команда исполняется постоянно, а не по изменению значения данных, ибо .Enable = 1, а не 2.ArtemKat22 писал(а): ↑13 апр 2021, 19:30 судя по мануалу, на моем примере функция 5 запишет данные в ведомое устройство по адресу 2 , когда значение WriteData[100].0 изменится(P2.Cmd[0].IntAdd -1600/16=100).
И вроде как смещение у Вас там для пятой функции не 1600, а 2100.
"Тщательнее надоть!
Мой калькулятор в телефоне подсказывает, что 2100 бит с начала массива это 4-й бит 131-го слова. А Ваш какой результат выдаёт?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
Модулей семь. С индексацией НАКОЛОЛСЯ. А конфиг комманд:
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
P2.Cmd[1].Enable -1
P2.Cmd[1].IntAdd -1600
P2.Cmd[1].PoIIInt - 0
P2.Cmd[1].Count - 1
P2.Cmd[1].Swap - 0
P2.Cmd[1].Device - 1
P2.Cmd[1].Func - 5
P2.Cmd[1].DevAdd - 1
P2.Cmd[2].Enable -1
P2.Cmd[2].IntAdd -2105
P2.Cmd[2].PoIIInt - 0
P2.Cmd[2].Count - 5
P2.Cmd[2].Swap - 0
P2.Cmd[2].Device - 2
P2.Cmd[2].Func - 3
P2.Cmd[2].DevAdd - 90
P2.Cmd[3].Enable -1
P2.Cmd[3].IntAdd -1605
P2.Cmd[3].PoIIInt - 0
P2.Cmd[3].Count - 1
P2.Cmd[3].Swap - 0
P2.Cmd[3].Device - 2
P2.Cmd[3].Func - 5
P2.Cmd[3].DevAdd - 1
P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
P2.Cmd[1].Enable -1
P2.Cmd[1].IntAdd -1600
P2.Cmd[1].PoIIInt - 0
P2.Cmd[1].Count - 1
P2.Cmd[1].Swap - 0
P2.Cmd[1].Device - 1
P2.Cmd[1].Func - 5
P2.Cmd[1].DevAdd - 1
P2.Cmd[2].Enable -1
P2.Cmd[2].IntAdd -2105
P2.Cmd[2].PoIIInt - 0
P2.Cmd[2].Count - 5
P2.Cmd[2].Swap - 0
P2.Cmd[2].Device - 2
P2.Cmd[2].Func - 3
P2.Cmd[2].DevAdd - 90
P2.Cmd[3].Enable -1
P2.Cmd[3].IntAdd -1605
P2.Cmd[3].PoIIInt - 0
P2.Cmd[3].Count - 1
P2.Cmd[3].Swap - 0
P2.Cmd[3].Device - 2
P2.Cmd[3].Func - 5
P2.Cmd[3].DevAdd - 1
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
Вот это похоже на правду.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
Получается в прошлом сообщении:
‐‐------‐‐
судя по мануалу, на моем примере функция 5 запишет данные в ведомое устройство по адресу 2 , когда значение WriteData[100].0 изменится(P2.Cmd[0].IntAdd -1600/16=100).
3. А функция 3, с адреса 90 в ведомом устройстве, запишет в ReadData[100].0 , а прочитаю я их по адресам с 40091 по 40095.
‐‐---------
НЕ ОШИБСЯ!
‐--------------
А вот вопрос к ведомому устройству, если в MVI56 DevAddress 90, то введомом тоже 90 или 91?
‐‐------‐‐
судя по мануалу, на моем примере функция 5 запишет данные в ведомое устройство по адресу 2 , когда значение WriteData[100].0 изменится(P2.Cmd[0].IntAdd -1600/16=100).
3. А функция 3, с адреса 90 в ведомом устройстве, запишет в ReadData[100].0 , а прочитаю я их по адресам с 40091 по 40095.
‐‐---------
НЕ ОШИБСЯ!
‐--------------
А вот вопрос к ведомому устройству, если в MVI56 DevAddress 90, то введомом тоже 90 или 91?
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
Это троллинг такой?
"Когда значение изменится..."
ГДЕ хоть в одной команде у Вас ...Enable = 2 ?!
Какая из них передаётся по изменению данных, а не циклически?
В ведомое устройство 2 по адресу 1 с функцией 5 пишет только 3-я команда
Если для Вас это не ошибка, то я уж и не знаю...
Разбирайтесь сами.
В MVI-56 адресация с ноля.
Отправлено спустя 30 минут 20 секунд:
В то время как команда с индексом 0 у Вас сконфигурирована как:ArtemKat22 писал(а): ↑14 апр 2021, 08:42 судя по мануалу, на моем примере функция 5 запишет данные в ведомое устройство по адресу 2 , когда значение WriteData[100].0 изменится(P2.Cmd[0].IntAdd -1600/16=100).
3. А функция 3, с адреса 90 в ведомом устройстве, запишет в ReadData[100].0 , а прочитаю я их по адресам с 40091 по 40095.
‐‐---------
НЕ ОШИБСЯ!
‐--------------
Я вообще не пойму куда Вы смотрите, и как считаете.ArtemKat22 писал(а): ↑13 апр 2021, 21:51 P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
"Когда значение изменится..."
ГДЕ хоть в одной команде у Вас ...Enable = 2 ?!
Какая из них передаётся по изменению данных, а не циклически?
В ведомое устройство 2 по адресу 1 с функцией 5 пишет только 3-я команда
и у нее смещение данных от начала внутреннего массива 1605 бит.ArtemKat22 писал(а): ↑13 апр 2021, 21:51 P2.Cmd[3].Enable -1
P2.Cmd[3].IntAdd -1605
P2.Cmd[3].PoIIInt - 0
P2.Cmd[3].Count - 1
P2.Cmd[3].Swap - 0
P2.Cmd[3].Device - 2
P2.Cmd[3].Func - 5
P2.Cmd[3].DevAdd - 1
Если для Вас это не ошибка, то я уж и не знаю...
Разбирайтесь сами.
Это зависит от принятого для вашего устройства способа адресации, с ноля она там начинается или с единицы.ArtemKat22 писал(а): ↑14 апр 2021, 08:42 А вот вопрос к ведомому устройству, если в MVI56 DevAddress 90, то введомом тоже 90 или 91?
В MVI-56 адресация с ноля.
Отправлено спустя 30 минут 20 секунд:
Ткните пальцем, где и какая команда с кодом функции 3 у вас читает с 90-го внутреннего адреса устройства и имеет при этом смещение в 100 слов?ArtemKat22 писал(а): ↑14 апр 2021, 08:42 3. А функция 3, с адреса 90 в ведомом устройстве, запишет в ReadData[100].0 , а прочитаю я их по адресам с 40091 по 40095.
Отправлено спустя 4 минуты 22 секунды:ArtemKat22 писал(а): ↑13 апр 2021, 21:51 P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
***************
P2.Cmd[2].Enable -1
P2.Cmd[2].IntAdd -2105
P2.Cmd[2].PoIIInt - 0
P2.Cmd[2].Count - 5
P2.Cmd[2].Swap - 0
P2.Cmd[2].Device - 2
P2.Cmd[2].Func - 3
P2.Cmd[2].DevAdd - 90
Может быть в этом всё дело? У каждого своя конфигурация, а вы мне тут голову морочите!
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
---- В ведомое устройство по адресу 2 с функцией 5 пишет только 3-я команда---
Я имел ввиду регистр в ведомом устройстве.?
Во всех командах регистр в ведомых устройствах будет 2?
Я имел ввиду регистр в ведомом устройстве.?
Во всех командах регистр в ведомых устройствах будет 2?
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
У каждой команды своя конфигурация.
В соседней ветке viewtopic.php?f=234&t=14954 я уже давал значение тегов для конфигурации команд модуля MVI56-MCM, для вашего - всё то же самое. Отправлено спустя 5 минут 2 секунды:
Разница только в размере внутреннего массива регистров
В соседней ветке viewtopic.php?f=234&t=14954 я уже давал значение тегов для конфигурации команд модуля MVI56-MCM, для вашего - всё то же самое. Отправлено спустя 5 минут 2 секунды:
Разница только в размере внутреннего массива регистров
у MCM это 5000, а у MCMR он уменьшен.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
Получается обе команды с функцией 3 , я буду считывать с DevAddress 90 и читать их с 40091 по 40095.
Я ИМЕЮ ВИДУ ЧТО СМЕЩЕНИЯ НЕТ, МЕНЯЕТСЯ ДЕВАЙС В КОМАНДЕ. ДЛЯ ВЕДОМЫХ УСТРОЙСТВ РЕГИСТР ЗАПИСИ БУДЕТ 2 ДЛЯ ФУНКЦИИ 5. ДЛЯ 3 ФУНКЦИИ СООТВЕТСТВЕННО либо 90 или 91
Отправлено спустя 9 минут 35 секунд:
Все правильно?
Я ИМЕЮ ВИДУ ЧТО СМЕЩЕНИЯ НЕТ, МЕНЯЕТСЯ ДЕВАЙС В КОМАНДЕ. ДЛЯ ВЕДОМЫХ УСТРОЙСТВ РЕГИСТР ЗАПИСИ БУДЕТ 2 ДЛЯ ФУНКЦИИ 5. ДЛЯ 3 ФУНКЦИИ СООТВЕТСТВЕННО либо 90 или 91
Отправлено спустя 9 минут 35 секунд:
Все правильно?
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
Вы про эти? -ArtemKat22 писал(а): ↑14 апр 2021, 11:19 Получается обе команды с функцией 3 , я буду считывать с DevAddress 90 и читать их с 40091 по 40095.
Я ИМЕЮ ВИДУ ЧТО СМЕЩЕНИЯ НЕТ, МЕНЯЕТСЯ ДЕВАЙС В КОМАНДЕ. ДЛЯ ВЕДОМЫХ УСТРОЙСТВ РЕГИСТР ЗАПИСИ БУДЕТ 2 ДЛЯ ФУНКЦИИ 5. ДЛЯ 3 ФУНКЦИИ СООТВЕТСТВЕННО либо 90 или 91
Так тут обе команды второго порта (P2), нулевая (Cmd[0]) и вторая (Cmd[2]), читают (Func - 3) по 5 (Count - 5) регистров начиная с 90-го(или 91-го) (DevAdd - 90) из разных внешних устройств.ArtemKat22 писал(а): ↑13 апр 2021, 21:51 P2.Cmd[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
***************
P2.Cmd[2].Enable -1
P2.Cmd[2].IntAdd -2105
P2.Cmd[2].PoIIInt - 0
P2.Cmd[2].Count - 5
P2.Cmd[2].Swap - 0
P2.Cmd[2].Device - 2
P2.Cmd[2].Func - 3
P2.Cmd[2].DevAdd - 90
Нулевая команда читает из устройства с адресом 1(Device - 1), а вторая из устройства с адресом 2 (Device - 2).
Содержимое прочитанных регистров из устройства 1 оказывается в ReadData[2100]...ReadData[2104], а регистры устройства 2 будут скопированы в ReadData[2105]...ReadData[2109].
Последний раз редактировалось Ryzhij 14 апр 2021, 11:40, всего редактировалось 1 раз.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
Я отдаю команду по функции 5 например пуск/останов на вторичный прибор а какой регистр придет?
Отправлено спустя 2 минуты 7 секунд:
Со смещение devadd mvi56=1 , в slave регистр будет2?
Отправлено спустя 2 минуты 47 секунд:
Регистр катушки в slave будет 2 правильно.
Отправлено спустя 2 минуты 7 секунд:
Со смещение devadd mvi56=1 , в slave регистр будет2?
Отправлено спустя 2 минуты 47 секунд:
Регистр катушки в slave будет 2 правильно.
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
Во первых, 5 функция работает не регистрами, а с битами. Соответственно, DevAdd - 1 это адрес бита во внешнем устройстве.ArtemKat22 писал(а): ↑14 апр 2021, 11:39 Я отдаю команду по функции 5 например пуск/останов на вторичный прибор а какой регистр придет?
Отправлено спустя 2 минуты 7 секунд:
Со смещение devadd mvi56=1 , в slave регистр будет2?
Если в карте Modbus вашего устройства принята нумерация с ноля, как и в MVI56, то адресован будет первый бит, а если там нумерация начинается с единицы, то второй.
Отправлено спустя 3 минуты 56 секунд:
У катушки в адресации MVI56 для 5-й функции указывается бит.
Если у вас в Modbus-карте периферии указаны регистры и биты в них, то адрес для MVI56 надо пересчитывать до битового.
Для связи с сименсом приходится ещё играться со свопингом.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
В периферии адресация вроде с 0. И у каждого из устройств судя по командам функции 5, бит адрес будет одинаков. На device 1,2... будет приходить на одинаковый адрес бита (команды в принципе одинаковые меняется только Device 1 ,2,3....., я имею функцию 5).
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
Из того, что Вы опубликовали, да, обе команды циклически посылают в первые койлы двух разных устойств содержимое своих битов.ArtemKat22 писал(а): ↑13 апр 2021, 21:51 P2.Cmd[1].Enable -1
P2.Cmd[1].IntAdd -1600
P2.Cmd[1].PoIIInt - 0
P2.Cmd[1].Count - 1
P2.Cmd[1].Swap - 0
P2.Cmd[1].Device - 1
P2.Cmd[1].Func - 5
P2.Cmd[1].DevAdd - 1
********
P2.Cmd[3].Enable -1
P2.Cmd[3].IntAdd -1605
P2.Cmd[3].PoIIInt - 0
P2.Cmd[3].Count - 1
P2.Cmd[3].Swap - 0
P2.Cmd[3].Device - 2
P2.Cmd[3].Func - 5
P2.Cmd[3].DevAdd - 1
В устройство 1 будет отсылаться WriteData[100].0, а в устройство 2 - WriteData[100].5
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
-
- здесь недавно
- Сообщения: 11
- Зарегистрирован: 12 апр 2021, 20:23
- Имя: Диман
- Страна: Россия
- город/регион: Самара
- Поблагодарили: 1 раз
Modbus
Извините еще вопрос, если команда имеет вид
[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
Я же буду читать регистр с 40091?
[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
Я же буду читать регистр с 40091?
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 840 раз
Modbus
В общем, да, читаться будут 40091-40095 (.Count - 5), если нумерация в адресуемом слейве #1(.Device - 1) начинается c 40001, или 40090-40094, если нумерация там начинается с 40000.ArtemKat22 писал(а): ↑15 апр 2021, 13:17 Извините еще вопрос, если команда имеет вид
[0].Enable -1
P2.Cmd[0].IntAdd -2100
P2.Cmd[0].PoIIInt - 0
P2.Cmd[0].Count - 5
P2.Cmd[0].Swap - 0
P2.Cmd[0].Device - 1
P2.Cmd[0].Func - 3
P2.Cmd[0].DevAdd - 90
Я же буду читать регистр с 40091?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)