PDA

Просмотр полной версии : помогите разобратся с плк100,мдвв,мву8 - иногда задержка реакции



l33tit
25.03.2010, 23:34
Добрый день, есть 4 девайса,
ПЛК100 - мастер - версия 220В - P (Импульсная) - без ограничения памяти
МДВВ
МДВВ
МВУ8
суммарно получается 30 входов и 32 выхода
с помошью девайсов разведено осветление в квартире.


Подобным кодом реализованы все остальные подпрограммы, код ниже.
Подключено все через RS485, по протоколу ОВЕН, скорость 115200

Вопрос заключается в следующим, входов как вы поняли всего 30, задействовано 26, от физической кнопки включения (импульсная кнопка, фирмы Murlin, shneider) от 5 до 40 метров, кабель - витая пара.

Сегодня все это дело запустил в работу (залил программу в уже установленные и смонтированные девайсы) - и такой трабл, ПРОИЗВОЛЬНО нажимая разные кнопки, например на расстоянии 5 метров - сходу свет не включается, тоесть держать кнопку надо около секунды, что весьма не удобно, с другой стороны если тыкаю в кнопку на расстоянии 40 метров - все пучком, включается мгновенно, причем не важно на сколько кода эта кнопка , на 1 функцию (ВКЛ-ВЫКЛ) или на 4 (ВКЛ 1 группа света, добавить 2, добавить 3, выкл все 3 группы света)..

Прошу посоветовать как сделать все мгновенно.

У меня есть следующие соображения:
1. Кабель витая пара, он ОДНОЖИЛЬНЫЙ, тоесть внутри 8 изолированных проводков, в каждом по 1 жиле - где-то дребезжит контакт, где-то плотный, решить тем, чтобы перепроверить все выключатели и другие соединения. Если это может быть проблеммой - посоветуйте, может быть есть оборудование, с копомошью которого можно продиагностировать качество соединений. Монтировал ОПЫТНЫЙ электрик из частной фирмы, по совету знакомых, реально готов братся за работу и решить проблемму, но так как проблемма имеет массовых характер - хочу разобратся в чем проблемма а не поштучно все выключатели перекручивать. Так-же хочу обратить внимание что на 1 вход может быть подключено 3-4 выключателя из разных мест, тоесть подключены они паралельно в таком случае.
2. Когда начинал разбиратся читал про некий ШУМ или что-то такое, мол это чувстительность контроллера-модулей расширения к качеству соединений - подскажите может ли это влиять и какой параметр подкрутить.
3. Протокол обмена данными (как физический так и програмный), есть возможность быстро все переделать на МодБас или сменить скорость портов и так далее, в какую сторону есть смысл тестировать?
4. Количество девайсов в одной сети, наводки?
5. Стиль программирования?, я умею на php писать - поэтому самым близки оказался язык ST, все программы сделано обычными if-else-elseif триггером R_TRIG и таймером TP.
Может посоветуете по моему коду как его лучше оптимизировать если это поможет?

На данный момент программа почти готова, будут лишь дописаны некоторые таймеры по включению света и так далее, тоесть существенно менять код и функционал не планируется.



Показываю скриншот из codesys 2.3, копия в вложении
http://xmages.net/upload/63dfd030.png


код программы:

PROGRAM TWOFUNCKABINET
VAR
RTRIGInst : R_TRIG ; (*обьявляем работу с тригерами*)
(*in5 кабинет*)
count5:INT;
inpoint5: BOOL;
END_VAR


(*Кнопка на 2 функции света в кабинете(входя №5 выходы №26 и №27)*)
RTRIGInst(CLK:= in5);
inpoint5 := RTRIGInst.Q;
IF inpoint5 = TRUE AND count5=2 THEN
count5:=0; out27:=0; out26:=0;

ELSIF inpoint5 = TRUE AND count5=1 THEN
count5:=count5+1; out27:=1;

ELSIF inpoint5 = TRUE AND count5=0 THEN
count5:=count5+1; out26:=1;

END_IF



Спасибо.

Николаев Андрей
26.03.2010, 00:14
Очень много подпрограмм. Возможно стоит реализовать конфигуратор задач...
Что с циклом ПЛК - добавьте модуль статистика?
Задержка реакции на ответ в зависимости от расстояния - скорее всего совпадение...
Проверьте, что МДВВ в конфигурации добавляется как Universal ModBus Device, и опрос\управление осуществляется для каждого МДВВ по маске.

l33tit
26.03.2010, 00:31
Очень много подпрограмм. Возможно стоит реализовать конфигуратор задач...
Что означает конфигуратор задач?
Дело в том что я изучал этот вопрос и все программы являются INCLUDES к основной - тоесть как я понимаю мои 25 программ в РАБОТЕ являются ОДНИМ текстовым файлом с кодом. Нет?



Что с циклом ПЛК - добавьте модуль статистика?
Немогли-бы вы подробней написать, что это за модуль или как его реализовать?


Задержка реакции на ответ в зависимости от расстояния - скорее всего совпадение...
Сейчас еще раз проанализировал - оказывается задержка есть при включении с входов МДВВ, с входов ПЛК100 - все, похоже, нормально



Проверьте, что МДВВ в конфигурации добавляется как Universal ModBus Device, и опрос\управление осуществляется для каждого МДВВ по маске.

Нигде не нашел Universal ModBus Device,
опрос-управление по маске - как я понимаю ключ r.cn и номер 20 у первого и номер 40 у второго МДВВ, выходы начинаются с 40,41,42 и т.д.
добавляю 2 скриншота

l33tit
26.03.2010, 00:32
консультировался с товарищем - тот посоветовал подключить мдвв к компьютеру по Rs485 и запустить конфигуратор, там проверить ту чувствительность про которую я писал выше, тоесть может у меня задано слишком высокое значение.

lara197a
26.03.2010, 08:44
задержка будет появляться из-за изменения времени цикла.
прочтите рекомендации по менеджеру задач в теме "овен плк150ам , мдвв , мву пляски с бубном уже не помогают"
вам нужно сделать как писал а. николаев "по маске", читайте документацию на мдвв и по плк конфигуратор. вызывайте обработку мдвв в каждом цикле, а остальные задачи по событию или периодически(возможно реже)
вообще, чтобы не было таких проблем берите плк с необходимым количеством входов-выходов на борту.(110-32 или 110-60)

Николаев Андрей
26.03.2010, 09:27
DJ первых совершенно правильно про ПЛК110.
Во вторых - переключите все модули на протокол ModBus.
И тогда в конфигурации ПЛК Вы добавляете ModBus Slave, в нем Universal ModBus Device... и т.д...
Ну и уж если совсем лень читать доки - хоть на форуме пример посмотрите в разделе ПЛК\примеры программ и полезности как МДВВ к ПЛК по ModBus подключить. Там же к стати и МВУ8 есть.
При подключении по ModBus и записи по маске (это когда Вы одной командой опрашиваете все входы МДВВ и одной командой записываете все выходы МДВВ) реакция будет на порядки лучше.
Модуль статистика - подмодуль в конфигурации ПЛК. Смотрите документацию.
Использование конфигуратора задачь - смотрите пример. Если задачи разнесены, и одни надо исполнять постоянно, а вторые изредка или по какому то условию - их можно разнести. Смотрите пример и читайте доки.

l33tit
26.03.2010, 13:08
Про ПЛК-110 спасибо, но когда (год назад) я покупал эти девайсы и дистрибютора в Киеве мне даже МДВВ не хотели из каталога продавать так как "МВУ8 + МВА8 вам лучше подойдут и они есть в наличии".. про ПЛК-110 тогда небыло слышно.

Сегодня еще раз проверю - если проблемма только на МДВВ буду делать ваши советы. Опять таки желательно обойтись малой кровью, так как чтобы переключится на работу с ОВЕН на ModBus нужно еще найти где-то переходник RS485-> USB.
1. *MinCycleLenght у меня стоит 1
Max - 1000
Может следует им поигратся в сторону 10-20-30?

2. ЧТо такое Менеджер Задач? У себя в КодеСис я его не вижу.

lara197a
26.03.2010, 13:28
справка-ресурсы-конфигуратор задач.
цикл не нужно менять. только время потеряете.

l33tit
26.03.2010, 14:41
провел тест следующий,
все программу закоментировал, оставил подключенными через Rs485 все девайсы. оставил 1 программу - вкл-выкл света кнопкой, вход в мдвв, выход тоже в мдвв (в том-же)
код программы такой-же как в первом сообщении темы.

загрузил программу заменив все что было в плк.
пробовал вкл-выкл - реакция немного лучше чем при полной загрузке программы - но это субьективно
заснял на видео - попробую выложить..
опишу:
при нажатии кнопки быстро - тоесть как вы в современном лифте нажимаете или как чиркаете зажигалкой - вобще нету реакции, вернее есть 1 из 5-10 нажатий как на включение так и на выключение..

загрузил 2 программы, вторая вход в плк, выход в мву8 - все отрабатывается моментально и с 100 процентным "качеством", тоесть нажал - включился свет, еще раз нажал - выключился..

от сюда лично у меня напрашивается вывод что дело не в количестве кода или подпрограмм а в протоколе обмена данными между плк-мдвв-мдвв-мву8 по Rs485 ( протокол овен )

lara197a
26.03.2010, 15:06
программа выполняется циклически, если вы попали при нажатии на кнопку в момент считывания состояния входов, то ПЛК зафиксирует нажатие, если в момент после чтения, из-за обмена с другими устройствами или выполнения цикла программы, плк может не увидеть этого нажатия.
Для устранения задержек рекомендуется использовать Motbus RTY, как писалось выше. Можно вынести МВУ на другой порт, чтобы время не отнимал или считывайте значение встроенного счетчика, для определения нажатия. В вход МДВВ фиксирует импульсы до 1Кгц

l33tit
26.03.2010, 18:55
сьездил к дистрибютору, купил АС4 адаптер, перевел МДВВ (адресс 20), МДВВ (адресс 40), МВУ8 (адресс 64) на работу по ModBus RTU
в ПЛК удалил ОВЕН МАСТЕР, добавил Мод Бас Мастер, добавил 3 юниверсал модбус модул, прописал адреса, для МВУ8 добавил 8 выходов, для МДВВ добавил по 1 регистер инпут модуль и по 1 регистер оутпут модуль, везде РТУ, адреса для МДВВ 50 и 51 поставил, все читается-записывается нормально из Конфигурация ПЛК, лампочка RS485 моргает как положено.
Теперь надо отредиактировать мою программу для работы с новыми переменнами, ведь теперь чтение-запись по маске.
Тут появились грабли, нашел статью http://www.owen.ru/forum/showpost.php?p=10551&postcount=16 по этой ссылке с примером программы на языке LD, к сожелению так сложилось что я LD не умею и не смогу науметь, уже пытался. Выложите пожалуйста пример опроса в программе входов и запись выходов для 2-3 входов и 2-3 выходов МДВВ. На языке ST. Или, если уже обсуждалось (а я искал поиском по форуму) - обсуждения этих вопросов.

Спасибо

lara197a
26.03.2010, 20:12
посмотрите библиотечные функции Pak и Inpak

l33tit
26.03.2010, 20:54
Да, уже находил пример причем на ST как с паками-анпаками работать, посмотрел в справке.
Меня интересует как в программе получить массив с значениями входов-выходов и как подать туда какой-либо параметр, вот этого я не нашел нигде.

Мне нужно этот массив обработать и получить по МДВВ результат 8 outs и 12 ins.

kucherik
28.03.2010, 00:15
так сильно к делу не относящиеся (лень код смотреть)
а от дрожания кнопки защита в программе есть ? %)

Николаев Андрей
28.03.2010, 00:42
Есть 2 подхода.
Можно обращаться к биту переменной...
Например за маску входов отвечает переменная MDVV_IN
тогда первый вход МДВВ можно получить так
MDVV_IN.0 второй MDVV_IN.1 и т.д.

Ну либо использовать блоки Pack и Unpack
C ними все просто на вход одному надо подать 8 бит а на выходе получить байт, и наоборот на входе байт, а на выходе 8 бит.
Для того, чтобы получить word из двух байт надо сложить 2 байта со сдвигом. старший байт сдвигаем либо сдвиговыми операторами, либо умножаем его на 255 и прибавляем младший байт.

l33tit
28.03.2010, 04:15
Добрый день.
Огромное спасибо за консультации.
Особенно за разговор по скайпу с Сергеем lara197a.


Итак распишу все по порядку, тоесть отличия ModBus RTU от ОВЕН (перенастройка девайсов).
Название девайсов: ПЛК-100-P без лимита памяти, МВУ8 - 64 адрес, МДВВ - 20 адрес, МДВВ - 40 адрес.
1. с помошью АС4 или аналогичного девайса включился в общую сеть RS485, до этого подключение было последовательным: ПЛК100 -> МВУ8-64 -> МДВВ-20 -> МДВВ-40. Правда не логично называть его последовательным так как контакт А и В ПЛК-100 прямо включены в МДВВ-40, разница лишь в том что к МВУ8-64 шнурок 20 сантиметров, а к МДВВ-40 - 80.
2. с помошью конфигуратора сменил протокол с ОВЕН на ModBus RTU. Скорость передачи везде 115200
3. в Конфигураторе ПЛК (codesys) - удалил все кроме PLK100, добавил ModBus (MASTER), в нем добавил Universal ModBus module, 3 шт, каждому прописал адресс девайса и поставил соответственный коммент, девайсы МДВВ опрашиваются каждые 10мс (polling time), МВУ8 - 50мс, если на МВУ8 ставить 10мс то иногда нет реакции на нажатие кнопок, я думаю забивается канал передачи данных.
4. Для МДВВ добавил по одному register input module и register output module, для output адрес 50, инпут 51. Command по инструкции.
5. Для МВУ8 добавил 8 register output module, адресация от 0 до 7 включительно.
6. Назвал входы mdvv20input и mdvv40input, выходы mdvv20output, mdvv40output. Таким образом в ST обращаюсь к выходам как mdvv20output.0 - первый выход, mdvv20output.5 - 6-й выход.
Входы опрашиваю как mdvv20input.0-11 и mdvv40input.0-11, тоесть от 0 до 11 = от 1 по 12 порты.
7. изменил переменные в программе.

Так-же теперь для МВУ8 мне надо задавать либо 0 либо 1000 (выкл-вкл), вмесо прошлых 0 или 1.



Проблемма частично осталась, тоесть если за 5 секунд 10 раз нажать-отпустить кнопку то есть вероятность процентов 80 что один-два раза будет не срабатывание. Это конечно лучше чем то что было, но еще не идеал. Поэтому выложу сдесь свой проэкт, прокомментируйте пожалуйста код программы, и, по возможности, посоветуйте как оптимизировать, чтобы сделать работу входов-выходов МДВВ-МВУ8 аналогично быстро как напрямую с ПЛК100.

Спасио

l33tit
28.03.2010, 04:16
так сильно к делу не относящиеся (лень код смотреть)
а от дрожания кнопки защита в программе есть ? %)

Нету, но я видел такой параметр в Конфигураторе МДВВ. Сергей (lara197a) посоветовал попробовать поставить значение 10, поделитесь пожалуйста какие у вас выставление параметры на "дребезг контакта".

Спасибо

lara197a
28.03.2010, 12:01
Записывать значения в модуль МВУ можно не только по времени, но и по команде, т.е. модуль вызывается только в случае когда нужно внести изменения в состояние выходных элементов.
Или хотя бы увеличте время. Думаю 50ms -это слишком часто.
1 вариант предпочтительнее.

l33tit
28.03.2010, 14:06
Записывать значения в модуль МВУ можно не только по времени, но и по команде, т.е. модуль вызывается только в случае когда нужно внести изменения в состояние выходных элементов.
Или хотя бы увеличте время. Думаю 50ms -это слишком часто.
1 вариант предпочтительнее.

Если ставить 100-200мс то при нажатии кнопок можно сделать полтора шага в комнату до включения света, что не есть приемлимо, автоматически дергаюсь нажать еще раз но при этом свет успевает включится, поэтому 50мс поставил. На "глаз" это не мешает работать МДВВ20-40 и в тоже время более шустрая реакция.

Как переключить МВУ8 на работу по команде? -)
В Конфигураторе ПЛК есть "Preset singl register (0x06) и "Write bytes (0x71)".
Третий параметр: "Write multiple registers (0x10)" - установлен сейчас.
Спасибо

Николаев Андрей
28.03.2010, 14:12
смотрите описание конфигурации плк. как задать передачу параметров по сети по команде...

l33tit
31.03.2010, 16:12
смотрите описание конфигурации плк. как задать передачу параметров по сети по команде...

Прочитал, нужной для меня информации не нашел. Те команды что я описал выше, как я понимаю, и надо использовать, но описания команд не нашел в той докумментации. Кстати далеко её запрятали на сайте -(
Подскажите пожалуйста более подробно.


Так-же сегодня анализировал работу программы, вопервых прикрепляю картинку с статистикой.. время цикла в 100мкс 640-840, прокомментируйте пожалуйста много это или мало.
Так-же удалось заметить в разделе МодБус (Мастер) есть поля Last address и last error - у меня адрес 20 (мдвв), 40 (мдвв), 64 (мву8) - так вот иногда, примерно каждый 5-й раз когда вижу адрес 64 то ласт еррор 81 (превышено время ожиданя). Пулинг на МВУ8 выставлен в 200мс.

http://www.owen.ru/forum/attachment.php?attachmentid=2137&stc=1&d=1270037632


Спасибо.

lara197a
31.03.2010, 16:48
цикл почти о,7сек-у вас что-то не так.
выходы у вас не релейные или транзисторные?

l33tit
31.03.2010, 17:13
цикл почти о,7сек-у вас что-то не так.
выходы у вас не релейные или транзисторные?
Выходы все релейные.

l33tit
31.03.2010, 17:18
цикл почти о,7сек-у вас что-то не так.
выходы у вас не релейные или транзисторные?
как вы посчитали 0.7 секунды?
там указано 700 едениц времени, измеряется в сотнях микросекунд
тоесть 700*100 = 70000 микросекунл, делим на 10/10/10/10/10/10 - (10 в минус 6 степени)
=0,07 секунд
тоесть 70 милисекунд (70мс)

lara197a
31.03.2010, 22:39
да, извиняюсь. все равно, очень много. для простой программы.

l33tit
04.04.2010, 00:09
да, извиняюсь. все равно, очень много. для простой программы.
Дело в том, что если я комментирую все подпрограммы и оставляю одну, которая описана в первом сообщении этой темы - ситуация с временем остается прежняя. Завтра попробую оставить просто ";".

l33tit
23.04.2010, 14:54
Добрый день.
Из последних новостей:
1. В связи с тем что у техподдержки ОВЕН время цикла 5-6 в 100мкс
2. В связи с тем что выход №2 в ПЛК100 почему-то всегда замкнут (а реле клацает тише остальных но без результатно)
было решено купить новый ПЛК100-220-R-L А старый отправить в сервис.
Сегодня купил. поставил. залил программу.
Результат позитивный:
1. Время цикла 5-6.

Результат негативный:
1. В конфигураторе осталась ошибка 81 на ласт адрес 64 (устройство не отвечает). 64 это МВУ8. Ошибка появляется 3 раза из 5 (то что глазом успел заметить). При этом время опроса мву8 менял на 20 - 100 - 150мс - разници нету.
2. Осталась та-же проблемма. Включая ЛЮБЫМ входом - выход в ПЛК100 - включается моментально и ВСЕГДА. Включая ЛЮБЫМ входом - выход МДВВ или МДВВ (второй) или МВУ8 - есть задержка или выход не включается..


И вот только что методом научного Тыка сменил Work Mode для МВУ8 c By poll time на by command. Залил программу, МВУ8 лампочка RS485 не моргает, девайс на вкл-выкл выходов не реагирует, зато все остальное работает идеально.

Ребята - подскажите пожалуйста как тут писали - переключить на опрос выходов не по времени а по команде. Спасибо

Филоненко Владислав
23.04.2010, 15:35
не время опроса меняйте, а таймаут ожидания ответа.

l33tit
23.04.2010, 15:41
Выставил Work Mode: By value change
теперь все нормально работает..

l33tit
23.04.2010, 15:51
даже очень хорошо, но если тыкать 10 раз в секунду кнопку то выходу которые в мдвв или мву8 не успевают, выходы которые в плк100 успевают..

обратно ставить старый плк и тестировать не буду, руки болят перекоммутировать шкаф под потолком..


так-же прошу прокомментировать время цикла в 5-6 в 100мкс для программы в которой 30 входов и 30 выходов - управляет освещением в помещении. нормальное время цикла или должно быть 1-2 мс?
если подключится к плк и нажать стоп время = 1. старт = 5 и иногда 6


спасибо всем за помошь.

l33tit
23.04.2010, 15:52
Кстати, выш комментарий что на странице 65 что-то есть помоему не точен:
http://www.owen.ru/forum/showthread.php?t=2060&highlight=by+command
по этой ссылке.
Лично я там нашел информацию по архивированию..

Малышев Олег
23.04.2010, 16:29
если что делюсь опытом - (как вариант) в мдвв есть функция счета по входам - я определял нажатие по изменению значения на счетчике. там было 28 мдвв и 1 плк 100 - общая длина Rs485 ~1.5 км. соответственно цикл опроса был порядка 300 мс и возможность отследить нажатие только через счетчик.

Филоненко Владислав
23.04.2010, 17:39
нормальное время. 500-600мкс. все ок.
стоп - программа не работает :) естественно меньше.

l33tit
23.04.2010, 17:47
нормальное время. 500-600мкс. все ок.
стоп - программа не работает :) естественно меньше.
дело в том что на форуме находил циклы у людей 6-8 и им советовали что-то, после они писали что понизился до 2-3