PDA

Просмотр полной версии : про Dcon



Сергей71
30.07.2007, 10:56
:confused:
Скажите, кто нибудь серьезно тестил протокол DCON.

У меня прошивка 2.01.5. таргет 2.0-2. проблемы.
1. подключил 3 устройства с опросом 500мс и таймаутом 100мс.
положительный ответ при [5d] не работает при [5s] строка получается больше 5 символов. при [4h] нормально.

2. при опросе нескольких устройств у всех ровно через 65,5 секунд происходят ошибки на положительный ответ (Ошибок по линии нет, сборка на столе смотрю линию терминалом).

Филоненко Владислав
30.07.2007, 11:40
Проект и марки приборов в студию.
65,535 секунды - очень странно, short-ов в мастере DCON нету.

Сергей71
30.07.2007, 13:23
65,535 - это похоже WORD!
Приборы I-7016(ICP CON).
Чтение АЦП(#AA), Чтение CounterEvent(@AARE).
Прилагаю проект и файл для Sampling Trace.
Пробовал без [+], разные скорости, разные данные, разные контроллеры(ПЛК100-24PL и KM). Связь восстанавливается через несколько сек.
Счетчик можно считать !03[5f] или ![7s](но строка все равно больше - добавляется 2 символа или пишет **String overflow**, я ее обрезал функцией MID()).

Филоненко Владислав
30.07.2007, 15:17
65,535 - это похоже WORD!
Приборы I-7016(ICP CON).
Чтение АЦП(#AA), Чтение CounterEvent(@AARE).
Прилагаю проект и файл для Sampling Trace.
Пробовал без [+], разные скорости, разные данные, разные контроллеры(ПЛК100-24PL и KM). Связь восстанавливается через несколько сек.
Счетчик можно считать !03[5f] или ![7s](но строка все равно больше - добавляется 2 символа или пишет **String overflow**, я ее обрезал функцией MID()).

1. Для #AA формат [7f] или [4h] зависит от настроек самого прибора. Он может выдавать либо 16-ный код, либо в десятич. со знаком и точкой.

2. для команды RE воспользуйтесь [5d] и типом канала output - 16 bit

3. WORD===unsigned short

4. По поводу пропадания - потестим. Вопрос, 65,5 сек с момента загрузки нового проекта или просто период? Повторяемость?

Сергей71
30.07.2007, 15:35
1 - Все это я понял давно. И приборы настраивал по разному. [7f] можно читать без знака и точки.

2 - [5d] не работает см. проект.

3 - согласен.

4 - повторяемость см. Trace.


[7s] строка работает не корректно приходится ее обрезать (:confused: не портит ли она следующие ячейки памяти).

Филоненко Владислав
30.07.2007, 16:10
[7s] строка работает не корректно приходится ее обрезать (:confused: не портит ли она следующие ячейки памяти).

Нет, размер строки знач. больше 7 символов

Сергей71
31.07.2007, 13:43
Скажите, после кто нибудь тестил протокол DCON.

Ато......

Один проект сдал заменив модуль DCON своим блоком (написал за один день думаю коряво). Через несколько дней поеду делать апгрейд.

Сижу пишу следующий проект. Вставлять свой блок или исправлять старый не хочу (хочу готовое).

:cool: А в модбас-мастер такие же косяки или нет? (просто нет блоков потестить).

Дайте какой нибудь ответ. Может я чего то не понимаю?

Сергей71
03.08.2007, 11:14
:confused: Протокол DCON проверяли?

Филоненко Владислав
03.08.2007, 15:06
Тестировал DCON с 9 устройствами. Изредка были ошибки связи, но периодичности не уловил.

По поводу [5d] - надо установить канал 32 бит, т.к. 5 десятичных знаков - до 100000 значения, а это влазит только в DWORD

Сергей71
06.08.2007, 15:03
Периодичность заметил через Sampling Trace (файлы прилагал).
Только в нем заметил периодичность.

Сейчас приехал с командировки, поставлю CodeSys 2.38 прошивку 2.01.6, таргет 2.0-3, и еще раз потестирую.

Вопрос про Sampling Trace. Смотрел в нем работу таймера(TON время опроса 5 мс время цикла ПЛК 5мс) - время росло с 0мс до 500мс, а по его визирам разные показания до 300 - 500 мс.

Филоненко Владислав
06.08.2007, 15:16
Если визирами Вы называете то, что видно в экране отладки - то ничего странно, Sample Trace раб. внутри ПЛК в реальном времени, а среда разработки - не в реальном.

Сергей71
06.08.2007, 17:53
:confused: Я не понимаю.
Протестировал.
Все осталось по прежнему.
Кол-во устройств не имеет значения ошибки идут и с одним.
Если визирам не доверять то тогда я не знаю какая периодичность (посмотрите txt или trc файл).
Подключил еще один блок 7043. У него периодичности никакой нет. Но ошибки сыпяться чаще.

Восстановление нормальной информации (согласно визирам) занимает большой промежуток времени. Если это так то плохо.

Написал свой FB(примитивный через UNM). Опрашиваю ВСЁ - ошибок совсем нет (если не считать одну на каком нибудь устройстве в несколько минут а то реже). При ошибке восстановление происходит при следующем цикле опроса (согласно тем же визирам).

И еще в описании PLC Configuration "Значения выходных переменных (output variables) модуля будут кодироваться в определенный формат и вставляться в передаваемые строки протокола DCON. Данные из строк ответов устройства будут декодироваться и записываться во входные переменные модуля (input variables)", а в примерах наоборот. Может Это как то....

PS [5d] понял исправил. Если можно скиньте Ваш пример с 9 устройствами. Хочу сравнить где не так.

Филоненко Владислав
07.08.2007, 10:11
Ошибки могут быть вызваны неск. причинами.
1. Ошибка в формате посылки (практ. нереально)
2. Ошибка в CRC
3. Ошибка четности/к-ва stop битов. - Мастер эту ошибку отслеживает, а при использовании библ. UNM - надо доп. анализировать 2-й байт структуры RBDATA (там флаги). Если Вы этого не делаете то, вероятно, именно в этом дело.

Рекомендации:
1. Дифференцируйте времена опроса параметров, более важные опрашивайте чаще.
2. Выставите параметр "Max response time" как можно меньше (подберите под конкретный прибор, у разн. приборов можно выставить разн. значения), тогда, при ошибке мастер не будет долго ждать ответа. У быстрых приборов может быть 5-10 мс, у медленных доходить до 50-150.

В описании опечатка

Филоненко Владислав
07.08.2007, 10:14
:confused:
И еще в описании PLC Configuration "Значения выходных переменных (output variables) модуля будут кодироваться в определенный формат и вставляться в передаваемые строки протокола DCON. Данные из строк ответов устройства будут декодироваться и записываться во входные переменные модуля (input variables)", а в примерах наоборот. Может Это как то....

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

Пример:

Сергей71
07.08.2007, 13:36
Пример понятен разницы нет за исключением...
Установка maxtimeout больше чем pollingtime не приведет ли к повторному запросу не дождавшись ответа?

И что за ошибка 66(dec). У Вас в описании не полный список ошибок.

Я понял <Выставите параметр "Max response time" как можно меньше> - это "Max response timeout".
Попробовал по разному.

Тест насчет изредка:
Я при ошибке запускаю таймер TON и пока она есть таймер считает мс.
Далее в Trace я смотрю какое время длится ошибка. Т.е наблюдаю некую пилу. И получается что восстановление нормального обмена происходит от 10мс до 600мс с копейками. В принципе 0,5 сек перерыва -куда нешло, но нежелательно. (настройки 50мс опрос, 10мс таймаут, baudrate 38400).
Потом сделал наоборот таймер считает пока нет ошибок. Время получилось 1мин и 3-4 сек - это максимально сколько проработало устройство без ошибок. А так в среднем 20-40 сек и партия ошибок с небольшим интервалом.

Хотел потестить на других скоростях - но нет времени, надо работать.
Если повезет и буду в Москве заеду в гости (сообщите на мыло с кем связаться).

Всем спасибо.

Филоненко Владислав
07.08.2007, 14:47
Пример понятен разницы нет за исключением...
Установка maxtimeout больше чем pollingtime не приведет ли к повторному запросу не дождавшись ответа?

Нет, но это приведет к запаздыванию др. опросов и нарушению периодичности.


И что за ошибка 66(dec). У Вас в описании не полный список ошибок.

Когда она возникла? Эта ошибка не должна возникать.


Я понял <Выставите параметр "Max response time" как можно меньше> - это "Max response timeout".
Попробовал по разному.

Именно так.



Тест насчет изредка:
Я при ошибке запускаю таймер TON и пока она есть таймер считает мс.
Далее в Trace я смотрю какое время длится ошибка. Т.е наблюдаю некую пилу. И получается что восстановление нормального обмена происходит от 10мс до 600мс с копейками. В принципе 0,5 сек перерыва -куда нешло, но нежелательно. (настройки 50мс опрос, 10мс таймаут, baudrate 38400).
Потом сделал наоборот таймер считает пока нет ошибок. Время получилось 1мин и 3-4 сек - это максимально сколько проработало устройство без ошибок. А так в среднем 20-40 сек и партия ошибок с небольшим интервалом.

Весь опрос или опрос отдельного устройства?

Сергей71
07.08.2007, 15:50
Ошибка 66:
команда @04[4h][+]
полож. ответ >[+]
отр. ответ ?
регистр 16input
таймаут 20мс
период опроса 500мс.

<Весь опрос или опрос отдельного устройства?> не понял вопроса.
Поасняю:
У каждого устройства свой таймер.
Происходит так Timer1(IN:= (err>3), PT:= T#10s) и наоборот Timer2(IN:= (err<=3), PT:= T#10m), где err - Status одного устройства. Далее в Trace смотрю оба таймера Timer1.ET и Timer2.ET. Максимально делал с 3-мя устройствами (Все очень быстро движется на экране, а нужно вовремя остановить для просмотра показаний).

Повторил тест с 2.01.8 и таргет 2.0-4. Иногда стал появляться код ошибки 0х02 - модуль послал запрос и ждет ответа, на 2.01.6 ее небыло.

Филоненко Владислав
08.08.2007, 15:02
Коды меньше 4 - не ошибки, а лишь отображение происходящих внутри процессов (это может быть необходимо для очень медленных старых DCON-устройств).

Радик
09.08.2007, 11:17
Здравствуйте Уважаемые.
Конфигурация:
ПЛК-150УМ, прошивка 2.01.8, Target 2.0-4, 2 модуля М-7055, 1 – МВУ8, 1 пульт ДК-8070.
Протокол DCON и ОВЕН. Кодесис 2.3.8.1.

При обращении к пульту Request format - $$01T[1h][2h][9S][+], фактически же посылает $01T100. Т.е. без строки и контр. Суммы.
На прошивке 1.31.4 и таргет 2.0 работало нормально.
Прошивку обновил потому, что с ПЛК слетела программа,
Что может быть.
И где можно узнать какой таргет в данный момент установлен?.

Малышев Олег
09.08.2007, 11:39
А standart configuration Вы делали
Какой таргет сейчас стоит можно узнать из
C:\CoDeSys\Targets\НАЗВАНИЕ ВАШЕГО ПЛК\IOModules\hardware.cfg

Радик
09.08.2007, 14:27
А standart configuration Вы делали
Какой таргет сейчас стоит можно узнать из
C:\CoDeSys\Targets\НАЗВАНИЕ ВАШЕГО ПЛК\IOModules\hardware.cfg

Я делал через экспорт/редактор/импорт.
Сейчас попробую по вашему.
Спасибо.

Филоненко Владислав
09.08.2007, 16:05
Скорее всего строка не проинициализирована (имеет нулевой размер), пустое место - это не ноль, а код 0х20.

Радик
10.08.2007, 08:11
Изменил проект через "Standart configuration" - не помогло. Смотрю В PLC config. - строка не пустая. однако на выходе только $01T300 (24 30 31 54 33 30 30 0D в hex). Еще раз отмечу, что программу я не менял, только прошивку и таргет.

Радик
10.08.2007, 08:18
Извините. Еще кодесис обновил.

Радик
10.08.2007, 09:13
Упростил проект до одной команды.
Посмотрите пожалуйста что не так.
Кодесис 2.3.8.1, прошивка 2.01.8, таргет 2.0-4.

Филоненко Владислав
10.08.2007, 10:13
У вас все просто. Измените тип Input переменных с байта на 16 бит. Это закроет дырку в области Q, образовавшуюся между 2 первыми каналами, выравнеными по байтно и строкой, выровненной по 4 байта. Особенность ARM

Радик
10.08.2007, 10:18
Да. Работает.
Спасибо.