PDA

Просмотр полной версии : Проблема быстродействия связки ПЛК150-220А.М+5хМВ110-8А+3хМУ110-8Р+СП270Т



Рашид
16.05.2013, 13:24
В общем, бегаю я тут как ошпаренный. А повод есть. Имеется связка, озвученная в заголовке темы и скорость работы всего это более чем никакая. Причём, если контроллер хоть и медленно, но работает с модулями ввода/вывода, то на панель он стабильно "забивает". Вводимые с панели значения просто игнорятся. Ошибок связи нет. Я понимаю, в чём корень зла - в том, что я использовал конфигуратор. Средство, которое предназначено для организации связи контроллера с периферией, но почему-то нормально не работающее. В общем, выкладываю проект, может глянет кто своим опытным взглядом и выскажется, что можно изменить к лучшему при использовании конфигуратора. Это уже наглость с моей стороны, но если кто-то немного отредактирует прогу под использованием модбас.либ ФБ (так сказать, наводку даст), будет вообще чудесно.
П.С. ПЛК мастер, панель слэйв. Шаблоны устройств в конфигураторе не использовал.

Рашид
16.05.2013, 14:59
Разумеется панель читает числа до битов, а потом спотыкается об них.
А поподробнее?

petera
17.05.2013, 06:18
Рашид, посмотрите вот эту ветку http://www.owen.ru/forum/showthread.php?t=14411
Возможно это Ваш случай, установите MinCycleLength=0.
Мне кажется, что дело не в количестве модулей 8 bit output module, а втом, что не хватает свободного процессорного времени для такого количества переменных модбаса.

Рашид
17.05.2013, 07:44
Для четности добавьте еще два элемента 8Бит

Спасибо, попробую. Кстати, Андрей, видел Ваш пост http://www.owen.ru/forum/showthread.php?t=10890 об оптимизации. Но ссылки там уже неактивны, к сожалению. Можно ссыль два продублировать?


Рашид, посмотрите вот эту ветку http://www.owen.ru/forum/showthread.php?t=14411
Возможно это Ваш случай, установите MinCycleLength=0.
Мне кажется, что дело не в количестве модулей 8 bit output module, а втом, что не хватает свободного процессорного времени для такого количества переменных модбаса.

Спасибо, попробую и это.

Рашид
17.05.2013, 11:54
В общем, небольшой отчёт.
1. pollling time аналоговых устройств сделал 1000 мс, work mode=by polling,
2. для модулей дискретного вывода сделал work mode=by value change (т.е. передача на модули дискретного вывода только по изменению переменных, предназначенных для модулей вывода),
3. СП270 как бы разбил на два устройства - от исходного отделил все 8-битные выходные регистры и поместил во второе устройство, адрес которого как у первого, но work mode=by polling, а не both, как у первого, в котором остались только регистры word. Т.е. теперь биты пишутся в панель только при изменении хотя бы одного из этих битов.
Кстати, регистры для чётности пробовал добавлять, эффект нулевой.
В итоге проделанные изменении дали существенный прирост в скорости обмене информации между панелью и ПЛК - теперь время от момента воода инфы в панель до момента получения этой инфы ПЛК не 40-50 сек, а не более 4 сек. Четыре секунды тоже не по фэн-шую, но пока вот так.

YuriBel
17.05.2013, 13:04
2. для модулей дискретного вывода сделал work mode=by value change (т.е. передача на модули дискретного вывода только по изменению переменных, предназначенных для модулей вывода)

В данном случае меня несколько смущает вот эта цитата из РЭ на МУ110-8Р: "При отсутствии запросов от Мастера сети RS-485 в течение времени, заданного для всех
ВЭ в одном параметре «Максимальный сетевой таймаут» (t.out), происходит перевод всех
дискретных ВЭ в заранее заданное состояние, безопасное для управляемой системы". Не будет ли с этим проблем?

Sergey666
17.05.2013, 13:21
Для чего использовать в Слэйве 8бит регистр???
Для обмена битами с панелью???
Использование 8бит регистра - абсолютно лишнее .
Адресацию делайте (битовую) для обычного 16бит регистра и все.
Лично я никогда не заморачивался с библиотечным обменом , только конфигуратор ( ну для "нормальных" устройств).

Sergey666
17.05.2013, 13:36
Посмотрел проект.:o
Ужос , летящий не крыльях ночи.
Все , что можно накосячить - накосячили.
И , если это по примерам с форума , то изготовители "примеров" - косячники.
Во первых для опроса одного модуля аналогового надо 8 реалов - "измеренное значение"и (если действительно необходимо) - время опроса (или еще как-то) (чисто Овенская фишка , больше нигде не видел)
Итого , по большему счету , - 8 реалов на один модуль . А у вас что?
Передача в панель (Слэйв) реалов - тоже то еще решение .
Модбас стандартно работает с регистрами 16 бит .
Ну вот нафига реал в слэйве?????:eek:
Что , числа слишком большие??? Больше 32767?(Для интеджер)
Целочисленный формат надо использовать.(Реал для модбас слэйва-извращение).

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

Тут на форуме процентов 60 подобных реализаций с "замедленным" обменом , не работающими (не успевающими) устройствами и тд

Sergey666
17.05.2013, 14:02
Там в предыдущем обшибся немного .
Для чего панель Слэйв???(Почему?)
Для кого тогда модбас слэйв?
На слэйв можно нормально "вешать" несколько интерфейсов (свободных) в вашем случае есть дубуг 232.
Если панель стоит далеко от ПЛК - преобразователь 232-485.
Панель в режиме слэйв работает , но "туповато" .

capzap
17.05.2013, 14:06
Именование переменных в конфигурации - тоже извращение.
Трудно , что-ли список глобальных переменных сделать , с адресацией(тоже вроде примеров полно)

Вы бы полегче с этим, именно использование АТ % приносит больше проблем чем именование канала в конфигураторе, уж если предлагаете избавиться от имен каждого канала, то решение должно заключаться в прописи одного имени, а далее через указатель обращение ко всем остальным каналам

Sergey666
17.05.2013, 14:17
В жизни не было проблемм с АТ адресацией.
Никогда-никогда ...ВООБЩЕ.
Проблемма вылазит при именовании переменных в конфигураторе при необходимости переноса проекта на ПЛК с другим таргетом.Все переписать,этож ж... полная.

Стандартно на проект делаю Слэйв и "забиваю" регистров штук 500 , нет необходимости - ну и ладно (кушать не просят)
И время цикла в ПЛК 1.. - 5-6 мс ставлю.

Рашид
17.05.2013, 14:38
В данном случае меня несколько смущает вот эта цитата из РЭ на МУ110-8Р: "При отсутствии запросов от Мастера сети RS-485 в течение времени, заданного для всех
ВЭ в одном параметре «Максимальный сетевой таймаут» (t.out), происходит перевод всех
дискретных ВЭ в заранее заданное состояние, безопасное для управляемой системы". Не будет ли с этим проблем?

Ожидаемо, что будут. Но в реальности их нет. Я не использую ШИМ, я управляю реле посредством битовой маски значений. А в описании режима "Аварии" разговор идёт о ШИМ. Как много времени не проходило, у меня не загорается индикатор Авария на модулях, выходной сигнал не снимается, если он был установлен.

Рашид
17.05.2013, 14:49
Посмотрел проект.:o
Ужос , летящий не крыльях ночи.
Все , что можно накосячить - накосячили.
И , если это по примерам с форума , то изготовители "примеров" - косячники.
Во первых для опроса одного модуля аналогового надо 8 реалов - "измеренное значение"и (если действительно необходимо) - время опроса (или еще как-то) (чисто Овенская фишка , больше нигде не видел)
Итого , по большему счету , - 8 реалов на один модуль . А у вас что?
Передача в панель (Слэйв) реалов - тоже то еще решение .
Модбас стандартно работает с регистрами 16 бит .
Ну вот нафига реал в слэйве?????:eek:
Что , числа слишком большие??? Больше 32767?(Для интеджер)
Целочисленный формат надо использовать.(Реал для модбас слэйва-извращение).

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

Тут на форуме процентов 60 подобных реализаций с "замедленным" обменом , не работающими (не успевающими) устройствами и тд
Благодарю за объективную критику, по поводу нескольких моментов я хотел бы кое-что прояснить. Обилие реалов с модулей МВ1108А для того, чтобы не только считать температуры, но и определить, как поживают датчики, да и модули в целом. Может это и изврат, такой вот подход, зато я точно знаю, когда у меня ноль в результате действительно ноль, а не следствие отвалившегося от сети модуля ввода.
По поводу обилия реалов для панели тут Вы правы, ничто так не учит, как хороший пример. Примеров я надербанил на форуме, но не всё в итоге гладко.

Там в предыдущем обшибся немного .
Для чего панель Слэйв???(Почему?)
Для кого тогда модбас слэйв?
На слэйв можно нормально "вешать" несколько интерфейсов (свободных) в вашем случае есть дубуг 232.
Если панель стоит далеко от ПЛК - преобразователь 232-485.
Панель в режиме слэйв работает , но "туповато" .
Модбас мастер для периферии ПЛК, модбас слэйв, как несложно догадаться, глянув внутрь, для всяких там ОРС серверов, работающих по TCP. Про туповатость осознал и даже прочувствовал.

Sergey666
17.05.2013, 15:08
Все правильно , перифирию надо контролировать.
В модуле , модбас мастер есть переменные "Last adress и "Last error".
С их помощью определяется наличие связи (ответа) с устройством.
Теперь по датчикам-есть нижний и верхний предел у датчика (-50...+250).
Если значение измеренное не в пределе значит...
А , панель пересадите на Дебуг и сделайте ее мастером (просто убрать лишнее из мастера и добавить порт на Слэйв.)
И все Залетает.:)

З.Ы Сименс ПЛК хреновым программированием вообще убить можно в течении нескольких минут.

Рашид
17.05.2013, 15:16
Все правильно , перифирию надо контролировать.
В модуле , модбас мастер есть переменные "Last adress и "Last error".
С их помощью определяется наличие связи (ответа) с устройством.
Теперь по датчикам-есть нижний и верхний предел у датчика (-50...+250).
Если значение измеренное не в пределе значит...
А , панель пересадите на Дебуг и сделайте ее мастером (просто убрать лишнее из мастера и добавить порт на Слэйв.)
И все Залетает.:)

З.Ы Сименс ПЛК хреновым программированием вообще убить можно в течении нескольких минут.

Спасибо за информацию к размышлению, учту.