12-10-2024, 09:16 PM
il y a une modif dans le code principal pour initialiser la première requête.
Ainsi, lorsqu'on vient lire la première fois au bous de "périodemillis" qui vaut 1000, les données sont prêtes dans le buffer de réception, et on les lit en quelques dizaines de ms, sans bloquer, et sans attendre.
...
/* **********************
* ****************** *
* * Tâches Coeur 0 * *
* ****************** *
**********************
*/
void Task_LectureRMS(void *pvParameters) {
if (Source == "UxIx3") {
Setup_JSY333(); // init port série
delay(100); // pour s'assurer que l'init du port série est ok coté module
PeriodeProgMillis = 1000; // la première lecture aura lieu 1000ms plus tard
Requete_JSY333(); // requête initiale au module. La première lecture aura lieu PeriodeProgMillis =1000ms plus tard.
// et les données seront déjà toutes dans le buffer de réception
}
for (; {
unsigned long tps = millis();
et ensuite, on vient lire toutes les secondes :
...
if (Source == "UxIx3") {
Lecture_JSY333();
PeriodeProgMillis = 1000;
}
... qui commence par envoyer une nouvelle demande de données pour que la fois suivante, elles soient de nouveau déjà dans le buffer de réception.
void Lecture_JSY333() {
float Tension_M1, Tension_M2, Tension_M3;
float Intensite_M1, Intensite_M2, Intensite_M3;
float PVA_M_inst1, PVA_M_inst2, PVA_M_inst3;
float PW_inst1, PW_inst2, PW_inst3;
byte Lecture333[200];
bool injection;
bool sens1, sens2, sens3;
long delta_temps = 0;
Requete_JSY333(); // <-----------------------
Ainsi, lorsqu'on vient lire la première fois au bous de "périodemillis" qui vaut 1000, les données sont prêtes dans le buffer de réception, et on les lit en quelques dizaines de ms, sans bloquer, et sans attendre.
...
/* **********************
* ****************** *
* * Tâches Coeur 0 * *
* ****************** *
**********************
*/
void Task_LectureRMS(void *pvParameters) {
if (Source == "UxIx3") {
Setup_JSY333(); // init port série
delay(100); // pour s'assurer que l'init du port série est ok coté module
PeriodeProgMillis = 1000; // la première lecture aura lieu 1000ms plus tard
Requete_JSY333(); // requête initiale au module. La première lecture aura lieu PeriodeProgMillis =1000ms plus tard.
// et les données seront déjà toutes dans le buffer de réception
}
for (; {
unsigned long tps = millis();
et ensuite, on vient lire toutes les secondes :
...
if (Source == "UxIx3") {
Lecture_JSY333();
PeriodeProgMillis = 1000;
}
... qui commence par envoyer une nouvelle demande de données pour que la fois suivante, elles soient de nouveau déjà dans le buffer de réception.
void Lecture_JSY333() {
float Tension_M1, Tension_M2, Tension_M3;
float Intensite_M1, Intensite_M2, Intensite_M3;
float PVA_M_inst1, PVA_M_inst2, PVA_M_inst3;
float PW_inst1, PW_inst2, PW_inst3;
byte Lecture333[200];
bool injection;
bool sens1, sens2, sens3;
long delta_temps = 0;
Requete_JSY333(); // <-----------------------
V12.0 modifiée récurrence d'interrogation serveurs, RTE, et code UxIx3. 1 serveur RMS UxIx3, 1 client Triac CE + 1 client SSR CE. 1 client SSR sur CE tri sur 1 serveur Linky réf. CACSI. Variateurs de fréquence sur Piscine et Spa.
6 panneaux (2 SO 2 S, 2 SE ) 425Wc produisent 13kWh de jour actuellement.
6 panneaux (2 SO 2 S, 2 SE ) 425Wc produisent 13kWh de jour actuellement.