Данный CODESYS форум содержит архивную копию русской ветви только для чтения. Для создания сообщений пожалуйста используйте актуальную международную платформу CODESYS Forum. Close

RS232 CODESYS V3

Anonymous
2014-08-18
2018-03-12
  • Anonymous - 2014-08-18

    Originally created by: Mikhail Shvetsov

    Пример работы с RS232 в CODESYS V3 с использованием CAA библиотек.
    ПЛК: Berghof EC1000

    https://www.youtube.com/watch?v=-M5qnxcByTg m

     
  • NIMNUL

    NIMNUL - 2018-01-05

    Добрый день.
    Сейчас на рынке появились контроллеры ПК-40 от компании АГАВА
    http://www.kb-agava.ru/kontrollery/promyshlennye-kontrollery/agava-pk-40
    У производителя в хранилище можно скачать КДС, их собственные библиотеки для этого контроллера и примеры на ST.
    http://files.kb-agava.ru/index.php/s/F9Uuk5PLiMYP6Cv?path=%2F
    1. В их примерах на ST, в глобальных переменных, они описыват подключение RS232 к файловой системе Linux (на которой ПЛК работает). Попытался сконфигурировать параменты порта на CFC используя пример на ST ничего не получается (отличаются типы данных).
    2. Плюс к этому при запуке CODESYS Control его не видит Gateway и соответственно произвести эмуляцию и тестирование RS232 не получается. Если при содании проекта выбрать другой контроллер, то при запуске CODESYS Control, Gateway видит контроллер.
    Помогите разобраться, что я делаю не так. А в идеальном варианте, увидеть такое же видео для данного контроллера.

    P.S. В приложенном архиве мои попытки на CFC и пример на ST от производителя. В глобальных переменных моего файла(закомментированы) настройки подключения номера порта к Linux (как в их примере)

    проба.rar [71.65 КБ]

     
  • CDSMaks

    CDSMaks - 2018-01-11

    Ваш пример совершенно неправильный.
    Использование нескольких (3-х) экземпляров функционального блока TSerial вместо одного. Использование выходов блока, в то время, когда вам нужно присвоить значения свойствам блока. В CFC, в отличие от ST, значение слева присваивается переменной справа. Т.е. в вашем случае начальную установку надо было делать примерно в таком виде:

    IMG: Снимок.PNG

     
  • NIMNUL

    NIMNUL - 2018-01-11

    Спасибо большое за помощь.
    В режиме эмуляции пример вроде бы заработал, но надо проверить как "ходят" данные.
    А можно ли как-нибудь подключиться к этому порту в режиме эмуляции терминальной программой (например PuTTY), чтобы послать на этот порт что-нибудь и убедится, что порт принимает данные и записывает в текстовую переменную?
    И второе: насколько я понял блок TSerial использует библиотеку SysCom. А в ней минимальное значение COM_Daudrate 4800 Бод.
    А что делать если надо принять/передать данные на скорости 2400 или 1200?

    IMG: Скорость.png

     
  • CDSMaks

    CDSMaks - 2018-01-15

    Просто передайте нужное значение скорости.

     
  • Anonymous - 2018-01-22

    Originally created by: Viacheslav Mezentsev

    Цитата:
    В режиме эмуляции пример вроде бы заработал, но надо проверить как "ходят" данные.

    Программа называется Serial Port Monitor от Eltima Software. TSerial не предназначен для работы на языке CFC. Это больше "класс", чем функциональный блок. Он является вспомогательным для библиотек, реализующих протокол Modbus RTU. В реальном проекте нужно организовать конечный автомат и переходить между состояниями последовательного порта.

     
  • NIMNUL

    NIMNUL - 2018-02-13

    Связался в заводом изготовителем PLC. Как вы и сказали, на TSerial в CFC работу порта организовать нельзя.
    Рекомендовали для CFC использовать библиотеку SysCom.
    Пытаюсь разобраться - ничего не получается. Никак не пойму как задать настройки порта.
    Может кто пробовал использовать эту биб-ку на CFC?
    Увидеть бы скриншот или самый простецкий проект на прием данных.

     
  • NIMNUL

    NIMNUL - 2018-03-12

    Получилось реализовать прием данных на библиотеке SysCom через автомат состояний.
    При реализации алгоритма нужно проверять, что в буфер записалось 9 байт. И исходя из этого переводить автомат либо в состояние очистки буфера, либо в состояние ошибки.
    Количество принятых байт отдает ФБ SysComRead в переменную dwRead. Хочу ее использовать в качестве условия выбора следующего состояния. Точка останова стоит на ФБ приема, все хорошо, значение вижу. Но стоит перейти на след точку останова, dwRead обнуляется и соответственно меня перебрасывает в состояние ошибки.
    Почему значение dwRead сразу обнуляется, еще до того как я очистил буфер?
    Как выйти из этой ситуации?

    IMG: Скрин.png