Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: Расположение (адреса) Modbus регистров в памяти контроллера.

  1. #1
    Пользователь
    Регистрация
    25.09.2016
    Адрес
    Краснодар
    Сообщений
    14

    По умолчанию Расположение (адреса) Modbus регистров в памяти контроллера.

    ПЛК100-РМ.
    Modbus TCP|IP Slave.

    Адрес переменной %QW.10.1.0.
    В Модбасе это нулевой регистр. Прекрасно читается-пишется.
    Пытаюсь обратиться к нему через %MW0, но это другая ячейка памяти.
    Классическая картинка, когда нулевой регистр модбаса находится в нулевой области памяти не срабатывает.


    Вопрос:Какой у него адрес в контроллере?
    Т.е. как к нему обратиться по %MW....



    Другими словами, Если я правильно понимаю..
    В TargetSettings - MemoryLayout есть значения Base. Но их не видно, стоят галочки Auto.
    Где бы посмотреть эти значения..

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

    По умолчанию

    какая необходимость обращаться к переменным по %XXXXX ?

    просто назначить имена переменным не судьба ?

  3. #3
    Пользователь
    Регистрация
    25.09.2016
    Адрес
    Краснодар
    Сообщений
    14

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    просто назначить имена переменным не судьба ?
    ОК. Имеем.

    MyWord AT %QW10.1.0 ;

    Как описать переменные к каждому биту?

  4. #4
    Пользователь
    Регистрация
    09.10.2014
    Адрес
    Киров
    Сообщений
    735

    По умолчанию

    Например переменная temp типа word - ее биты temp.0 , temp.1 ... temp.15
    для вашего случая MyWord.0 MyWord.15

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

    По умолчанию

    все будет еще хуже, когда доберетесь до взаимодействия Scada и ПЛК. Так что сразу разделите переменные Modbus и программы. В начале цикла копируйте и делайте что хотите, в конце цикла копируйте обратно.

    А то будете удивляться, почему из Scada переменные записываются через раз...

  6. #6
    Пользователь
    Регистрация
    25.09.2016
    Адрес
    Краснодар
    Сообщений
    14

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    Эта адресация ни какого отношения к конфигурации не имеет
    Не понял, к какой конфигурации.
    HoldingRegisters по-любому располагаются в памяти. У разных производителей контроллеров начинаются с разных областей физической памяти.
    Распространённый вариант начала HoldingRegisters c 0х4000. Тут не получилось.

  7. #7
    Пользователь
    Регистрация
    25.09.2016
    Адрес
    Краснодар
    Сообщений
    14

    По умолчанию

    Цитата Сообщение от SA104 Посмотреть сообщение
    Например переменная temp типа word - ее биты temp.0 , temp.1 ... temp.15
    для вашего случая MyWord.0 MyWord.15
    Вот спасибо. Переменные для того и именуют, чтобы глядя на неё было понятно, что это.. А не держать всегда под рукой табличку, чего означает 13 бит MyWodr27..

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

    По умолчанию

    а у вас в конфигураторе битовые переменные ?

  9. #9

    По умолчанию

    Цитата Сообщение от nudgad Посмотреть сообщение
    Вот спасибо. Переменные для того и именуют, чтобы глядя на неё было понятно, что это.. А не держать всегда под рукой табличку, чего означает 13 бит MyWodr27..
    Изучайте "Битовая адресация через глобальные константы"
    Справка-->Указатель-->Bit addressing
    и будет Вам счастье
    Объявите глобальные константы с именами бит:
    Код:
    VAR_GLOBAL CONSTANT
        enable:int:=2;
        Start:int:=8;
        Stop:int:=10;
    END_VAR
    И в теле программы вместо
    MyWord.2, MyWord.8 и MyWord.10
    будете обращаться к битам по именам
    MyWord.enable, MyWord.Start и MyWord.Stop

  10. #10
    Пользователь
    Регистрация
    25.09.2016
    Адрес
    Краснодар
    Сообщений
    14

    По умолчанию

    Цитата Сообщение от Мимоход Посмотреть сообщение
    будете обращаться к битам по именам
    MyWord.enable, MyWord.Start и MyWord.Stop
    Извращение, имхо... Ну за идею спасибо. В крайнем случае так сделаю.
    Слов-то не одно..

    Переношу проект с другого типа контроллеров и там было так.. Коротко, наглядно...
    MEM_Service1 AT %MW200:WORD; // Слово целиком
    MEM_GetRady AT %MX400.0:BOOL;
    MEM_Pusk_Route AT %MX400.1:BOOL;
    MEM_Stop_Route AT %MX400.2:BOOL;
    MEM_Reset_Route AT %MX400.3:BOOL;
    MEM_Hand_Routing AT %MX400.4:BOOL;
    MEM_Cross AT %MX400.5:BOOL :=0;

    и т.д. ещё строк двести... Описывать всё это через константы нумерации бит ...
    Последний раз редактировалось nudgad; 21.10.2018 в 17:27.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. ПЛК63, modbus slave, адреса регистров
    от monteg в разделе ПЛК63/73
    Ответов: 43
    Последнее сообщение: 19.06.2017, 08:46
  2. Ответов: 7
    Последнее сообщение: 16.05.2017, 22:09
  3. Адреса регистров ModBus RTU ПР114
    от Newcomer в разделе Программируемые реле
    Ответов: 4
    Последнее сообщение: 01.02.2016, 15:45
  4. Ответов: 4
    Последнее сообщение: 12.02.2014, 17:14
  5. Ответов: 1
    Последнее сообщение: 07.06.2011, 17:21

Ваши права

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