Примерно так.
Вам лучше послать свою конфигурацию в отдел продаж и все с ними обсудить.
Примерно так.
Вам лучше послать свою конфигурацию в отдел продаж и все с ними обсудить.
Спасибо.
Доброго времени суток!
Возникла проблема при преобразовании 4-х байт в вещественное число.
Использую Modbus Universal MasterOPC Server.
Тег SERVER_ONLY, тип float. При записи выполняется скрипт:
Запросы:Код:-- инициализация function OnInit() end -- деинициализация function OnClose() end -- обработка function OnWrite() local send={1,7,113,100,127}; local sendmask={"byte","byte","byte","byte","byte"}; local dest={}; local destmask={"byte","byte","float","byte","byte","byte"}; local err,len, q; err,dest,len=server.SendAndReceiveDataByMask(0,5,sendmask,send,destmask,200); if err<0 then server.Message("err=",err); else server.Message("data[1]=",dest[1]," dest[2]=",dest[2]," dest[3]=",dest[3]," dest[4]=",dest[4]," dest[5]=",dest[5]," dest[6]=",dest[6]); server.WriteCurrentTag(dest[3], OPC_QUALITY_GOOD); end end
28-09-2012 09:42:47.467 Mega::OmhCOM2) Rx: [0016] 01 07 4E 8F 64 42 C9 48 3F 7F 77 4E 8F B1 E8 B4
28-09-2012 09:42:47.381 Mega::OmhCOM2) Tx: [0005] 01 07 71 64 7F
Сообщения скриптов:
28-09-2012 09:42:47.467 Mega.Omh.Get last result:data[1]=1 dest[2]=7 dest[3]=0 dest[4]=201 dest[5]=72 dest[6]=63
Интересуют вот эти четыре байта 4E 8F 64 42, dest[3] возвращает 0, хотя при преобразовании в Float я получаю - 1202856192.000000, именно то число, что мне нужно.
В чем может быть проблема?
Заранее спасибо!
написал небольшую подпрограмку на ST, но вот что вылезло
как это понимать? Все имена переменных короткие.
текст программы:
PROGRAM Pump
VAR
value_10:int;
bits_str1:string;
bits_str2:string;
bits_str:string;
END_VAR
VAR_INPUT
bit0:bool;
bit1:bool;
bit2:bool;
bit3:bool;
bit4:bool;
bit5:bool;
bit6:bool;
bit7:bool;
bit8:bool;
END_VAR
VAR_OUTPUT
value_str:string;
bit5_str:string;
bit6_str:string;
bit7_str:string;
bit8_str:string;
END_VAR
(*TODO: TYPE PROGRAM CODE HERE*)
bits_str1:=CONCAT(bool_to_string(bit0),bool_to_str ing(bit1));
bits_str2:=CONCAT(bool_to_string(bit2),bool_to_str ing(bit3));
bits_str:=CONCAT(bits_str1,bits_str2);
*Здесь кусок отсутствует*
CASE value_10 OF
0: value_str:='Остановлен';
1: value_str:='Разгон от ПЧ';
2: value_str:='Работа от ПЧ';
3: value_str:='Плавная остановка от ПЧ';
4: value_str:='Работа под контролем РЗ';
5: value_str:='Работа на износ (нет контроля)';
END_CASE;
IF bit5=TRUE then bit5_str:='Блокирован, ошибка в ПЧ (УПП)';
ELSE bit5_str:='Норма'; END_IF;
IF bit6=TRUE then bit6_str:='Блокирован, ошибка в РЗ (МЗД)';
ELSE bit6_str:='Норма'; END_IF;
IF bit7=TRUE then bit7_str:='Нет в системе - отключен (настройками)';
ELSE bit7_str:='Норма'; END_IF;
IF bit8=TRUE then bit8_str:='Резерв';
ELSE bit8_str:='Работа';END_IF;
END_PROGRAM
Чтобы понять рекурсию нужно понять рекурсию
Пришлите ваш проект к нам в техподдержку или выложите сюда.
И укажите в каком объекте находится ваш скрипт
Спасибо.
Для облегчения подбора конфигурации мы создали на сайте раздел с инструкциями по подбору конфигурации:
http://www.insat.ru/products/faq_sca...Configuration/
В разделе описаны все 4 типа лицензии MasterSCADA (автономная, сетевая, архивный сервер, резервированная).
Спасибо.