Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 31

Тема: ПЛК110-60 + МВ110-16Д дискретные входы

  1. #21

    По умолчанию

    Ну хорошо, допустим присвоили для первого входа W1.0, для третьего входа W1.2, для шестнадцатого - W1.15. Это для одного модуля, а для второго, третьего модуля как прописывать?

  2. #22

    По умолчанию

    Спасибо! Попробую так сделать

  3. #23

    По умолчанию

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

    Для того, чтобы прочитать состояния входов модуля МВ110-16Д по Modbus нет "лёгкого" пути, как для других модулей. Поэтому:

    1) В конфигурации ПЛК в элементе Modbus Master добавляем подэлемент Universal Modbus Device, в котором в свою очередь подэлемент Register input module, которому в параметрах модуля прописываем адрес регистра 51, а самому регистру присваиваем название переменной, например DI16_1 (дискретные входы 16 модуль 1, к примеру если модулей несколько то 2,3 и т.д.).



    Таким образом после опроса всех модулей получим и некую переменную размером с WORD и содержащую по сути некоторое состояние, которое каждым своим битом описывает состояние каждого входа модуля), причём прочитав мануал (п.4.2.2 стр 15), мы понимаем, что:



    т.е. 1-й вход (бит 0) в состоянии "замкнут"
    2-й вход (бит 1) в состоянии "разомкнут"
    .....
    10 вход (бит 9) в состоянии "замкнут"

    2) Поскольку, обозвав полученную переменную прямо в конфигураторе ПЛК, мы заявили её глобально, то использовать в дальнейшем в программах (любых) мы можем :
    Желая получить состояние соответствующего входа, обращаемся к переменной через точку, т.е. ко входам №№ 1, 7 и 16 мы обращаемся соответсвенно как DI16_1.0, DI16_1.6, DI16_1.15 из любой программы, ФБ или функции напрямую.
    Вероятно можно "распаковать" состояние регистра при помощи утилиты UnPack библиотеки Util.lib, но в библиотеке она BYTE размерности, а как её превратить в WORD, или значение регистра разбить на 2 составляющие BYTE средствами CoDeSys я пока не знаю (по крайней мере негеморойными методами, без сдвигов влево-вправо и т.п.), возможно кто-от из опытных опишет это действие с выкладыванием скринов.

    Просьба к опытным программистам, прокомментируйте, если что не так - поправьте меня в самом начале пути .

    П.С. это не руководство к действию. это попытка новичка разобраться. задача - опрос концевиков клапанов, заведённых на МВ110-16Д и обработка их в ОВЕН ПЛК 100.

  4. #24

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    и ни чего там сложного нет, ознакомтесь с библиотекой на oscat.de, там те же самые преобразования будут со смещением и т.п.
    Хорошо, ознакомлюсь . А в чём, собственно плох способ чтения состояния конкретного входа через имя переменной и точку? Какие плюсы в том, чотбы распаковывать регистр и присваивать куче булевых переменных эти значения? Я пока этого не знаю (не сталкивался) и не понимаю, зачем что-то ещё делать, когда можно просто "прочитать" значение, и даже логически помнить что за параметр к какому входу физически поlключен. например к третьему входу второго модуля МВ110-16Д - просто читаем DI16_2.2...

    Или есть какие-то подводные камни?

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

    По умолчанию

    Всем привет!
    Такая же проблема как у автора темы, только плк63 и мв110-16д, смотрел кучу примеров с этим модулем, сделал все так же, а входы с 9 по 16 все равно не работают в программе, возможно не правильно организована распаковка буферных данных?!
    мой пример в архиве...
    Вложения Вложения

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

    По умолчанию

    Нашел выход после недели мучения

    предположения были верны - не правильно была организована распаковка данных.

    Решение в архиве...
    Вложения Вложения

  7. #27

    По умолчанию

    Пожалуйста объясните как открыть данные с МВ110-16ДН с 9 по 16 входы на языке CFC !! Я уже весь форум просмотрел! Все ссылки на примеры ЗАБЛОКИРОВАНЫ. В языке CFC у меня регистр инпут модуль с регистром 51 тип WORD. Ч то мне делать дальше в программе с этой переменной WORD в языке CFC?К Как распаковать? Как достать данные каждого бита из WORD?
    Пожалуйста скинте рабочий пример или объясните - очень прошу

  8. #28

    По умолчанию

    точно также, как и с 1го по 8й
    Снимок экрана (1).png

  9. #29

    По умолчанию

    Цитата Сообщение от tPorte Посмотреть сообщение
    Пожалуйста объясните как открыть данные с МВ110-16ДН с 9 по 16 входы на языке CFC !! Я уже весь форум просмотрел! Все ссылки на примеры ЗАБЛОКИРОВАНЫ. В языке CFC у меня регистр инпут модуль с регистром 51 тип WORD. Ч то мне делать дальше в программе с этой переменной WORD в языке CFC?К Как распаковать? Как достать данные каждого бита из WORD?
    Пожалуйста скинте рабочий пример или объясните - очень прошу
    Регистру WORD который вы прочитали дайте имя, например Mask, тогда разложить его на биты можно через точку, Mask.0 это бит 0 (b0), Mask.1 это бит 1 (b1).....Mask.15 это бит 15 (b15)
    Смотри скрин 1 Маска.jpg
    Собирать маску из битов в обратном порядке.
    Последний раз редактировалось kondor3000; 10.03.2022 в 13:25.

  10. #30

    По умолчанию

    Цитата Сообщение от tPorte Посмотреть сообщение
    Пожалуйста объясните как открыть данные с МВ110-16ДН с 9 по 16 входы на языке CFC !! Я уже весь форум просмотрел! Все ссылки на примеры ЗАБЛОКИРОВАНЫ. В языке CFC у меня регистр инпут модуль с регистром 51 тип WORD. Ч то мне делать дальше в программе с этой переменной WORD в языке CFC?К Как распаковать? Как достать данные каждого бита из WORD?
    Пожалуйста скинте рабочий пример или объясните - очень прошу
    FUNCTION_BLOCK UNPACK_W
    VAR_INPUT
    input: WORD;
    END_VAR
    VAR_OUTPUT
    B0: BOOL;
    B1: BOOL;
    B2: BOOL;
    B3: BOOL;
    B4: BOOL;
    B5: BOOL;
    B6: BOOL;
    B7: BOOL;
    B8: BOOL;
    B9: BOOL;
    B10: BOOL;
    B11: BOOL;
    B12: BOOL;
    B13: BOOL;
    B14: BOOL;
    B15: BOOL;
    END_VAR


    B0:= input.0;
    B1:= input.1;
    B2:= input.2;
    B3:= input.3;
    B4:= input.4;
    B5:=input.5;
    B6:= input.6;
    B7:= input.7;
    B8:= input.8;
    B9:= input.9;
    B10:=input.10;
    B11:= input.11;
    B12:= input.12;
    B13:= input.13;
    B14:= input.14;
    B15:= input.15;

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Дискретные входы и выходы
    от Kitaro в разделе ПЛК1хх
    Ответов: 50
    Последнее сообщение: 31.12.2011, 10:44
  2. дискретные входы плк110
    от IVM в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 02.09.2010, 19:23
  3. спалили дискретные входы Plc150
    от ran в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 28.11.2009, 14:12
  4. Дискретные входы - floatPIC - это диагноз?
    от superMAX в разделе Помощь Разработчикам
    Ответов: 7
    Последнее сообщение: 28.10.2008, 14:31
  5. дискретные входы трм133
    от ayakin в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 29.06.2007, 11:43

Ваши права

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