Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2015:plc-st7580 [2016/01/17 23:52] Ján Sláčik vytvořeno |
2015:plc-st7580 [2016/01/20 16:52] (aktuální) Ján Sláčik [Rozbor zadání] |
||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Rozbor zadání ====== | ====== Rozbor zadání ====== | ||
- | Úkolem tohoto projektu je demonstrovat datový tok po silovém vedení a to ve standardní napájecí síti 230 VAC/50 Hz. Zvolený komunikační kmitočet spadá do kategorie úzkopásmových technologií, tedy frekvenční rozsah je 3-500 kb/s. Pro realizaci byl vybrán vhodný integrovaný obvod ST7580 v pozici PLC modemu, s programovatelnou nosnou frekvencí do 250 kHz. Obvod mimo jiné odpovídá Evropské normě CENELEC (EN 50065), tedy tento obvod je možné nasadit i do veřejných napájecích sítí. Čip vyžaduje obsluhu externím hostitelem přes rozhraní UART. Do této pozice byl vybrán mikrokontrolér architektury ARM, typu STM32 řady F0. V rámci projektu byl vytvořen obslužný software základních funkcí obvodu ST7580, které umožňují funkční přenos po uvedeném silovém vedení. | + | Úkolem tohoto projektu je demonstrovat datový tok po silovém vedení a to ve standardní napájecí síti 230 VAC/50 Hz. Zvolený komunikační kmitočet spadá do kategorie úzkopásmových technologií, tedy frekvenční rozsah je 3-500 kHz. Pro realizaci byl vybrán vhodný integrovaný obvod ST7580 v pozici PLC modemu, s programovatelnou nosnou frekvencí do 250 kHz. Obvod mimo jiné odpovídá Evropské normě CENELEC (EN 50065), tedy tento obvod je možné nasadit i do veřejných napájecích sítí. Čip vyžaduje obsluhu externím hostitelem přes rozhraní UART. Do této pozice byl vybrán mikrokontrolér architektury ARM, typu STM32 řady F0. V rámci projektu byl vytvořen obslužný software základních funkcí obvodu ST7580, které umožňují funkční přenos po uvedeném silovém vedení. |
- | \\ ====== Princip řešení ====== | + | \\ |
- | Je vytvořená komunikační síť, kterou tvoří jednotky master a 1x slave, podle obrázku níže. | + | ====== Princip řešení ====== |
- | {{ :2015:plc-st7580:blockdiag.png |}} | + | Je vytvořená jednoduchá komunikační síť s dvěma uzly, které tvoří jednotky master a slave, podle obrázku níže. |
+ | {{ :2015:plc-st7580:blockdiag.png?750 |}} | ||
Konkrétní obvodové zapojení jednotky master je tvořeno vývojovým kitem EVALKITST7580-1 jako PLC modem a kitem STM32F0Discovery jako jednotka hostitele. Toto zapojení je totožné i pro slave. | Konkrétní obvodové zapojení jednotky master je tvořeno vývojovým kitem EVALKITST7580-1 jako PLC modem a kitem STM32F0Discovery jako jednotka hostitele. Toto zapojení je totožné i pro slave. | ||
Obslužný software je tedy implementován v hostitelských MCU, který realizuje jak komunikaci s modemem, tak komunikaci po elektrickém vedení. Vytvořený software tvoří jednotlivé funkce, které je pak v rámci aplikace možné použít jako knihovní. V textu jsou popsány jen klíčové funkční části, bez nastavení procesoru, periferií nebo některých deklarací a definicí. Zběžně je přiblížen princip komunikace s modemem a vytvořené řešení. | Obslužný software je tedy implementován v hostitelských MCU, který realizuje jak komunikaci s modemem, tak komunikaci po elektrickém vedení. Vytvořený software tvoří jednotlivé funkce, které je pak v rámci aplikace možné použít jako knihovní. V textu jsou popsány jen klíčové funkční části, bez nastavení procesoru, periferií nebo některých deklarací a definicí. Zběžně je přiblížen princip komunikace s modemem a vytvořené řešení. | ||
Řádek 167: | Řádek 168: | ||
#define ST7580_MODEM_CONFIG_BASE (0x00) | #define ST7580_MODEM_CONFIG_BASE (0x00) | ||
#define ST7580_MODEM_CONFIG_LEN (0x02) | #define ST7580_MODEM_CONFIG_LEN (0x02) | ||
- | uint8_t modemConfigIndex; /*Index where this structure is to be loaded*/ | + | uint8_t modemConfigIndex; /*Index of the MIB object (0x00)*/ |
- | uint8_t modemConfig; /*Actual configuration*/ | + | uint8_t modemConfig; /*Actual value of the MIB object*/ |
}ST7580modemConfigTypedef; | }ST7580modemConfigTypedef; | ||
Řádek 175: | Řádek 176: | ||
#define ST7580_PHY_CONFIG_BASE (0x01) | #define ST7580_PHY_CONFIG_BASE (0x01) | ||
#define ST7580_PHY_CONFIG_LEN (0x0F) | #define ST7580_PHY_CONFIG_LEN (0x0F) | ||
- | uint8_t phyConfigIndex; /*Index where this structure is to be loaded*/ | + | uint8_t phyConfigIndex; /* Index of the MIB object (0x01) */ |
uint8_t DlFreqPair[6]; /* Frequency Pair Byte 0 - 5*/ | uint8_t DlFreqPair[6]; /* Frequency Pair Byte 0 - 5*/ | ||
uint8_t DlRXControl; /*RX Control Byte 6 */ | uint8_t DlRXControl; /*RX Control Byte 6 */ | ||
Řádek 195: | Řádek 196: | ||
.phyConfigIndex = ST7580_PHY_CONFIG_BASE, | .phyConfigIndex = ST7580_PHY_CONFIG_BASE, | ||
.DlFreqPair = {0x01, 0x4F, 0xF0, 0x01, 0x19, 0x40}, | .DlFreqPair = {0x01, 0x4F, 0xF0, 0x01, 0x19, 0x40}, | ||
- | .DlRXControl = 0x0E, //master has 0E slave 0F | + | .DlRXControl = 0x0E, |
.Gain = 0x15, | .Gain = 0x15, | ||
.DlZeroCrossing = {0x00, 0x00}, | .DlZeroCrossing = {0x00, 0x00}, | ||
Řádek 235: | Řádek 236: | ||
MIB_ReadRequest, | MIB_ReadRequest, | ||
&readAddr, | &readAddr, | ||
- | ST7580_PHY_CONFIG_LEN-1, | + | ST7580_PHY_CONFIG_LEN-1, |
- | /* start at the beginning of the actual object */ | + | |
&rxPhyCfg.DlFreqPair[0], | &rxPhyCfg.DlFreqPair[0], | ||
NULL); | NULL); | ||
Řádek 449: | Řádek 449: | ||
{ | { | ||
temp = sensitivityTable[j].pfuncWrite(AppCmdRegisters + i, remaining); | temp = sensitivityTable[j].pfuncWrite(AppCmdRegisters + i, remaining); | ||
- | if(!temp) temp = 1; // safety - cannot return 0 | + | if(!temp) temp = 1; |
i += temp; | i += temp; | ||
remaining -= temp; | remaining -= temp; | ||
Řádek 532: | Řádek 532: | ||
\\ | \\ | ||
- | ====== Logická analýza komunikace ====== | + | ====== Logická analýza lokální komunikace ====== |
Uvedené průběhy na sebe horizontálně navazují, první na druhý. Zachycují lokální komunikaci jednotek master (1-PLC) a slave (2-PLC). Jedná se o žádost mastera k odeslání zprávy do elektrické sítě, úspěšné provedení, a příjem lokálního rámce obsahující přenášená data pro daný slave. | Uvedené průběhy na sebe horizontálně navazují, první na druhý. Zachycují lokální komunikaci jednotek master (1-PLC) a slave (2-PLC). Jedná se o žádost mastera k odeslání zprávy do elektrické sítě, úspěšné provedení, a příjem lokálního rámce obsahující přenášená data pro daný slave. | ||
Řádek 543: | Řádek 543: | ||
====== Videoukázka ====== | ====== Videoukázka ====== | ||
- | V následujícím videu je pouze zachyceno řízení výstupního členu uživatelským tlačítkem na Discovery kitu jednotky master. | + | V následujícím videu je zachyceno řízení výstupního členu jednotky slave, uživatelským tlačítkem na Discovery kitu jednotky master. |
{{ youtube>PO7Exa0Xi2o?900x500 |}} | {{ youtube>PO7Exa0Xi2o?900x500 |}} |