Существует библиотека SysLibCom для CodeSys 3.5 ?
Если да, то где ее скачать?
Существует библиотека SysLibCom для CodeSys 3.5 ?
Если да, то где ее скачать?
В состав CODESYS 3.5 входит несколько библиотек для работы с COM-портом - в частности, SysCom (аналог SysLibCom c приблизительно тем же набором функций/ФБ) и CAA SerialCom. Скачивать ничего не надо, просто добавьте их в Менеджере библиотек.
Пример работы с CAA SerialCom приведен в документе СПК. Реализация нестандартных протоколов:
http://ftp.owen.ru/index.html/CoDeSy...cols_v.1.0.pdf
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Спасибо за подсказку
Здравствуйте.
А подскажите, как работать с дескриптором открываемого порта на языке ST? (библиотека CAA SerialCom).
При открытии порта мы должны получить дескриптор:
myComOpen(usiListLength := SIZEOF(arrParams)/SIZEOF(COM.PARAMETER), pParameterList := ADR(arrParams));
А при отправке в порт дескриптор использовать:
myComWrite(xExecute := TRUE, udiTimeOut := 1000, hCom := myComOpen.hCom, pBuffer := ADR(arrMassive), szSize := 5);
Правильно ли я его использую? В порт ничего не пишется.
Что я делаю не так?
UP: Почему этот hCom всегда равен 0? Пробовал разные порты.
Скрин:
myHandle.png
Последний раз редактировалось ВладОвен; 11.08.2022 в 17:45.
Потому что вы не дожидаетесь открытия порта (myComOpen.xDone).
Изучите этот документ:
https://ftp.owen.ru/CoDeSys3/11_Docu...cols_v.3.0.pdf
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Хм... Странно.
Реализация:Скрытый текст:
Я нажимаю на клавишу на экране визуализации, которая устанавливает флаг xOpen.Код:IF xOpen THEN xOpen := FALSE; myComOpen(usiListLength := SIZEOF(arrParams)/SIZEOF(COM.PARAMETER), pParameterList := ADR(arrParams)); END_IF myHandle := myComOpen.hCom; xError := myComOpen.xError; myError := myComopen.eError; xSucces := myComOpen.xDone;
А далее долго-долго наблюдаю за 4-я параметрами. И они не меняются...
Скрин:
Жду с моря погоды.png
Но ничего так и не происходит...
Пробовал перебирать порты - результата нет.
Может есть проект на ST для образца?
См. ссылку в моем прошлом посте.Может есть проект на ST для образца?
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
В общем тестировал библиотеку CAA SerialCom, перебирал порты, курил доки Овена.
Попытка открыть порт приводит к состоянию флагов:
Зря потраченное время.png
Что мы видим в этом окне:
xDone - никогда не устанавливается,
xError - никогда не устанавливается,
xBusy - всегда установлен.
Какой мы вывод делаем:
Открытие порта не заканчивается
Ошибок не возникает
Процесс идет бесконечно долго.
Последний раз редактировалось ВладОвен; 12.08.2022 в 11:59.
Я могу порекомендовать только внимательнее "курить доки".
У вас xOpen взводится на один цикл и myComOpen тоже вызывается только один цикл.Код:IF xOpen THEN xOpen := FALSE; myComOpen(usiListLength := SIZEOF(arrParams)/SIZEOF(COM.PARAMETER), pParameterList := ADR(arrParams)); END_IF
За один цикл порт не успевает открыться, и блок зависает в xBusy.
Обычно делают так:
Или можно использовать USR_COM_CONTROL из документа - это обертка над COM.Open / COM.Close, которая будет существенно более проста в использовании для начинающих программистов, чем эти блоки.Код:myComOpen(xExecute := xOpen, usiListLength := SIZEOF(arrParams)/SIZEOF(COM.PARAMETER), pParameterList := ADR(arrParams)); IF myComOpen.xDone THEN myHandle := myComOpen.hCom; END_IF
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk