Author Topic: Комуницирање со електрични броила  (Read 5051 times)

Offline NerdOmega

  • Нов член
  • *
  • Posts: 22
Комуницирање со електрични броила
« Opened on 28.09.2019, Saturday, 23:24:19 (Edited 29.09.2019, Sunday, 03:26:10) »
Паметните мерачи за електрична енергија веке се насекаде, но ретко кој имал желба или можност да си поигра со нив. За еден проект дел од задачите беше да се комуницира со електричен мерач со цел автоматски да се исчитува потрошената енергија. "Пациентот" кој ми падна мене во раце е марка Makel модел:C500.KOY.2256, е сега бидејќи живееме во Македонија а мерачот е турски може да се каже дека документацијата беше на ниво ;D. Бидејќи нема никаква документација мора да се тргне по потешкиот пат.


Прво што треба да се одреди е начинот на кој може да комуницира уредот од рандом пдф на интернет ги најдов следните информации.

Страна 7
Quote
Supports TS EN 62056-21 protocol on optic port for communication and programming needs.
An optional RS485 communication port is available for AMI/AMR applications.
.
За да ги продаваат на интернационални стандарди мерачите мора да се држат до некој стандард што во нашиот случај е EN 62056-21. Бидејќи стандардот е интернационален спецификациите за истиот ги има на интернет тука. Ова е првата информација која служи како отскочна даска со цел да се најде начин да се комуницира со уредот.

По спецификациите уредот комуницира преку стандард оптичка порта, како и опционални RS232 и RS485. Поради тоа што уредите ке се отчитуваат константно одлучив да не ја користам оптичката порта па се решив за комуникација со кабел. Наредниот проблем е што од надвор неможе да се утврди кој стандард за комуникација го користи мојот пациент. По бушење на пломбите  :P за баждарење го отворив уредот и ги следев 3-те пинови (A/RX, B/TX, GND) низ плочата и најдов дека се поврзани со универзалниот MAX232, Тоа е се што треба за да се знае кој стандард за комуникација го користи мерачот.

До сега познато е кој стандард за комуникација го користи уредот и кој протокол ни треба за да комуницираме со него. Овие информации се доволни за да се реши проблемот и да се искомуницира со уредот, следно е да се проба да се искомуницира со уредот. Користејќи стандард USB-RS232 конвертер се поврзав со уредот и почнав да му пракам команди со цел да искомуцирам со него. Читајќи го стандардот за комуникација објаснато е дека за да се исчита мерачот треба првин да му се прати низа симболи за иницијализација на уредот.
Стрингот се праќа со брзина од 300 бауди, бидејќи се комуницира со уредот преку RS232 не е потребно да се наведи адресата на уредот бидејќи и онака може да се комуницира само со еден уред преку RS232.
Од стандардот за комуникација исто така ги имаме и параметрите за RS232:
-Baudrate 300
-Parity EVEN
-Stop-bit 1
-Byte-Size 7
По праќање на /?! преку сериската порта добиваме.
БИНГО !!  :D

Наредно според стандардот за да одчитаме вредностите треба да се одбере мод за комуникација и да се прати соодветниот стринг. Бидејќи поради некоја причина неможев да ги преработам мод А и Б морав да го искористам мод Ц.


Од шаблонот се гледа дека отчитувањето се одвива во четири чекори:
-Иницијализација (/?!)
-Идентификација на уред (/MSY5<1>C500.K0Y.2256 каде MSY5 е индентификација на производител,<1> е адреса на уред и C500.K0Y.2256 е модел на уред. )
-Барање на информации
-Исчитување

До сега се успешни првите два чекори, за да побараме информации од уредот треба да го пратиме соодветниот стринг
Структура на стринг
Code: [Select]
ACK 0 Z mode CR LF-ACK 0. За да се даде на знаење на уредот дека сме примиле порака од него
-Z. Овозможува да се премине на друг баудрејт за побрзо отчитување на податоци кодирањето е следно.
- 0 300 Baud
- 1 600 Baud
- 2 1200 Baud
- 3 2400 Baud
- 4 4800 Baud
- 5 9600 Baud
- 6 19200 Baud
-mode. Означува во кој мод сакаме да го ставиме мерачот кодирањето е следно.
-0. Data readout
-1. Programming mode
-2. Manufacturer specific
-3-5 и A-Z. Reserved for future applications.
-6-9. Мanufacturer specific.
Бидејќи сакаме да исчитаме податоци со 9600 baud. А со експериментација открив дека мод 7 ги исчитува сите податоци кои ми требаат(0 е само потрошувачка, 6 е потрошувачка со евтини и скапи тарифи додека 7 е скоро целосно исчитување на OBIS кодовите.) Праќаме ACK 0 5 7 CR LF преку сериската порта.

Бинго2 !!

Сега се што останува е да се автоматизира оваа процедура и да се запишат податоците на некој начин. Бидејќи најлесно ми е да работам со .csv формат за чување податоци и има најмногу алатки за визуелизација на истите јас се одлучив да го направам тоа.

Прикачената пајтон скрипта автоматски бара USB-Serial конвертер и преку таа порта комуницира со мерилото. Податоците ги сортира го стандард OBIS нотација и ги одбира кои податоци треба да се зачуваат според csv_keys листата и ги назначува по имињата зададени со csv_columns во фајлот со име record.csv. Во скриптата е и стандард Modbus TCP имплементација(минимална) бидејќи јас морав потоа да ги пракам податоците на PLC кое е поврзано со SCADA систем(имплементацијата на тоа ке ја оставам за друга ден  ;) ).

Со тоа завршува малата ексапада во стандарди, непознати мерачи и немање документација. Ако некој од форумот има пристап до старо броило од ЕВН кое е во исправна состојба многу би сакал да пробам со него да искомуницирам како и да ги испробам остатокот од алатките кои беа развиени за проектот, ако некој се реши да ми го даде мерачот ке дојдам лично да го земам и ке му бидам бескрајно задоволен додека пак тоа што ке го откријам ке го споделам на форумот.

П.С. Начинот на комуникација е идентичен преку оптичката порта и сериската порта која ја искористив јас. Ако некој сака може комотно да најде оптички читач на алиекспрес или слично и да одчитува мерачи.

Ако некој има сугестии или повеке информации за OBIS кодови или програмирање на електрични мерачи го молам да сподели со сите.

Offline GigaWatt

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 12890
  • Gender: Male
  • Не фалширам
"Пациентот" кој ми падна мене во раце е марка Makel модел:C500.KOY.2256, е сега бидејќи живееме во Македонија а мерачот е турски може да се каже дека документацијата беше на ниво ;D.

Ауууу, добро е што не бил Кинески... документација... компир ;D... „снаџи се па живи“ документација ;D.

Поради тоа што уредите ке се отчитуваат константно одлучив да не ја користам оптичката порта па се решив за комуникација со кабел.

Да не напоменуваме дека, апсолутно непотребно е да се користи оптика за толку мал квантум на податоци ;). А и доста поскапо, од аспект на каблирање ;).

Што софтвер користеше за SSH/Telnet/RS-232 комуникација? PuTTY?

Со тоа завршува малата ексапада во стандарди, непознати мерачи и немање документација. Ако некој од форумот има пристап до старо броило од ЕВН кое е во исправна состојба многу би сакал да пробам со него да искомуницирам како и да ги испробам остатокот од алатките кои беа развиени за проектот, ако некој се реши да ми го даде мерачот ке дојдам лично да го земам и ке му бидам бескрајно задоволен додека пак тоа што ке го откријам ке го споделам на форумот.

Колку старо ;D? Ако мислиш на аналогните... може само механички да комуницираш со нив ;D. И да, имам таков, ако сакаш ќе ти го дадам, но нема да ти врши работа ;D.
It's not schizophrenia... It's just a voice in my head...

"This is really a generic concept about human thinking - when faced with large tasks we're naturally inclined to try to break them down into a bunch of smaller tasks that together make up the whole."

"Newton's third law: The only way humans have ever figured out of getting somewhere is to leave something behind."

Offline NerdOmega

  • Нов член
  • *
  • Posts: 22
Почетно за тестирање користев RealTerm ми се свиѓа многу бидејќи ги има сите можни опции за терминал од даталогинг, прислушкување итн. како и поддршка за скриптирање со него. После тоа сета комуникација е со пајтон автоматизирана.

А за броило не сум се изразил убаво сакам "старо" но да биде од новите броила кој имаат можност за отчитување со оптичка порта или со жици. Знаејќи ги ЕВН знам дека нема да бидат срекни ако видат жици поврзани со нивен уред во работна состојба па затоа не ризикувам со моите броила.

Offline GigaWatt

  • Администратор
  • Топ Експерт
  • *****
  • Posts: 12890
  • Gender: Male
  • Не фалширам
Почетно за тестирање користев RealTerm ми се свиѓа многу бидејќи ги има сите можни опции за терминал од даталогинг, прислушкување итн. како и поддршка за скриптирање со него.

Да, го имам користено ;). И RealTerm е супер ;).

А за броило не сум се изразил убаво сакам "старо" но да биде од новите броила кој имаат можност за отчитување со оптичка порта или со жици. Знаејќи ги ЕВН знам дека нема да бидат срекни ако видат жици поврзани со нивен уред во работна состојба па затоа не ризикувам со моите броила.

Ако најдам некаде некое, ќе ти го понудам ;).
It's not schizophrenia... It's just a voice in my head...

"This is really a generic concept about human thinking - when faced with large tasks we're naturally inclined to try to break them down into a bunch of smaller tasks that together make up the whole."

"Newton's third law: The only way humans have ever figured out of getting somewhere is to leave something behind."