GhostII Posted June 23, 2011 Share Posted June 23, 2011 Добрый день! :-) Возникла необходимость использования прибора iLogik 1210 под Линуксом (Ubuntu). Отлично, что на сайте есть библиотека - в принципе, там ничего сложного - бери и используй, даже не заморачиваясь протоколом Modbus. Но протокол Modbus новый для меня и поэтому для полноты понимания (да и просто ради интереса) есть несколько вопросов по его реализации в этом устройстве: 1. Обращение происходит в режиме вопрос-ответ - передается номер функции, назад передается результат. Судя по описанию, по умолчанию, чтобы получить состояние входа, передается номер функции 0x02. В ответ передается один байт? Значение счетчика - функция 0x04. В ответ приходит двойное слово? Но состояние всех входов - так же функция 0x04. Как отличить их друг от друга? Нет полного описания функций протокола Modbus для этого прибора. Или это закрытая информация и нужно использовать именно имеющуюся библиотеку? 2. Не могу понять, зачем используются User-Defined Start Address и Reference Address? Какое отношение они имеют к протоколу Modbus? Как использовать эти адреса при доступе к конкретному прибору? 3. Что такое Modbus Mapping, зачем он нужен и как его использовать? Там как раз User-Defined Start Address и Reference Address и используются. Прошу извинить, если вопросы слишком дилетанские. Link to comment
Guest Stepashkin Posted June 24, 2011 Share Posted June 24, 2011 Добрый день! Ответ на функцию 0x02 имеет размер 2 байта, биты которого соответствуют дискретным входам. При отсылке функции мы также указываем, какие входы нам нужно опросить (номер первого опрашиваемого входа и кол-во опрашиваемых входов). Насчет функции 0x04 – нет необходимости различать DI Counter Value (Double Word) и DI Value All Channel (Ch0-Ch15) – что Вам нужно, то и используете. Reference Address – это точный порядковый регистра, а при обращении к регистру по Modbus используется User-Defined Start Address. Modbus mapping – это возможность вручную задавать User-Defined Start Address – например, чтобы не вносить изменения в код программ при замене железа, у которого Start Address имели другие значения. Modbus- протокол широко распространен и найти его описание не составляет проблем, поэтому в инструкции к ioLogic нет детального его описания. Link to comment
Tim Posted September 13, 2011 Share Posted September 13, 2011 пробую записать передать функцию 0x02 с помощью примера на C#, устройство - E1210 в ответ выдает ILLEGAL_DATA_ADRESS . Куда копать ? адрес начальный задал 0001, кол-во каналов счит. - 4 В самой моксе включил Enable User-defined Modbus Addressing Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now