PDA

Просмотр полной версии : ПЛК-73, непонятки с портами



Sergey1024
29.01.2013, 12:08
День добрый!
Есть функция инициализации портов:

FUNCTION XferPortCheck : BOOL
VAR_INPUT
isadc: BOOL:=FALSE;
END_VAR
VAR
END_VAR

IF isadc THEN
IF adc_com.Ready = FALSE THEN
adc_p.settings.Port := 1;
adc_p.settings.dwBaudRate := 57600;
adc_p.settings.byParity := 0;
adc_p.settings.dwTimeout := 0;
adc_p.settings.byStopBits := 0;
adc_p.settings.dwBufferSize := 0;
adc_p.settings.dwScan := 0;
adc_com(Enable:=TRUE, Settings:=adc_p.settings, Task:=OPEN_TSK);
aport := 0;
ELSE
aport := 1;
adc_com.Enable := FALSE;
END_IF
XferPortCheck := aport = 1;
ELSE
IF host_com.Ready = FALSE THEN
host_p.settings.Port := 0;
host_p.settings.dwBaudRate := 115200;
host_p.settings.byParity := 0;
host_p.settings.dwTimeout := 0;
host_p.settings.byStopBits := 0;
host_p.settings.dwBufferSize := 0;
host_p.settings.dwScan := 0;
host_com(Enable:=TRUE, Settings:=host_p.settings, Task:=OPEN_TSK);
hport := 0;
ELSE
hport := 1;
host_com.Enable := FALSE;
END_IF
XferPortCheck := hport = 1;
END_IF


При этом на порт 0 ничего не отсылается:
c := DWORD_TO_INT(SysComWrite(adc_com.Settings.Port, ADR(adc_p.txbuf), 4, 0));
в отладчике с всегда = 4, все ок, но в линии тишина. Порт 1 нормально работает и на прием и на передачу.

Проверялось на трех контроллерах.

Что можете посоветовать?

kgsh82
29.01.2013, 13:34
Проверьте прошивку контроллера. В версии 2.15 были проблемы с портами. С сайта скачать можно версию 2.16. Если не знаете как посмотреть - то просто перешейте и будет 2.16

Sergey1024
29.01.2013, 13:52
Прошу прощения, не указал сразу - стоит прошивка 2.16.

kgsh82
29.01.2013, 17:58
К сожалению уезжаю в командировку. Проверить у себя смогу лишь в понедельник. Без всего проекта сложно судить, но сразу бросается в глаза одна вещь - применение функциональных блоков в функции. Так нельзя.

Sergey1024
29.01.2013, 19:19
но сразу бросается в глаза одна вещь - применение функциональных блоков в функции. Так нельзя.
Вроде как документация говорит, что "объявлять экземпляр ФБ в теле функции нельзя". Насчет использования ничего не сказано.

kgsh82
29.01.2013, 20:18
Сделайте функцию блоком - на всякий. Также можно поменять местами порта. Так можно выяснить - проблема аппаратная или программная. Ну а дальше - смотреть проект надо. По поводу документации: не стоит забывать, что это перевод. В данном случае может и так "объявлять экземпляр ФБ в теле функции нельзя" - не смотрел. Но неточности встречаются. Встречал на форуме обсуждения. Часто использую би-бку от oscat. Не видел, чтобы там применялись фб в функциях

Sergey1024
29.01.2013, 20:25
Также можно поменять местами порта. Так можно выяснить - проблема аппаратная или программная.Порты менял, на другом порту все отлично передается и принимается.
По первому порту тоже принимается нормально, а вот с необходимостью передавать в порт столкнулся только сейчас - и поимел проблемы на ровном месте.

capzap
29.01.2013, 20:36
Порты менял, на другом порту все отлично передается и принимается.
По первому порту тоже принимается нормально, а вот с необходимостью передавать в порт столкнулся только сейчас - и поимел проблемы на ровном месте.

а эту тему смотрели http://www.owen.ru/forum/showthread.php?t=12121

kgsh82
29.01.2013, 21:10
На прошивке 2.16 подключал модули расширения на оба порта - специально, с целью проверить. Всё фурычило. В понедельник для успокоения совести проведу эксперимент ещё раз

Sergey1024
29.01.2013, 21:31
а эту тему смотрели http://www.owen.ru/forum/showthread.php?t=12121Да, смотрел, спасибо. Странно, все принимается без ошибок, и передается судя по результатам отправки в дебагере нормально. А в линии тишина.

Sergey1024
29.01.2013, 21:33
На прошивке 2.16 подключал модули расширения на оба порта - специально, с целью проверить. Всё фурычило. В понедельник для успокоения совести проведу эксперимент ещё разУ вас какие порты в контроллере? 485 и 232? Если да, то вы работали с обоими портами одинаково, не было каких-то тонкостей?

kgsh82
01.02.2013, 14:04
У меня 2 RS485. Тонкость в том, что бибка SysCom считает ошибочным номер 1 -го порта (0). Но всё работает. Есть одна платка ПИ73-4. В понедельник проверю как работает.

Sergey1024
01.02.2013, 14:11
У меня 2 RS485. Тонкость в том, что бибка SysCom считает ошибочным номер 1 -го порта (0). Но всё работает.Да, про порт 0 я в курсе. То есть работа с 485 ничем не отличается от работы с 232 интерфейсом? Не надо каких-то шаманских плясок с SysComSetSettingsEx?

kgsh82
01.02.2013, 20:10
Различие сугубо на аппаратном уровне - программно одно и тоже.

kgsh82
04.02.2013, 13:34
Проверил с МК110. Работают оба порта. Проверил на скорости 9600, 57600, 115200.
ЗЫ: Проверял с платой ПИ73-5. К сожалению не могу проверить с ПИ73-4, так как по 232 подключать нечего, а преобразователя под рукой нет

Леонид
11.02.2013, 00:34
Наверное у меня такая же лажа!
ПЛК 73М.
Прошивка последняя 2.16 11 10.
Плата ПИ73 4.
По ModBus отвечает и по RS232 и по RS485, А вот с библиотекой смс RS232 не работает.
Если


oport.Enable:=onoff;
oport.PortBaudrate:=9600;
oport.PortNum:=0;
oport();

то пишет что порт инвалид,но работает по rs 485,
а если


oport.Enable:=onoff;
oport.PortBaudrate:=9600;
oport.PortNum:=1;
oport();

то открывается порт COM1 и библиотека пытается слать команы.
А ОНИ НЕ ОТСЫЛАЮТСЯ!!!!!!!!!!!!!!!!!!!!:mad: :mad: :mad: :mad:

Леонид
06.04.2013, 18:03
Взял другую плату и все заработало!
Может брак какой то попался.