В Овене ПЛК100 в конфигурации Modbus Slave есть 6 регистров 4ех байтовые. При просмотре лог Lectus OPC контроллер опрашивает каждый регистр отдельным запросом. Как можно реализовать один запрос, если регистры идут все подряд?
В Овене ПЛК100 в конфигурации Modbus Slave есть 6 регистров 4ех байтовые. При просмотре лог Lectus OPC контроллер опрашивает каждый регистр отдельным запросом. Как можно реализовать один запрос, если регистры идут все подряд?
В настройках узла в лектусе необходимо выставить галочку групповой опрос. Регистры, которые в самом лектусе добавлены последовательно(очень помогает функция тиражирования) будут отрашиваться групповым запросом. Если регистры расположены хаотично, то будут опрашиваться последовательно.
Lectus_Codesys_Portmon.JPG
Grup.JPG
Нет не помогло.
Может из-за того что регистры 32 битные в Modbus??
И еше одинг вопрос адресс переменной как можно самому назначить?
Последний раз редактировалось Len_ss; 05.04.2011 в 14:13.
Попробуйте версию с сайта 3,9:
http://www.owen.ru/catalog/64467020
Очень похожая ситуация.Есть плк110, в конфигурации выходов создан массив modbus TCP в котором расположено 28регистров по 8бит.Если лектусом опрашивать по битно то это долго. 224 бита последовательно за 1с опросить это не реально. А вот опросить группой вполне. Поставив галочку в лектусе групповой опрос обнаружил следующее:
1. С настройками по умолчанию с максимальным размером пакета 256байт читается только 124 переменные.Первые 124 переменные отображаются нормально- остальные ошибка приема/передачи.Причем "плохие" переменные
сохраняют возможность на запись.Т.е. чтение не проходит , а запись в них проходит.
2. Если поставить размер максимального пакета 10байт вместо 256 то все нормально.
Пробовал массивы не по 8бит(байт) х 28шт (224), а по 2байта(word) х259штук все нормально, т.е. проблема только при чтении битов.
Пробовал контроллер без программы и с большой программой.
Это глюк контроллера или я делаю что-то не так?
Последний раз редактировалось sink3d; 31.08.2012 в 08:21.
Нашел решение проблемы.Для работы с байтами, нужно поставить в лектусе размер 1го регистра = 1байт.По спецификации modbus 1регистр = 2байта.Но при таком раскладе, перестают читаться регистры размером word(. Ответ представителей Lectus OPC :
Выдается ошибка 2 - некорректный адрес.
15:56:27.968 [3752] (10.0.0.10:502) Tx: [12] 01 87 00 00 00 06 01 01 00 7D 00 22
15:56:27.968 [3752] (10.0.0.10:502) Rx: [9] 01 87 00 00 00 03 01 81 02
15:56:27.968 [3752] Ошибка приема/передачи (10.0.0.10:502 Адрес:1)
Если в настройках кол-во промежуточных регистров = 0, то значит в конфигурации
задан какой-то некорректный адрес с 0x7D до 0x9E.
За подробностями обращайтесь к разработчикам Modbus устройства (Овен).
На Fastwel opc - наблюдается такая же картина.
Последний раз редактировалось sink3d; 31.08.2012 в 11:22.
непонятно какое решение проблемы Вы нашли, я так понимаю что виноват ОВЕН
01 87 00 00 00 06 01 01 00 7D 00 22 это групповое чтение битов с 125 адреса в количестве 34 булевых значений. Если всё это сложить то Вы должны у себя в конфигурации иметь как минимум 10 регистров модбас или 20 модулей по 8 бит
01 87 00 00 00 03 01 81 02 говорит о том, что адрес данных, указанный в запросе, не доступен данному слейву, могу предположить что читать надо так чтоб значения начального адреса и количество бит было кратным восьми
Удалил из запроса переменные 7D,7E,7F - то есть как вы и написали.Начальный адрес должен быть кратным 8, т.е. получается начало 128.
А вот что теперь делать с переменными которые пришлось удалить даже не знаю, их же читать все равно надо.Спасибо за подсказку.
Байтами не так наглядно будет.А проблему скорости хотелось решить групповым опросом. А opc сервер как оказалось не опрашивает в группе одним запросом больше 125бит(.