Documentation contextualisée par rapport à la variante de la maquette numérique et réelle

This commit is contained in:
Philippe Roy 2024-01-26 05:07:47 +01:00
parent a6af5b269e
commit c80d766878
8 changed files with 89 additions and 45 deletions

View File

@ -42,25 +42,32 @@ card_pin_text_grove=""" Le brochage est un dictionnaire d'association \n des obj
Les objets numériques sont : 'ba_0', 'ba_1', \n 'pc_0', 'pc_1', 'voy_0' et 'voy_1'.
Pour le moteur (maquette Grove) : 'mot_s' \n (sens, 0 ou 1) et 'mot_v' (vitesse, 0 à 255)."""
card_pin_text_autoprog=""" Le brochage est un dictionnaire qui permet \n d'associer les objets 3D du jumeau \n numérique aux broches du jumeau réel,
card_pin_text_autoprog=""" Le brochage est un dictionnaire d'association \n des objets numériques aux broches réelles.
brochage = { nom:[type, broche, mode] } :
- nom : nom de l'objet 3D,
- type : a (analogique) ou d (binaire),
- broche : numéro de la broche de carte,
- mode : i (entrée), o (sortie) ou p (pwm).
Par exemple : brochage = { 'ba_0':['d',2,'i'] }.\n
Les objets numériques du jumeau sont : \n 'ba_0', 'ba_1', 'pc_0', 'pc_1', 'mot_m', \n 'mot_d', 'voy_0' et 'voy_1'."""
Les objets numériques sont : 'ba_0', 'ba_1', \n 'pc_0', 'pc_1', 'voy_0' et 'voy_1'.
Pour le moteur (maquette AutoProg) : \n 'mot_m' et 'mot_d'."""
card_pin_url=[]
system_card_description.update({"pin-card" : [card_pin_title, [card_pin_text_grove, card_pin_text_autoprog] , card_pin_url]}) # Deux descriptions
# Données
card_data_title="Accès aux données"
card_data_text=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('ba_0').\n
card_data_text_grove=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('ba_0').\n
Entrées/sorties : 'ba_0', 'ba_1', 'pc_0', 'pc_1', \n 'mot_m', 'mot_d', 'voy_0' et 'voy_1'.\n
Variables réels (si il y a jumelage) : 'ba_0_r', \n 'ba_1_r', 'pc_0_r', 'pc_1_r', 'mot_v', 'mot_s' \n et 'mot_vitesse_r'.\n
Autres variables : 't' (temps), 'mot_angle', \n 'mot_vitesse', 'cabine_z'."""
card_data_text_autoprog=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('ba_0').\n
Entrées/sorties : 'ba_0', 'ba_1', 'pc_0', 'pc_1', \n 'mot_m', 'mot_d', 'voy_0' et 'voy_1'.\n
Variables réels (si il y a jumelage) : 'ba_0_r', \n 'ba_1_r', 'pc_0_r', 'pc_1_r'.\n
Autres variables : 't' (temps), 'mot_angle', \n 'mot_vitesse', 'cabine_z'."""
card_data_url=[]
system_card_description.update({"data-card" : [card_data_title, card_data_text, card_data_url]})
system_card_description.update({"data-card" : [card_data_title, [card_data_text_grove, card_data_text_autoprog], card_data_url]}) # Deux descriptions
# Monitoring
card_daq_title="Acquisition de données"
@ -77,15 +84,22 @@ system_card_description.update({"daq-card" : [card_daq_title, card_daq_text, car
# Ouvrir et fermer
card_movement_title="Monter et descendre"
card_movement_text=""" mot_m(True | False) -> Monter la cabine.
card_movement_text_grove=""" mot_m(True | False) -> Monter la cabine.
mot_d(True | False) -> Descendre la cabine. \n
mot_vitesse(vitesse) -> Change la vitesse \n du moteur numérique en rad/s.
mot_vitesse_r(vitesse) -> Change la vitesse \n du moteur réel (0-255).
Si 'vitesse' est ommis, elle sera réinitialisée.\n
pc_0() -> Capteur présence cabine niveau 0.\n Retourne True si la cabine est au niveau 0.
pc_1() -> Capteur présence cabine niveau 1.\n Retourne True si la cabine est au niveau 1."""
card_movement_text_autoprog=""" mot_m(True | False) -> Monter la cabine.
mot_d(True | False) -> Descendre la cabine. \n
mot_vitesse(vitesse) -> Change la vitesse \n du moteur numérique en rad/s.
mot_vitesse_r(vitesse) -> Change la vitesse \n du moteur réel (0-255) (maquette Grove).
Si 'vitesse' est ommis, elle sera réinitialisée.\n
pc_0() -> Capteur présence cabine niveau 0.\n Retourne True si la cabine est au niveau 0.
pc_1() -> Capteur présence cabine niveau 1.\n Retourne True si la cabine est au niveau 1."""
card_movement_url=[]
system_card_description.update({"movement-card" : [card_movement_title, card_movement_text, card_movement_url]})
system_card_description.update({"movement-card" : [card_movement_title, [card_movement_text_grove, card_movement_text_autoprog], card_movement_url]})
# Pupitre
card_board_title="Pupitre"

View File

@ -152,8 +152,11 @@ def start(fct):
##
def variant(variant_num):
var_txt = [
"variante 1 : maquette Grove",
"variante 2 : maquette AutoProg"]
if variant_num != scene.objects['System']['variant']:
print ("Variante de la maquette numérique :", variant_num)
print ("Variante des maquettes numérique et réelle :", var_txt[variant_num-1])
scene.objects['System']['variant']=variant_num
##

View File

@ -60,17 +60,22 @@ card_pin_text_autoprog=""" Le brochage est un dictionnaire d'association \n des
Pour le moteur (maquette AutoProg) : \n 'mot_o' (ouvrir) et 'mot_f' (fermer) """
card_pin_url=[]
system_card_description.update({"pin-card" : [card_pin_title, [card_pin_text_grove, card_pin_text_autoprog] , card_pin_url]}) # Deux descriptions
system_card_description.update({"pin-card" : [card_pin_title, [card_pin_text_grove, card_pin_text_autoprog], card_pin_url]}) # Deux descriptions
# Données
card_data_title="Accès aux données"
card_data_text=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_ext').\n
Entrées/sorties : 'bp_ext', 'bp_int', 'fdc_o', \n 'fdc_f', 'mot_o', 'mot_f', 'gyr', 'ir_emet' et
'ir_recep'. Maquette Grove (en +) : 'mot_s' \n (sens, 0 ou 1) et 'mot_v' (vitesse, 0-255). \n
Entrées réels (si il y a jumelage) : 'bp_ext_r', \n 'bp_int_r', 'fdc_o_r', 'fdc_f_r', 'ir_recep_r'.
card_data_text_grove=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_ext').\n
Entrées/sorties : 'bp_ext', 'bp_int', 'fdc_o', \n 'fdc_f', 'mot_o', 'mot_f', 'gyr', 'ir_emet' et \n 'ir_recep'.
Entrées réels (si il y a jumelage) : 'bp_ext_r', \n 'bp_int_r', 'fdc_o_r', 'fdc_f_r', 'ir_recep_r', \n 'mot_v', 'mot_s' et 'mot_vitesse_r'.\n
Autres variables : 't' (temps), 'mot_angle', \n 'mot_vitesse', 'portail_x', 'portail_vitesse'."""
card_data_text_autoprog=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_ext').\n
Entrées/sorties : 'bp_ext', 'bp_int', 'fdc_o', \n 'fdc_f', 'mot_o', 'mot_f', 'gyr', 'ir_emet' et \n 'ir_recep'.\n
Entrées réels (si il y a jumelage) : 'bp_ext_r', \n 'bp_int_r', 'fdc_o_r', 'fdc_f_r', 'ir_recep_r'.\n
Autres variables : 't' (temps), 'mot_angle', \n 'mot_vitesse', 'portail_x', 'portail_vitesse'."""
card_data_url=[]
system_card_description.update({"data-card" : [card_data_title, card_data_text, card_data_url]})
system_card_description.update({"data-card" : [card_data_title, [card_data_text_grove, card_data_text_autoprog], card_data_url]}) # Deux descriptions
# Monitoring
card_daq_title="Acquisition de données"
@ -87,19 +92,26 @@ system_card_description.update({"daq-card" : [card_daq_title, card_daq_text, car
# Ouvrir et fermer
card_movement_title="Ouvrir et fermer"
card_movement_text=""" mot_o(True | False) -> Ouvrir le portail.
card_movement_text_grove=""" mot_o(True | False) -> Ouvrir le portail.
mot_f(True | False) -> Fermer le portail.\n
fdc_o() \n -> Capteur fin de course portail ouvert.
fdc_f() \n -> Capteur fin de course portail fermé.\n
mot_vitesse(vitesse) -> Change la vitesse \n du moteur numérique en rad/s.
mot_vitesse_r(vitesse) -> Change la vitesse \n du moteur réel (0-255).
Si 'vitesse' est ommis, elle sera réinitialisée."""
card_movement_text_autoprog=""" mot_o(True | False) -> Ouvrir le portail.
mot_f(True | False) -> Fermer le portail.\n
fdc_o() \n -> Capteur fin de course portail ouvert.
fdc_f() \n -> Capteur fin de course portail fermé.\n
mot_vitesse(vitesse) -> Change la vitesse \n du moteur numérique en rad/s.
mot_vitesse_r(vitesse) -> Change la vitesse \n du moteur réel (0-255) (maquette Grove).
Si 'vitesse' est ommis, elle sera réinitialisée."""
# fdc_o() \n -> Capteur fin de course portail ouvert.\n Retourne True si le portail est ouvert. \n
# fdc_f() \n -> Capteur fin de course portail fermé.\n Retourne True si le portail est fermé.\n
card_movement_url=[]
system_card_description.update({"movement-card" : [card_movement_title, card_movement_text, card_movement_url]})
system_card_description.update({"movement-card" : [card_movement_title, [card_movement_text_grove, card_movement_text_autoprog], card_movement_url]})
# Capteurs
card_sensor_title="Capteur"
@ -162,15 +174,3 @@ def get_system_card():
def get_system_card_description():
return system_card_description
# # Mise en place de la variante
# print ("aa")
# print (scene.objects['System']['script'])
# print ("bb")
# # runpy.run_path(scene.objects['System']['script'], run_name='init')
# # if scene.objects['System']['variant'] ==2:
# # system_card_description.update({"pin-card" : [card_pin_title, card_pin_text_autoprog, card_pin_url]})
# # else:
# # system_card_description.update({"pin-card" : [card_pin_title, card_pin_text_grove, card_pin_url]})
# return system_card_description

View File

@ -160,8 +160,12 @@ def start(fct):
##
def variant(variant_num):
var_txt = [
"variante 1 : maquette Grove",
"variante 2 : maquette AutoProg"]
if variant_num != scene.objects['System']['variant']:
print ("Variante de la maquette numérique :", variant_num)
print ("Variante des maquettes numérique et réelle :", var_txt[variant_num-1])
scene.objects['System']['variant']=variant_num
##

View File

@ -1,7 +1,7 @@
<data>
<screen>
<width>1590</width>
<height>895</height>
<width>1568</width>
<height>882</height>
<quality>4</quality>
</screen>
<plot>

Binary file not shown.

View File

@ -31,7 +31,6 @@ system_card_description.update({"twins-card" : [card_twins_title, card_twins_tex
# Brochage
card_pin_title="Brochage"
card_pin_text_grove_bg_auto=""" Le brochage est un dictionnaire d'association \n des objets numériques aux broches réelles.
brochage = { nom:[type, broche, mode] } :
- nom : nom de l'objet 3D,
@ -63,12 +62,23 @@ system_card_description.update({"pin-card" : [card_pin_title, [card_pin_text_gro
# Données
card_data_title="Accès aux données"
card_data_text=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_m').\n
Entrées/sorties : 'bp_m', 'bp_a', 'bp_d', \n 'mot_m', 'mot_d', 'fdc_h', 'fdc_b', 'bp_auto', \n 'bg_auto', 'voy_auto', 'lum'.\n
Variables réels (si il y a jumelage) : 'bp_m_r', \n 'bp_a_r', 'bp_d_r', 'fdc_h_r', 'fdc_b_r', \n 'bp_auto_r', 'bg_auto_r', 'lum_r'.\n
card_data_text_grove_bg_auto=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_m').\n
Entrées/sorties : 'bp_m', 'bp_a', 'bp_d', \n 'mot_m', 'mot_d', 'fdc_h', 'fdc_b', 'bg_auto', \n 'voy_auto', 'lum'.\n
Variables réels (si il y a jumelage) : 'bp_m_r', \n 'bp_a_r', 'bp_d_r', 'fdc_h_r', 'fdc_b_r', 'lum_r', \n 'bg_auto_r', 'mot_v', 'mot_s', 'mot_vitesse_r'.\n
Autres : 't' (temps), 'mot_angle', 'mot_vitesse'."""
card_data_text_grove_bp_auto=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_m').\n
Entrées/sorties : 'bp_m', 'bp_a', 'bp_d', \n 'mot_m', 'mot_d', 'fdc_h', 'fdc_b', 'bp_auto', \n 'voy_auto', 'lum'.\n
Variables réels (si il y a jumelage) : 'bp_m_r', \n 'bp_a_r', 'bp_d_r', 'fdc_h_r', 'fdc_b_r', 'lum_r', \n 'bp_auto_r', 'mot_v', 'mot_s', 'mot_vitesse_r'.\n
Autres : 't' (temps), 'mot_angle', 'mot_vitesse'."""
card_data_text_autoprog=""" get(variable) \n -> Retourne la valeur de la variable à \n l'instant t. Par exemple : val = get('bp_m').\n
Entrées/sorties : 'bp_m', 'bp_a', 'bp_d', \n 'mot_m', 'mot_d', 'fdc_h', 'fdc_b', 'bp_auto', \n 'voy_auto', 'lum'.\n
Variables réels (si il y a jumelage) : 'bp_m_r', \n 'bp_a_r', 'bp_d_r', 'fdc_h_r', 'fdc_b_r', \n 'bp_auto_r', 'lum_r'.\n
Autres : 't' (temps), 'mot_angle', 'mot_vitesse'."""
card_data_url=[]
system_card_description.update({"data-card" : [card_data_title, card_data_text, card_data_url]})
system_card_description.update({"data-card" : [card_data_title, [card_data_text_grove_bg_auto, card_data_text_grove_bp_auto, card_data_text_autoprog], card_data_url]})
# Monitoring
card_daq_title="Acquisition de données"
@ -85,15 +95,23 @@ system_card_description.update({"daq-card" : [card_daq_title, card_daq_text, car
# Monter et descendre
card_movement_title="Monter et descendre"
card_movement_text=""" mot_m(True | False) -> Monter le volet.
card_movement_text_grove=""" mot_m(True | False) -> Monter le volet.
mot_d(True | False) -> Descendre le volet. \n
mot_vitesse(vitesse) -> Change la vitesse \n du moteur numérique en rad/s.
mot_vitesse_r(vitesse) -> Change la vitesse \n du moteur réel (0-255) (maquette Grove).
mot_vitesse_r(vitesse) -> Change la vitesse \n du moteur réel (0-255).
Si 'vitesse' est ommis, elle sera réinitialisée.\n
fdc_h() \n -> Capteur fin de course volet en haut.
fdc_b() \n -> Capteur fin de course volet en bas."""
card_movement_text_autoprog=""" mot_m(True | False) -> Monter le volet.
mot_d(True | False) -> Descendre le volet. \n
mot_vitesse(vitesse) -> Change la vitesse \n du moteur numérique en rad/s.
Si 'vitesse' est ommis, elle sera réinitialisée.\n
fdc_h() \n -> Capteur fin de course volet en haut.
fdc_b() \n -> Capteur fin de course volet en bas."""
card_movement_url=[]
system_card_description.update({"movement-card" : [card_movement_title, card_movement_text, card_movement_url]})
system_card_description.update({"movement-card" : [card_movement_title, [card_movement_text_grove, card_movement_text_grove, card_movement_text_autoprog], card_movement_url]}) # 2 descriptions
# Capteurs
card_sensor_title="Capteur"

View File

@ -161,13 +161,13 @@ def start(fct):
# Variante
#
# Variante 0 : valeur par défaut : boutons 'bp_auto' et 'bg_auto' absents -> il faut donc définir obligatoirement la variante.
# Variante 1 : Maquette Grove + bouton auto à glissière :
# Variante 1 : Maquette Grove + bouton auto à glissière :
# - Maquette Grove : la carte moteur est le shield moteur Arduino CC 4 x 1,2 A DRI0039 (DFROBOT)
# - Le mode automatique s'active et se désactive avec le bouton à glissière bg_auto
# Variante 2 : Maquette Grove + bouton auto poussoir :
# Variante 2 : Maquette Grove + bouton auto poussoir :
# - Maquette Grove : la carte moteur est le shield moteur Arduino CC 4 x 1,2 A DRI0039 (DFROBOT)
# - Le mode automatique s'active avec le bouton poussoir bp_auto et se désactive avec l'appui sur bp_m, bp_a ou bp_d.
# Variante 3 : Maquette AutoProg + bouton auto poussoir :
# Variante 3 : Maquette AutoProg + bouton auto poussoir :
# - Maquette AutoProg (A4 Technologie) : la carte moteur est le module AutoProg K-AP-MMOT-KIT
# - Le mode automatique s'active avec le bouton poussoir bp_auto et se désactive avec l'appui sur bp_m, bp_a ou bp_d.
#
@ -179,12 +179,17 @@ def start(fct):
##
def variant(variant_num):
var_txt = [
"variante 1 : maquette Grove + bouton auto à glissière",
"variante 2 : maquette Grove + bouton auto poussoir",
"variante 3 : maquette AutoProg + bouton auto poussoir"]
if variant_num != scene.objects['System']['variant']:
print ("Variante de la maquette numérique:", variant_num)
print ("Variante des maquettes numérique et réelle :", var_txt[variant_num-1])
scene.objects['System']['variant']=variant_num
# Affichage des éléments spécifiques de la variante
variant_dict = {'Bg auto':[1,2], 'Bg auto-on':[1,2], 'Bp auto':[3]}
variant_dict = {'Bg auto':[1], 'Bg auto-on':[1], 'Bp auto':[2,3]}
variant_list = list(variant_dict)
for name in variant_list:
if variant_num in variant_dict[name]: