Je vais essayer d'être le plus générique possible
:
ASM 32 bits (peu importe) pour l'exemple histoire d'encourager mes contemporains.
- Lecture du moteur (fichier d'init) et stokage dans la EEPROM (j'imagine, où là ou vous avez prévu de loger de manière durable vos infos clients). Ce moteur contient donc le code client (voir la demi-clé sécuritaire pour le XOR qui permet d'éviter les scans accès).
- Le reste de la EEPROM est initialisé avec les moteurs [porteuse energie] et ["porteuse" code] (soit les deux VitesseAngulaire Energie et Code client ->
tu pourrais aussi prévoir une date de validité pour les accès restreints etc. enfin penser à la durée de ton produit et le(s) service(s) qui te fera(ient) gagner plus d'argent que tes concurrents te permettant ainsi de mieux te positionner durablement sur ce marché (aux puces)).
Pour VitesseAngulaire, il est calculé en fonction des quartz utilisés et d'une nombre d'itératrions par seconde de l'automate (par exemple 100 000/sec -> VitesseAngulaire porteuse energie = 1/100 000 -> si Hz = 200KHz 2/100 000 et, bien-sûr, si = 250 HZ 1/25 000 000 etc.)
- Lancement automate par approche du boitier/clé
(Là, t'as ta bidouille avec un bilame magnétique ou un truc équivalent... pour éviter au client l'appui sur un composant source de pannes , tu vas pas gagner ta vie avec la maintenance...)
_________________________________________________________
Load moteur:
Tu as un offset (dans l'EEPROM) datas par moteur et une struture d'offsets (donc codée en dur) pour les datas Vitesses angulaire et stokage de tes variables dans la RAM (plus sauvegarde adresse de base RAM pour stockage contexte moteurs).
(prévoir des structures suffisement importantes pour pouvoir faire de l'update moteur par simple passage devant une borne de MAJ et faire évoluer le produit sans ré-écrire le code toutes les 5 minutes)
Dans ta RAM :
Data_1 (en 32 bits adresses DWord -> offset = *4 (Bytes))
Data_2
...
Data_N
Toutes ces Datas sont initialisées au lancement par copie EEPROM -> RAM comme d'hab.
Dans ton EEPROM, structure d'offsets :
Taille structures = Offset Data_N (N*4)
0*4 (Data_1)
1*4 (Data_2)
...
N*4 (Data_N)
Tu as stoké ton adresse de base des datas et pour les atteindre tu sautes à l'adresse de base relative par:
ID_Moteur (0 ~ M ici 1 0 Porteuse Energie 1 "Porteuse" code client)
Contenu Data_2 = D$AdresseDeBase+(TailleStructure*ID_Moteur)+Data_2
(Dessine tes tables et tout deviendra limpide).
_________________________________________________________
Automate :
VarSin et VarCos sont devenus Data_A et Data_B
VitesseAngulaire Data_C
Data_D = ID Moteur courant
(les Variables A B et C pointent vers des structures de data différentes vu que l'adresse de base (qui sert au calcul) change en fonction de ID Moteur courant..):
Contenu Data_2 = D$AdresseDeBase+(TailleStructure*ID_Moteur)+Data_2
Contenu Data_A = D$AdresseDeBase+(TailleStructure*ID_Moteur)+Data_2
ensuite un tour d'automate :
Data_A = Data_A+Data_B*Data_C
Data_C = Data_B-Data_A*Data_C
-> Tu balance la purée en sortie vers ton montage de puissance push-pull...
L'automate ignore donc le contexte de travail mais il fait son boulot sagement
ce qui permet de multiplier les moteurs, pratiquer des MAJ simples et développer des services rémunérateurs.
Je ne connais pas (L)tes besoins energétiques mais il est peut-être possible de loger un simple aimant permanent dans ton boitier (la FEM nécessaire pour soulever ton EA étant à quelque chose prêt équivalente à la dépense d'energie du client (autant utiliser l'enrgie du client en plus de son argent ) pour positioner sa clé devant ton capteur passif...)
Pour le chèque tu fais comme d'hab (tu as mon numéro en Suisse
).
Si je suis pas assez clair, n'hésites pas.
Partager