Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > MATLAB > Simulink
Simulink Forum d'entraide sur la plate-forme Simulink
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/12/2012, 12h11   #1
Qhadehar
Invité de passage
 
Jonathan Gatt
Inscription : mars 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Jonathan Gatt

Informations forums :
Inscription : mars 2010
Messages : 8
Points : 0
Points : 0
Par défaut [Simulink vers ControlDesk] Problème de coder pour un embbeded block

Bonjour,

J'espère que vous aller pouvoir m'aider :/
Voilà, j'ai un problème au niveau de Simulink lorsque je veut compiler un programme pour faire une interface sous ControlDesk,
Mon programme contient un bloc embbeded avec une fonction me rapportant l'heure du système et qui me génère un signal commandant le reset d'une intégrale à une heure spécifique chaque jour.
Le problème est que Matlab ne veut pas compiler ce bloc fonction à cause des fonctions "now" et "datevec" (j'ai aussi essayé avec la fonction "clock"), voici mon bloc fonction :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function Signal = fcn %Le bloc n'a pas d'entrée et une unique sortie "Signal"
eml.extrinsic('now'); %Retourne la date et l'heure sous forme "serial date number"
eml.extrinsic('datevec'); %Convertit le format "serial date number" en vecteur
Y = 0;
M = 0;
D = 0;%Initialisation des valeurs des variables
H = 0;
MN = 0;
S = 0;
[Y, M, D, H, MN, S] = datevec(now);% On attribue les variable au vecteur temps

if H==00 % Si l'heure est "0" = minuit
    if MN==00 %Si les minutes sont à 0
        if S==0 % si les secondes sont à 0
            Signal=1; %La sortie du bloc "Signal" vaut 1
        else
            Signal=0;%Sinon la sortie du bloc "Signal" vaut 0
        end
    else
        Signal=0;
    end
else
    Signal=0;
end
end
J'ai cru comprendre que Matlab ne compilait pas certaine fonctions pour ControlDesk et qu'il fallait écrire le code de la fonction mais "clock" ou "now" n’exécute pas vraiment des instructions Matlab :/
Qhadehar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 13h02   #2
duf42
Modérateur
 
Avatar de duf42
 
Homme
Formateur en informatique
Inscription : novembre 2007
Messages : 2 908
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 2 908
Points : 4 381
Points : 4 381
Bonjour,

Pour palier ce problème, n'aurais-tu pas la possibilité de passer l'heure en signal d'entrée de ta fonction (depuis ControlDesk)?

Duf
__________________
Définir les signaux d’entrée d’un modèle Simulink sur le blog Vers MATLAB et au-delà

Modérateur MATLAB

Au boulot : Windows 7 , MATLAB 8.00 (r2012b)
A la maison : ArchLinux mais pas MATLAB
duf42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2012, 13h41   #3
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
une idée comme ca :
tu as un bloc clock sous simulink que te donnes le temps depuis le début de ton programme
si au lancement de ton programme tu affectes la date en cours (now) à une variable (toto = now; dans model properties/callbacks/initfonction) que tu récupères via un block constante et que tu sommes à la sortie du bloc clock, ca te donne l'heure (probablement avec un léger décalage entre l'appel à initfonction et le début réel du programme)

tu peux aussi le faire via un script qui lance ton programme via sim, avec un retard probablement plus grand

ça marche à condition de ne pas mettre ton programme en pause !

sinon pour savoir si une date toto correspond à minuit il suffit de vérifier que toto est un entier
pb : en simulation/exécution temps réel tu tombera probablement jamais sur minuit pile : prévoir une marge de tolérance (toto - floor(toto)<tol) plutôt qu'un test d'égalité (sachant qu'une seconde = 1.1574e-005)
du coup tu peux aussi le faire sans bloc matlab function, mais juste des bloc floor et comparaison que tu branches sur l'entrée initialisation de l'integrale
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2012, 16h25   #4
Qhadehar
Invité de passage
 
Jonathan Gatt
Inscription : mars 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Jonathan Gatt

Informations forums :
Inscription : mars 2010
Messages : 8
Points : 0
Points : 0
Bonjour,

Merci pour vos réponses !

Je vois pas trop comment faire depuis ControlDesk donc j'ai essayé la deuxieme proposition :

J'ai créé ma fonction temps à l'initialisation du model :

Code :
1
2
3
4
5
Time = now;
Time = Datevec(Time);
H = Time(:,4);
MN = Time(:,5);
S = Time(:,6);
J'ai préféré utiliser les heures, minutes, secondes au lieu du format numérique car il contient aussi la date (et donc inutile puis je voyais pas comment le comparer après)

Une fois mes variables récupérées au démarrage et stockées dans le workspace, j'ai pensé faire un compteur dans mon model qui compterais le temps et actualiserais les variables Heure, minutes, secondes, j'ai donc commencé ça dans un embbeded block (peur de produire trop de décalage en fesant ca en blocs et plus simple à faire en code) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function [H1, MN1, S1, Signal] = fcn(H, MN, S, compteur)
  
if compteur==1 %1s s'est passée depuis le dernier top
        
    if S==59 
         S1=0;
         if MN==59 
            MN=0;
            if H==24 
                H1=0;
            else
                H1=H+1;
            end
         else
             MN1=MN+1;
         end
    else
        S1=S+1;
    end
end

H1=H;
MN1=MN;
S1=S;
    
if H==0
    if MN==0
        if S==0
            Signal=1;
        else
            Signal =0;
        end
    else
        Signal =0;
    end
else
    Signal =0;
end
end
Les entrées de mon bloc (3) embbeded sont des bloc constante avec mes variable heure/minute/seconde + 1 entrée compteur pour donner 1 top chaque seconde.

Les sorties sont des blocs to workspace où j'ai reglé le "limit point to last" à 1.

Mes questions :

J'ai trouvé comment faire un compteur avec un top chaque seconde (mon pas de simulation est fixe en 10e-3 en solver ode1) : j'utilise un "pulse generator" en "sample based" avec une amplitude de 1 et une période de 1000 samples.

Une chose bizare, je pensais qu'il fallait plutot 100 que 1000 (100*10-e3 = 1s non ?)

J'utilise ensuite une variable dont je change la valeur sur ce top dans un sous-système avec trigger et je remet à 0 cette constante par la suite.

Mon problème :

Le bloc a l'air de fonctionner (mes sorties changent mais...1 seule fois)
J'ai un problème d'importation/exportation pour mes valeurs, je pensais utiliser des blocs d'importation "constante" mais cela ne marche que pour la valeur initiale, le bloc ne se remet pas à jour quand la variable change.

J'aimerais donc utiliser des bloc from workspace, problème : je n'ai pas de composante temps, il s'agit d'une simple variable, comment faire ?
Qhadehar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 09h41   #5
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
hello

je crois que tu te complique la vie
un conseil : oublie "matlab embedded" pour faire ca
les blocs simples iront aussi bien (et ne produiront pas plus de décalage)

ensuite tu as le bloc "clock" plus approprié à mon avis que "pulse generator"

sinon moi en général pour faire ce genre de chose, j'utilise un bloc "integrator" avec en entrée un bloc "constant" à 1 pour faire un compteur
en sortie de ce bloc tu récupèrera le temps (en seconde) écoulé depuis la dernière initialisation de ton bloc "integrator"
il suffit de l'initialiser à la valeur H*3600+MN*60+S (valeurs venant de ta fonction temps à l'initialisation du modèle) en utilisant le bloc IC et de brancher à la sortie de ton bloc integrateur un bloc "compare to constant" parametré comme ">=3600*24"

la sortie de ce bloc se mettre à 1 à minuit, et il suffit de la reboucler sur l'entrée "reset" du bloc integrator (avec un retard pour éviter les boucles algébriques).
je réinitialise le bloc integrateur à 1 car mon sample time vaut 1 et que j'ai un retard (1/z) de 1s sur l'entrée reset

cf schéma joint

le bloc intégrateur a ici un sample time de 1 s et il faut le paramétrer pour une initialisation externe
tu peux laisser "-1" pour le sample time, dans ce cas rajoutes un bloc "weighted sample time" pour diviser le bloc constante "1" en entrée principale de l’intégrateur (ou remplace en dur 1 par 1e-3)

un bloc "rate transition" peut t'être utile pour rebranché ta sortie sur ton système qui a probablement un pas de temps different.

Fabien
Images attachées
Type de fichier : jpg Capture.jpg (26,2 Ko, 6 affichages)
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 10h22   #6
Qhadehar
Invité de passage
 
Jonathan Gatt
Inscription : mars 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Jonathan Gatt

Informations forums :
Inscription : mars 2010
Messages : 8
Points : 0
Points : 0
C'est vrai que quand je vois ta réponse, je me dit que c'était peut-être une usine à gaz...

Donc du coup je viens d'appliquer ta méthode avec un mux sur l'initialisation pour récupérer les 3 constantes (je connaissais pas le bloc IC :/)

D'ailleurs, à quoi sert le Data type conversion ?

Bon sinon cela fonctionne, il me reste juste un problème de temps réel à régler,
Mon model est réglé en 0 to inf avec un pas fixe de 10e-3 en ode5 et du coup il a l'air de calculer beaucoup trop vite, l'intégrale compte environ 100 000 points en 10s :/

Mon ordinateur est trop rapide ? ^^ Il réalise la même simulation (avec le même pas fixe) de 0 à 86400 (au lieu de inf) en 4s.
Qhadehar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 10h49   #7
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
>>D'ailleurs, à quoi sert le Data type conversion ?
à rien en fait. au début j'ai mal branché mes fils et j'avais un pb de data type puis quand j'ai rebrancher je l'ai pas enlevé
d'ailleurs le 1/z est aussi peut être facultatif

le bloc IC est très utile pour avoir une initialisation differente à t=0 et autre temps de simulation
à quoi sert ton mux ?? là je ne vois pas l'utilité

normalement en 10s tu devrait avoir 10*1e3 = 10 000 points !!
tu es sur d'être à ce pas de temps
fais un
Code :
1
2
3
min(diff(tout));
max(diff(tout));
mean(diff(tout));
après une simu de 10 s

ou alors tu as modifier le refine factor dans la configuration (2eme onglet)
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 10h51   #8
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
Citation:
Envoyé par Qhadehar Voir le message
C'est vrai que quand je vois ta réponse, je me dit que c'était peut-être une usine à gaz...
l'utilisation de embedded doit être rarissime !! en général quand on y a recours c'est pour faire une usine à gaz alors que souvent il y a une solution simple
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 11h10   #9
Qhadehar
Invité de passage
 
Jonathan Gatt
Inscription : mars 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Jonathan Gatt

Informations forums :
Inscription : mars 2010
Messages : 8
Points : 0
Points : 0
Alors le mux c'était pour récupérer les 3 constantes H, MN, et S pour les utiliser dans le IC du coup,

Min, max et mean donnent tous les trois 0.01

Pas trouvé l'option refine factor :/

Confirmé, sur une simulation à l'infini : 5000 points en 10s
Qhadehar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 14h01   #10
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
alors :
1/ tu n'as pas compris ce que fait IC et là tu as fait une boulette
IC est un bloc avec une entrée u et une sortie y et un paramètre p
lors du premier pas de la simulation, y=p, ensuite y=u
ici cela sert à initialiser l'intégrale au temps courant (en seconde depuis minuit) au lanchement de la simu puis à 1 (valeur du bloc constante relié en entré) ensuite
de plus H, MN et S peuvent être utilisés directement dans n'importe quel bloc (comme je l'ai fait : écris directement dans le paramère du bloc 3600*H + 60*MN + S) pas besoin de passer par des blocs "constant" + mux
là je serais curieux de voir une copie d'écran de ton système, mais je parie une bière que ça fait n'importe quoi

2/ne cherche par refine factore, si tu connais pas, tu ne l'as probablement pas utiliser (à moins que tu ne soit partis d'un modèle fait par quelqu'un d'autre). De plus ce parametre n'existe pas en fixed step

3/ si min, max et mean valent 0.01 cela signifie que :
- tu es bien en fixed step et que la valeur du pas est de 1e-2 et non 1e-3 !!!!! c'est bien ce que tu voulais ??!!
attention, ne jamais écrire 10e-3 car ça veux dire 10*1e-3 = 1e-2 !!!!

4/ du coup tu devrais avoir 1000 points en 10 secondes !!
pourquoi 5000 ??
fait donc un
après une simulation de 5s

comment fait tu pour voir que tu as 5000 points ?? surtout sur une simulation sur l'infini !
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2012, 17h41   #11
Qhadehar
Invité de passage
 
Jonathan Gatt
Inscription : mars 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Jonathan Gatt

Informations forums :
Inscription : mars 2010
Messages : 8
Points : 0
Points : 0
Merci pour l'explication, effectivement j'avais mal interprété le bloc, je pensais que les paramètres utilisés dans la formule devait être branchés en entrées, bref c'est corrigé.

length(tout)=501;

Sinon pour expliquer ce que je voudrais : Il s'agit de mesurer via une carte DSPACE 1104 le courant/tension d'une installation solaire, calculer la puissance instantanée (chaque seconde) puis intégrer cette puissance (chaque seconde) pour avoir l'énergie (* 1/3600 pour avoir en wh) et de recalculer cette énergie chaque jour (donc le reset à minuit).

En fait quand je disais 5000 points avec mon pas de calculs c'était en simulation jusqu'à l'infini pendant 15 secondes (réelles sur ma montre) et en regardant la sortie de l'intégrale du signal de reset avec un scope.

En tout cas, merci d'accorder du temps à mon problème, cela servira peut-être plus tard à d'autres en même temps.
Qhadehar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 09h00   #12
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
Citation:
Envoyé par Qhadehar Voir le message
length(tout)=501;
donc c'est bien ca, tu as 100 point par seconde, rassurant

Citation:
Envoyé par Qhadehar Voir le message
En fait quand je disais 5000 points avec mon pas de calculs c'était en simulation jusqu'à l'infini pendant 15 secondes (réelles sur ma montre) et en regardant la sortie de l'intégrale du signal de reset avec un scope.
argghhhhhhhhhhhh
1/ par defaut le bloc scope de montre que les 5000 derniers points !
va voir dans les parametres du bloc (2eme onglet)
2/jetes ta montre, tu n'en a pas besoin avec matlab !!
pour savoir combien tu as de points en 5s, il faut lancer une simu de 5s (et pas plus) et calculer la longueur de ton vecteur (length) :
soit tout soit un autre que tu récupères via un bloc "to workspace" ou mieux, en loggant ton signal (signal properties en clic droit sur le trait représentant le signal)

d'ailleurs si tu n'as pas besoin de l’énergie en temps réel, tu peux aussi le faire en post traitement (cad après avoir arrêter ta simu) et récupérant un vecteur puissance (bloc to workspace) et en en faisant l’intégrale sous matlab (trapz)
du coup tu peux à loisir découper ton vecteur puissance par jours
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 12h50   #13
Qhadehar
Invité de passage
 
Jonathan Gatt
Inscription : mars 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Jonathan Gatt

Informations forums :
Inscription : mars 2010
Messages : 8
Points : 0
Points : 0
Oui, je connaissais la limite des 5000 points

Je crois que je n'ai pas vraiment compris l'utilisation du temps réel en fait :

-Mon désir est d'avoir un calcul par seconde

-Lorsque je règle ma simu sur un temps fini (ex : 3600s avec un pas de 1s),
j'ai bien 3600 valeurs (donc parfait), le calcul matlab se fait en 3s réelles.

-Lorsque je règle ma simu sur un temps infini (inf avec un pas de 1s), j'ai 23 000 valeurs sur 10s réelles.

=> Le but final du programme est d'être démarré à une heure x et jamais arrêté par la suite, l'utilisateur va consulter les données calculées sur une interface ControlDesk qui affiche l'énergie renvoyée par l'intégrale dans Simulink et donc j'aimerais le fonctionnement sur un temps fini (1 valeur par seconde) mais en temps réel avec un programme qui ne s’arrête jamais, je commence à croire que le fonctionnement de Matlab n'autorise pas ce cas de figure (1 calcul par seconde avec un programme qui ne s’arrête pas) :/
Qhadehar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 14h02   #14
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
en simulation, simulink calcule aussi vite qu'il peut
donc une simulation annuelle peut se calculer en quelques secondes

après je ne connais pas du tout ControlDesk
mais bon, j'ai fait des choses équivalente sous des superviseurs

voila comment je m'y prend :
1/ il faut compiler ton modèle (donc avoir la toolbox qui va bien, aka simulink coder, et une cible pour ControlDesk probablement)
2/ lancer le programme compilé indépendamment de simulink sur une cible temps réelle (ControlDesk ?)
3/ éventuellement lancer le programme simulink en mode "externe" pour suivre en temps réel les calculs (cette 3eme phase n'est pas obligatoire puisque ton programme compilé aura des sorties puissance, énergie que tu doit pouvoir afficher sous controldesk)

peut être peut tu aussi ne pas avoir à compiler et utiliser le mode "externe" quand même ... regarde du coté de xpc target ou Real-Time Windows Target

sans ça tu es en mode "simulation rapide", donc pas temps réel

sinon tu n'a pas besoin forcement de simulink :
trapz + matlab coder devrait pouvoir suffire à ton problème
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 14h36   #15
Qhadehar
Invité de passage
 
Jonathan Gatt
Inscription : mars 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Jonathan Gatt

Informations forums :
Inscription : mars 2010
Messages : 8
Points : 0
Points : 0
Tout à fait ! C'est ce que je fait

J'utilise Tools->RealTime Workshop pour compiler mon code et ensuite l'importer sous ControlDesk !

J'ai également remarqué les toolboxs xPC target explorer et External mode control Panel.

Je vais tester de compiler mon programme puis de le lancer depuis ControlDesk dans les jours à venir (pas présent sur mon ordinateur).

J'utilisais Simulink pour les bloc ADC qui font l'acquisition des mesures faites sur ma carte DSPACE mais c'est sans doute fesable en code également.

Je testerais la compilation puis le lancement depuis ControlDesk sous peu.

Merci.
Qhadehar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2012, 16h16   #16
le fab
Modérateur
 
Avatar de le fab
 
Homme Fabien Grand-Perret
Développeur informatique
Inscription : mars 2005
Messages : 467
Détails du profil
Informations personnelles :
Nom : Homme Fabien Grand-Perret
Âge : 37
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : mars 2005
Messages : 467
Points : 805
Points : 805
Citation:
Envoyé par Qhadehar Voir le message
Tout à fait ! C'est ce que je fait

J'utilisais Simulink pour les bloc ADC qui font l'acquisition des mesures faites sur ma carte DSPACE mais c'est sans doute fesable en code également.
autant pour moi, c'est une très bonne raison

donc je te confirme qu'il faut compiler puis lancer depuis controlDesk pour etre temps réel. et pour le debug, tu as une external mode avec real time workshop
le fab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h48.


 
 
 
 
Partenaires

Hébergement Web