Просмотр полной версии : ПЛК63 + COM1 разночтения в документации и примерах
Господа,
не хочется беспокоить но видимо придется
пытаюсь работать напрямую с RS232-портом 63-го
с тем что RJ12 на верхней стороне, не через DBGU (в инструкции написано что то типа "Не трогат. Использовать ТОЛЬКО для перепрошивки")
1. порт открыл и он открылся (Handle не равен INVALID_HANDLE)
2. структуру COMSETTINGS создал и заполнил
3. пытаюсь установить параметры из COMSETTINGS для этого порта
вот в этом моменте начинаются фокусы
Судя по документации, первый параметр функции SysComSetSettings
dwHandle DWORD Дескриптор порта, возвращаемый SysComOpen.
в нескольких примерах встречал что в качестве первого параметра используется переменная типа PORTS (не понятненько где правда)
Судя по документации SysComSetSettings возвращает истину если ей удалось установить параметры
а в примерах нахожу обратный код
---------------------------
res:=SysComSetSettings(com_num,ADR(com_set));
(*Успешно открыт*)
IF NOT res THEN
port_opened:=TRUE;
END_IF;
--------------------------------
типа если не TRUE то прекращаем попытки открыть и сконфигурировать порт и начинаем с ним работать
Где правда?
Каким должен быть 1-й параметр?
и что должна вернуть функция в случае успеха?
Еще непоняточка
в перечисление портов начинается с COM1
а судя по файлику с номерами овеновских портов, везде присутствует СОМ0
кстати
com_set:COMSETTINGS;
...
...
com_set.Port:= COM1;
в окне отладки дает com_set.Port: = *** INVALID: 0 ***
наберите в поиске форума строку invalid и получите кучу тем, где найдете ответы на свои вопросы.
запрос конечно гениален
действительно выдает много
я пробовал и несколько десятков более конкретных запросов
набрал хорошую подборку разночтений
в конце концов вроде удалось настроить порт (хэндлы помогли)
попробовал туда чего ни будь записать (в смысле из ПЛК в ПК)
пока тишина
либо порт не тот (COM1)
либо что то не так делаю
сегодня спать
завтра продолжать
С "Инвалидом" разобрался вроде
Похоже вся неприятность была втом что я сам через этот порт с плк работал
Заливаешь, отключаешь, перезагружаешь и все конфигурится
Одна засада
Не ясно какой при этом порт конфигурится
В списке портов 63го присутствует COM0 -rs485
Его ни открыть ни сконфигурить не удается
Поддается COM1 и COM4
2 и 3 в 63м не используется ( так в мануале пишут )
4й вроде должен быть DBGU (в мануале говорят ни чего туда не пихать а то хуже будет)
пипец какой то
одни пишут
byte_read:=SysComRead(Settings.Port, ADR(buf_otvet), 64, 0);
другие
tmp1:=SysComRead(Handle, ADR(buf_otvet), otvet_len, 0);
у одних PORTS у других HANDE
и типа оба примера рабочих
и ни один не работает
с портами разобрался
COM0 -самая загадочная конструкция но это rs485 (слава богу он мне не нужен)
мне нужен либо COM1 либо СОМ4
но молчат оба
SysComWrite возвращает 0 там где должен вернуть 10
буфер предварительно почищен (если конечно SysComRead, вернувший 0, это признак чистого буфера)
63-й в принципе позволяет работать с портами на прямую?
в примерах на диске нашел еще более загадочную строку
ComHandle:= Settings.Port, (*номер COM-порта*)
:confused: это как :confused:
что то становится понятно
COM1 это действительно RJ12 штатно установленный в корпусе
если взять пример "Modbus запись Int и Real (ST)"
заменить в нем номер порта с 0 на 1
в порт начинает валиться какая то Modbus'ятина
отрезаешь из него Modbus'овскую библиотеку
вместо Modbus'овских вызовов пишешь SysComWrite(Settings.Port, ADR(snd_str),LEN(snd_str),0)
получаешь из порта фигу с маслом
все больше склоняюсь к идее что без ОВЕН'а или Modbus'а в этот порт ни чего не запихать
буду пытаться рыться в этих библиотеках если удастся
как то же они отправляют
PS: что то я в каком то монологе тут извергаю
Ну, монолог-то интересный.
Уверен, что многие следят за Вашими исследованиями.
Успехов!
Ну, монолог-то интересный.
Уверен, что многие следят за Вашими исследованиями.
Успехов!
блин, ну хоть сказали бы "Пилите шура. Пилите... на 63-м это возможно"
com_port_test.pro с диска
компилируется для 63-го удачно
даже пробовал MinCycleLength ms поставить не 1 а 5 или 10 (не помогло)
В порт вожделенного словечка 'TEST1$N' не льет
я бы в этом контексте и более короткому слову был бы рад
невъезжаю
библиотеку Modbus изнутри посмотреть неудалось
не пускает говорит правов нет на редактирование (я кстати редактировать ни чего и не хотел. мне бы посмотреть просто как они цыферьку в порт пихают)
народ.
Где грабли?
в какую сторону копать?
невъезжаю
библиотеку Modbus изнутри посмотреть неудалось
не пускает говорит правов нет на редактирование (я кстати редактировать ни чего и не хотел. мне бы посмотреть просто как они цыферьку в порт пихают)http://www.owen.ru/forum/showthread.php?t=15454&p=114821&viewfull=1#post114821
Спасибо
Завтра утром попробую (все на работе осталось)
Правда мне казалось что я в своих изысканиях истыкал правой кнопкой все что только мог
Но не исключаю что завтра мне ваша ссылка очень поможет
Еще раз СПАСИБО
Посмотреть удалось еще раз спасибо
обнаружил что длину буфера для SysComWrite определяют с помощью SIZEOF(Buff) а не LEN(Buff)
во всем остальном все то же самое
не вижу разницы за исключением результата
пример "Modbus запись Int и Real (ST)" шлет в порт
а мой пример нет
видимо пришел срок спросить уважаемую общественность более предметно
в чем грабли? (явно я где то накосячил)
ПЛК63
прошивка 2.12 12 10
версия таргета 2.01
если кому лень открывать проект в CoDeSys
прикладываю картинку чтобы прямо тут посмотреть можно было
если в SysComSetSettings(PortHandle,ADR(com_set)) вместо PortHandle использовать переменную типа PORTS, начинает зычно пищать.
MinCycleLength ms установлено 5
В результате в rs232 ни чего не льется
на экран выводится _0__11_22__0
переменные конечно названы ... (последствия колупания по куче примеров)
удалось вырезать из примера "Modbus запись Int и Real (ST)" использование библиотек Modbus и заслать в порт свою строчку
знаю почему раньше это не удавалось а сейчас удалось
буфер надо было объявлять примерно так
tmpb:ARRAY[0..255] OF BYTE;
в своем примере с нуля это не помогло
возможно надо было применять ComService.lib
файлик прилагаю
шлет в порт буквы ABC
за помощь всем СПАСИБО
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot