Показано с 1 по 10 из 38

Тема: Modbus Slave, 4х байтовая переменная, выравнивание, codesys 2.3

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для nensist
    Регистрация
    22.01.2016
    Адрес
    Архангельск
    Сообщений
    88

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Главное слово там - заглавными буквами.
    В конфигурации выравнивание выполняется АВТОМАТИЧЕСКИ, самому ничего выравнивать не надо, только нужно учитывать это при определении номеров регистров в слейве.
    Дак что учитывать надо? если у меня идут сначала 2byte? последний 2byte будет с адресом 60. Я создаю Float и система дает ему адрес 61, далее я ручками меняю это на 62. Далее создавая Float система адрес дает 63 я исправляю на 64. Сответственно в панели СП300 для записи и чтения данных Float я ставлю адреса 60 и 62. Может я тут че не так делаю? Но все ведь работает хорошо по факту. Я немогу создать сначала допустим 10 шт Float. Приходится вставлять по одному, менять адрес, далее вставлять следующий.

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,579

    По умолчанию

    Цитата Сообщение от nensist Посмотреть сообщение
    последний 2byte будет с адресом 60. Я создаю Float и система дает ему адрес 61
    в слейве не указаны адреса. Идентификатор узла, который скорее всего Вы имеете ввиду, это не АДРЕС РЕГИСТРА СЛЕЙВА
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,120

    По умолчанию

    Цитата Сообщение от nensist Посмотреть сообщение
    В конфигурации выравнивание выполняется АВТОМАТИЧЕСКИ, самому ничего выравнивать не надо, только нужно учитывать это при определении номеров регистров в слейве.
    Дак что учитывать надо? если у меня идут сначала 2byte? последний 2byte будет с адресом 60. Я создаю Float и система дает ему адрес 61, далее я ручками меняю это на 62. Далее создавая Float система адрес дает 63 я исправляю на 64. Сответственно в панели СП300 для записи и чтения данных Float я ставлю адреса 60 и 62. Может я тут че не так делаю? Но все ведь работает хорошо по факту. Я немогу создать сначала допустим 10 шт Float. Приходится вставлять по одному, менять адрес, далее вставлять следующий.
    И где Вы такое делаете: - "далее я ручками меняю это на 62"
    Ручками в слейве нельзя изменить номер регистра. Все номера назначаются АВТОМАТИЧЕСКИ в порядке их размещения.
    если идут сначала 2byte? последний 2byte будет с адресом 60, а затем добавить Float, то система назначит ему адрес не 63, а АВТОМАТИЧЕСКИ - 64!
    Это и есть механизм выравнивания.
    Вот именно это и нужно учитывать - в панели использовать для записи и чтения данных Float адрес 64, а не 63
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  4. #4
    Пользователь Аватар для nensist
    Регистрация
    22.01.2016
    Адрес
    Архангельск
    Сообщений
    88

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    И где Вы такое делаете: - "далее я ручками меняю это на 62"
    Ручками в слейве нельзя изменить номер регистра. Все номера назначаются АВТОМАТИЧЕСКИ в порядке их размещения.
    если идут сначала 2byte? последний 2byte будет с адресом 60, а затем добавить Float, то система назначит ему адрес не 63, а АВТОМАТИЧЕСКИ - 64!
    Это и есть механизм выравнивания.
    Вот именно это и нужно учитывать - в панели использовать для записи и чтения данных Float адрес 64, а не 63
    Вот адрес узла я как раз и менял)))
    Тоесть по 2Byte которое с адресом(идентификатор узла) 60 (в панели его читаю и записываю как адрес 59), создаю FLOAT, система дает ему идентификатор 61. По какому адресу тогда обращяться к данному FLOAT из панели?

  5. #5
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,120

    По умолчанию

    Цитата Сообщение от nensist Посмотреть сообщение
    Вот адрес узла я как раз и менял)))
    Тоесть по 2Byte которое с адресом(идентификатор узла) 60 (в панели его читаю и записываю как адрес 59), создаю FLOAT, система дает ему идентификатор 61. По какому адресу тогда обращяться к данному FLOAT из панели?
    В конфигурации ПЛК адреса регистров начинаются с НУЛЯ.
    По этому если создать 60 регистров 2Byte, то адрес последнего регистра - 59, а не 60
    И если добавить элемент FLOAT, то адрес у него будет 60, а не 61! Адрес 60 - четный, по этому выравнивания нет
    Пример
    Захват-2.png

    Захват-1.png
    Последний раз редактировалось petera; 02.02.2018 в 11:10.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6
    Пользователь Аватар для nensist
    Регистрация
    22.01.2016
    Адрес
    Архангельск
    Сообщений
    88

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    В конфигурации ПЛК адреса регистров начинаются с НУЛЯ.
    По этому если создать 60 регистров 2Byte, то адрес последнего регистра - 59, а не 60
    И если добавить элемент FLOAT, то адрес у него будет 60, а не 61! Адрес 60 - четный, по этому выравнивания нет
    Пример
    Захват-2.png

    Захват-1.png
    Все правильно к последнему 2 byte с панели я и обращаюсь как к 59. 60 я имел ввиду идентификатор узла. Буду разбираться. По ходу меня не так научили в свое время. второй год так фигачу)))) Что скажете про мой большой объем переменных в конфигураторе, влезет туда все это или только через библиотеки обмен делать? И что можете посоветовать почитать по работе с файлами плк?

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,120

    По умолчанию

    Цитата Сообщение от nensist Посмотреть сообщение
    Все правильно к последнему 2 byte с панели я и обращаюсь как к 59. 60 я имел ввиду идентификатор узла. Буду разбираться. По ходу меня не так научили в свое время. второй год так фигачу)))) Что скажете про мой большой объем переменных в конфигураторе, влезет туда все это или только через библиотеки обмен делать? И что можете посоветовать почитать по работе с файлами плк?
    Не нужно смотреть на идентификатор узла.
    Тупо считаем в порядке расположения элементов в слейве.
    Захват-3.png

    Пример с рецептами в ПЛК с использованием файла http://www.owen.ru/forum/showthread....l=1#post186999

    Там правда редактирование рецептов сделано в визуализации кодесиса, по этому требует некоторой доработки сам механизм редактирования.
    А вот ФБ для работы с файлом рецептом можно взять уже готовым из примера и не думать о работе с файлами.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. Modbus (Master) не отображается в память Modbus (Slave)
    от ghoch в разделе Помощь Разработчикам
    Ответов: 3
    Последнее сообщение: 07.05.2018, 09:40
  2. Есть ли в Codesys переменная состоянии PLC?
    от Dry fig в разделе СПК2xx (архив)
    Ответов: 2
    Последнее сообщение: 06.09.2016, 12:36
  3. Байтовая адресация
    от Спорягин Кирилл в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 13.08.2015, 17:45
  4. Переменная из Modbus (master) в Modbus (slave)
    от Zenr в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 25.10.2013, 11:38
  5. Ответов: 5
    Последнее сообщение: 14.10.2010, 13:42

Ваши права

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