Добрый день. Может кто сталкивался. Управляю по ModBus с ПЛК110-60 частотником (Веспер Е2-8300). На частотнике
1-00 (Выбор источника команды ПУСК/СТОП) => 0002: Последовательная линия связи
1-06 (Выбор источника задания частоты) => 0004: Последовательная линия связи
Записываю две команды(Ниже приведен код)
1. Пуск/Стоп
2. Опорная частота.
Передача параметров идет. Перед тем как подаю Пуск, на дисплее частотника отображается та опорная частота, которую я передаю (напр. 1750(17,5 гц)). Но как сигнал становится Пуск и частотник начинает работать, то он просто разгоняется до 5000 (50Гц), т.е. до максимума и не обращает внимания на мою опорную частоту. Может кто подскажет что не так, может в частотнике что-то нужно еще. И из частотника я читаю параметр выходной частоты после пуска именно 5000 почему то.
#################################
Из программы(если нужно). Программа работает
Запись параметров
6: (* функция 16 - запись 2 параметров типа WORD в прибор PCH1 с адресом 2 всего 2 регистров *)
(*запись в буффер параметра типа WORD*)
Buffer[3] := WORD_TO_BYTE(OPORNAYA_CHASTOTA1);
Buffer[2] := WORD_TO_BYTE( SHR(OPORNAYA_CHASTOTA1,8));
Buffer[1] := WORD_TO_BYTE(UPRAV_PCH1);
Buffer[0] := WORD_TO_BYTE( SHR(UPRAV_PCH1,8));
send2_modbus(
Enable:= enabl, (* разрешение работы блока *)
Mode:=MB_RTU , (*режим передачи*)
DevAddr:=3 , (*адрес*)
FirstAddr:= 257, (*номер регистра*)
Quantity:= 2, (*количество записываемых регистров*)
ComHandle:=Settings.Port ,(*номер сом-порта*)
TimeOut:=TimeOut , (*таймаут T#50ms*)
Buffer:=Buffer , (* буфер данных *)
Complete=>cmpl , (* скопировать признак завершения операции *)
Exception=>err , (* скопировать регистр ошибок *)
RegCnt=> DataSize); (*кол-во считанных байтов *)
Чтение выходной частоты:
4: (* функция 03 инт - ФБ считывает значение 1 параметра типа WORD из прибора PCH1 с адресом 3 начиная с регистра 292 по протоколу Modbus-RTU*)
get1_modbus1(
Enable:=enabl , (* разрешение работы блока *)
Mode:=MB_RTU , (*режим передачи*)
DevAddr:=3 , (*адрес*)
FirstAddr:=292 , (*номер регистра*)
Quantity:=1, (*количество регистров*)
ComHandle:=Settings.Port , (*номер COM-порта*)
TimeOut:=TimeOut , (*Таймаут T#50ms*)
Buffer:=Buffer , (* буфер данных *)
Complete=>cmpl , (* скопировать признак завершения операции *)
Exception=>err , (* скопировать регистр ошибок *)
ByteCnt=>DataSize ); (*кол-во считанных байтов *)
(*если установлен признак завершения операции, то *)
IF cmpl THEN
IF err=0 THEN (*Если нет ошибок, то получаем данные из буфера типа INT*)
CHASTOTA_NA_VUHODA1:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8);
END_IF
master1:=5; (*переходим к выполнению следующего ФБ*)
END_IF