PDA

Просмотр полной версии : спк modbus slave



Andrew_Stranger
24.12.2014, 10:41
Добрый день. Помогите решить проблему. Опрашиваю СПК105 (slave) ПЛК100(master). Обмен идет, на СПК моргает com, в конфигураторе плк100, ошибок по modbus не наблюдается, НО в регистрах 0,1,2 лежат значения 1,2,3, независимо от значений в СПК.

GoodLuck
24.12.2014, 11:25
А где сам проект?

Andrew_Stranger
24.12.2014, 11:56
Вот проекты.

GoodLuck
24.12.2014, 12:40
Судя по проекту вы считываете с СПК две переменные (2 слова). Почему тогда пишите "НО в регистрах 0,1,2 лежат значения 1,2,3..."? Откуда взялся регистр № 2?

вот здесь, где стоят цифры 3, поставьте двойки.

Andrew_Stranger
24.12.2014, 14:53
Просто пробовал разные варианты. Поставил двойки, результат тот же. Еще вместо значений 1,2 сейчас лежат нули, хотя обмен идет без ошибок

GoodLuck
24.12.2014, 15:07
Попробуйте считывать значения с помощью функции 04.

Дело в том, что у меня тоже были проблемы с передачей данных с СПК на OPC сервер, помогло только использование функции 04 вместо 03.

Andrew_Stranger
24.12.2014, 15:32
Спасибо большое, все заработало.

Hemann
03.01.2015, 11:23
Коллеги, добрый день!

Чтобы не плодить темы, решил написать в этой ветке, хотя проблема несколько другая, чем у ее родоначальника.
На праздниках решил позаниматься CoDeSys 3.5 и нарвался на непонятки с Модбасом. Я опрашиваю МК110-8ДН.4Р с помощью СПК107. С помощью библиотек Modbus,ModulsOwenLib,OwenNet я делал разные варианты программы опроса и все работало, и по Модбасу, и по ОВЕНу. Но тут я решил использовать встроенные возможности (добавил устройство Modbus_COM, к нему Modbus_Master_COM_Port, к нему, соответственно, Modbus_Slave_COM_Port), и ничего не работает... Нет опроса совсем, светодиод СОМ на СПК не мигает, как и светодиод RS485 на МК110.
Прошу совета, чего делал не так? Прошивка СПК 3.939, таргет 3.5.4.20 сборка 023, CoDeSys 3.5SP5. Архив проекта с несколькими поясняющими скриншотами прилагается.

жекон
03.01.2015, 13:18
Судя по скрину опрос то идет, а вы переменные привязали?
P.S:Проект не смотрел...

RomAl
03.01.2015, 13:34
Коллеги, добрый день!

Чтобы не плодить темы, решил написать в этой ветке, хотя проблема несколько другая, чем у ее родоначальника.
На праздниках решил позаниматься CoDeSys 3.5 и нарвался на непонятки с Модбасом. Я опрашиваю МК110-8ДН.4Р с помощью СПК107. С помощью библиотек Modbus,ModulsOwenLib,OwenNet я делал разные варианты программы опроса и все работало, и по Модбасу, и по ОВЕНу. Но тут я решил использовать встроенные возможности (добавил устройство Modbus_COM, к нему Modbus_Master_COM_Port, к нему, соответственно, Modbus_Slave_COM_Port), и ничего не работает... Нет опроса совсем, светодиод СОМ на СПК не мигает, как и светодиод RS485 на МК110.
Прошу совета, чего делал не так? Прошивка СПК 3.939, таргет 3.5.4.20 сборка 023, CoDeSys 3.5SP5. Архив проекта с несколькими поясняющими скриншотами прилагается.

Сразу бросилось в глаза как вы соотносите переменные С1 и С0 в конфигурации, они же у вас не Array а почти Word, вот
и поставте их в строке где каналы 0[0], 1[0] тип word...времена циклов на запись и чтение я бы поставил одинаковые, а таймаут по логике не должен быть больше цикла...у меня компиляция не пошла, что-то с библиотеками наверно, сейчас нет времени копать

Hemann
03.01.2015, 22:35
RomAl, спасибо, что заметили ошибку. Но ее исправление не помогло, к сожалению. С библиотеками все время свистопляска, приходится править версии все время. И еще момент. Не совсем врубился в данном конкретном случае, когда Modbus_COM конфигурим, то чтобы физический СОМ1 указать, на вкладке ставим СОМ2?

жекон
04.01.2015, 08:12
RomAl, спасибо, что заметили ошибку. Но ее исправление не помогло, к сожалению. С библиотеками все время свистопляска, приходится править версии все время. И еще момент. Не совсем врубился в данном конкретном случае, когда Modbus_COM конфигурим, то чтобы физический СОМ1 указать, на вкладке ставим СОМ2?
Да и соответственно если второй нужен ставим 3

Hemann
04.01.2015, 12:46
Коллеги, всем спасибо! В конце концов получилось. Дело в том, что почему-то не активен выключатель "auto-restart communication", а я не стал заморачиваться, уповая на то, что вся система собрана на столе, длина связи - сантиметров 40. Ан нет... Пришлось вставить код возобновления связи, приведенный в соседней ветке "восстановление связи по modbus СПК107" - и все заработало. Спасибо всем, кто пытался помочь! На всякий случай, если кому-то понадобится, прилагаю архив проекта.

Андрей007
04.01.2015, 14:42
Коллеги, добрый день!

Чтобы не плодить темы, решил написать в этой ветке, хотя проблема несколько другая, чем у ее родоначальника.
На праздниках решил позаниматься CoDeSys 3.5 и нарвался на непонятки с Модбасом. Я опрашиваю МК110-8ДН.4Р с помощью СПК107. С помощью библиотек Modbus,ModulsOwenLib,OwenNet я делал разные варианты программы опроса и все работало, и по Модбасу, и по ОВЕНу. Но тут я решил использовать встроенные возможности (добавил устройство Modbus_COM, к нему Modbus_Master_COM_Port, к нему, соответственно, Modbus_Slave_COM_Port), и ничего не работает... Нет опроса совсем, светодиод СОМ на СПК не мигает, как и светодиод RS485 на МК110.
Прошу совета, чего делал не так? Прошивка СПК 3.939, таргет 3.5.4.20 сборка 023, CoDeSys 3.5SP5. Архив проекта с несколькими поясняющими скриншотами прилагается.

У меня немного обратная ситуация вышла. Я опрашивал ТРМ201 при помощи СПК110
CoDeSys 3.5 у меня SP5 не работал ни по библиотекам ни при помощи встроенного Modbus.

Установил SP4 Patch4 сразу получилось подключиться по внутреннему Modbus.
При помощи библиотек ModbusOwenLib, Modbus и OwenNet я смог связаться без проблем только по протоколу Owen.
По модбасу как я не менял типы и версии библиотек у меня выходило примерно одно и тоже:
- Лампочки обмена моргали и на СПК110 и на ТРМ201
- Буффер всё время менял байты с данными туда сюда, среди которых1599015991 проскакивают и действительные значения с ТРМ201 (Как это понять?)

Т.е. Прибор вроде как отвечает, а вот программа не может правильно обработать как я понимаю.
Скрины приложил.
Если кто знает чего делать подскажите.
Видио буффера и архив
https://yadi.sk/d/MYYXQIhcdmviT
https://yadi.sk/d/LyVREhg7dmvk5

Hemann
04.01.2015, 19:12
Есть подозрение, что у Вас с временами что-то не чисто. Попробуйте на вход Enable блока MB_RD_HOLD_REG просто подать TRUE. А то у вас импульс в 1 мс туда проскакивает

Андрей007
04.01.2015, 19:25
Если просто TRUE, то лампочка на ТРМ201 начинает непрерывно гореть, а на СПК110 бешено моргать
и в буфере беспорядочно меняются значения всех байт, не выдерживая ни какой структуры ModbusRTU.
Поэтому я сделал опрос раз в секунду по импульсу, но всё равно в буфере данные не соответствуют структуре ответа Modbus.

ASo
04.01.2015, 19:45
Не раз в секунду по импульсу а так:
1. Вызываем POU с Enable:= TRUE
2. В следующем цикле вызываем POU с Enable:= FALSE до тех пор, пока Complete <> TRUE
3. В этот момент POU отработал, анализируем Exception. Если Exception = 0, то все в норме, в буффере принятые данные.
И так в цикле. Или переходим к следующему POU с обменом по шине.

Андрей007
05.01.2015, 10:32
То же самое вышло. Дело не в том как организована программа, дело в самом ModbusLIB.
Прикладываю последовательно фото 8 циклов программы с точкой останова в ModbusLIB.
15998 15999 16000 16001
16002 16003 16004 16005

Я не спец конечно в Modbus библиотеках, но по-моему это косяк.
Хотелось бы услышать мнение администрации.

Hemann
05.01.2015, 12:39
Андрей, у меня под рукой нет ТРМ201, но есть МК110-224.8ДФ.4Р. На нем я попробовал MB_RD_HOLD_REG. В принципе все работает корректно, если правильно обрабатывать выходы блока. В буфере, который у Вас называется Buffer, циферки во время работы пляшут по разному, просто их требуется считать/обработать в нужный момент. Прилагаю архив проекта, с помощью которого я считывал входы своего модуля.

Андрей007
05.01.2015, 16:03
Благодарю за ответ. Теперь до меня дошло.
Я так понял буфер не абы как меняется, я у него есть три стадии (и на фотках они как раз и отразились):
- первая мне не ясна, в ней присутствует из понятной информации только Адрес прибора Байт[0] и Функция чтения Байт[1];
- вторая содержит посылку от прибора так как она выглядит на самом деле;
- а вот третья это уже только байты запрошенных данных.

У меня в связи с этим только один вопрос остался, а где хоть описание понятное есть,
в документации к этой библиотеке в примере чёрт ногу сломит.

Только вот версия CoDeSys3.5 SP5 Patch4 так и не работает, приборы вообще не видит ни так ни эдак.
Только на SP4 Patch4 работает обмен с моей СПК110.

L@Nser
14.05.2015, 12:25
вопрос может не этой теме, но другой не нашел, так как форум работал с перебоями.
собственно интересует возможность работы устройства в режиме master и slave по одному порту или все же придется использовать два порта.

п.с. по двум портам понятно, но планируется один порт использовать для опроса устройства по RS-232 и хотелось бы для RS-485 master и slave задействовать один порт.

спасибо

upd. забыл уточнить используется СПК107