PDA

Просмотр полной версии : неустойчивая работа пм-01 на Rs-485



Elka
25.05.2010, 09:18
а не сталкивался ли кто с потерей байтов при подключении модема к плк-63 по 485 интерфейсу?

в среднем на 10 ответов на различные команды теряется пара байт. но не всегда. иногда приходит заведомо не отправлявшийся символ (255). эхо выключено. скорость - 9600. длина Rs-485 - ~10см. в сети два устройства - плк-63 и пм-01. согласование линии на пм отключено.

собственно очень напоминает проблему, которая бывала на заре появления скоростных модемов, до тех пор, пока порты не стали оборудовать чипами 16550 с 16-ти байтным буфером.

собственно вопрос, а что делать? переходить на Rs-232 или снижать скорость? пытался снижать: тупо задаю 1200, посылаю Atz и не получаю никаких ответов от модема. (может надо ему как-то вручную сказать, чтобы отвечал на иной скорости? At/at&w ?).
поддерживают ли библиотеки скорости работы, отличные от 9600? если бы я передавал данные - можно было бы посчитать некое подобие Crc и убедиться, что получил то, что нужно. я же читаю **** иногда - текстовые. читать N раз до тех пор, пока не совпадёт формат, либо считать смс неправильной - как-то это не гарантирует правильное чтение...

может я что-то делаю не так, ведь, насколько я понимаю, больших жалоб на оборудование нет, во всяком случае на форуме...

кстати, не планируется ли в перспективе на плк распаять Cts/rts, Dtr/dsr?

Elka
26.05.2010, 11:04
собственно снижение скорости к иному результату не приводит. вообще, по ощущениям, на 1200 байты теряются даже чаще...

Ельцов Андрей
26.05.2010, 14:54
Здравствуйте, Elka.

Пока у нас действительно не было подобных нареканий, поэтому никаких инструкций и рекомендаций у нас нет.
Возможно это брак gsm модуля, но это, в любом случае, нужно проверить.

Если есть возможность выложите Лог.

Что касается дополнительных линий связи, то они будут поддержаны в ПЛК30х. Не на всех портах и не везде, но будут (смотрите, РЭ).

Elka
26.05.2010, 23:03
вечер добрый, андрей!

а не просветите, как правильно этот самый лог сделать? могу прислать проект, копии экранов в режиме отладки, где собственно видно содержимое буфера чтения. а можно общение по Rs-485 как-то сразу в лог записать? или имелось ввиду переключение на Rs-232, подключение к компу и чтение терминалом? но это не одно и тоже. впрочем тоже проверю - если там потери аналогичны, то это, действительно может быть брак модуля.

кстати, во-первых, включение сопротивления согласования на потерю байт не влияет, во-вторых, при блоковом чтении (когда читаем не побайтно, а скажем байт по 10) потери чуть меньше. но сохраняются, как и искажения. завтра вечером постараюсь всё зафиксировать.

с уважением,
кирилл лебедев

lara197a
27.05.2010, 07:43
для записи лога паралельно к Rs485 подключите ас3 или ас4. на компе откройте гипертерминал и задайте параметры: порт - к которому подключен ас, и остальные параметры как на контроллере и модеме. снимите трубку. все.

Ельцов Андрей
27.05.2010, 11:15
К сообщению от Лара я бы добавил еще включение portmonitor или подобной программы. Она имеет возможность просматривать все данные появляющиеся в порту. А гипер терминал может показать только пробел или точку, что не корректно для анализа.
Вот:-)

Elka
27.05.2010, 20:18
Ac4 выкуплю завтра и вечером попробую. стал ещё раз штудировать документацию на модем и обратил внимание, что модем подключён только двумя проводами A и B, в то же время, разводка на модеме подразумевает ещё использование Gnd. может его не хватает? а куда его зацепить на плк63?

и ещё, нужно ли программно выдерживать паузу между получением ответа от модема и отправкой новой команды?

lara197a
27.05.2010, 20:42
к Gnd можно подключать экран кабеля Rs485. Cигналы на проводах а и в имеют противофазное значение и не нуждаются в использовании дополнительного соединения с землей.

желательно и еще хорошо отключить эхо.

Elka
01.06.2010, 11:16
Проблема более-менее локализована, но не устранена. Сначала общее описание:
1. Всё подключил экранированным кабелем. Схема: PC-usb-AC4(R-вкл,120ом)-rs485-ПЛК63-rs485-ПМ01(R-вкл).
2. Даю одну и ту же команду, жду ответ <13><10>OK<13><10>.
3. В логе терминала - всё ОК (serial_com2.log). Буфер, в который осуществляется приём от модема можно увидеть во вложении (CodeSys.jpg), где видна потеря байт. Наиболее хорошо это видно, если SysComRead читает порт побайтно (если читать блоками, то для того, чтобы увидить потерю байт, обмен должен быть более интенсивный (типа чтения СМС с SIM)).
4. Провёл два эксперимента: первый - в той же схеме при выключеном модеме вместе него давал ответ с терминала - всё ОК, все байты приходят, второй - при выключенном ПЛК давал команды модему с терминала, тоже всё ОК...

Наверное, я где-то напортачил в проекте (собственно тоже во вложении), но никак не могу понять где. Собственно, у кого есть возможность - проверьте...

С уважением,
Кирилл Лебедев

Филоненко Владислав
01.06.2010, 13:33
1. Ответ никогда не приходит сразу за запросом.
2. Читать лучше всего по 1 байту.
3. Нельзя ожидать что придет вся пачка и в пачке в начале/конце не будет мусора. соответственно надо модифицировать разборщик.
4. Важно! Перед следующей транзакцией следует очищать приёмный буфер.
4. Вроде резистор надо ставить только на 1 конце 485.
5. Что за библиотека ComLibService.lib?

Elka
01.06.2010, 17:40
1. Если я всё правильно понимаю в том, что написал - то я жду собственно хоть какого ответа в течение 6 секунд. Потом перепосылаю команду.
2. Так и пытаюсь...
3. Вполне верю. Могут прийти нечто типа Call ready, ответ на предыдущую команду, сообщение о приёме СМС и ещё что угодно...
4-1.Очистка приёмного буфера - это чтение из буфера до тех пор, пока из него ничего не прочтётся. Так?
4-2.Попробовал, без изменений.
5.ComService.Lib - это OWEN'вская библиотека, насколько я понимаю, что косвенно подтверждается тем, что её использует Owen в своих примерах. http://www.owen.ru/forum/showpost.php?p=41631&postcount=58. Говорят, что без её использования невозможно работать с модемом через порт ПЛК 0 (RS-485). Собственно она и занимается исключительно открытием порта.

Проблема в том, что в вышеприведённом примере у меня теряется почти (не всегда!) каждый второй байт. Что странно.

Александр Приходько
01.06.2010, 19:29
Здравствуйте, проблем с потерей байт нет. Скорее всего Ваша проблема в неправильности реализации программы. С нечто похожим я сталкивался, когда начинал осваивать работу с портами.
Очень Вам рекомендую посмотреть мой пример. И написать Вашу программу на базе моего примера.
С ПМ01 я сталкиваюсь не в первой, работал и через прошивку плк (дозвоны) и на прямую через порт(для отправки сообщений) и ни на одном модеме данных проблем не было.

Пример программы смотрите тут:
Нестандартные протоколы обмена (http://www.owen.ru/forum/showpost.php?p=41631&postcount=58)

Elka
17.06.2010, 21:51
Прошу прощения за долгую задержку (отпуск+активная работа до и после), но при детальном исследовании примера PR2, замены команды и небольшом увеличении таймаутов (100->300ms, 50->150ms) даже визуально можно пронаблюдать потерю байт в ПЛК. (Прилагаю копии экранов). В то же время логи, снятые через AC4, показывают, что модем отвечает замечательно.

Непотеря байтов достаточно важна, т.к. в перспективе планируется читать СМС и нужно иметь гарантию, что она прочитана полностью и правильно - т.к. это один из каналов управления устройством.

Вообще у кого есть связка ПЛК63-<RS485>-ПМ01, гляньте пожалуйста на данный пример, проявляется ли у вас иногда ошибка 81, мусор в ответе или ответы отличные от $R$NOK$R$N - например с пропущенной О или К или каким-либо другим символом.

С ув.,КЛ

Elka
22.06.2010, 09:54
мой результат на других приборах не подтвердился? а если подтверждается, то нет ли каких идей, как всё это побороть? и (не дошли пока руки) насколько схожая ситуация с использованием связки через Rs-232. не хотелось бы (не удобно писать прошивку), но в принципе можно и через него поработать...

с ув.,кл

Ps. есть ли принципиальные отличия по работе с Rs-485 между плк63 и плк100/150 ?

Илья Кареткин
22.06.2010, 14:42
есть ли принципиальные отличия по работе с Rs-485 между плк63 и плк100/150 ?

Через библиотеку SysLibCom? Если только Номер порта.

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

Elka
24.06.2010, 00:05
попробовал и через Rs-485 и через Rs-232 и через Rs-232 Debug, ситуация абсолютна аналогична. что моя програмка, что тестовый пример байты теряют. плк63 или всё-таки мои руки?

с ув.,кл

Elka
25.06.2010, 00:29
обновление прошивки плк63 до версии 2.03 счастья не принесло. всё также. что делать? сроки начинают поджимать, с модемом никак совладать не могу.

Elka
29.06.2010, 11:40
А кто-нибудь вообще ПЛК63 с модемом дружил? Попробовал сделать программку, принимающаю байты из RS232 и отправляющую байты обратно. Подключил его к PC через COM4(DBGU) и опять картина похожая. Символы теряются. Не может быть проблема в микросхеме, отвечающей за порт в ПЛК? За RS-232, RS-232 DBGU и RS-485 отвечает один чип? Уж не знаю, что и думать. Может есть у кого возможность тестирнуть на ПЛК63-ПМ01 ранее приведённые примерчики... В общем и целом по остальному функционалу ПЛК63 очень подходит для задачи. А с градусом (http://www.owen.ru/forum/showthread.php?p=42845) - так тем более... Правда, прошивку 2.11 пока не успел опробовать...

martial1
15.07.2010, 12:00
та же проблема в связке 110-60 с ПМ 01, перепробовал все примеры по отправке СМС. Короткие команды доходят более менее коректно, с увеличением длины начинается генератор случайных чисел. Где грабли? К сож. не могу поюзать другой контроллер. Имею конфигурацию:

PLC model MODEL PLC 110-60
Binary VERSION 2.10.7
Need Target version 2.10
Compiled: 12:24:25 Jul 23 2009
MAC 6A:77:00:21:02:05
IP 10.0.6.10
GATE 10.0.6.1
MASK 255.255.255.0
PIC upper version is 14
Licence unlimited

aserr
29.11.2011, 11:15
Скажите - удалось ли решить проблему искажения данных на ПЛК63? Ситуация очень похожа на вашу :(

Elka
29.11.2011, 13:04
Окончательно побороть не смог. Там, где было критично, я сделал просто: читаю СМС несколько раз подряд и сравниваю. Трижды прочёл с одинаковым результатом - считаем чтение успешным. В принципе, после этого больше проблем не встречал.
То же и с командами: шлю команду до получения требуемого ответа.
По итогам разработки работа через RS-485 проходит чуть лучше, чем через RS-232.

Хотя, в целом, ситуация очень напоминает 90-е годы, когда модемы со скоростью >2400 цепляли к портам, сделанным на 8250 или 16450. Кстати, тогда такие проблемы решались зажиманием скорости порта на 2400 (на 4800 потеря байт уже проскакивала). Здесь я уже не помню, пробовал ли это делать, или нет.

Кстати, модемы в этом случае делились на две категории, кто такое издевательство выносил, и кто просто вис при появлении большого потока данных.

loseva1958
29.11.2011, 15:41
Те же проблемы с ПЛК-110-32.Ни через порт RS-232 Debug ни через RS-232 в режиме CSD не работают,хотя порты исправны (проверка портов через гипертерминал и спомощью панели оператора ИП320).Проверка связи производилась через модем Siemens.
Вторая проблема с этими ПЛК -постоянно горит индикатор "Связь" независимо от того есть ли связь или нету.

monteg
15.03.2012, 13:43
Та же проблема ( ПЛК63 + syslib.com ), теряются байты.
Симптомы - при чтении из "порта" кол-ва байт меньше чем находится в буфере.
Например в буфере 10 байт,

SysComRead( port, ADR( dest ), 10, 0 ) -> 10

все хорошо, а

SysComRead( port, ADR( dest1 ), 5, 0 ) -> 5
SysComRead( port, ADR( dest2 ), 5, 0 ) -> 4

причем теряется 6 байт.
ПРИЧЕМ НА ПЛК100 ВСЕ РАБОТАЕТ !!! Следовательно проблема не в ПРОГРАММЕ

monteg
15.03.2012, 13:45
шестой байт

Elka
16.03.2012, 08:20
У меня тоже всегда проявлялся симптом, что при побайтном чтении потери чаще, чем при блоковом. А две команды чтения у вас в одном цикле ПЛК, или в разных?

Вот интересно, на ПЛК-73 никто с такими симптомами не встречался? Я до сих пор грешу на железо ПЛК-63, но после внедрения "тройного чтения" проблема для меня перестала быть актуальной. Но это, конечно, не правильно, т.к. могут возникать ситуации, когда таким образом можно и потерять входящее СМС - при удалении отработанных, когда ответ на команду удаления придёт "покоцаный". Опять же решается для критичных взаимодействий внедрением методов гарантированной доставки, т.к. СМС может и просто не дойти - встречалось при межоператорских СМС - с МТС(клиент) на БиЛайн (ПЛК). Всё зависит от проекта. в общем и целом мне 63ий нравится. Недорог и функционален. Да и работает без серьёзных нареканий.


Вот жду работающего модема линейки МОДУС - хочу посмотреть, как это будет работать там.

monteg
16.03.2012, 13:02
пробовал и так и так, результат одинаковый

monteg
16.03.2012, 13:24
Эту проблему можно обойти, если забыть про то, что при чтении ответа в буфере может появиться "мусор".
Просто раньше ПЛК100 + ИП320, а сейчас захотелось ПЛК63. Переделывать придется довольно много, а времени мало, да и не очень хочется.
Настройки порта пробовал разные ( baudrate, parity и тд ) эффект остается.

Может использование для настройки порта SysComSetSettingsEx() поможет решить проблему. Но как "правильно" заполнять COMSETTINGSEX я описания не нашел.

БЫЛО БЫ ОЧЕНЬ ЗДОРОВО, ЕСЛИ ПРЕДСТАВИТЕЛИ "ОВЕН" ОТПИСАЛИСЬ БЫ ПО ДАННОЙ ПРОБЛЕМЕ.

Kostic77
27.03.2012, 11:47
Тоже столкнулся с проблемой потери данных... При чтении СМС при каждом запросе (at+cmgr) длина прочтенного СМС разная... Полностью получить текст СМС-ки удалось при снижении скорости до 2400...
Не помогли ни полный нуль-модемный кабель с аппаратным управлением потоком, ни вариации и настройками порта и модема.
MasterOPC в 50% запросов выдает неверную контрольную сумму. Проблему решил отказавшись от ноутбука с аппаратным COM портом и перейдя на стационарный компьютер с PCI карточкой портов.