PDA

Просмотр полной версии : У ПЛК 63 можно использовать два com-порта?



kost2
20.03.2013, 12:05
Извиняюсь за ламерский вопрос: попала мне тут в руки прога для ПЛК 63. Так вот в программе функция ComService1 вызывается дважды с разными Settings в одном номер порта 3, в другом 4. Один, насколько я понимаю, используется для связи с ПК Оператора, другой для связи с МДВВ. Открываю я технические характеристики ПЛК 63 и вижу "Интерфейсы
RS-485, DEBUG RS-232 (RJ-11)". Debug RS-232 же использутеся только для связи с Codesys или я не прав?

и еще непонятно: разве можно в RS-485 указывать номер порта отличный от нуля?

kgsh82
24.03.2013, 21:00
Сам работаю с ПЛК73 - вот там точно нельзя. На ПЛК63 можно использовать оба порта.



и еще непонятно: разве можно в RS-485 указывать номер порта отличный от нуля?

Не понятен вопрос

kost2
28.03.2013, 11:56
Вот такой комментарий вижу в примерах:


com_num: PORTS:=0; (*0 - RS-485, 1 - RS-232*)

kgsh82
28.03.2013, 14:44
Вот такой комментарий вижу в примерах:


com_num: PORTS:=0; (*0 - RS-485, 1 - RS-232*)

Что смущает? Вот это "0 - RS-485"? Это хитрость от Овен - КДС кажет ошибку, но порт работает.

kost2
08.04.2013, 07:10
а на ПЛК-150 можно два порта использовать?

kgsh82
08.04.2013, 09:14
а на ПЛК-150 можно два порта использовать?

Да. (Здесь пишу всякую ерунду, так как меньше 10 символов нельзя)

kost2
11.06.2013, 12:58
Хорошо. Но непонятным остается вопрос откуда брать номера этих ком-портов?
Т.е. вот например есть у меня ПЛК-150, физически: первый ком-порт - это 2 провода RS-485, второй ком-порт - это разъем RS-232 Debug. А внутри ПЛК, как к ним обращаться, 485-му передавать адрес 0, а 232-му адрес 1?

kgsh82
11.06.2013, 13:38
Ход мысли правильный. На форуме полно тем с ответом на этот вопрос.

kost2
13.06.2013, 11:03
да, спасибо, нашел файл "Номера портов ПЛК" вопрос с номерами портов внутри ПЛК отпал.
Теперь другое не могу понять, у ПЛК-150 всего 3 интерфейса: Ethernet, RS-232 и RS-485. Однако в файле написано:"COM0 – RS485, COM1 – RS232, COM2 – Не исп., COM3 - Не исп., COM4 – RS232-Debug".
Так вот когда RS-232 работает как debug, а когда нет? это зависит от кабеля или от чего? у меня есть кабель КС-1 с ним RS-232 будет дебагом или нет?

kost2
13.06.2013, 12:01
Кажется понял. Если у меня кабель КС-1 (кабель программирования), то я должен использовать COM4 debug, если модемный кабель с выключенной перемычкой - то COM1. Теперь другой вопрос могу ли я использовать кабель КС-1 и, соответственно, RS-232 debug для связи плк с компом, но не Codesys, т.е. есть у меня например своя прога на компе которая что-то пишет в порт, смогу ли я прочитать это на ПЛК через порт debug? или мне нужно искать другой кабель?

kgsh82
13.06.2013, 13:03
Наверное ПЛК под рукой нет?
Просто на все вопросы ответ можно найти опытным путем. Если конечно документацию и форум штудировать лень

kost2
13.06.2013, 13:18
Был сегодня плк под рукой. Кодесисом подключался к плк и через КС-1 и по эзернету. А вот прочитать на на ПЛК то, что писала сторонняя программа в порт не смог. При этом порт COM4 открывался, но SysComRead всегда возвращала 0 прочитанных байт. Вот пытаюсь понять причину

kgsh82
13.06.2013, 15:24
Предлагаю подключить ПЛК к 232 порту компьютера. Кабель - КС2. На компе запустить терминал и пулять байты в ПЛК. Таким образом можно научиться их "ловить".
ЗЫ: Может SysComRead используется неправильно?

kost2
13.06.2013, 15:42
Кабель только КС-1 другого нет. Вычитал тут на форуме
данный порт может использоваться в 2-х режимах - как стандартный RS-232 и как порт Gateway (связь с CoDeSys).
При загрузке контроллер проверяет какой тип кабеля подключен к данному порту - т.е. определяет как работает порт. Если он увидит кабель для работы по стандартному 232 (без перемычки) - CoDeSys ничего не напишет.
Если кабеля нет (дополнительно проверяется перемычка на верхней плате), либо он с перемычкой - порт воспринимается как Debug - о чем он и сообщает ID 200.

Все нежелающие перепаивать кабель могут переставить на верхней плате перемычку в состояние замкнуто и порт автоматически будет восприниматься как стандартный RS-232.

так что завтра буду искать перемычку.
А чего в использовании SysComRead может быть неправильного?
byte_read:=SysComRead(Settings.Port, ADR(buf_otvet), 64, 0);

kgsh82
14.06.2013, 19:39
Как-то так....
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