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

Тема: обращение к битам по модбас

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию обращение к битам по модбас

    В примерах на форуме мне не удалось получить ответ на такой вопрос.

    Я подключаю к ПЛК (МАСТЕР) устройство по Модбасу RTU (некий АЦП, не ОВЕН). В описании на устройство я вижу таблицу используемых регистров.
    Среди них есть несколько типов -

    bool
    char
    int
    float
    long

    и указаны их адреса, команды чтения-записи, диапазон значений и т.д.

    Читаю про создание Мастера в ПЛК и в Конфигураторе выбираю Universal Modbas device. Всякие там скорости обмена и прочее - это понятно.
    Теперь создаем список переменных, которыми обмениваются ПЛК и АЦП.
    И вот тут-то я не могу стартовать.

    Беру из описанных в РЭ на АЦП регистров:

    Адрес регистра: 101
    Тип: bool
    Код ф-ции чтения: -
    Код ф-ции записи: 5

    Сразу за этим битом идет следующий, адрес регистра 102 и так далее.
    Но дальше в таблице есть бит с таким же адресом

    Адрес регистра: 101
    Тип: bool
    Код ф-ции чтения: 1
    Код ф-ции записи: -

    Вопрос: как правильно в Конфигураторе ПЛК этот бит показать? Как быть с тем, что с адреса 101 будет и чтение, и запись туда же?

    Ну, а дальше остальные регистры, с адресами и 40010, и 30001, и прочая, и прочая... Тоже некоторые только пишутся или читаются, а некоторые тудым-сюдым. Но думаю, если подскажете, как обойтись с битами, то дальше будет легче.

    Спасибо!

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

    По умолчанию

    читать и писать в один регистр можно без проблем.
    к примеру я использовал такое для контроля частоты пч.
    если в регистре не то значение, что в плк, то давал команду на запись.биты писать в регистр:
    VAR
    a:WORD;
    END_VAR

    a.0:= ;(*0-бит*)
    a.1:= ;(*1- бит*)
    ...и т.д.
    Последний раз редактировалось lara197a; 17.12.2010 в 21:07.

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

    По умолчанию

    спасибо за скорость

    и все же, главное: действия в конфигураторе. я не понимаю, как мне записать адрес бита 101. создавать слово из 8 бит? так 100 в параметрах модуля - это адрес слова или бита?

    если не влом, просто расскажите все параметры, которые нужно указать в конфигураторе для обращения к битам 100, 101, 102... на чтение и на запись.

  4. #4

    По умолчанию

    Если вы пишете бит коммандой записи бита, то и адрес указан бита, не регистра, не байта, а именно БИТА. То есть адреса бита с 0 до 15 будут в 16-ти разрядном регистре с адресом 0, биты с адресами 16..31 будут в регистре с адресом 1 и т. д.

  5. #5
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Я думаю о записи одного бита, а не о чтении и не о записи регистра.

    Если я пишу командой записи 1 бита (команда 0х05), то именно в этот бит все и попадает. Причем по самой линий связи проходит вот та самая неповторимая комбинация 0000 или FF00.

    А если пишу командой записи многих битов (команда 0x0F), но указываю количество битов 1, то в путь отправляется слово из 16 бит, но просто с младшим битом, который установлен в нужное нам состояние 0 или 1.

    И вроде это работает. В том устройстве (АЦП), что я сейчас запустил, не было реализовано команды 0x0F, а в ПЛК поленились реализовать команду 0х05. Поэтому проверять пришлось от компьютера. А от ПЛК так и не могу записать бит. Ну, кажется, что легче достучаться до автора того АЦП, чем до наших другзей из ОВЕНа. Они не сказали мне, что я неправ, но и не поспешили заняться добавлением команды 0х05

  6. #6

    По умолчанию

    Вот кусок оглавления из описания библиотеки модбас для ПЛК63. Не знаю с каким контроллером Вы работаете, но если в биосе плк нет комманды 0х05, то ее можно организовать в программе пользователя, поковыряйте в этом направлении.


  7. #7

    По умолчанию

    Здравствуйте, drvlas. В чем собственно проблема? Что за оборудование вы подключаете и что вы хотите из него получить?
    Дело в том, что у любой железяки есть определенный набор правил. Ну к примеру, регистры с 0 по 100 читаются ф-ей 03h, а пишутся ф-ей 10h. Если про битовые операции нет ни слова, то с данными регистрами они могут просто не работать.
    Биоса в ПЛК нет (что бы людей в заблуждение не вводить). Но есть область PLC_Configuration или проще говоря конфигурация ПЛК. К сожалению в ПЛК63 изначально задумывался как довольно простое устройство. Поэтому часть функционала в конфигурацию контроллера не вошло. Работать с функцией 5 вы можете только через библиотеку. Если ПЛК63 выступает мастером сети, то программу придется писать исключительно через библиотеку, т.к. конфигурация ПЛК63 не позволяет организовывать мастера сети.
    Последний раз редактировалось Александр Приходько; 22.12.2010 в 10:17.

  8. #8

    По умолчанию

    Цитата Сообщение от Александр Приходько Посмотреть сообщение
    Биоса в ПЛК нет (что бы людей в заблуждение не вводить).
    Что же тогда по вашему исполняет программу? Вы же ее не пишете на ассемблере по "железу". Есть некий набор поддерживаемых функций, который присутствует в данной системе. В ПЛК63 нет функций поддержки модбас, а в плк100 есть, но не все реализованы - вот суть вопроса.

  9. #9

    По умолчанию

    1. Программу выполняет система исполнения CoDeSys - на то от там и есть. CODESYS - ЭТО НЕ ТОЛЬКО СИСТЕМА ПРОГРАММИРОВАНИЯ...
    2. То, что ПЛК63 не поддерживает в конфигурации ПЛК работу мастером четко прописано. То, что с помощью БЕСПЛАТНОЙ библиотеки Мастер таки можно организовать - тоже написано...
    3. В ПЛК100 поддержаны не все функции ModBus - это тоже описано.

    Так в чем вопрос?

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

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    Так в чем вопрос?
    Дорогие мои! Нет уже вопроса. Нет. Разобрался. Мог бы быстрее. Например, если бы вы раньше ответили. Думаю, так коряво я ставлю вопросы.

    А вот мне подсказали, что библиотека Modbus.lib для ПЛК63 вполне подходит для использования с ПЛК100. Я ее скачал и изучаю. А есть ли библиотека для режима Slave?
    Последний раз редактировалось drvlas; 23.12.2010 в 08:05.

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

Ваши права

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