Просмотр полной версии : плк63(мастер)+мва8+сп270
Задача такая, ПЛК63 должен считывать показания с МВА8 и передавать их на панель СП270. Все устройства сидят на 485, протокол modbus rtu.
Первую часть реализовал с помощью библиотеки, а вот со второй затык, данные формата float.
Как их передать через библиотеку modbus не понятно....
Подскажите в какую сторону копать
lara197a
09.08.2010, 15:20
Преобразуйте в инт, умножте если нужно с точностью до n*. В панеле укажите нужное количество цифр после запятой
Преобразуйте в инт, умножте если нужно с точностью до n*. В панеле укажите нужное количество цифр после запятой
там есть несколько параметров температуры, которые могут быть как положительными так и отрицательными, из за этого и хотел float, а с int, что то со знаком не получается...
lara197a
09.08.2010, 16:14
тип Int от -32768 до +32767,
а Float-это с запятой 64 бит
тип Int от -32768 до +32767,
а Float-это с запятой 64 бит
проблема в том что у меня отрицательное число при этом на сп270 почему то не выводится, хотя... наверное надо завтра еще раз попробывать на свежую голову....
спасибо.
вроде на свежую голову получилось..., но появился еще вопрос, как оптимально отследить отсутствие обмена с одним или несколькими устройствами в сети?
файл проекта прилагаю.
(его можно использовать как пример для опроса мва8 по модбас рту, ибо такого примера еще не было)
Руководство по эксплуатации МВА8 , пункт 6.3.1.2, таблица 5 - адреса регистров Modbus.
Измеренное значение входа 1 формата Float32 считывается вопреки данным таблице (4 и 5 регистры) с 3 и 4 регистров.
Вопрос в том, где искать статус измерения входа 1?
методом тыка не получается...
ну и прошлый вопрос остается в силе...
данные формата float.
Как их передать через библиотеку modbus не понятно....
Подскажите в какую сторону копать
Когда я передавал float с ПЛК150 на СП270, то приходилось перед отправкой на панель менять местами старшее и младшее слово в переменной (float как раз 64 байта). Может в этом проблема.
Если точности нужно пара-тройка символов после запятой, то проще умножить на 10, 100 или 1000, преобразовать в int и передавать в таком виде.
vlkv: спасибо, с этим уже разобрались.
Техподдержке: Руководство по эксплуатации МВА, та же таблица.... статус измерения первого канала нашелся во втором регистре, что то у вас напутано в этой таблице...
у меня получилось так (для первого канала):
0 регистр -положение десятичной точки;
1 регистр - целое значение
2 регистр - статус измерения
3,4 регистры - значение с плавающей точкой
циклическое время не искал, но похоже оно в 5 регистре
по прежнему не ясно как с помощью библиотеки отследить отсутствие обмена с одним из нескольких устройств в сети...
!!!!!!!!!!!!!!!!!!!!
16.10.2010 Сказанному выше на счет регистров не верить, там все как в инструкции.
!!!!!!!!!!!!!!!!!!!!
циклическое время не искал, но похоже оно в 5 регистре
Господа модераторы подскажите в каком регистре искать циклическое время? :confused:
Александр Ч.
29.08.2011, 09:24
Прогнал проект предложенный AVit ПЛК63+МВА8...( проба.rar выше) , обмен между плк63 и мва8 длится несколько секунд. Это особенность ПЛК63? Или можно ускорить процесс?
Делаю проект , в котором кроме МВА8 будут еще ИП320 и МВУ8. С ними задержек по обмену нет(взял пример ПЛК63+МДВВ - по аналогии) . Может есть пример рабочий ПЛК63+МВА8? Неделю рыскаю по форуму....
Для скорости конечно же читаю INT не FLOAT как в примере
Александр Ч.
14.09.2011, 13:57
Все дело было в скорости, прописал 115200, скорость обмена выросла в 10 раз примерно. Далее по проекту -связал ПЛК63 с МВА8,МВУ8 и ИП320. Проект получился не сильно короткий, и дабы облегчить жизнь себе переименовал проект в "Modbus(ST)", в PLC_PRG естественно добавил эту пользовательскую программу. К сожалению в таком виде обмен не идет, полагаю, что порт не успевает открываться.. В чем может быть причина и как заставить его работать?
не понял.
машина красивая, но не ездит ?:confused:
как продолжение шутки : "надо сменить прокладку между рудем и сиденьем водителя"
Александр Ч.
15.09.2011, 09:42
как продолжение шутки : "надо сменить прокладку между рудем и сиденьем водителя"
http://www.owen.ru/forum/showthread.php?p=56358#post56358
А ведь еще 11.03.2011 то же самое можно было сказать ..., но ведь помогли , научили, просветили.... Поздравляю
а мои то глупости хоть ответы находятся (почти на все :) ), а на Ваш вопрос мне очень хочется посмотреть кто же ответит.
Не совсем понятно, как можно определить что обмен вырос на порядок и при этом жалуетесь что его нет. Порт открывается единожды при инициализации, закрыться может только по истечении таймаута
Александр Ч.
15.09.2011, 11:32
Да, скорее всего не переписал переменные в Gobal_variable
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot