открыл пример 100RL_MU110_8R.pro с диска мх110, дописал одно слово, скомпилировал, получил предупреждение. так и должно быть?
если нет, то каким образом в дворд записывать биты?
http://img21.imageshack.us/i/pictu.png/
открыл пример 100RL_MU110_8R.pro с диска мх110, дописал одно слово, скомпилировал, получил предупреждение. так и должно быть?
если нет, то каким образом в дворд записывать биты?
http://img21.imageshack.us/i/pictu.png/
Последний раз редактировалось swerder; 18.04.2011 в 16:56.
1. Уберите пожалуйста картинки в файл.
2. Используйте блок Pack из библиотеки Util.lib
И к стати - Вы записываете в WORD а не в DWORD
так ведь как в примере сделано, что в конфигурации плк переменная определена как word, так и делал, присвоил только значение одному биту.
и, кстати, блок pack упаковывает в байт, а вы говорите, что вроде бы надо дворд использовать...
p.s. и еще - в рэ к му110-вр написано, что биты с 0 по 7 несут значения выходов, а биты с 8 по 15 всегда = 0. за этим равенством 0 нужно особо следить или не обязательно?
p.p.s. совсем запутали, блоком pack упаковываем в байт, его объявляем как байт в глобальных с адресом регистра в universal modbus device вида
perem AT %QW10.1.0.0 : BYTE;
так?
Последний раз редактировалось swerder; 18.04.2011 в 17:26.
Распутываю.
У Вас на картинках компилятор не ругается, а предупреждает.
Все нормально, в конфигурации ПЛК оставляете регистр (с ним все гарантированно работает).
Далее блок Pack и далее "значение_в_сеть":=byte_to_word("значение_из_pack) ;
В графическом языке - просто добавьте еще один блок с именем Byte_to_word. На вход подаем выход блока Pack, на выходе - то, что посылаем в сеть.
0-7 это как раз Ваши 8 выходов. Остальные прибор просто не будет воспринимать. Почему Word - по тому, что у приборов есть браться, 16-ти канальные. Для них, как Вы понимаете воспринимаются все биты с 0-го по 15.
спасибо, превращу байт в ворд
начал вникать в это дело, нашел пример считывания всех регистров с мва8 на основе библиотеки unm...
Николаев Андрей, подскажите, вы имели ввиду такую реализацию считывания 8ас по маске?
если да, то как это можно превратить в считывание флоатов и кодов ошибок с модуля 8ас тому, кто ничего не понимает в массивах/указателях?
Здравствуйте. Пример с МВА8 и библиотекой UNM вообще не из данной оперы. Часть разговора на форуме видимо отсутствует. Зачем вам маска для модуля 8АС. Можно делать поканальный опрос.
Александр Приходько, часть разговора находится тут.
маска необходима, по словам Николаева Андрея, для значительного уменьшения времени опроса модулей, для повышения быстродействия реагирования.
у меня 3 модуля 8АС, если опрашивать поканально (нужны только ошибки и реал):
(2шт*8каналов + 5каналов)*2 параметра=42параметра
42*20мс(время опроса 1 канала)=почти секунда. это очень медленно.
Валенок, а ваш пост кому адресован?![]()
Пример с UNM это похоже на то о чем вы говорите. Но в вашем случае все проще намного. Используйте библиотеку SysLibCom + ComService + ModbusLib.
Первая необходима для работы с портом напрямую, вторая - это библиотека построенная на базе первой, для удобства управления портом.
С помощью первых двух библиотек вы открываете порт с заданными настройками(скорость, стоп-биты и др...). Третья библиотека - это функции протокола модбас. Вам необходимы функции либо 03, либо 04 для чтения регистров с модулей. В отличии от конфигурации ПЛК вы можете указать номер регистра с которого необходимо начать читать данные и число регистров для чтения. В итоге вы вместо 42 запросов можете реализовать один запрос и один "большой" ответ. Но т.к. вы сокращаете время на всяких таймаутах данная комбинация сработает значительнее быстрей.
Последний раз редактировалось Александр Приходько; 25.04.2011 в 08:52.