Создание блока PZEM-017! HELP!

Необходима помощь в созднии блока.

Создаем свой блок. Вопросы, помощь знатоков.
DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#1

Сообщение DesertG » 15.03.2020{, 15:09}

Привет сенсеи!
Прошу вашей помощи в создании пользовательского блока. инфы вроде хватает в инете но мне необходимо для удобства интегрировать его в программу FLProg.
закину пару ссылок готовых решений может кого заинтересует. ну очень нужен блок этот))
https://github.com/lorenz4672/PZEM017
https://solarduino.com/pzem-017-dc-ener ... h-arduino/

com
Капитан
Сообщения: 831
Зарегистрирован: 31.05.2018{, 22:12}
Репутация: 83
Откуда: Санкт-Петербург
Имя: Ринат

Создание блока PZEM-017! HELP!

#2

Сообщение com » 15.03.2020{, 15:37}

DesertG, В последней версии программы есть встроенный блок для pzem
Упс, оказывается в программе блок для pzem 004

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Создание блока PZEM-017! HELP!

#3

Сообщение Phazz » 15.03.2020{, 15:59}

Так модбас же, нужно найти только какой регистр что выдает

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#4

Сообщение DesertG » 15.03.2020{, 17:51}

Phazz писал(а):
15.03.2020{, 15:59}
Так модбас же, нужно найти только какой регистр что выдает
То есть я могу его поставить как пзем-4 только надо показания поправить правильно я понял?
нашел вот такую инфу по 17му
The command format of the reply from the slave is divided into two kinds:
Correct Reply: Slave Address + 0x04 + Number of Bytes + Register 1 Data High Byte + Register 1 Data Low Byte + ... + CRC Check High Byte + CRC Check Low Byte
Error Reply: Slave address + 0x84 + Abnormal code + CRC check high byte + CRC check low byte
Abnormal code analyzed as following (the same below)
0x01,Illegal function;
0x02,Illegal address;
0x03,Illegal data;
0x04,Slave error.
The register of the measurement results is arranged as the following table
Register address Description Resolution
0x0000 Voltage value 1LSB correspond to 0.01V
0x0001 Current value 1LSB correspond to 0.01A
0x0002 Power value low 16 bits 1LSB correspond to 0.1W
0x0003 Power value high 16 bits
0x0004 Energy value low 16 bits 1LSB correspond to 1Wh
0x0005 Energy value high 16 bits
0x0006 High voltage alarm status 0xFFFF is alarm,0x0000 is not alarm
0x0007 Low voltage alarm status 0xFFFF is alarm,0x0000 is not alarm
For example, the master sends the following command (CRC check code is replaced by 0xHH and 0xLL, the same below):
0x01 + 0x04 + 0x00 + 0x00 + 0x00 + 0x08 + 0xHH + 0xLL
Indicates that the master needs to read 8 registers with slave address 0x01 and the start address of the register is 0x0000.
The correct reply from the slave is as following:
0x01 + 0x04 + 0x10 + 0x27 + 0x10 + 0x00 + 0x64 + 0x03 + 0xE8 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0x00 + 0xHH + 0xLL
The above data shows
Voltage is 0x2710,converted to decimal is 10000,display 100.00V;
Current is 0x0064,converted to decimal is 100,display 1.00A;
Power is 0x000003E8,converted to decimal is 1000,display 100.0W;
Energy is 0x00000000,converted to decimal is 0,display 0Wh;
High voltage alarm status 0x0000,indicates the current voltage is lower than the high voltage threshold.
Low voltage alarm status 0x0000,indicates the current voltage is higher than the low voltage threshold.
2.4 Read and modify the slave parameters
At present,it only supports reading and modifying slave address and power alarm threshold
The register is arranged as the following table
Register address Description Resolution
0x0000 High voltage alarm threshold(5~350V),default is 300V 1LSB correspond to 0.01V
0x0001 Low voltage alarm threshold(1~350V),default is 7V 1LSB correspond to 0.01V
0x0002 Modbus-RTU address The range is 0x0001~0x00F7
0x0003 The current range(only for PZEM-017) 0x0000:100A
0x0001:50A
0x0002:200A
0x0003:300A
The command format of the master to read the slave parameters and read the measurement results are same(described in details in Section 3.3), only need to change the function code from 0x04 to 0x03.
The command format of the master to modify the slave parameters is (total of 8 bytes):
Slave Address + 0x06 + Register Address High Byte + Register Address Low Byte + Register Value High Byte + Register Value Low Byte + CRC Check High Byte + CRC Check Low Byte.
The command format of the reply from the slave is divided into two kinds:
Correct Response: Slave Address + 0x06 + Number of Bytes + Register Address Low Byte + Register Value High Byte + Register Value Low Byte + CRC Check High Byte + CRC Check Low Byte.
Error Reply: Slave address + 0x86 + Abnormal code + CRC check high byte + CRC check low byte.
For example, the master sets the slave's high voltage alarm threshold:
0x01 + 0x06 + 0x00 + 0x01 + 0x4E + 0x20 + 0xHH + 0xLL
Indicates that the master needs to set the 0x0001 register (low voltage alarm threshold) to 0x4E20(200.00V).
Set up correctly, the slave return to the data which is sent from the master.
For example, the master sets the low voltage alarm threshold of the slave
0x01 + 0x06 + 0x00 + 0x02 + 0x03 + 0xE8 + 0xHH + 0xLL
Indicates that the master needs to set the 0x0002 register (low voltage alarm threshold) to 0x03E8(10.00V).
Set up correctly, the slave return to the data which is sent from the master.
For example, the master sets the address of the slave
0x01 + 0x06 + 0x00 + 0x03 + 0x00 + 0x05 + 0xHH + 0xLL
Indicates that the master needs to set the 0x0003 register (Modbus-RTU address) to 0x0005
Set up correctly, the slave return to the data which is sent from the master.
2.5 Reset energy
The command format of the master to reset the slave's energy is (total 4 bytes):
Slave address + 0x42 + CRC check high byte + CRC check low byte.
Correct reply: slave address + 0x42 + CRC check high byte + CRC check low byte.
Error Reply: Slave address + 0xC2 + Abnormal code + CRC check high byte + CRC check low byte
2.6 Calibration
The command format of the master to calibrate the slave is (total 6 bytes):
0xF8 + 0x41 + 0x37 + 0x21 + CRC check high byte + CRC check low byte.
Correct reply: 0xF8 + 0x41 + 0x37 + 0x21 + CRC check high byte + CRC check low byte.
Error Reply: 0xF8 + 0xC1 + Abnormal code + CRC check high byte + CRC check low byte.
It should be noted that the calibration takes 3 to 4 seconds, after the master sends the command, if the calibration is successful, it will take 3 ~ 4 seconds to receive the response from the slave.
2.7 CRC check
CRC check use 16bits format, occupy two bytes, the generator polynomial is X16 + X15 + X2 +1, the polynomial value used for calculation is 0xA001.
The value of the CRC check is all results of a frame data checking divide CRC

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

Создание блока PZEM-017! HELP!

#5

Сообщение Phazz » 15.03.2020{, 19:22}

Не знаю на счет совместимости. Адреса у вас есть, можно прочитать через модбас напрямую.

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#6

Сообщение DesertG » 16.03.2020{, 15:32}

Phazz писал(а):
15.03.2020{, 19:22}
Не знаю на счет совместимости. Адреса у вас есть, можно прочитать через модбас напрямую.
помогите сделать блок для FLProg чтобы я смог его установить в свой проект. :(
а то я не знаю за что взятся

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#7

Сообщение DesertG » 12.04.2020{, 20:00}

Парни поучилось интегрировать стандартную библиотеку. посмотрите пожалуйста будет работать. и если у кого-то есть время можете добавить в него выбор сериал порта и выбор (// Declare your external shunt value. Default is 100A, replace to "0x0001" if using 50A shunt, 0x0002 is for 200A, 0x0003 is for 300A). попытался так сделать с ModbusMaster но там после удаления всего что связано с экраном пошли сплошные ошибки. народ помогите плиз)))
Вложения
PZEM-017_Officiall_(CODE).ubi
(88.21 КБ) 55 скачиваний
PZEM-017_(CODE).ubi
(882.91 КБ) 55 скачиваний
PZEM017.txt
(1.45 КБ) 45 скачиваний
ModbusMaster.txt
(23.51 КБ) 47 скачиваний

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Создание блока PZEM-017! HELP!

#8

Сообщение Sancho » 13.04.2020{, 14:39}

DesertG, Выложите файл проекта с блоком - честно, не хочу блок вставлять к себе, потом удалять...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#9

Сообщение DesertG » 13.04.2020{, 16:30}

Sancho писал(а):
13.04.2020{, 14:39}
DesertG, Выложите файл проекта с блоком - честно, не хочу блок вставлять к себе, потом удалять...
Урааа! не оставили в беде. отправляю в проекте оба блока. один официальный. на втором лажа идет из-за встроенного модуля экрана.
Если есть возможность заточить его до финального. проверить где я наложал, думаю не только мне такая штука пригодится.
Вложения
Pzem17.flp
(1.2 МБ) 62 скачивания

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#10

Сообщение DesertG » 17.04.2020{, 12:17}

столько просмотров а помощи нет :(

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Создание блока PZEM-017! HELP!

#11

Сообщение Sancho » 17.04.2020{, 13:31}

DesertG,
Пока во втором нашёл
erial3.begin(9600,SERIAL_8N2);
Да - именно так.

Отправлено спустя 9 минут 17 секунд:
long startMillisPZEM; - нету в declare
preTransmission();
postTransmission();

Отправлено спустя 4 минуты 11 секунд:
long currentMillisPZEM = millis(); //тоже изменить
int periodPZEM= 1000; // в декларе- ожидание ответа
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#12

Сообщение DesertG » 18.04.2020{, 16:37}

Sancho Привет!
Ну вроде получилось ошибки не дает. Проверь плиз ничего лишнего не удалил? если все пучком пусть люди пользуются. А если еще потом кто то прикрутит плюшки как на PZEM4 тобишь выбор порта выбор константы для вида железки по амперажу вообще огонь будет. ну думаю на следующей неделе придет железо буду тестить как все пройдет отпишу.
Вложения
Pzem17.flp
(922.57 КБ) 56 скачиваний

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#13

Сообщение DesertG » 30.04.2020{, 06:18}

Всем привет! Пришла беда от куда и не ждал. блок работает все отлично, но стоит поставить термометр, так начинается война с переменной как я понял. OneWare ругается, парни посоветуйте что можно сделать
Вложения
полная версия эксперемент.flp
(986.47 КБ) 63 скачивания

Аватара пользователя
Rovki
Полковник
Сообщения: 4873
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Создание блока PZEM-017! HELP!

#14

Сообщение Rovki » 30.04.2020{, 07:05}

DesertG писал(а):
30.04.2020{, 06:18}
Всем привет! Пришла беда от куда и не ждал. блок работает все отлично, но стоит поставить термометр, так начинается война с переменной как я понял. OneWare ругается, парни посоветуйте что можно сделать
Используйте диспетчер задач

Отправлено спустя 7 минут 27 секунд:
Не понятно зачем с измерителя заводить данные на ардуинку если можно сразу в любую СКАДА :smile37: и там отображать , сохранять ,архивировать итд???
Электронщик до мозга костей и не только

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#15

Сообщение DesertG » 30.04.2020{, 09:09}

Используйте диспетчер задач

Отправлено спустя 7 минут 27 секунд:
Не понятно зачем с измерителя заводить данные на ардуинку если можно сразу в любую СКАДА :smile37: и там отображать , сохранять ,архивировать итд???
[/quote]

Такая особенность проекта. а именно 600 блоков расположенные по всему городу.

Отправлено спустя 5 минут 27 секунд:
С пзем 17 ваще провал полный. по отдельности блок работает. только вставляю его в проект ругается на OneWire. ладно убираю градусник, все равно не запускается))) печаль полная.
Парни как можно перебить Пзем 4 которая внесена в саму программу, посмотрел документацию там у них разница только в стоп бите. у пзем4 стопбит1 у пзем 17 стоб бит 2. я уже не знаю с какой стороны подойти)))

Аватара пользователя
Rovki
Полковник
Сообщения: 4873
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

Создание блока PZEM-017! HELP!

#16

Сообщение Rovki » 30.04.2020{, 12:29}

DesertG писал(а):
30.04.2020{, 09:14}


Такая особенность проекта. а именно 600 блоков расположенные по всему городу.

И при этом общая информация не нужна ??? :shok:
Электронщик до мозга костей и не только

aidar_i
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 675
Откуда: Уфа
Имя: Айдар
Контактная информация:

Создание блока PZEM-017! HELP!

#17

Сообщение aidar_i » 30.04.2020{, 14:22}

DesertG писал(а):
30.04.2020{, 06:18}
OneWare ругается, парни посоветуйте что можно сделать
В файле библиотеки OneWire.cpp и измените строку
#if defined(__AVR__)
на
#if 0
В версии 2.3.5 это 552 строка.
Если у Вас версия другая. со строки. которая указана в ошибке. отнимите 2.

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#18

Сообщение DesertG » 30.04.2020{, 18:54}

aidar_i писал(а):
30.04.2020{, 14:22}
DesertG писал(а):
30.04.2020{, 06:18}
OneWare ругается, парни посоветуйте что можно сделать
В файле библиотеки OneWire.cpp и измените строку
#if defined(__AVR__)
на
#if 0
В версии 2.3.5 это 552 строка.
Если у Вас версия другая. со строки. которая указана в ошибке. отнимите 2.
Спасибо огромное. помогло! ругаться перестало но все равно не работает(( после компиляции и загрузки мега просто висит((( Парни сколько будет стоить блок на основе Пзем 4? а то я так долго буду. я конечно попытаюсь переточить но боюсь что мозг сломаю.

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#19

Сообщение DesertG » 01.05.2020{, 08:57}

заметил закономерность. только вставляю в проект веб сервер сразу плата перестает работать после прошивки опрос пземок не идет :smile390:

Отправлено спустя 8 минут 41 секунду:
да что за дела. если я вебку раскручиваю на шилде W5100 то все работает. и экран работает 2004. только запускаю на J60 все проект весь висит)))) ну как говориться уже близок к тхепиенду

Отправлено спустя 3 часа 3 минуты 4 секунды:
Парни я уже близок! все работает кроме... почему то переменные не передаются то есть на ком порт данные идут а вот на float PZEMVoltage; float PZEMCurrent; float PZEMPower; float PZEMEnergy; переменные нули((((

DesertG
Рядовой
Сообщения: 14
Зарегистрирован: 15.03.2020{, 13:13}
Репутация: 0
Имя: Евгений

Создание блока PZEM-017! HELP!

#20

Сообщение DesertG » 03.05.2020{, 14:34}

Парни помогите плиз! почему в переменную не идет ничего(((( а следовательно и на экране нули. вроде все как положено :( на порт вся инфа летит нормально
Вложения
com.png

Ответить

Вернуться в «Разработка пользовательских блоков»