Просмотр полной версии : ПЛК-150 (Master) + две СП-270 (Slave) по Modbus RTU
Здравствуйте!
Имеется ПЛК-150 (Master) + две СП-270 (Slave). Связь осуществляется по Modbus RTU. В ПЛК-150 соответственно создано ModBus (Master) с интерфейсом 485 скорость 9600 и два universal modbus device (By poll time - 10) с абсолютно идентичными наборами регистров (5 Register output module + 2 register input module), с адресами 1 и 2. Тормоза дикие! На СП-270 несколько кнопок управления битами (реверсивно). Нажимаешь кнопку - некоторое значение увеличивается на 1 и выводится на экран. Этот незатейливый процесс может занять до 2 сек. При этом пока на стадии разработки была только одна панель - всё работало шустро.
Что можно сделать, чтобы реакция на нажатие кнопки была адекватна (100-200 мсек.)? После какого суммарного кол-ва регистров начинаются проблемы (делал порядка 20 регистров на одной панели - тоже тормозит страшно)?
Flomaster
29.09.2010, 01:36
скорость 9600 и два universal modbus device (By poll time - 10) с абсолютно идентичными наборами регистров (5 Register output module + 2 register input module), с адресами 1 и 2.
А вы не пробовали установить значение параметра "Polling time" побольше? Например, 200 мс? Мне кажется, что при таком маленьком значении, как у вас, в сети начинается конфликт пакетов, отсюда и тормоза.
Также можно попробовать увеличить скорость обмена, скажем, до 38 400 (если СП-270 ее поддерживает - к сожалению, с такими панелями оператора не работал).
Пробовал ставить и 100 и 200, а больше не имеет смысла - только ещё более тормозит. Скорость увеличить не могу, т.к. на объекте будет много различных помех. Меня вот что напрягает - есть объект, на котором ОПС-сервер (Kepware) собирает по Modbus порядка 400 значений с 25-30 девайсов (9600/1 сек.) и справляется. Уж не знаю как и есть ли там конфликты пакетов, но запаздывание реакции на события нет.
Николаев Андрей
29.09.2010, 09:10
увеличьте до 5-10 время цикла плк.
когда панель слэйв - контроллер записывает в неё все заведеные для обмена переменные. когда панель мастер - она считывает только переменные, расположенные на активном экране.
рассмотрите варианты записи значений по изменению или по команде
"увеличьте до 5-10 время цикла плк." - правильно ли я понимаю, что Вы имеете ввиду параметр MinCicleLength (ms) в PLC Configuration? Если да, то не помогает. Пробовал вариант "по изменению" - вообще не работает. По команде - пока не знаю как этим пользоваться, но предполагаю, что команду должен давать контроллер и т.к. он не знает в какой момент времени я нажму на кнопку на экране СП-270, то приду опять же к циклу с определенным интервалом - в общем-то к Polling time.
Николаев Андрей
30.09.2010, 10:36
В общем то про MinCycle a и говорил...
Команду дает контроллер, действительно не тот вариант...
Что еще может быть...
Проверьте если можно есть ли такая задержка при обмене, например, с другими ПЛК вместо панелей...
к сожалению нет свободного девайса в данный момент. при возможности попробую. но если порассуждать о скорости обмена, то 9600 бот (бит - если я правильно понимаю) делим на 8 = 1200 байт в сек. или 600 регистров. отнимем половину на обслуживание самого протокола - получается, что 300 регистров в сек. а у меня их 14. как-то не складывается математика...
но если порассуждать о скорости обмена, то 9600 бот (бит - если я правильно понимаю) делим на 8 = 1200 байт в сек. или 600 регистров. отнимем половину на обслуживание самого протокола - получается, что 300 регистров в сек. а у меня их 14. как-то не складывается математика...Вы это серьезно?
Затраты на протокол гораздо больше, если Вы пишите по одному регистру на команду. Это протокол типа "пинг-понг" + таймауты + сумма...
нет - не серьезно. это предположение. а по вашему мнению 14 регистров (28 байт) за секунду - это перебор? вроде как я "губу раскатал"?
считаем.
1. 3,5 бита пауза. часто - 1 байт.
2. 1 байт адрес
3. 1 байт функция
4. 2 байта регистр
5. 2 байта контрольная сумма
6. 3,5 бита пауза. часто - 1 байт
итого посылка 7-8 байт
теперь панель должна декодировать, обработать, и квитировать еще 4-5 байт.
уффф..
пускай получаем 16 байт на то, чтобы записать в панель 1 регистр. 16 * 14 = 224 байта - это уже с учетом на затраты на протокол. так 224 заметно меньше 600 расчетных. а "панель должна декодировать, обработать, и квитировать" - надеюсь, что не будете меня уверять, что она "думает" на скорости 9600.
поднял скорость с 9600 до 38400 - ощущение, что ничего не изменилось.
1. проверьте коммуникационный интервал в панели.
2. поставьте регистры в плк подряд по типу.
3. на запись сделайте 0х10 команду (в плк).
Terrano1992
09.11.2010, 15:04
9600 бот (бит - если я правильно понимаю) делим на 8
вообще-то на 10. стартовый бит, 8 бит данных, стоповый бит.
ilya_sh - "на запись сделайте 0х10 команду (в плк)."
А как? перерыл все настройки - ?
в настройках конфигурации плк на подмодуле. сам проверил.
Илья Кареткин
11.11.2010, 16:14
Я настоятельно рекомендую, участником данной дискуссии почитать PLC_Configuration.pdf на диске ПЛК. И параметры, и особенности опроса ПЛК. Суть проблемы???
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot