-
Какой параметр отвечает за индекс переменной и зачем нужно имя, если обращение к переменной осуществляется по адресу?
Опрос как я понял осуществляется с помощью библиотеки owen_io. Однако в функции OpenPort задается RS485CONV_MANUAL, хотя нужен RS232.
Каким образом можно узнать адрес переменной, которая создается ОВЕН slave, чтобы применить функцию ReadIEEE32.
С уважением, Павел.
-
Для начала рекомендую прочитать манула по протоколу ОВЕН, есть на нашем сайте. Многое станет понятнее. Имя преобразуется по спец. алгоритму в 2-х байтовый номер. сделано для удобства восприятия человеком.
RS485CONV_MANUAL - как раз ручное управление, подходит и для 232. Просто когда писалась библиотека owen_io, о ПЛК и его 232 портах ещё никто не знал
-
Пользователь
Уточняю - для связи по RS232 ставьте именно RS485_Automatic.
-
Уважаемый Владислав, не могли бы вы подсказать ошибку в моих действиях.
Я использую 4-х символьное имя параметра, например aaaa.
Затем перевожу его в хэш-имя, которое получается 32-х битное (хотя в мануале сказано, что оно должно быть 16-битным), и прописываю его в CodeSys.
Далее я перевожу 32-битное значение в 16-ричный адрес и передаю его в качестве параметра функции ReadIEEE32.
Заранее спасибо, Павел.
-
Ни надо ничего никуда переводить. пишите в соответствующем поле aaaa и всё.
Посмотрите пример конфигурирования мастера ОВЕН в док-ции. Для slave аналогично.
-
А вы не могли бы привести пример, который бы содержал имя переменной, 16-битный номер, адрес устройства и адрес переменной.
С уважением, Павел.
-
Пример для ПЛК или для owen_io?
-
Пример, в котором можно узнать адрес переменной, заданной в ПЛК, для считывания ее с помощью owen_io.
-
В owen_io также надо задать :
1. Адрес slave устройства (см. параметры ОВЕН slave)
2. Имя переменной (то самое аааа)
3. Индекс, если есть (для начала попробуйте без него) - (-1)
int ReadIEEE32(DWORD adr,DWORD adr_type,char *command,float &value,int &time,int index);
Пусть адрес=24.
val - значение
time - время для типа float+time, Вам не интересно, но переменную надо подставить
Индекса нет
res := ReadIEEE32(24, 0, 'aaaa', val, tm, -1);
-
Большое спасибо за пример. Но после выполнения данной функции у меня возникает ошибка обмена (-100). Не могли бы вы подсказать, в чем может быть ошибка?
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума