Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2VtzqucPabn
IPB IPB
Проектирование, монтаж, наладка, сервис

Здравствуйте, гость ( Вход | Регистрация )

- Рекомендации АВОК 5.5.1-2023
«Системы противодымной вентиляции жилых и общественный зданий»

- Рекомендации АВОК 7.8.3-2023
«Проектирование инженерных систем лабораторий»

- Рекомендации АВОК 7.10-2023
«Здания жилые и общественные. Защита от шума и вибрации инженерного оборудования»

АВОК в соц. сетях
ИНН: 7714824045
 
Добавить ответ в эту темуОткрыть тему
> Логика СПТ963 ModBus
SannTexnik
сообщение 19.4.2023, 10:44
Сообщение #1





Группа: New
Сообщений: 5
Регистрация: 1.11.2022
Из: Москва
Пользователь №: 410391



Доброго дня, товарищи.
Мы недавно приобрели тепловычислитель СПТ963 для паровой котельной, и позарились что в документации указано - есть поддержка протокола modbus. Но по факту пока не получилось ничего опросить, скорее всего по причине вообще отсутствия карты регистров. То что на офф сайте - мягко говоря, бумага https://www.logika-consortium.ru/wp-content...rogrammista.pdf По запросу у техподдержки выслали "карту", опять же мягко говоря, странную карту регистров.
Карта регистров
В документации пишут, что подавляющее большинство данных вещественное число двойной точности, которое занимает 4 регистра в памяти(обычного прибора), но согласно их картам и инструкциям адресация некоторых параметров идет по регистрам, например температура Т1 имеет адрес 1181, а массовый расход G1 - 1182 следом идет тепловая мощность 1183 и т.д.
Коллеги, изменился стандарт модбас, а я и не заметил? Или дело в тепловычислителе? Может у кого есть опыт с тепловычислителями Логика?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
SannTexnik
сообщение 21.4.2023, 14:38
Сообщение #2





Группа: New
Сообщений: 5
Регистрация: 1.11.2022
Из: Москва
Пользователь №: 410391



Доброго дня, товарищи.
Поле пары дней попыток что-то прочитать из этого удивительного тепловычислителя, появились выводы, которыми я тут поделюсь.
От слов modbus RTU, в заявках и документах производителя ничего правдивого нет, там не Modbus и даже не RTU. Выяснил это следующим образом - взял лектус ОПС и решил послушать ответы. То что автор ,который писал этот протокол на счетчике, далек от понимания регистров, распределения памяти и пр. в протоколе modbus выяснилось сразу (постом выше) , но вот сам пакет представляет интерес. Снимок во вложении. Я там красным выделил очень интересный фрагмент ответа. Кто знаком с кодом ASCII тот поймет. Когда я это увидел - удивлению моему не было предела, какой "гений" в modbus rtu вставил ascii символы??? Как это вообще в голову могло прийти? Есть предположение, что автор сего чуда, вчерашний студент, который вообще в протоколе ничего не понимает, которому начальство приказало что то написать, и чтобы не парится взял и сотворил такое.
Вот и представьте, как теперь нашему заказчику это разъяснять, когда в добавок ко всему, ответ техподдержки "логики" такой "Это не свободно программируемый контроллер а тепловычислитель с настраиваемым интерфейсом,о чем говориться в РЭ (поддерживает протокол обмена с внешними устройствами) Ваше заявление "Значит в счетчике нет протокола ModBus." некорректно." Тем более на мою просьбу прислать логи обмена с тем же тепловычислителем, техподдержка прислала картинку (тоже во вложении) ... стою и молча развожу руками!
Вывод - если вам не угрожают расправой, не используйте этот тепловычислитель если хотите опрашивать его по modbus.
Но если эта железяка у вас уже есть и сдать обратное её нельзя, и заказчик просит что-то оттуда выковырнуть- даю рекомендации как поступать.
1. Функция чтения, единственно-работающая 04, пытались другими - в ответ ошибка. Групповой запрос - тушите свет, только одиночные, только хардкор.
2. Если к этому чуду у вас плк ОВЕН на кодесисе 2.3 , то рядом стоящие параметры - исключите из опроса, не прочиатате (нам так пришлось исключить температуру из трубопроводов, так как важнее было знать массовый расход).
3. Настройки по интерфейсу тоже не блещут разнообразием. Так что rs485 полностью выделяйте на тепловычислитель, если не хотите головную боль.
4. Чтение удобнее осуществлять 8-ми байтовым string, так как вряд ли найдете, какой прибор будет опрашивать LREAL (там почти все данные 8-байтовые)
5. Расшифровку, перестановку байт и приведение к числовому виду, придется делать либо скриптом, либо подпрограммой. Для ПЛК выложу наработку здесь. И отдельно спасибо неизвестному программеру (перестановку байт стянул у него. где то на форуме)
6. Про настройку 003 или 004 . В инструкции написано исключительно для галочки. Параметры такие 6050001112 , где первая цифра 6 - параметры четности и стоповых бит (в данном случае 8 EVEN 1) , 01 - это адрес в сети RS485 , последняя цифра 2 - скорость (в данном случае 1200 ).
Вот как то так.
Всего доброго, коллеги, всем успехов.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  ПО.txt ( 1,96 килобайт ) Кол-во скачиваний: 151
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Muhomor
сообщение 11.12.2023, 16:03
Сообщение #3





Группа: New
Сообщений: 1
Регистрация: 20.10.2009
Пользователь №: 39820



Здравствуйте SannTexnik. Применил ваш код, спасибо, получилось прочитать, но преобразование корректное только для положительных значений температур, при отрицательных получается огромное значение в 9.4Е+06. (Прикрепил скрины, на одном скрине верное значение при плюсовой температуре а на втором не верное минусовое) Можете оказать помощь?

Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
SannTexnik
сообщение 11.12.2023, 17:31
Сообщение #4





Группа: New
Сообщений: 5
Регистрация: 1.11.2022
Из: Москва
Пользователь №: 410391



Добрый день. да настрадался я с тем счётчиком) очень жалко было времени.
Смотрите, блок анализирует все цифры от 0 до 9 , если находит другой символ, то автоматически думает что это разделитель "."(точка) С отрицательными не додумал)
У меня к сожалению уже нет доступа к теплосчётчику, поэтому проверять не могу... вот мысли как это устранить (будем находить символ "-") и умножать значение на -1 если наёдём. Только я проверить работоспособность блока не смогу. попробуйте сами. текст ниже.

FUNCTION_BLOCK MEGGD
VAR_INPUT
str_d : STRING;
END_VAR
VAR_OUTPUT
LREL : REAL;
LWRD : DWORD;
END_VAR
VAR
str : POINTER TO BYTE ;
b : ARRAY[1..8]OF BYTE ;
i : BYTE ; (*счет для цикла*)

Nz : BYTE ; (*знаков после запятой*)
Nn : BYTE ; (*нулей после запятой*)
Mks : DWORD ; (*набор чисел без запятой*)
Mnz : DWORD ; (*множитель*)
Otr : BOOL ; (*число отрицательное*)
END_VAR

(*******************************************************************************
****************************)

str := ADR(str_d);
Otr := FALSE ;

FOR i := 2 TO 8 BY 2 DO
b[i] := str^;
str := str+1;
b[i-1] := str^;
str := str+1;
END_FOR

(*находим число*)
Mks := 0;
Mnz := 10000000;
Nz := 1;
Nn := 0;
FOR i := 1 TO 8 DO
(*множитель*)
Mnz := Mnz / 10 ;
(*число*)
IF b[i] = 45 THEN
Otr := TRUE ;
(* Mnz := Mnz * 10 ; не знаю в каком формате идут данные от счетчика. возможно тут надо раскоментировать*)
ELSIF b[i] >= 48 AND
b[i] <= 57 THEN
Mks := Mks + (b[i]-48) * Mnz;
ELSE
Mnz := Mnz * 10 ;
END_IF
(*запятая*)
IF b[i] = 46 THEN
Nz := i ;
END_IF
(*ноль*)
IF b[i] = 0 AND
Nn = 0 THEN
Nn := i ;
END_IF
END_FOR

(***************************************)
(*теперь он делитель*)
Mnz := 0;
CASE Nz OF
0 : Mnz := 100000000;
1 : Mnz := 10000000;
2 : Mnz := 1000000;
3 : Mnz := 100000;
4 : Mnz := 10000;
5 : Mnz := 1000;
6 : Mnz := 100;
7 : Mnz := 10;
8 : Mnz := 1;
ELSE
Mnz := 1;
END_CASE
(*наконец капец*)
LREL := Mks * 1.0 / Mnz;

IF Otr THEN
LREL := -1 * LREL ;
END_IF

(***************************************)
(*теперь он делитель*)
Mnz := 0;
CASE Nn OF
0 : Mnz := 1;
1 : Mnz := 100000000;
2 : Mnz := 10000000;
3 : Mnz := 1000000;
4 : Mnz := 100000;
5 : Mnz := 10000;
6 : Mnz := 1000;
7 : Mnz := 100;
8 : Mnz := 10;
ELSE
Mnz := 1;
END_CASE
(*наконец капец*)
LWRD := Mks / Mnz ;

(*******************************************************************************
****************************)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Реклама
ООО «Арктика групп» ИНН: 7713634274


ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvE2vr3

Последние сообщения Форума





Rambler's Top100 Rambler's Top100

RSS Текстовая версия Сейчас: 28.4.2024, 18:03