PDA

Просмотр полной версии : ФБ MB_RD_HOLD_REGS



Александр Пястолов
17.07.2018, 13:28
Добрый день!
Проблема: функциональный блок MB_RD_HOLD_REGS на адреса регистров размерностью 4ХХХХ (например 45057) или 3ХХХХ (например 36864) возвращает exception 251 - неверный начальный адрес, при этом работает без ошибок с регистрами вроде 14, 15, 16 и т.д. Все перечисленные регистры - из карты регистров ПЧ, читаемых функцией 3. Все перечисленные регистры читаются нормально в СКАДе.
Прошу помочь разобраться: почему ФБ MB_RD_HOLD_REGS не пропускает регистры размерностью 4ХХХХ, 3ХХХХ и как это исправить?

P.S. СПК207, CodeSys 3.5

Евгений Кислов
17.07.2018, 13:56
Добрый день.
Какую вы используете версию библиотеки?

Александр Пястолов
17.07.2018, 14:02
modbus 3.5.4.2

capzap
17.07.2018, 14:10
http://www.owen.ru/uploads/adresaciya_registrov_pchv12.pdf в овеновских ПЧ нет указанных Вами адресов, за исключением четырех регистров с пятизначным адресом.

Александр Пястолов
17.07.2018, 14:12
ПЧ - Instart под управлением СПК207

Евгений Кислов
17.07.2018, 14:15
Проблему зафиксировали. Завтра планируем выложить исправленную версию.

Александр Пястолов
17.07.2018, 14:18
Большое спасибо!

melky
17.07.2018, 14:31
Вроде из 4ХХХХ и 3ХХХХ функция 3 Holding Registers только 4ХХХХ, просто вбивайте ХХХХ

Александр Пястолов
18.07.2018, 09:49
Это не работает (40001 = 0). От других мастеров данный ПЧ воспринимает абсолютную адресацию нормально (при том, что в зоне чтения функцией 3 (holding registers) есть адреса 13-18, помимо 4XXXX, значит, смещение 40001 не имеет значения). Возможно, проблема связана с особенностью ФБ, его контролем адресов регистров - ФБ выдает ошибку, не осуществляя физического обмена данными со slave.

melky
18.07.2018, 10:07
Александр Пястолов вы на другие мастера вешали наблюдатель порта ? вот он прямо так и передает адрес 40001 как вы указываете в мастере ?

Александр Пястолов
18.07.2018, 12:19
Регистр ПЧ, например 45057, именно так и передается в обмене данными через функцию 3 (мастер - СКАДА) без ошибки. Если 5056 (45057 - 40001), ПЧ возвращает ошибку "неправильный адрес". В случае СПК207 и ФБ MB_RD_HOLD_REGS при адресе 5056 ФБ производит физический обмен, о чем свидетельствует флаг COMPLETE=TRUE и возвращает ошибку (Exception) = 253, т.е. тот же "неправильный адрес" (это ошибка от slave). При адресе 45057 ФБ флаг COMPLETE не выставляет, а Exception = 251 "неправильный начальный адрес" (это ошибка от ФБ без обращения к slave). С "малыми" адресами (13, 14 и т.д.) под функ. 3 как СКАДА, так и СПК (MB_RD_HOLD_REGS) работают без ошибок. ПЧ (slave) не делает никаких смещений и для абсолютной адресации под функ.3 предлагает регистры как X-XX, так и 4XXXX и 3XXXX (о чем писал ранее). Возможно, что ФБ сам преобразует адреса на основе т.н. соглашения Modbus: 40001 - для Holding (3) ( MB_RD_INP_REGS - 30001 (4)).
В ПЧ (Instart) все свободно: регистры 3XXXX тоже читаются функцией 3 (функция 4 ПЧ не поддерживается), хотя префикс 3 по соглашению должен указывать на адресное пространство регистров типа Input.

Евгений Кислов
18.07.2018, 15:28
Выкладываю библиотеку с устраненной проблемой.
Завтра обновим на сайте.

Александр Пястолов
18.07.2018, 15:44
Отлично! Спасибо!