PDA

Просмотр полной версии : ПЛК110-30. Работа с портом RS-485 и библиотекой SysLibCom



monteg
06.08.2014, 14:42
Здравствуйте,
имеется ПЛК110-30, когда его приобретали, то думали что у него два независимых порта RS-485.
Для SysLibCom: RS_485_1 - 0, RS_485_2 - 2.
Первый порт открывается, настраивается и "отправляет".
Второй порт открывается, но не настраивается...
Все вышеизложенное в прикрепленном файле.
step 0 - заполнение структуры COMSETTINGSEX настройками для RS_485_1(COM0)
step 1 - открытие порта RS_485_1(COM0)
step 2 - настройка порта RS_485_1(COM0)
step 3 - запись в порт RS_485_1(COM0)
step 4 - заполнение структуры COMSETTINGSEX настройками для RS_485_2(COM2)
step 5 - открытие порта RS_485_2(COM2)
step 6 - настройка порта RS_485_2(COM2)
step 7 - запись в порт RS_485_1(COM2)
Знающие люди, пожалуйста, подскажите как использовать второй порт?

melky
06.08.2014, 15:18
а по характеристикам на сайте указан только один RS-485

monteg
06.08.2014, 16:03
Сори, это я загнался, ПЛК110-30(http://www.owen.ru/catalog/74250271)
У меня уже пятая неделя пошла без выходных...

melky
06.08.2014, 16:49
Не смог найти инфу по данному ПЛК. Причем данной инфы нет в руководстве.
Например в примерах на ПЛК100 указано, что 0-485, 1-232, 4-Дебуг 232
А вот как для ПЛК110-30 ?, может 1 это второй 485, а не 2
Где это указано ?

lara197a
06.08.2014, 17:01
ПЛК100,150,154
COM0 – RS485, COM1 – RS232, COM2 – Не исп., COM3 - Не исп., COM4 – RS232-Debug

ПЛК110
COM0 – RS485-1, COM1 – RS232, COM2 – RS485-2, COM3 - Не исп.,COM4 – RS232-Debug

ПЛК63
COM0 – RS485, COM1 – RS232, COM2 – Не исп., COM3 - Не исп., COM4 – RS232-Debug

monteg
06.08.2014, 18:56
Ну так, что я делаю не так. Вы мой пример не смотрели?...

monteg
06.08.2014, 19:00
Знающие люди, пожалуйста, ответьте что-нибудь. Я сейчас на объекте. Если второй порт завтра не запустится, то проброшу еще один кабель, и все будет на одном порту висеть. Я ентот ПЛК первый раз использую, и разбираться времени не было.

lara197a
06.08.2014, 19:59
Вот думаешь охота сидеть в чужом коде без пояснений копаться,
сидеть бибки вспоминать...
А чем конфигуратор не устроил.
Я не вижу в программе не стандартного протокола.
У меня работает стабильно, много лет, круглые сутки.
И десятках объектов.

monteg
06.08.2014, 20:10
1) Все пояснения в первом посте
2) я никого не заставляю копаться в моем коде, все на основе энтузиазма (это же форум)
3) мне нужен syslibcom
4) я просил откликнуться "знающих" людей, тех кто использовал порты RS-485 через syslibcom.
Енто не претензии, просто я не понимаю, когда человек заходит на ветку форума, что-бы оставить камент, что ему эта тема не интересна...
С наилучшими пожеланиями

lara197a
06.08.2014, 21:33
..................................

melky
06.08.2014, 21:46
monteg попробуйте поработать только с портом 2, какие результаты ?
а так же перед работой с портом 2 закрыть порт 0 и соответственно закрывать порт 2 перед работой с портом 0

monteg
06.08.2014, 21:46
Спасибо за участие. Завтра с утра попробую через COM_SERVICE.

melky
06.08.2014, 21:49
Имхо, забудьте про Овеновскую поделку ComService, она в некотором роде вредна.

monteg
06.08.2014, 21:55
Имхо, забудьте про Овеновскую поделку ComService, она в некотором роде вредна.
У меня выбора нет. Завтра с утра быстро попробую, если не пойдет, то брошу еще один кабель и буду использовать только первый порт.

monteg
06.08.2014, 21:56
monteg попробуйте поработать только с портом 2, какие результаты ?
а так же перед работой с портом 2 закрыть порт 0 и соответственно закрывать порт 2 перед работой с портом 0

Даже если первый порт не юзаю, второй не настраивается...

melky
06.08.2014, 22:01
Тогда имхо плк в сервис. Comservice вам не поможет, это всего лишь надстройка и не более того. своеобразный улучшайзер от Овен, после того как они просрали правильность работы порта. Можете сравнить с документацией на SisLibCom и удивиться.

Не настраивается, даже если вы голую прошивку сделаете только с портом 2 ?

monteg
06.08.2014, 22:07
Про COM_SERVICE я в курсе. Но вдруг поможет...
Что вы имеете ввиду под голой прошивкой?
Если в моем примере переменной step присвоить начальное значение 4, то первый порт не будет использоваться воще.
А нафига ПЛК в сервис? Может енто косяк не конкретного изделия, а всего семейства.
Вернее не изделия, а документации.
И на одном порту все будет работать.

melky
06.08.2014, 22:12
monteg, присвоить мало, проблемы на ПЛК Овен (возможно проблема даже глубже, в самом CodeSys) еще заключаются в том, что требуется иногда перезагрузка плк, особенно когда порт был некорректно закрыт например и завис.
Поэтому требуется чистый эксперимент. Загрузка ПЛК и работа только с одним портом 2

monteg
06.08.2014, 22:18
monteg, присвоить мало, проблемы на ПЛК Овен (возможно проблема даже глубже, в самом CodeSys) еще заключаются в том, что требуется иногда перезагрузка плк, особенно когда порт был некорректно закрыт например и завис.
Поэтому требуется чистый эксперимент. Загрузка ПЛК и работа только с одним портом 2

Попробую.
Спасибо за участие.

capzap
07.08.2014, 05:33
Сидят два чела на букву м и обсуждают какой овен нехороший бренд, сомсервис написан не овеном, никаких внутренних ошибок он не устраняет,а просто облегчает жизнь новичкам по настройке порта, то что там используется цикл так это как раз от новичков, которые могут не закрыв порт долбиться с его открытием постоянно
Включайте логику, Вы не первый кто приобрел 110 и следовательно раз не возникало вопросов на форуме раньше,значит несите его в сервис

melky
07.08.2014, 09:52
capzap Вопрос, почему сделав 63/73 ПЛК неправильно (не по документации библиотеки SysLibCom), ОВЕН проложил данные грабли на все свои ПЛК, вместо того, чтобы только 63/73 вывести в исключение, а остальные сделать как положено ?
Вопрос, почему открытый порт зависает на втором цикле опроса прибора (переделывал библиотеки Меркурий 230 на работу через SysLibCom), хотя должен был опрашивать прибор в цикле без закрытия порта.
То, что порт виснет, определил опытным путем.
И интересно, кем же написан ComService, если по документации работы SysLibCom после корректного открытия порта мы должны получить TRUE а при ошибке False и только в ПЛК от ОВЕН мы получаем 0, а при ошибке -1 ????
Кто же тогда его написал для новичков ? :)

capzap
07.08.2014, 11:18
Может не стоит складывать в одну кучи и 6-ую линейку и 110-ую, там так скажем разные операционки и проблемы 63/73, стодесятого не волнуют
Кстати элементарная проверка работы обеих портов через конфигуратор тоже не проходит?

melky
07.08.2014, 11:28
capzap ну у меня дома 100-ка, а видя код автора по открытию порта, 110-ка ушла недалеко и по работе с SysLibCom ОДИНАКОВО не соответствует документации на работу с бибкой SysLibCom.
Вроде кто-то из представителей ОВЕН тут на форуме признали, что однажды косякнув, переделывать не стали.
А это не есть хорошо.
+ сколько жалоб на отваливание портов при подключении CodeSys. Неужели за столько лет нельзя было модернизировать порты, чтобы они работали без запинки ?

capzap
07.08.2014, 11:41
Такое признание было про работу сокетов, а ни как не про работу портов, бибка по работе с смсками есть и под unm и под syslibcom, там же и примеры и вот однозначно кто то должен был по одному порту модули опрашивать,а по другому сообщения слать


Зы если у Вас на руках только сотка, че Вы вообще пытаетесь советы давать,если из опыта у Вас только впечатления с форума

lara197a
07.08.2014, 11:43
485 работают полностью стабильно.

melky
07.08.2014, 11:46
capzap и в чем разница в данном случае между соткой и стодесяткой если обе не соответствуют документации по SysLibCom ? я не вижу разницы.
имхо, если учесть что порты независимы, как утверждают производители (где-то тут мелькало), то выше написал, нести в сервис, предварительно проверив через конфигуратор и работу через бибку только одного порта.
Возможно на 110 нет таких зависонов порта, как на 100. Вот только проверить особо не на чем. Покупать себе еще и 110-ку точно не буду.

lara197a
07.08.2014, 11:52
У ПЛК 110 совсем др. железо.
Порты 110 точно независимые.
Точно работают более 3-х лет без сбоев, выключения и перезагрузки круглые сутки.
Кстати на ПЛК 100 по 485 и 232 модем на GSD и второй модем на СМС работают уже лет 6.
Но правда проект делал только 1 раз.

capzap
07.08.2014, 14:17
[B]И интересно, кем же написан ComService, если по документации работы SysLibCom после корректного открытия порта мы должны получить TRUE а при ошибке False и только в ПЛК от ОВЕН мы получаем 0, а при ошибке -1 ????
Кто же тогда его написал для новичков ? :)

Предъявите, на какую документацию Вы ссылаетесь или опять перепутали с сокетами из syslibsocket
неплохо бы перед тем как утверждать что Вам не нравится, перепроверить еще раз на практике, причем не свои разработки, а проекты которые выложили реальные спецы в КДС

melky
07.08.2014, 14:36
capzap да, на эту документацию, только попутал (каюсь) со следующим параметром SysComSetSettings, он мне true никогда не присылал.
А в ComService стоит это "Ready := NOT SysComSetSettings(Settings.Port, ADR(Settings));"
Да и в остальных примерах ОВЕНа.

А по документации ? "Возвращает TRUE при успешной установке параметров, иначе FALSE"

capzap
07.08.2014, 14:45
Ready := NOT SysComSetSettings(Settings.Port, ADR(Settings));
используется в перегрузке порта с новыми настройками и опять же ни коим образом не относится к открытию порта

melky
07.08.2014, 14:49
После открытия порта требуется установить параметры порта, а не только перегрузить с новыми настройками, я не прав ? резонный вопрос - где TRUE ?
Вроде как сперва даем команду SysComOpen, получаем дискриптор порта, потом даем команду SysComSetSettings(Ex) и должны получить по документации TRUE.
Если бы не форум с примерами, куча бы народа выбраковывала ОВЕН, ну или плакалась бы и кололась.

И что вы молчите, что такой случай уже был, и именно на 110-30 ? http://www.owen.ru/forum/showthread.php?t=12202

capzap
07.08.2014, 15:06
И что вы молчите, что такой случай уже был, и именно на 110-30 а что у Вас есть сведения чем закончилось, может человек пошел и отдал в сервис, я ведь не возражаю против помощи специалистов

А по поводу первой части поста, Вы бы определились вы работаете напрямую с бибкой или через Comservice, в прокладке переменной Ready при успешном изменении параметров присваивается FALSE для того чтоб, как в приведенном Вами посте выполнить открытие порта

melky
07.08.2014, 15:41
Без ComService. Однако это не меняет разность у овен и у документации. Другие примеры овен тоже содержат комбинацию именно NOT для определения правильности установки параметров порта.

capzap
07.08.2014, 15:50
Так а чего на Comservice тогда гнать
IF CS.ready=FALSE THEN
params.Port:=port;
params.dwBaudRate:=38400;
params.byParity:=0;
params.dwTimeout:=0;
params.byStopBits:=0;
params.dwBufferSize:=0;
params.dwScan:=0;
CS(Enable:=TRUE,Settings:=params,Task:=OPEN_TSK);
ELSE
CS.Enable:=FALSE;
handler:=params.Port;
SM1.RELEASE:=TRUE;
END_IF
вот комбинация, которую я использую,ни какие после SysComSetSettings я не запускаю, поэтому у меня не получалось обнаружить нестыковки, так что не стоит говорить что бибка вредна

melky
07.08.2014, 16:02
Она вредна из-за ошибки овена, не дает понимания, что то, что она делает, не стыкуется с документацией.
Ясно дело, что вы не выполняете SysComSetSettings, потому что эту процедуру выполняет эта бибка, обходя ошибку...

Правда у меня еще не получилось при помощи ComService закрыть порт почему-то.

capzap
07.08.2014, 16:12
Не думаю, что новичек заглянет в нутро библиотеки, а не новичек не будет из-за этого проблему делать, добился работы и ладно, получил удовольствие от решения проблемы

а зачемп ускать ФБ из-за одной строчки SysComClose(Settings.Port); ?



Виноват, не правильно рассуждаю
Тестирование — неотъемлемая часть цикла разработки программного обеспечения. Начинающие команды девелоперов зачастую недооценивают его роль и проверяют работоспособность приложения по старинке — «работает, да и ладно». Рано или поздно эта стратегия дает сбой и баг-трекер начинает захлестывать бесчисленная армия тасков.

melky
07.08.2014, 16:21
capzap я может быть не обратил бы внимания на это, если бы не необходимость написать так, чтобы опрос счетчика мог крутиться не только на ОВЕН, но и на ABB контроллерах.
Просто не знаю, что будет в конечном итоге. По проекту АВВ, а по факту решения так еще и не приняли. Может вообще будет сименс. Ну и для того, чтобы не изобретать велосипед, взял библиотеку Меркурий 230, написанную Овеновцами для UNM и стал переписывать под SysLibCom
Сейчас есть возможность погонять пару месяцев АВВ, дождусь только возвращения счетчика из путешествия...

capzap
07.08.2014, 16:30
ну напишите ComService for ABB только без NOT и будете знать что использовать в каком проекте, дескриптор то порта от этого не изменится, а бибки удаляются/добавляются кликом мышки

Кстати я сейчас сижу с "хваленым" сименсом по проблеме отсутствия связи по профибас, вот вроде дорого, настроики простые я связи с пневмоостровом как небыло так и нет. Так что не у одного овена проблемы

melky
07.08.2014, 16:37
Ну, я просто разбирался как и что работает из-за того, что порт зависал. Может потом так и сделаю ComService для АВВ.
Проблемы есть у всех конечно, просто обидно когда они на ровном месте. Вот как у автора, или в той теме, вроде и есть 2-ой порт, а или не работает вовсе, или работает только через конфигуратор.

capzap
07.08.2014, 16:43
если предположить что выход функции SysComSetSettings часть результата преобразования INT_TO_BOOL(Settings.Port) и в конфигураторе порт работает, то логичен еще один вариант как оживить второй порт

monteg
07.08.2014, 20:52
Здравствуйте, уважаемый. Не важно на какую букву.
1) никто про фекалии здесь не писал
2) у овена, реально были косяки. Например, на офсайте писали,что к ПЛК100 можно подключать флэшку, для хранения архивов, описание работы функций syslibcom не совпадало с действительностью ( потом на форуме писали, что это из-за неправильного перевода, а потом им было влом переделывать документацию), один аккумулятор чего стоит...
Косяки есть, но они заложены в цене. Так же как отсутствие косяков заложено в цене у сименса, шнайдера, ЖЕ, якогава. Это нормально. Овен дюже подходит для очень бюджетных проектов.
Я сейчас на объекте, у меня запасного ПЛК нет. Мне проще обмен данными на один порт завести, чем отправлять в сервис... Завтра будут ТЭЦ запускать...

monteg
07.08.2014, 21:04
1)Второй порт через syslibcom я так и не смог настроить. Все сделал через первый, и все хорошо работает. Но если найдутся люди,у которых есть опыт работы c ПЛК110-30 через syslibcom со вторым портом RS485, то было здорово, если они поделятся опытом, ну или официальная тех. поддержка отзовется.
2) Хорош сраться, вопрос кто виноват не ставится, а интересует ответ на вопрос, что делать.

capzap
07.08.2014, 21:07
Через коныигуратор работает, через unm открывается, без not в comservice не открывается

monteg
07.08.2014, 21:21
Если через "чистый" syslibcom, то у меня порт открывается, но не настраивается. Если через COM_SERVICE, то Ready не получаю... Я не утверждаю, что у данного ПЛК второй порт 485 не работает. Я говорю, что у меня не получилось и просил помощи...

capzap
07.08.2014, 21:26
Ну так попробуйте эту функцию настройки с not и без неё, может там насамом деле фальш выдается только на нулевом порту. Вобще можно испольщуя unm и бибку по работе с смсками приспособить под модбас аскии

monteg
07.08.2014, 21:59
Хорошо, немного личной истории.
В годах 2010-2011 нашим проектантам очень понравилось в бюджетные проекты ставить "Овен" - ПЛК100 + МВА8 + МВ110... Все под modbus. Сделали порядка 15 проектов. Связь по modbus делал через конфигуратор. Через пол года, прмерно, на 30% установок появилась проблема - отваливается обмен данными(например с МВА8 или с амперметрами Sfere). Причем восстановление происходит, только при ПОЛНОМ выключении ПЛК, т.е. надо ждать пока разрядится аккумулятор. В результате чего у меня было несколько "дальних" командировок. После чего был найден выход - использовать modbus.lib. Проблема отпала полностью. Причем еще появилась возможность вести статистику обмена даными. И все стало хорошо.
Почему ПЛК110-30.
В мае этого года у ПЛК100-Р обнаружился следующий косяк - при включении при разряженном аккумуляторе была следующая картина - ПЛК вкючается и тут же выключается, и так продолжается в течении пары минут, после чего ПЛК встает и не запускает пользовательскую программу ( индикатор "Работа" не горит ). У меня на стенде стоит ПЛК100 2010 года выпуска, на нем этой проблемы нет.Начал изобретать. В результате получается, что происходит задержка при старте на разряженном аккумуляторе порядка 30 сек. Данная ситуация была признана неприемлемой и взяли ПЛК, у которого можно выставить в конфигураторе время работы от аккумулятора.
Я ентот ПЛК первый раз использую. Причем сложилась такая ситуация, что изучать данное изделие пришлось уже на объекте. А у меня все предыдущие проекты заточены на modbus.lib, а следовательно syslibcom. Изобретать что-то новое в условиях дефицита времени( нужно все "слабать" за пару дней ) было крайне не целесообразно.
Да я понимаю, что здесь МНОГО личного, но вопроса - почему второй RS485 не настраивается через syslibcom енто не снимает

Вольд
08.08.2014, 10:35
Не понятно чем занимаются специалисты фирмы "Овен".

melky
08.08.2014, 10:43
monteg кстати да, попробуйте сделать второй ComService для второго 485-ого порта без NOT, очень интересен результат.

monteg
08.08.2014, 11:24
отвечу, когда будет под рукой ПЛК110-30.
Я с объекта свалил.

melky
08.08.2014, 11:26
monteg я так понимаю. можно проверить ничего не подключая, просто открыть порт и дать ему настройки ?
Если так, то попробую попросить в одной фирме на прокат, елси есть по наличию и попробовать.
(Выяснил, по наличию нет, специально заказывать не будут)

monteg
09.08.2014, 15:17
Попробовать можно. Интересен Ваш результат.
У нашей конторе сейчас данного плк в наличии нет.

fun_cr
02.08.2017, 14:18
Значение переменной не мог перепутать( Byte с DWORD) в переменной SERIAL_PORT2_ID?

monteg
07.08.2017, 23:02
Вы имеете ввиду тип переменной или значение или что?
А вообще было несколько ( 3 или 4 ) таких ПЛК. Ни на одном второй RS-485 из SysComLib не заработал.

lazy
08.08.2017, 11:09
Не знаю почему ОВЕН молчит. есть прошивка для старого 110-30 которая решает проблему работы второго 485го на syslibcom.