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

PLCWinNT

KIV
2008-02-26
2009-08-24
  • KIV

    KIV - 2008-02-26

    вопрос простой, но задача возможно не решаема ...

    Как из PLCWinNT использовать com потр компа?

    е.т. напрямую работать с портом?

    зы очень надо ...

    готовлю проект, эмулирую устройтва работающие с плк (это не сложно натисать), но как отработать обмен по 485/232 без com порта? в нагрузку протол обмена не стандартный...

    или так нельзя, или что-то пропустил?

     
  • Igor Petrov

    Igor Petrov - 2008-02-26

    В PLC WinNT нужно в Менеджере библиотек добавить в проект биб-ку SysLibCom (см. вложенное описание) и работать с COM портом. Ее не достаточно?

     
  • KIV

    KIV - 2008-02-27

    Igor Petrov писал(а):
    Ее не достаточно?

    должно быть достаточно, но не инициализируется порт ... как следствие не работает ...

     
  • Igor Petrov

    Igor Petrov - 2008-02-27

    Порт нужно открыть и настроить. Пошаговые примеры для приема и передачи вложены.

     
  • KIV

    KIV - 2008-02-27

    Igor Petrov писал(а):
    Порт нужно открыть и настроить. Пошаговые примеры для приема и передачи вложены.

    как с вами туго

    на живом плк открывается и настраивается ... там другая проблема ...

     
  • KIV

    KIV - 2008-02-27

    прошу прошения ...

    один раз запустил ваш пример

    +

    один раз запустил свой

    =

    косяк гуляет

    то есть именно не хочет подхвативаться порт...

    ..............

    отлавил косяк - не освобождается порт даже когда делаешь сброс(оригинал)

     
  • Igor Petrov

    Igor Petrov - 2008-02-28

    1) Запускаю вложенную выше программу передачи по Com1 на PLC WinNT (V2.4.7.2. от 25 февраля 2008). Она работает, вижу передачу сообщений в терминале. Выполняю заводской сброс (original). Перезагружаю программу заново, запускаю, наблюдаю передачу в терминале... Такая последовательность действий была?

    2) Если мне нужно чтобы при команде 'сброс' выполнялись некие дополнительные действия (например, связанные с работой внешних библиотек), то в менеджере задач активирую событиеи пишу соответствующий обработчик. (Сам исполнитель SoftPLC в принципе не обязан знать что делают прикладные программы и внешние биб-ки и вмешиваться в их работу, иначе это действительно будет 'косяк').

    Речь идет о демо-версии PLC WinNT?

     
  • KIV

    KIV - 2008-02-28

    PLCWinNT v2.4.6.1 demo

    ...

    запускаю 1-й пример - работает

    сброс(любой)

    отключаюсь

    запускаю 2-й ... а порт не ау


    поправлюсь:

    просто сброс плк и порт уже не ау.

     
  • crusash

    crusash - 2009-06-30

    Вообще достало - на стадии отладки при любой ошибки, т.е. отсутствие корректного выхода из программы с закрыванием портов функцией SysComClose, приходится перезапускать комп потому что порт намертво остаётся заблоченым. Есть ли возможность каким то другим способом, не ребутом, освободить порт?

    И будте добры дать ссылку на пример работы с СОМ портом, в этой теме я её не нашёл.... желательно для третей версии CodeSys'а...

     
  • KIV

    KIV - 2009-06-30

    crusash писал(а):
    .... желательно для третей версии CodeSys'а...

    1. с третьим cds под какой плк работаешь?

    2. где-то была программка для принудительного освобождения портов или исходник (не помню) ... поищи.

     
  • KIV

    KIV - 2009-06-30

    Igor Petrov писал(а):
    1) Запускаю вложенную выше программу передачи по Com1 на (V2.4.7.2. от 25 февраля 2008). Она работает, вижу передачу ...

    что, где, куда вложенную?

     
  • Igor Petrov

    Igor Petrov - 2009-06-30

    Похоже, что потерялось вложение, повторяю. Пример для V2.3.

    Биб-ка SysLibCom примитивно проста, она просто транслирует все вызовы функций в соответствующие вызовы функций API Windows, более ничего.

    rs232_ex.ZIP [12.9 КБ]

    SysLibCom_RU.pdf [59.75 КБ]

     
  • crusash

    crusash - 2009-07-01

    Странно, настроил программу в CDS v3.3 для работы с термостатом ВМ8036 по последовательному порту. Программа открывает порт, производит запрос, принимает данные, закрывает порт. Всё хорошо, тока даже после корректного выхода и полного выключения CDS программа постовляемая в комплекте с термостатом говорит что порт закрыт и отказывается работать, а кодесис при повторном включении нормально отрабатывает программу. Значит в какомто месте демоны КоДеСис продолжают удерживать порт. Как с этим боротся?

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

    SysComClose(ComPort);

    где

    ComPort:Com_ports:=1;

    приводит к мёртвому зависанию...

     
  • Avgur

    Avgur - 2009-08-07

    в функцию SysComClose надо передавать дескриптор порта, а не его номер.

     
  • crusash

    crusash - 2009-08-24

    Avgur писал(а):
    в функцию SysComClose надо передавать дескриптор порта, а не его номер.

    Это то понятно, просто дело в том что дескриптор потерян т.к. программу я завершил не корректно, а Кодесис порт не отпустил....

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