Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 24

Тема: Адрес переменной modbus slave

  1. #11
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от sekerin Посмотреть сообщение
    ..
    в ручную? лови для самопроверок
    еёный_num_reg := (adr(еёный) - adr(самая_первая_переменная_в_слейве)) / 2;

  2. #12

    По умолчанию

    Цитата Сообщение от In_Da_Cher_A Посмотреть сообщение
    про выранивание адресов в памяти читали?
    Конфигурирование области ввода/вывода ПЛК Руководство пользователя

  3. #13

    По умолчанию

    Если уж тут программы народ начал писать, то ВОТ
    IOsg31-RegDoc.gif IOsg37-RegYesOkr.gif IOsg39-RegPrintFull.gif IOsg41-RegTemplSet.gif
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  4. #14

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    в ручную? лови для самопроверок
    еёный_num_reg := (adr(еёный) - adr(самая_первая_переменная_в_слейве)) / 2;
    то есть нужно чтобы real адрес был кратный 4?

    Если представить область памяти с возрастающими адресами (от 0 до
    какого-либо числа) и расположить переменные, то, если идет первая
    переменная типа «байт», то она будет расположена по адресу 0х00,
    следующая – 0х01 и т.д. Если дальше идет 4-байтная переменная, она должна
    располагаться по адресу 0х04, т.е., кратному 4

    Очередность переменных нужно правильно выстраивать я правильно понял?

  5. #15

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Если уж тут программы народ начал писать, то ВОТ
    IOsg31-RegDoc.gif IOsg37-RegYesOkr.gif IOsg39-RegPrintFull.gif IOsg41-RegTemplSet.gif
    спасибо сейчас изучу

  6. #16

    По умолчанию

    Цитата Сообщение от sekerin Посмотреть сообщение
    Конфигурирование области ввода/вывода ПЛК Руководство пользователя
    да
    и что там написано?

    Автоматическая адресация переменных производится последовательно, начиная с нулевого адреса (как для битовых переменных, так и для переменных, передаваемых регистрами).
    Таким образом, если в модуле используются переменные одного типа, то при запросе устройством – Мастером регистра с адресом «0», модуль считывает первые два байта, для регистра с адресом «1» – вторые два байта и так далее.
    Если переменные имеют длину более двух байт, то при запросе регистра с адресом «0», модуль считывает первые два байта первой переменной, для регистра с адресом «1» – вторые два байта первой переменной и так далее.
    Но если в модуле используются переменные разных типов (например, одновременно восьмибитный, двухбайтный и четырёхбайтный), то при распределении адресов ПО CoDeSys производит «выравнивание» адресов переменных – упорядо
    чение адресов переменных в памяти модуля. Такое упорядочение заключается в организации памяти таким образом, что переменные размером 8 бит, 2 байта и 4 байта располагаются только по определенным адресам: четырёхбайтным переменным
    присваиваются адреса, кратные 4; двухбайтным – кратные 2; однобайтным (или восьмибитным) –кратные 1. То есть, независимо от порядка задания переменных, выравнивание назначает переменным адреса, кратные их длине.
    Таким образом, первая восьмибитная переменная будет расположена в 0… 7 битах памяти модуля, вторая – в 8… 15 и т.д. Если же вторая переменная двухбайтная, она будет располагаться в 16… 31 битах, т.е., по адресу, кратному 2, и т.д. Четырехбайтная переменная займет следующее свободное место, кратное 4.
    Такой порядок размещения переменных в памяти модуля может образовать адресные пространства, не занятые переменными. Эти пространства не отображаются в области ввода/вывода, но они обязательно должны учитываться при организации опроса переменных; учитывать эту особенность следует еще на стадии задания переменных.
    переводя на русский - флоат всегда должен начинаться с чётного номера регистра (понятно?),
    \ при этом занимает два номера (понятно?)
    при этом - следим за руками - нечётный регистр флоата в адресном пространстве не отображается
    понятно?Screenshot_84.jpg
    Последний раз редактировалось In_Da_Cher_A; 30.07.2025 в 10:06.

  7. #17
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от sekerin Посмотреть сообщение
    то есть нужно чтобы real адрес был кратный 4?
    не "нужно", а будет автоматически в слейве КДС. С автовставляемыми неявными полями если нужно.

  8. #18

    По умолчанию

    Цитата Сообщение от In_Da_Cher_A Посмотреть сообщение
    да
    и что там написано?

    переводя на русский - флоат всегда должен начинаться с чётного номера регистра (понятно?),
    \ при этом занимает два номера (понятно?)
    при этом - следим за руками - нечётный регистр флоата в адресном пространстве не отображается
    понятно?Screenshot_84.jpg
    ну плюс минус да, сейчас по тыкаю руками чтобы понятнее стало

  9. #19

    По умолчанию

    Вот ещё можно не переставлять всё в конфигурации, а сделать Slave через структуру: https://cs-cs.net/codesys-modbus-kar...trov-struktury
    Но выравнивание и там надо соблюдать
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  10. #20

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Вот ещё можно не переставлять всё в конфигурации, а сделать Slave через структуру: https://cs-cs.net/codesys-modbus-kar...trov-struktury
    Но выравнивание и там надо соблюдать
    да спасибо сейчас читаю, надо разобраться с этим)

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Связь c Weintek по ModbusTCP (адрес Slave = 0)
    от aaaSashaMGGU в разделе ПЛК2хх
    Ответов: 3
    Последнее сообщение: 22.10.2023, 14:01
  2. МЭ210-701 меняем modbus slave адрес?
    от aven в разделе Мх210
    Ответов: 3
    Последнее сообщение: 04.07.2022, 06:20
  3. чтение сетевой переменной в ПР 200 slave мастером сети ИПП120
    от ALEX_099 в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 09.04.2021, 09:26
  4. Как узнать базовый ModBus адрес устройства для ModBus ASCII?
    от Александр Подыман в разделе Сервисное ПО
    Ответов: 3
    Последнее сообщение: 03.03.2016, 12:49
  5. Modbus [slave] Неверный адрес %QD9.55.0
    от AlexPC1 в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 03.11.2010, 17:08

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •