PDA

Просмотр полной версии : Частотник Danfoss и Modbus RTU



const3
03.05.2012, 19:36
Здраствуйте.
Имеется ПЛК 63 и частотник Aqua Drive FC 200.
Написал программу в Codesys используя пример c диска для Modbus.
При записи регистра (функция 06) все работает, параметры частотника изменяются.
А при чтении регистров (функция 03) по такому запросу:
get2_modbus: MB_RD_HOLD_REGS;

get2_modbus(
Enable:=enabl , (* разрешение работы блока *)
Mode:=MB_RTU , (*режим передачи*)
DevAddr:=1 , (*адрес*)
FirstAddr:=3029,
Quantity:=2, (* начальный адрес дискретных выходов *)
ComHandle:=Settings.Port ,(*номер COM-порта*)
TimeOut:=TimeOut , (*Таймаут T#50ms*)
Complete=>cmpl , (* скопировать признак завершения операции *)
Exception=>err,
Buffer:=Buffer
); (* скопировать регистр ошибок *)
(*кол-во считанных байтов *)

В ответе оказывается ошибка 255, тоесть ошибка по таймауту.

В чем может быть причина?

ASo
03.05.2012, 19:39
В таймауте.
Ну кривое описание и не правльный пример в библиотеке.
Вы не даете функции работать - постоянно посылая запрос.

const3
06.05.2012, 14:55
А, тоесть посылается запрос новый, до того момента пока получен ответ на старый запрос?
О тогда это многое объясняет. Большое спасибо.

ASo
06.05.2012, 16:00
Угу.
Т.е. Вы должны параметром Enable:=TRUE пустить запрос, а дальше вызывать экземпляр ФБ с Enable:=FALSE раз в 2..10мс до его завершения Complete=TRUE, успешного или нет, по тайм-ауту или еще как. Проанализировать завершение...