PDA

Просмотр полной версии : Компьютер (Modbus-Master) + ПЛК (Modbus-Slave) Проблема передачи данных



xГеоргийx
13.10.2010, 10:46
Доброго времени суток!

Ситуация следующая:
1. Компьютер. Работает, как Modbus-Master. (.Net)
2. ПЛК. Работает, как Modbus-Slave.
Картинка конфигурации Modbus на ПЛК прикреплена.

Из описания modbus вычитал, что: "С точки зрения мастера, слэйв устройство представляет собой непрерывно организованную область памяти ..."

В ПЛК в modbus-slave добавил подэлемени "2 байта". Обозвал его: "inch_count".
С компьютера хочу обратиться к этой переменной и прочитать ее.
Затруднения у меня с адресом, по которому надо обращаться к переменной.

Пожалуйста, подскажите, как обратиться к этой переменной или хотя бы где это можно прочитать. Долго искал по форуму, но, видимо, не так ищу или нет информации. Я не могу понять, по какому адресу находится эта переменная. Вызывая функцию чтения по madbus там надо указывать адрес, как один из параметров. По идее, все очень просто должно быть)

Заранее большое спасибо!

Малышев Олег
13.10.2010, 11:33
да вообщем то так и есть - адрес 0

xГеоргийx
13.10.2010, 11:44
да вообщем то так и есть - адрес 0

Спасибо за ответ!
Пробовал 0 т.е. обращался по адресу 0х00, но получил ошибку...
Скажите, пожалуйста, а вот при вставке modbus - slave в настройках указывается адрес модуля modbus (1 ... 255). по умолчанию там 1. может быть, он как-то влияет на местоположение в адресном пространстве моей переменной?

Я пробовал обращаться и по 0х10, 0х01...
И, если не затруднит, не могли бы подсказать, какую из функций протокола modbus (они там под номерами) лучше использовать для чтения обычной word переменной?

Заранее спасибо!

Flomaster
14.10.2010, 01:58
Адрес модуля не влияет на положение переменной в адресном пространстве. Адрес модуля есть адрес подчиненного устройства, которым в данном случае является ПЛК. Он может иметь адрес от 1 до 255.
Если мастер (ПК) отправит посылку устройству с адресом 0, это будет являться широковещательной передачей и ее получат все подчиненные устройства сети.
Что касается чтения данных, то в вашем случае скорее всего, нужно пользоваться функцией 3 (0x03) для чтения данных из регистра 0.

xГеоргийx
14.10.2010, 11:19
Адрес модуля не влияет на положение переменной в адресном пространстве. Адрес модуля есть адрес подчиненного устройства, которым в данном случае является ПЛК. Он может иметь адрес от 1 до 255.
Если мастер (ПК) отправит посылку устройству с адресом 0, это будет являться широковещательной передачей и ее получат все подчиненные устройства сети.
Что касается чтения данных, то в вашем случае скорее всего, нужно пользоваться функцией 3 (0x03) для чтения данных из регистра 0.


Спасибо за ответ!
В той библиотека modbus для .net я как раз и использовал функцию 3, один из принимаемых параметров был начальный адрес, его я указывал по-разному.
Разбираюсь с реализацией на .net modbus, может быть, там ошибка.

Может быть, кто-то сталкивался с бесплатной библиотекой modbus для .net? Был бы очень признателен.

xГеоргийx
14.10.2010, 13:42
Разобрался. Ошибка была на стороне уже компьютера.
С .Net связал, все летает.
Спасибо за помощь и ответы!