Panoramic et le Grafcet
Le grafcet et une représentation
graphique utilisée pour créer
des automatismes comme l’organigramme
et a l'informatique
il se compose d’étapes de
transitions et de liaisons orientées
les étapes et leur actions associées
les transitions entre les étapes et
leur réceptivité associées
les liaisons entre étapes
transitions et étapes
et les liaisons-orientées
il existe deux formes de grafcet :
Niveau
1:
Spécifications fonctionnelles–Utilisation du langage courant
Niveau
2: Spécifications technologiques –Utilisation de symboles voici
un site web parmi tant d'autre qui vous expliquera
en détail le grafcet
===================================================
http://philippe.berger2.free.fr/automatique/cours/G7/le_grafcet.htm
===================================================
Avec Maître Google les articles sur le
grafcet sont légions
Dans les automates les instructions du
grafcet font parties du programme
les instructions du grafcet ne faisant
pas partie de Panoramic il suffit de créer un grafcet dit ''sur
mot'' on incrémente une variable en respectant les règles du
grafcet
(une variable différente par branche,
)
Règles
d'évolution
L'initialisation : une
situation initiale est caractérisée par le fait qu'un certain
nombre d'étapes sont actives au début du fonctionnement. Ces
étapes sont repérées sur le grafcet par un double carré.
Le franchissement d'une
transition : une transition est soit validée soit non validée.
Elle est validée lorsque toutes les étapes immédiatement
précédentes sont actives (voir le tableau suivant). Elle ne peut
être franchie :
que lorsqu'elle est validée
et que la réceptivité associée
est vraie.
L'évolution des étapes actives :
le franchissement d'une transition entraîne l'activation de toutes
les étapes immédiatement suivantes et la désactivation de toutes
les étapes immédiatement précédentes.
Évolution simultanée :
plusieurs transitions simultanément franchissables sont
simultanément franchies. Par exemple, sur la figure ci-contre, si
la variable c est vraie, le grafcet va
évoluer vers la désactivation simultanée des étapes 5 et 10 et
l'activation simultanée des étapes 6 et 11.
- Activation et désactivation simultanées : si au cours
du fonctionnement, une même étape doit être simultanément
désactivée et activée, elle reste ACTIVE
Wikipédia l’encyclopédie libre
Grafcet
pour la démo en Pamoramic j'utilise la
progression binaire de 0 à 15 sur 4 bits
comme il faut appuyer sur plusieurs
touches en même temps
les touches F1 F2 F3 F4 sont du style
bistable par programme
un appui =1 un deuxième appui =0 pour
la variable associée
__
__
F1 =1 F1=0 => Rappel F1=(F1
barre) ou (!F1=0) ou (/F1=0)
Code Binaire pur de 0 a 15
D C B A D C B A
0 0 0 0 0 8 1 0 0 0
1 0 0 0 1 9 1 0 0 1
2 0 0 1 0 10 1 0 1 0
3 0 0 1 1 11 1 0 1 1
4 0 1 0 0 12 1 1 0 0
5 0 1 0 1 13 1 1 0 1
6 0 1 1 0 14 1 1 1 0
7 0 1 1 1 15 1 1 1 1
(16) 0 0 0 0
Le grafcet
Code Panoramic
error_french
dim nobj,nob,hb
width 0,730:height 0,300: color 0,160,160,200: border_hide 0
top 0,(screen_y-height(0))/2 :left 0,(screen_x-width(0))/2
label sp_1,sp_fin,sp_72,sp_73,sp_form_help
label sp_fin_help,sp_help,sp_terminal,sp_0
label sp_b10,sp_b20,sp_b30,sp_b40,sp_grafcet,sp_raz_gracet,sp_efface_sortie,sp_var_sortie,sp_sortie,sp_key
dim b0,b1,b2,b3,O0,O1,O2,O3,etp,metp
b0=0:b1=0:b2=0:b3=0:etp=0:metp=0:O0=0:O1=0:O2=0:O3=0
gosub sp_terminal
gosub sp_form_help
set_focus 0
on_click 101,sp_fin :on_close 0,sp_fin
on_click 111,sp_help :on_click 68,sp_1
on_click 72,sp_72:on_click 73,sp_73
on_double_click 200,sp_fin_help:on_close 200,sp_fin_help
on_click 0,sp_0:on_key_down 0,sp_key
' ========
end
' ========
sp_0:
set_focus 0:return
' ========
sp_key:
if key_down_code=115 then gosub sp_b10
if key_down_code=114 then gosub sp_b20
if key_down_code=113 then gosub sp_b30
if key_down_code=112 then gosub sp_b40
return
' =========================
sp_b10:
b0=1-b0
if b0=1
color 57,0,250,0
else
color 57,200,180,180
end_if
gosub sp_grafcet
return
' =========================
sp_b20:
b1=1-b1
if b1=1
color 52,0,250,0
else
color 52,200,180,180
end_if
gosub sp_grafcet
return
' ===================
sp_b30:
b2=1-b2
if b2=1
color 47,0,250,0
else
color 47,200,180,180
end_if
gosub sp_grafcet
return
' ========================
sp_b40:
b3=1-b3
if b3=1
color 42,0,250,0
else
color 42,200,180,180
end_if
gosub sp_grafcet
return
' ==================
sp_grafcet:
if etp=0 and b3=0 and b2=0 and b1=0 and b0=1 then etp=1
if etp=1 and b3=0 and b2=0 and b1=1 and b0=0 then etp=2
if etp=2 and b3=0 and b2=0 and b1=1 and b0=1 then etp=3
if etp=3 and b3=0 and b2=1 and b1=0 and b0=0 then etp=4
if etp=4 and b3=0 and b2=1 and b1=0 and b0=1 then etp=5
if etp=5 and b3=0 and b2=1 and b1=1 and b0=0 then etp=6
if etp=6 and b3=0 and b2=1 and b1=1 and b0=1 then etp=7
if etp=7 and b3=1 and b2=0 and b1=0 and b0=0 then etp=8
if etp=8 and b3=1 and b2=0 and b1=0 and b0=1 then etp=9
if etp=9 and b3=1 and b2=0 and b1=1 and b0=0 then etp=10
if etp=10 and b3=1 and b2=0 and b1=1 and b0=1 then etp=11
if etp=11 and b3=1 and b2=1 and b1=0 and b0=0 then etp=12
if etp=12 and b3=1 and b2=1 and b1=0 and b0=1 then etp=13
if etp=13 and b3=1 and b2=1 and b1=1 and b0=0 then etp=14
if etp=14 and b3=1 and b2=1 and b1=1 and b0=1 then etp=15
if etp=15 and b3=0 and b2=1 and b1=1 and b0=0 then etp=0
if metp <> etp
metp=etp
caption 67,"_"+right$(str$(1000+etp),2)+"_"
gosub sp_efface_sortie
gosub sp_var_sortie
gosub sp_sortie
end_if
return
' ========
sp_raz_gracet:
etp=0:metp=0:caption 90,"Etape "+str$(etp)
gosub sp_efface_sortie
return
' ========
sp_efface_sortie:
color 37,200,180,180:O0=0:color 32,200,180,180:O1=0
color 27,200,180,180:O2=0:color 22,200,180,180:O3=0
return
' ========
sp_var_sortie:
if etp=1 or etp=3 or etp=5 or etp=7 or etp=9 or etp=11 or etp=13 or etp=15 then O0=1
if etp=2 or etp=3 or etp=6 or etp=7 or etp=10 or etp=11 or etp=14 or etp=15 then O1=1
if etp=4 or etp=5 or etp=6 or etp=7 or etp=12 or etp=13 or etp=14 or etp=15 then O2=1
if etp=8 or etp=9 or etp=10 or etp=11 or etp=12 or etp=13 or etp=14 or etp=15 then O3=1
return
' ========
sp_sortie:
if O0=1 then color 37,0,250,0
if O1=1 then color 32,0,250,0
if O2=1 then color 27,0,250,0
if O3=1 then color 22,0,250,0
return
' ====raz grafcet====
sp_1:
show 70:return
' ====FIN=======
sp_fin:
terminate:return
' ==============
sp_72:
etp=0:metp=0:caption 67,"_00_"
gosub sp_efface_sortie
hide 70:return
' ==============
sp_73:
hide 70:return
' =============
sp_help:
show 200:return
' =============
sp_fin_help:
hide 200:set_focus 0:return
' =============
REM ======SUB=============================================================
sub affichtxt(nxt,par,tpt,ltt,fsize,txt$)
container nxt:parent nxt,par:top nxt,tpt:left nxt,ltt
Alpha nxt+1:parent nxt+1,nxt:top nxt+1,10:left nxt+1,10
font_bold nxt+1:font_size nxt+1,fsize:caption nxt+1,txt$
width nxt,width(nxt+1)+20
height nxt,height(nxt+1)+20
end_sub
' ============
sub button_container(nbc,par,tpc,ltc,txt$)
container nbc:parent nbc,par:top nbc,tpc:left nbc, ltc
caption nbc ,txt$
button nbc+1:parent nbc+1,nbc:top nbc+1,30:left nbc+1,10
width nbc+1,30:hint nbc+1,nbc+1
width nbc,width(nbc+1)+20
height nbc,height(nbc+1)+40
end_sub
' ======================
sub voyant_automate(ntp,par,ttp,ltp,txt$,etat)
container ntp:parent ntp,par:top ntp,ttp:left ntp,ltp
width ntp,80-20: height ntp,133-50
font_size ntp,14:caption ntp,txt$
alpha ntp+1:parent ntp+1,ntp:top ntp+1,48-20:left ntp+1,7
width ntp+1,64-20: height ntp+1,44:color ntp+1,0,0,0
alpha ntp+2:parent ntp+2,ntp:top ntp+2,52-20:left ntp+2,11
width ntp+2,56-20: height ntp+2,36:' min ntp+2,0:max ntp+2,1
hint ntp+2,ntp+2
if etat=0
color ntp+2,200,180,180
else
color ntp+2,255,0,0
end_if
end_sub
'================
sub compteur(nc,par,tpc,ltc,txt$)
container nc:parent nc,par:top nc,tpc:left nc,ltc
caption nc,txt$
alpha nc+1:parent nc+1,nc:top nc+1,40:left nc+1,10
color nc+1,0,0,0
alpha nc+2:parent nc+2,nc:top nc+2,45:left nc+2,15
color nc+2,0,250,0:font_size nc+2,20:caption nc+2,"_00_"
height nc+1,height(nc+2)+10
button nc+3 :parent nc+3,nc:top nc+3,45:left nc+3,width(nc+1)+20
width nc+3 ,30:caption nc+3,"RAZ"
width nc,width(nc+1)+width(nc+3)+30
hint nc+3,nc+3: hint nc+2,nc+2
end_sub
' ==============fin==sub==============
sp_form_help:
form 200:caption 200,"AIDE Double click pour Quitter": hide 200
width 200,416:height 200,312
top 200,200 :left 200,(screen_x-width(200))/2
memo 210:parent 210,200
full_space 210
item_add 210,""
item_add 210," Le GRAFCET "
item_add 210," GRAphe Fonctionnel de Commande Etapes-Transitions "
item_add 210," les graphismes permettant la représentation d'un systéme automatisé"
item_add 210," étapes, liaisons, transitions"
item_add 210," voici un exemple avec simulation de l’état des entrées et sorties "
item_add 210," tous ou rien (tor) "
item_add 210," visualise le N°de l'étapes du grafcet et peu le reseter (RAZ grafcet)"
item_add 210," le programme et construis avec un grafcet sur mots"
item_add 210," en respectant les regles du grafcet "
item_add 210," exemple et la progression binaire de 0 a 15."
item_add 210," le terminal et écrit en Panoramic"
item_add 210," les touches F1 F2 F3 F4 sont du style flipflop "
item_add 210," un appui =1 un deuxieme appui =0 "
item_add 210," "
item_add 210," "
item_add 210," avec Maître Google les articles sur "
item_add 210," le grafcet sont légions"
inactive 210
return
' =========================
sp_terminal:
nobj=10 :affichtxt(nobj,0,20,150,16," DEMO Terminal GRAFCET PANORAMIC ")
nobj=13 :affichtxt(nobj,0,210,510,12,"Entrées")
nobj=16 :affichtxt(nobj,0,210,130,12,"Sorties")
' voyant entrees
nobj=20: voyant_automate(nobj,0,120,50,"O.3",0)
nobj=25:voyant_automate(nobj,0,120,110,"O.2",0)
nobj=30:voyant_automate(nobj,0,120,170,"O.1",0)
nobj=35:voyant_automate(nobj,0,120,230,"O.0",0)
' voyant sorties
nobj=40: voyant_automate(nobj,0,120,50+383,"I.3-F1",0)
nobj=45:voyant_automate(nobj,0,120,110+383,"I.2-F2",0)
nobj=50:voyant_automate(nobj,0,120,170+383,"I.1-F3",0)
nobj=55:voyant_automate(nobj,0,120,230+383,"I.0-F4",0)
nobj=65:compteur(nobj,0,110,300,"Etape Grafcet")
nobj=100: button_container(nobj,0,20,620,"F I N")
nobj=110: button_container(nobj,0,10,50,"Aide")
container 70:top 70,110:left 70,270:hide 70:caption 70,"Confirmation"
alpha 71:top 71, 30:left 71,40:parent 71,70:caption 71,"INIT GRAFCET"
button 72:top 72, 60:left 72,10:parent 72,70:caption 72,"OUI"
button 73:top 73, 60:left 73,90:parent 73,70:caption 73,"NON"
return
' ==============================