Страница 446 из 1047 ПерваяПервая ... 346396436444445446447448456496546946 ... ПоследняяПоследняя
Показано с 4,451 по 4,460 из 10464

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #4451
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,842

    По умолчанию

    Цитата Сообщение от energvk Посмотреть сообщение
    Да, действительно. Как оказалось на предыдущих вариантах программы команда запуска отправлялась периодически. В ПЧ есть два варианта регистров управления энергозависимые и энергонезависимые. Но в энергозависимую много не напишешься, ресурс памяти ограничен (а разнести команду на запуск в энергонезависимую, а задание частоты в энергозависимую нельзя). Добавил модуль отслеживания питания ПЧ, проверим. Сетевые познания слабоваты, мне виделось если в мастере висит значение, то слейв его считает при включении, но был неправ
    Master в переводе с английского Хозяин, Slave -Раб.
    И где это видано, где это слыхано..., чтобы Раб командовал, давал приказы Хозяину, что тому делать.
    Хозяин(Master) всегда один и только он может приказывать Рабам(Slave). Slave -ПЧ, сам из мастера ничего читать не умеет. ПЧ включился и ждет (слушает линию), когда Master пошлет ему командное слово.
    В мастере действительно висит значение командного слова, которое он раньше посылал ПЧ. И пока это значение не изменится мастер повторно посылать ничего не будет, т.к. режим работы ему назначен "по изменению значения".
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  2. #4452
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,842

    По умолчанию

    Цитата Сообщение от Panalexfix Посмотреть сообщение
    Как это все "миксовать" для нормального отображения?
    Если Вы прочли пост #4666, то можно вместо двух Register input module сразу использовать
    А)Либо 32bit input module
    Вложение 20831
    Однако есть один нюанс, в зависимости от параметра Byte Sequence в UMD мастер будет по разному сортировать младший и старший WORD.
    Т.е. для веса 1 кг в Вашем случае полученные значения из весов могут выглядеть либо "803F 7D1D", либо "7D1D 803F".
    По этому приведу два варианта кода для перестановки байт для Ваших весов
    Код:
    PROGRAM PLC_PRG
    VAR
        SWAP_BYTE_A: DWORD;
        SWAP_BYTE_B: DWORD;
        ptFl : POINTER TO REAL;
        ves: REAL;
        ves_2: REAL;
    END_VAR
    (*В зависимости от параметра Byte Sequence в UMD нужно использовать
    или этот вариант*)
    SWAP_BYTE_A:=(ROL(ves_tmp,8) AND 16#FF00FF00) OR (ROR(ves_tmp,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_A);
    ves:=ptFl^;
    
    (*Или этот вариант*)
    SWAP_BYTE_B := (ROR(ves_tmp,8) AND 16#FF00FF00) OR (ROL(ves_tmp,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_B);
    ves_2:=ptFl^;
    Теперь даже в эмуляции можно поиграться с ранее приведенными цифрами
    Вложение 20832 Вложение 20833 Вложение 20834

    Б) А можно использовать Real input module
    Вложение 20835
    Только здесь в конфигураторе не ждите увидеть в Real input module значения 16#
    Замечание о параметре Byte Sequence в UMD здесь тоже справедливы, по этому два варианта кода
    Код:
    PROGRAM PLC_PRG
    VAR
        ptFl : POINTER TO REAL;
        ptDw: POINTER TO DWORD;
        ves: REAL;
        ves_2: REAL;
        SWAP_BYTE_C: DWORD;
    END_VAR
    
    ptDw:=ADR(ves_tmp);
    (*В зависимости от параметра Byte Sequence в UMD нужно использовать
    или этот вариант*)
    SWAP_BYTE_C:=(ROL(ptDw^,8) AND 16#FF00FF00) OR (ROR(ptDw^,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_C);
    ves:=ptFl^;
    
    (*Или этот вариант*)
    SWAP_BYTE_C:=(ROR(ptDw^,8) AND 16#FF00FF00) OR (ROL(ptDw^,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_C);
    ves_2:=ptFl^;
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #4453

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Если Вы прочли пост #4666, то можно вместо двух Register input module сразу использовать
    А)Либо 32bit input module
    Вложение 20831
    Однако есть один нюанс, в зависимости от параметра Byte Sequence в UMD мастер будет по разному сортировать младший и старший WORD.
    Т.е. для веса 1 кг в Вашем случае полученные значения из весов могут выглядеть либо "803F 7D1D", либо "7D1D 803F".
    По этому приведу два варианта кода для перестановки байт для Ваших весов
    Код:
    PROGRAM PLC_PRG
    VAR
        SWAP_BYTE_A: DWORD;
        SWAP_BYTE_B: DWORD;
        ptFl : POINTER TO REAL;
        ves: REAL;
        ves_2: REAL;
    END_VAR
    (*В зависимости от параметра Byte Sequence в UMD нужно использовать
    или этот вариант*)
    SWAP_BYTE_A:=(ROL(ves_tmp,8) AND 16#FF00FF00) OR (ROR(ves_tmp,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_A);
    ves:=ptFl^;
    
    (*Или этот вариант*)
    SWAP_BYTE_B := (ROR(ves_tmp,8) AND 16#FF00FF00) OR (ROL(ves_tmp,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_B);
    ves_2:=ptFl^;
    Теперь даже в эмуляции можно поиграться с ранее приведенными цифрами
    Вложение 20832 Вложение 20833 Вложение 20834

    Б) А можно использовать Real input module
    Вложение 20835
    Только здесь в конфигураторе не ждите увидеть в Real input module значения 16#
    Замечание о параметре Byte Sequence в UMD здесь тоже справедливы, по этому два варианта кода
    Код:
    PROGRAM PLC_PRG
    VAR
        ptFl : POINTER TO REAL;
        ptDw: POINTER TO DWORD;
        ves: REAL;
        ves_2: REAL;
        SWAP_BYTE_C: DWORD;
    END_VAR
    
    ptDw:=ADR(ves_tmp);
    (*В зависимости от параметра Byte Sequence в UMD нужно использовать
    или этот вариант*)
    SWAP_BYTE_C:=(ROL(ptDw^,8) AND 16#FF00FF00) OR (ROR(ptDw^,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_C);
    ves:=ptFl^;
    
    (*Или этот вариант*)
    SWAP_BYTE_C:=(ROR(ptDw^,8) AND 16#FF00FF00) OR (ROL(ptDw^,8) AND 16#00FF00FF);
    ptFl:=ADR(SWAP_BYTE_C);
    ves_2:=ptFl^;
    ОГРОМНОЕ Спасибище за помощь в этом не легком "деле". Все работает !!!!! даже перевел в CFC для своего удобства))))) ОГРОМНЫЙ ЖИРНЫЙ +))))

  4. #4454

    По умолчанию

    Здравствуйте. Подскажите, пожалуйста, с настройкой связи между МВ110-8АС и ПЛК160.

    У меня имеется несколько расходометров (р), итп (и), один мв110 (м) и один плк160(п), которые завязаны между собой соответственно: и<--р-->м-->п.

    Открыл конфигуратор для МВ110, проверил - связь с прибором устанавливает.

    Скачал пример отсюда. Подставил свои значения параметров связи (скорость передачи и адрес устройства в соответствии с конфигуратором МВ110).

    Запустил - все переменные по нулям, хотя итп цифры показывают и на экранчиках (родных) у расходометров тоже есть показания небольшие (0,2-0,4).

    Подскажите, как убедиться, что ПЛК корректно "видит" по RS-485 мой МВ110? И нужны ли какие-нибудь специальные настройки переменных для МВ110 в конфигураторе? Я всё оставил по умолчанию, ибо ни с чем не знаком, а в инструкциях не нашёл указаний, на сколько критичны/необходимы те или иные правки...

  5. #4455

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Master в переводе с английского Хозяин, Slave -Раб.
    И где это видано, где это слыхано..., чтобы Раб командовал, давал приказы Хозяину, что тому делать.
    Хозяин(Master) всегда один и только он может приказывать Рабам(Slave). Slave -ПЧ, сам из мастера ничего читать не умеет. ПЧ включился и ждет (слушает линию), когда Master пошлет ему командное слово.
    В мастере действительно висит значение командного слова, которое он раньше посылал ПЧ. И пока это значение не изменится мастер повторно посылать ничего не будет, т.к. режим работы ему назначен "по изменению значения".
    Да, действительно всё элементарно, вопрос был глуп изначально. Просто голова была забита другими проблемами и видимо думательная часть неплохо тупила...)) Спасибо.

  6. #4456

    По умолчанию

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

  7. #4457

    По умолчанию

    добрый день, интересует программирование delta dvp20ex2 в codesys, есть ли такая возможность? если да, то как это сделать и какие имеются нюансы?

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

    По умолчанию

    kasshern с каких это пор дельта стала поддерживать CDS ?

  9. #4459

    По умолчанию

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

    А как в CoDeSys-ST и вообще в ПЛК мире принято делать такое? У меня получается изрядная "лапша" в коде.

    Я завел несколько POU для этого. В каждом собственно логика проверки, таймеры на "таймаут" разных проверочных действий, признак того что проверка уже пройдена, и результат проверки. Пока все длительные действия не завершаться, признак проверки говорит "не готов".

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

    Внутри POU такие же макароны -- если какой-то таймер готовности аппаратуры не досчитал, выхожу с признаком "не готов", если досчитал продолжаю проверку.

    Смотрится некрасиво, на мой вкус, а ничего другого придумать не могу. Как бы вы такое сделали?

  10. #4460
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Рапуча, я бы не стал рассматривать такой процесс как что-то особенное с точки зрения кода. По крайней мере сам по себе такой процесс тестирования идиом в коде не создаёт. Обычный этап автоматического процесса. Конкретно ваш код будет смысл обсуждать когда вы его покажете.

Страница 446 из 1047 ПерваяПервая ... 346396436444445446447448456496546946 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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