Страница 6 из 9 ПерваяПервая ... 45678 ... ПоследняяПоследняя
Показано с 51 по 60 из 95

Тема: невероятно медленный опрос модулей МВ110-220.8АС

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Ну тогда открывайте инструкцию на 8АС, и читайте, по каким адресам регистров нужно обращаться за теми или иными данными. Что вы там читаете из регистра с адресом 4? У меня нет уверенности, что конфигурационные параметры могут читаться групповыми запросами. Если вас интересуют измеренные значения, то они хранятся с адреса 0х100, то есть по-рабоче-крестьянски с адреса 256. Я у себя делал по-другому, не пользуясь указателями. Сначала объявил структуру примерно так:
    struct.jpg
    Потом объявил переменную с типом этой структуры, настроив ее абсолютный адрес вот так:Prg.jpg
    При этом в конфигурации опрос настроил вот такcfg1.jpg и вот такcfg2.jpg
    И эта конструкция за одно обращение считывает 8 значений IRD (по восьми каналам), а дальше я уже я делаю с ними то, что посчитаю нужным.
    Вот как-то так

  2. #2

    По умолчанию

    Цитата Сообщение от YuriBel Посмотреть сообщение
    Ну тогда открывайте инструкцию на 8АС, и читайте, по каким адресам регистров нужно обращаться за теми или иными данными. Что вы там читаете из регистра с адресом 4? У меня нет уверенности, что конфигурационные параметры могут читаться групповыми запросами. Если вас интересуют измеренные значения, то они хранятся с адреса 0х100, то есть по-рабоче-крестьянски с адреса 256. Я у себя делал по-другому, не пользуясь указателями. Сначала объявил структуру примерно так:
    struct.jpg
    Потом объявил переменную с типом этой структуры, настроив ее абсолютный адрес вот так:Prg.jpg
    При этом в конфигурации опрос настроил вот такcfg1.jpg и вот такcfg2.jpg
    И эта конструкция за одно обращение считывает 8 значений IRD (по восьми каналам), а дальше я уже я делаю с ними то, что посчитаю нужным.
    Вот как-то так
    По адресу 4 хранится тип датчика 5 входа МВ110.
    Инструкцию прочитал, ограничений на групповое считывание конфигурационных параметров не увидел.
    Изображения Изображения

  3. #3

    По умолчанию

    Учитывая. что иногда всплывают сюрпризы типа описанных в сообщениях 27 и 31, не удивлюсь, если групповой опрос конфигурационных параметров не поддерживается. Какие-то ограничения все-таки есть, ибо в инструкции написано "Для функций 03, 04 и 16 допускается запись или чтение регистров, относящихся только к одной команде. При попытке записать или прочитать регистры нескольких команд возвращается ошибка 4 («Failure in associated device»). Исключение составляют регистры оперативных параметров, которые могут быть все считаны одной командой, при этом начальный адрес регистра может быть любым в пределах адресов оперативных параметров."
    В любом случае, тот пример, который я привел, позволяет читать одной строкой все восемь каналов. попробуйте прочитать область оперативных параметров, потом будете делать выводы.

  4. #4
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,799

    По умолчанию

    Цитата Сообщение от YuriBel Посмотреть сообщение
    Учитывая. что иногда всплывают сюрпризы типа описанных в сообщениях 27 и 31, не удивлюсь, если групповой опрос конфигурационных параметров не поддерживается. Какие-то ограничения все-таки есть, ибо в инструкции написано "Для функций 03, 04 и 16 допускается запись или чтение регистров, относящихся только к одной команде. При попытке записать или прочитать регистры нескольких команд возвращается ошибка 4 («Failure in associated device»). Исключение составляют регистры оперативных параметров, которые могут быть все считаны одной командой, при этом начальный адрес регистра может быть любым в пределах адресов оперативных параметров."
    Браво, Товарищ, ибо мне, например никогда и в страшном сне не пришло бы в голову читать с модуля что-то другое, кроме измеренных значений и статуса канала(да и то не всегда 4..20ма без сопливых понятно что там К.З или обрыв)!
    Ian! Пробуй начинать чтение с адреса 280 и не старайтесь понять и перенять-принять принципы индусского кода в начале пути, он приведет к потреблению всякого...
    Последний раз редактировалось Sergey666; 30.06.2021 в 22:07.

  5. #5

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    На счет склеивания, так есть же всякие /256 или %256 но так как я немного далек от паскалеподобного CodeSys не знаю как у них там точно.
    Ну или можно SHR, SHL использовать с ИЛИ
    Ага... это я умею по коду для микроконтроллеров. Там такое сплошь и рядом.
    Удобнее все эти делить/умножить писать в 16ричном виде, так как там FF означает один байт.
    И поэтому если мы пишем /256 - тут ни фига не ясно со стороны.
    А если пишем SHR(mmm, 8) - сдвинуть mmm вправо на 8 бит от конструкции (wData AND 16#FF00) - то тут чуток нагляднее:
    а) Через AND выделяем нужный байт из числа
    б) Через SHR сдвигаем куда надо.

    kondor3000 Всё понял! =)) Напишу свои функции - настало время © =)
    У меня первый косяк был с INT как раз - я WORD переводил, а он беззнаковый оказался. И отрицательная температура улетала фиг куда.

    Ian Я ещё не всё читал (так как к шапочному разбору пришёл).
    НЕ забываем, что в строк в CodeSys признак конца строки - байт с кодом 0 (ноль!)!!
    Поэтому если первый байт в кучке регистров равен нулю - то вся отладка будет показывать ПУСТУЮ СТРОКУ. А на деле там будут данные.
    Я заводил отдельный буфер из массива байт и при первых тестах эту строку туда через SysMemCpy копировал и видел данные.

    UPD. Почитал дальше. Неее! Не надо пока структур!
    Вот можно начать с простого теста (как делал я):
    а) На канал String назначить переменную Прям в конфигурации ПЛК. Пусть её зовут testData
    б) Настроить чтение ДАННЫХ с модуля. В данных как минимум есть положение десятичной точки - уж оно не нулевое.
    в) Взять массив байт: testBuf : ARRAY [1..64] OF BYTE;
    г) Копирнуть STRING в этот testBuf. И посмотреть побайтно, чё там в testBuf. Если не нули и если читается побайтно - то уже дальше играться с копированием в WORD и прочие штучки. Воть...

  6. #6

    По умолчанию

    Да, оказалось, что нельзя читать конфигурационные данные строкой. Оперативные регистры передаются строкой, четко по примеру из книги.

  7. #7
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,799

    По умолчанию

    Цитата Сообщение от Ian Посмотреть сообщение
    Да, оказалось, что нельзя читать конфигурационные данные строкой. Оперативные регистры передаются строкой, четко по примеру из книги.
    Фух, слава богу, это такие сложности на целый день!? Уже бы за это время освоил работу с библиотеками, но... у каждого свой вкус.

  8. #8

    По умолчанию

    Цитата Сообщение от Sergey666 Посмотреть сообщение
    Фух, слава богу, это такие сложности на целый день!? Уже бы за это время освоил работу с библиотеками, но... у каждого свой вкус.
    Подскажите с какими библиотеками надо освоить работу? Завтра займусь.

  9. #9

    По умолчанию

    Еще возник вопрос, при чтении одной строкой 64 регистров с 280 по 311 в строке оказываются регистры разных типов. Я делаю указатель на массив ARRAY типа WORD из 64 элементов и потом присвиваю этому указателю адрес получаемой в результате модбас опроса строки. Далее чтобы получить значения 8-ми статусов я обращаюсь к элементам массива по индексу ARRAY[1], ARRAY[2] ....ARRAY[8] и статусы успешно читаются. Но далее с 9го элемента массива у меня идут по три регистра значения измерения, где первые два регистра вместе должны быть FLOAT, а третий метка времения WORD.
    Как мне первые два регистра которые теперь стали элементами массива типа WORD склеить и получить значение с плавающей точкой, а третий с меткой отбросить?
    Изображения Изображения

  10. #10
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,799

    По умолчанию

    Офигеть! Я примеров старых в "Примерах и полезностях" не нашел???
    На диске от Овена должны быть примеры.

Страница 6 из 9 ПерваяПервая ... 45678 ... ПоследняяПоследняя

Похожие темы

  1. Опрос модулей МВ110-хх
    от Antonio-oz в разделе Мх110
    Ответов: 2
    Последнее сообщение: 14.12.2019, 14:49
  2. Ответов: 2
    Последнее сообщение: 13.03.2015, 01:00
  3. Ответов: 5
    Последнее сообщение: 20.02.2013, 01:44
  4. Опрос несколько модулей МВ110 через лектус
    от llx89 в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 20.02.2013, 01:44
  5. Ответов: 9
    Последнее сообщение: 17.03.2011, 05:48

Ваши права

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