Наверное ПЛК под рукой нет?
Просто на все вопросы ответ можно найти опытным путем. Если конечно документацию и форум штудировать лень
Вид для печати
Наверное ПЛК под рукой нет?
Просто на все вопросы ответ можно найти опытным путем. Если конечно документацию и форум штудировать лень
Был сегодня плк под рукой. Кодесисом подключался к плк и через КС-1 и по эзернету. А вот прочитать на на ПЛК то, что писала сторонняя программа в порт не смог. При этом порт COM4 открывался, но SysComRead всегда возвращала 0 прочитанных байт. Вот пытаюсь понять причину
Предлагаю подключить ПЛК к 232 порту компьютера. Кабель - КС2. На компе запустить терминал и пулять байты в ПЛК. Таким образом можно научиться их "ловить".
ЗЫ: Может SysComRead используется неправильно?
Кабель только КС-1 другого нет. Вычитал тут на форуме
данный порт может использоваться в 2-х режимах - как стандартный RS-232 и как порт Gateway (связь с CoDeSys).
При загрузке контроллер проверяет какой тип кабеля подключен к данному порту - т.е. определяет как работает порт. Если он увидит кабель для работы по стандартному 232 (без перемычки) - CoDeSys ничего не напишет.
Если кабеля нет (дополнительно проверяется перемычка на верхней плате), либо он с перемычкой - порт воспринимается как Debug - о чем он и сообщает ID 200.
Все нежелающие перепаивать кабель могут переставить на верхней плате перемычку в состояние замкнуто и порт автоматически будет восприниматься как стандартный RS-232.
так что завтра буду искать перемычку.
А чего в использовании SysComRead может быть неправильного?
byte_read:=SysComRead(Settings.Port, ADR(buf_otvet), 64, 0);
Как-то так....
tmp1:=SysComRead(Handle, ADR(buf_otvet), otvet_len, 0);
IF tmp1>0 THEN
FOR i:=0 TO tmp1-1 DO
otvet[l+i]:=buf_otvet[i];
END_FOR
l:=l+tmp1;
END_IF