Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя
Показано с 31 по 40 из 41

Тема: и снова про регистры :(

  1. #31

    По умолчанию

    OK. Спасибо. Похоже другого варианта нет.

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

    По умолчанию

    Цитата Сообщение от Safron Посмотреть сообщение
    Я думал, что здесь назначение адресов регистров происходит также попорядку, как если бы в устройство Модбас (слейв или мастер) добавлять байты, флоат и прочее.
    Здесь оказывается по другому. Здесь всё прописывается в параметрах модуля
    Я тоже так думал и даже помучил знатоков вопросами А потом пришло понимание, которым хочу поделиться. Потому что понимание значительно лучше запоминания.
    Мое понимание связано с использованием понятий "клиент-сервер" вместо или вместе с понятиями "мастер-слейв". Да, кто-то более образованый в данном вопросе найдет разницу. Но нам покатит и так.

    Где лежат данные в паре "клиент-сервер"? На сервере (= у слейва). Чтобы разместить данные в памяти, нужно резервировать ячейки - байты, слова, двойные слова, стринги... Естественно, что резервирование компилятор будет производить по некоему правилу, но все же - в порядке возрастания адресов. Вот откуда то наращавание адресов, которое мы видим в Конфигураторе и о котором ты пишешь.

    А теперь посмотрим на клиента (мастера, инициатора обмена). Ему нужны данные, хранимые на сервере. Ему может захотеться обратиться к любому из имеющихся адресов (номеров регистров). То есть Конфигуратору клиента (мастера) нужно сказать: "наша переменная по адресу АТ%18.11.1.0.0 в (нашей) области ввода-вывода находится на сервере в регистре номер 40050". Именно при конфигурировании мастера мы и заносим в Register Input(Output) Module во вкладку "Параметры модуля" как Register Address.

    Резюме. При работе с Конфигуратором ПЛК нужно:

    У слейва разместить данные (последовательно возрастают адреса памяти)
    У мастера - указать, по какими номерами регистров на сервере лежат данные

    При работе не с Конфигуратором адреса в памяти сервера можно связывать с номерами регистров Модбаса произвольным образом. Отсюда такие номера как 40000, 30000 и т.д.

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

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    По другому - можно. И нужно.
    Можно. Но всегда ли нужно?

    Если я верно понял смысл твоего примера:
    Мастеру нужно постоячнно мониторить все данные на сервере, сравнивая их со своими копиями. Ничего себе траффик может гудеть!

    А в чем выгода? Только потому, что "раздваивать ввод-вывод - клиника", как сказал один парень?
    Ну, нам не холодно и не жарко от того, что при желании изменить данные я пишу

    АТ%18.11.1.0.0 := 12345;

    а при желании прочесть данные я обращаюсь к АТ%18.12.1.0.0 (другой адрес в области обмена). Очень даже комфортно нам в нашей больничке

  4. #34

    По умолчанию

    Спасибо. Буду переваривать. Интересного много...

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

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Каждый сам себе выбирает больничку по душе.
    То что народ вообще тут трется - это уже диагноз.
    Что-то ты мрачноват, Учитель. Я тоже чту Страстную Пятницу, но как-то смиреннее

    Для себя решил. Всегда.
    Не зарекайся. Думаю, что задачи бывают разные - и оптимальная организация обмена тоже не всегда одна и та же. Несмотря на видимый душевный комфорт от "четкого решения навсега".

    Чтобы читающим нас было понятно, вокруг чего идет спор, я позволю себе чуть подробнее показать специфику своего обмена.
    Основной прикол тут в динамичности требований. В процессе работы программа ПЛК может находиться в разных состояниях (фазах работы). В одном состоянии требуется работать с одной группой данных, хранящихся у слейва (сервера), в другом - с другой группой. Иногда, по действиям оператора или иным событиям, возникает задача разового обращения к некоей третьей, четвертой группе. И, как неизменная составляющая, в фоновом режиме постоянно вычитываются одна важная парочка регистров.
    Все это, заметьте, с совершенно разным бэкграундом. Есть фазы работы, в которых вся эта модбас-болтовня может идти в развалочку, а есть суровые моменты жизни, когда нужно все похерить кроме той нашей парочки регистров - но их читать максимально быстро-часто.
    Вот именно в те суровые моменты система "виртуально общего пула данных" никак не катит!

    Поэтому у меня запущено 8 модулей модбас (библиотека уважаемого Валенка). Они опрашиваются по довольно сложной логике программы, но примерно это может выглядеть так:

    1 1 1 1 1 1 2 1 1 1 1 3 1 2 1 1 1 1 1 1 1 1 1....1 3 1 2 1 4 1 1 1 1 1 1

    То есть идет некое действие - вызывается нужный модуль или модули, а между ними непрерывно шарашит наш фоновый модуль опроса двух регистров.

    Кстати, вопрос к Автору библиотеки. Выяснилось, что есть одно неудобство при отладке. Когда отлаживаю по шагам, то весь процесс обмена останавливается. Как-то это в штатном Конфигураторе не так - там ввод-вывод в фоне идет. Толком не исследовал, да и не представляю, чтобы это можно было изменить в твоей библиотеке, так что мирюсь. Остальные преимущества перевешивают, как слон моську
    Последний раз редактировалось drvlas; 23.04.2011 в 10:21.

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

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Ну дык я ж не система. Не "интегрирован". Обычный пользовательский код.
    Я ж понимаю, я ж не в претензии
    Цитата Сообщение от Валенок Посмотреть сообщение
    Чего сложного. Модбас – один единственный туалет
    Ладно, наши понимания сложности различаются в разы Для меня - сложная логика, и баста!

    Цитата Сообщение от Валенок Посмотреть сообщение
    В развитие.Мне лично нафик не нужно, но в штатном мастере легко поймать момент прихода данных.
    А нужно ли? Я вот подумываю перевести ИП-320 тоже на твою библиотеку (сделав его слейвом, ясен перец). И тогда пусть приходы ловят непосвященные

  7. #37

    По умолчанию

    Всех с Праздником. Очень интересная полемика. И снова про эти самые регистры...Чем больше читаю про модбас. тем больше каша в голове.
    • 1 (0x01) — чтение значений из нескольких регистров флагов (Read Coil Status)
    • 2 (0x02) — чтение значений из нескольких дискретных регистров (Read Discrete Inputs)
    • 3 (0x03) — чтение значений из нескольких регистров хранения (Read Holding Registers)
    • 4 (0x04) — чтение значений из нескольких регистров ввода (Read Input Registers.
    Выше приведённое описание мне мало о чём говорит...

    В параметрах модуля Register imput module даются на выбор три команды функции 3, 4 и ещё некая функция Read bytes.
    Так вот, в чём собственно говоря разница между чтением регистров хранения и чтением регистров ввода?
    Чем мне руководствоваться при выборе той или иной команды для чтения дивайса?
    Если регистр хранения записывается в контроллере, то где? В какой памяти энергонезависимой или энергозависимой. Какая польза мне от того, что он сохранился? Я имею ввиду возможное прикладное использование этого факта...И как его потом извлекать?
    Или я опять не туда попёр?
    В общем, чем дальше в лес, тем больше дров...
    Вы то уж маститые, не первый год играетесь с контроллерами, объясните мне "особо одарённому".
    Спасибо. Ещё раз всех с праздником...

  8. #38

    По умолчанию

    Это разные регистры.
    Вообще говоря, в протоколе МОДБАС 4 разных адресных пространства с одинаковыми адресами! И в общем случае, чтение ф-ей 3 и 4 - это м.б. чтения разных переменных. Реально так не делает никакой производитель, во всяком случае, мне такие устройства не известны.
    А дальше - все понятно из описания. Только для ввода логические и слово и для вывода и ввода(контроля) тоже.

  9. #39

    По умолчанию

    OK/ Спасибо. Теперь следующие непонятки. Установил связь с дивайсом Модбас RTU (ПЛК154 мастер). На контроллере светодиод связь горит, на дивайсе Rx и Tx тоже горят, команду установил 255, Last error =0,- вроде всё чудесно должно быть , а ничего не принимается. Адреса несколько странноватые у дивайса. Все начинаются на 4. Например 40003, 40005,40057, 40063 и т.д. и т.п. Посоветовали мне забивать последние цифры 3, 5, 57, 63 и т.д. Пытался адреса на единицу меньше адреса устанавливать, а воз и ныне там...Кто-нибудь может сталкивался с подобным???

  10. #40

    По умолчанию

    Регистры 4хххх - это Holding Register. При этом хххх нумеруется с 1, а адрес, который идет в посылке - с 0, т.е. на 1 меньше.
    Считываются ф-ей 3.
    Пробовать для начала лучше с устройства с жестко прошитыми регистрами МОДБАС

Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя

Ваши права

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