Просмотр полной версии : ПЛК110-30 и RS485-2. Порт не открывается.
Пытаюсь организовать обмен данными с применением ПЛК110-30 и двумя сетями RS-485.
Столкнулся вот с такой проблемой. RS-485-1 открывается без проблем, а вот RS485-2 остается постоянно закрытым и не открывается.
Вот пример кода:
com_number1 := 0; (*COM0 RS485-1*)
com_number2 := 2; (*COM2 RS485-2*)
IF COM_SERVICE1.ready=FALSE THEN
com_settings1.Port := com_number1;
com_settings1.dwBaudRate := 9600;
com_settings1.byParity := 0;
com_settings1.dwTimeout := 0;
com_settings1.byStopBits := 0;
com_settings1.dwBufferSize := 0;
com_settings1.dwScan := 0;
COM_SERVICE1(Enable := TRUE, Settings := com_settings1, Task := OPEN_TSK);
com_ready1 := FALSE;
ELSE
COM_SERVICE1.Enable := FALSE;
com_ready1 := TRUE;
END_IF;
IF (com_ready1 = TRUE)
THEN
(*Порт открывается, проблем нет*)
END_IF;
IF COM_SERVICE2.ready = FALSE
THEN
com_settings2.Port := com_number2;
com_settings2.dwBaudRate := 9600;
com_settings2.byParity := 0;
com_settings2.dwTimeout := 0;
com_settings2.byStopBits := 0;
com_settings2.dwBufferSize := 0;
com_settings2.dwScan := 0;
COM_SERVICE2(Enable := TRUE, Settings := com_settings2, Task := OPEN_TSK);
com_ready2 := FALSE;
ELSE
COM_SERVICE2.Enable := FALSE;
com_ready2 := TRUE;
END_IF;
IF (com_ready2 = TRUE)
THEN
(* А вот сюда никак не попадает, COM_SERVICE2.ready = FALSE -ВСЕГДА*)
END_IF
Если же пытаться открыть только какой то один порт, то все равно открывается только 1-й порт, а второй - ну никак. Таргет 2.10, прошивка ПЛК 2.14.
Может кто сталкивался с такой проблемой или хотя бы подскажет в каком направлении копать. Может проблему можно решить используя напрямую SysLibCom.lib? Только я не знаю как. Если кто может подскажите кусочком кода.
p.s. Просьба, решение с конфигуратором не предлагать.
Причем, что интересно: если пытаться открыть порт RS485-1 и RS232,
com_number1 := 0; (*COM0 RS485-1*)
com_number2 := 1; (*COM2 RS232*)
то оба порта открываются без проблем и идет обмен данными по обоим портам без проблем, а вот при попытке открыть RS485-2, порт не открывается (COM_SERVICE2.ready = FALSE - всегда). Стоит так же упомянуть, что RS485-2 через конфигуратор работает.
Какова вероятность того что ошибка в микропрошивке контроллера?
Как может прокомментировать это тех-поддержка? (Если она конечно это читает)
p.s. Просьба, решение с конфигуратором не предлагать.
Странный подход, а протестировать работает ли порт через конфигуратор нельзя? Или Вам сразу надо готовый проект загрузить
Стоит так же упомянуть, что RS485-2 через конфигуратор работает.
Проверял я его и так и эдак... Через конфигуратор работает, а так не хочет. А 15-го марта надо объект ехать сдавать. Контроллер этот покупался именно из-за 2-х 485 портов....
если через конфиг работает, попробуйте создать пустой проект и добавить только блок работы с вторым 485, в таком варианте работает?
Создал пустой проект с одним 485-2 портом. (com_number := 2;) Не активен.
Если же поменять:
com_number := 0; (485-1)
com_number := 1; (232)
то работает. Если же опять меняем на 485-2, опять не работает.
в режиме онлайн com_number всегда остается равным тому номеру который задаете?
Да, это тоже проверил. Так же проверил что работает при com_number = 4( 232 DEBUG). Поведение com_number = 2 аналогично поведению com_number = 3 то есть несуществующего порта.
и при отстегнутых проводах тоже самое, :) ну мало ли
а как себя в конфигураторе ведет, передавалась ли какая нибудь информация
Проверял так же при отстегнутых проводах; отправлял байты принудительно после нескольких тысяч инициализаций в цикле, проверял выход осцилографом - результат ноль.
Через конфигуратор работает без проблем. Опрашивает несколько устройств и передает данные. Проблема в том что на линии будет более 50 устройств и конфигуратором это все реализовать довольно громоздко.
При настройке через конфигуратор порт 485-2 по умолчанию InterfaceType = RS232, и это вызывает сомнения (485-1 InterfaceType = RS485) вот и думаю, может его как то по другому инициализировать надо?
http://www.owen.ru/forum/showthread.php?t=10263 вроде со слов техподдержки все правильно делаете
Проблема в том что на линии будет более 50 устройств и конфигуратором это все реализовать довольно громоздко.
с этими вопросами уже разобрались?
Да в том то и дело что не хочется лепить конфигурацию на эти самые 50 устройств, тем более что контроллеров 5 и на каждом своя, не повторяющаяся конфигурация. А кодом вопрос решается намного изящней и проще. Плюс переносимость. Если не заработает, придется вместо 485-2 использовать 232 через преобразователь. Правда не знаю на сколько корректно оно будет работать. В понедельник попробую. А по этому вопросу наверное буду к разработчикам пытаться достучатся, авось чего путного посоветуют или у себя чего подправят.
попробуйте еще вернутся к какой нибудь ранней прошивке, еще бывает если прошивка меняется после создания проекта, то в КДС необходимо по новой устанавливать таргет. Может как то связано с распределением памяти на переферию
Прошивка изначально была 2.14. На всякий случай перепрошивал ее еще раз этой же прошивкой (ибо считается последней). Результат такой же. Но все равно, спасибо за совет. Попробую поискать более раннюю.
даже если прошивали на туже, всё равно наверное стоит переустановить таргет и соответственно проект, чтоб уж точно наверняка все было по новой
Переустановил таргеты, создал абсолютно пустой проект с нуля. Пытаюсь открыть 485-2 - не открывается. Меняю на 485-1, 232, 232-Debug, открываются без проблем, меняю назад на 485-2, опять не открывается....
:) у меня уже нет вариантов кроме извращений
Попробуйте установить соединение используя библиотеку UNM, и разработать свой модбас из 3 и 16 функций чтоб побыстрому
Так чем все кончилось, как открыли порт? У меня те же проблемы. )
Вот и я на те же грабли наступил. Кто-нибудь нашел решение кроме использовать UNM?
Отвечаю сам себе: читай тут http://www.owen.ru/forum/showthread.php?t=14536&page=6&p=120358&viewfull=1#post120358
приборист
03.12.2014, 15:23
Вот и я на те же грабли наступил. Кто-нибудь нашел решение кроме использовать UNM?
Отвечаю сам себе: читай тут http://www.owen.ru/forum/showthread.php?t=14536&page=6&p=120358&viewfull=1#post120358
У меня на 110-60 через конфигуратор RS485-2 заработал сам. Я тему по ссылке читал, был готов перепрошивать.
Завтра буду на объекте ради интереса гляну прошивку, неужели с завода идет уже на прошивке 2.15.3
Гарчев Евгений
04.12.2014, 17:52
С завода все еще идет 2.14.0. Но при работе RS485-2 что на ПЛК110-30, что на ПЛК110-60 через конфигурацию проблем не было, с ПЛК110-60 проблем при работе с RS485-2 не было и через библиотеки, а вот на ПЛК110-30 с прошивкой 2.14.0 RS485-2 не работает через библиотеки (SysLibCom).
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot