PDA

Просмотр полной версии : ПЛК73 + МЭ110-224.1Т



PsychOZ
18.04.2017, 04:27
Здравствуйте уважаемые форумчане.
Есть контроллер ПЛК73 и однофазный амперметр МЭ110-224.1Т подключенный к первому по линии RS-485 и протоколу ModBus_RTU.
Написал програмку для контроллера и уперся в такой момент, что в считанном буфере вместо тех данных которые я должен преобразовать в значение типа float лежит полная фигня.


IF COM_SERVICE1.ready=FALSE THEN
Settings.Port:=com_num;
Settings.dwBaudRate:=115200;
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;

COM_SERVICE1(Enable:=TRUE , Settings:=Settings , Task:=OPEN_TSK );
com_ready:=FALSE;
ELSE
COM_SERVICE1.Enable:=FALSE;
com_ready:=TRUE;
END_IF

IF com_ready=TRUE THEN
get_modbus(
Enable:=enabl ,
Mode:=MB_RTU ,
DevAddr:=11 ,
FirstAddr:=29 ,
Quantity:=2,
ComHandle:=Settings.Port ,
TimeOut:=TimeOut ,
Buffer:=Buffer ,
Complete=>cmpl ,
Exception=>err ,
ByteCnt=>DataSize );
IF cmpl THEN
IF err=0 THEN
ptr_D:=ADR(d);
ptr_D^:=buffer[6];
ptr_D:=ptr_D+1;
ptr_D^:=buffer[7];
ptr_D:=ptr_D+1;
ptr_D^:=buffer[8];
ptr_D:=ptr_D+1;
ptr_D^:=buffer[9];
END_IF
END_IF
END_IF

IF err <> 0 THEN
enabl := FALSE;
END_IF
enabl:=TRUE;

30644

При просмотре измеренного значения в конфигураторе, значение равно 0.273 А.
Следовательно я должен получить что-то типа http://www.binaryconvert.com/result_float.html?decimal=048046050055051, но этого не происходит.

Подскажите пожалуйста, куда копать?
Заранее очень Вам благодарен за полноценный ответ.

ASo
18.04.2017, 07:58
Подскажите пожалуйста, куда копать?
В сброс Enable до получения ответа.

P.S. ОВЕН - бяки! сколько просил подправить пример в доке - не делают.

melky
18.04.2017, 08:00
разбирайтесь с приемом, вы даже прочитать его не можете, он вам шлет мусор или скорее вы вместо реального ответа пишите мусор

Парсер порта на родную программу для начала установите.

PsychOZ
03.05.2017, 02:03
Убрал последнюю строку из кода (enabl:=TRUE;) и решил этот enabl подергать самостоятельно в режиме "Онлайн".
Ответ в буфере появляется, но далеко не всегда. К примеру если примерно раз в секунду enabl становится истиной, то на 3-4 попытку в буфере ответ есть.
И еще заметил что зачастую блок опроса Modbus не хочет перемененную Complete делать истиной по окончании работы.

Подскажите пожалуйста, как мне стабильно получать ответ?

ASo
03.05.2017, 07:13
Ровно так, как я написал. Проблем нет.

PsychOZ
06.05.2017, 02:45
В сброс Enable до получения ответа.

P.S. ОВЕН - бяки! сколько просил подправить пример в доке - не делают.

Не расскажете поподробнее как это сделать?

ASo
06.05.2017, 09:37
Рассказывал и не раз. Поищите по форуму.

PsychOZ
09.05.2017, 02:54
Всем спасибо, разобрался сам.
Тему можно закрывать.

Grampus
18.05.2017, 15:32
Добрый день господа, подскажите пожалуйста как увеличить частоту опроса аналогового входа на ПЛК 73 ????
сигнал меняется очень быстро а результат я вижу спустя 2 секунды. Буду признателен

KIPSHOP
25.10.2018, 08:44
Интересная атмосфера на этом форуме.
Специально для примера взял эту ветку, человек задал конкретный вопрос и отправил конкретный код программы. Ответы приходят такого плана "В сброс Enable до получения ответа.

P.S. ОВЕН - бяки! сколько просил подправить пример в доке - не делают." или такого "разбирайтесь с приемом, вы даже прочитать его не можете, он вам шлет мусор или скорее вы вместо реального ответа пишите мусор

Парсер порта на родную программу для начала установите." или вообще такого плана "Рассказывал и не раз. Поищите по форуму."(хотя всё можно было показать на конкретном примере) РЕЗУЛЬТАТ - "Всем спасибо, разобрался сам.
Тему можно закрывать." В результате на форуме появляется ещё одна без полезная ветка, не несущая в себе ни какой полезной информации.
А некоторые продолжают писать "Поищите по форуму", не понимая что своими ответами вы его засоряете. Отсюда совет - не отвечайте в темах которые вам больше не интересны, дабы не плодить такие без полезные ветки.