sTreb
Messages postés2Date d'inscriptionjeudi 2 avril 2009StatutMembreDernière intervention 7 avril 2009
-
2 avril 2009 à 20:32
sTreb
Messages postés2Date d'inscriptionjeudi 2 avril 2009StatutMembreDernière intervention 7 avril 2009
-
7 avril 2009 à 17:10
Bonjour à tous et à toute.
Tous d'abord je ne sais pas si ce que j'ai expliquer est bien la compilation. Soyer indulgent, merci.
Tous d'abord je vais vous expliquer mon projet.
Je souhaite controler plusieurs appareil electrique avec des tempo (de plusieurs moi).
J'ai commander 2 carte relais que j'ai brancher (les deux) sur un PC (a l'aide d'une carte controleur pour rajouter un port parallele).
Je souhaitais programmer en grafcet car je pensais que sa allait etre plus facile qu'en C(je ne dispose d'aucune connaissance en C, mais j'ai réaliser qq grafcet quand jétais étudiant sur automgen).
J'ai brancher les deux carte sur le PC. Il y a un petit soft (fournis avec les carte) qui permet de controler la carte(le petit prog marche parfaitement mais ne fonctionne qu'avec une seule carte).
Ensuite j'utilise un petit logiciel pour creer les grafcet (je peux vous le fournir par email si toutefois vous en avez besoin pour m'aider)
Il y a un programme deja ecrit sur le logciel qui permet de controler une carte (mais il est ecrit en C). Alors j'ai essyer de faire un mixte entre ce programme et la parti grafcet afin de pouvoir attribuer les sortie correspondante (SB0, SB1 etc).
Mais voila ca ne fonctionne pas je n'y comprend rien j'ai lu pas mal de chose qui parle de programmation sur port parrallele mais aucun sujet sur le controle d'une carte relais par un grafcet.
Alors dans un premier temmps je vous ai copier le programme en C qui est intégrer au log et dans un deuxieme temps il y a un fichier qui est intégrer au grafcet (c'est ici que je dois rentrer des valeurs et variable afin de controler les ports) jai suivi les explication qui sont écrite dedans mais ce ne fonctionne toujours pas. Je vous donne les programme sans aucune modification de ma part.
Voici les adresse des cartes
1ere carte (port imprimante (LPT1), je vous écrit les phrases qui sont indiquer dans gestionnaire des peripherique)
Plage d'E/S : 0378 - 037F
Plage d'E/S : 0778 - 077B
DMA : 03
2e carte (port de communication (COM1)
Plage d'E/S : 03F8 - 03FF
IRQ : 04
Ma principale préocupation est d'assigner SB0, SB1 etc a chaque sortie sur les cartes.
Ce fichier est pr?vu pour une syst?me ?quip? d'une carte interface
num?rique "Le Grafcet" ? l'adresse de base par d?faut 300 Hex, et d'une
carte interface analogique "Le Grafcet" ? l'adresse indiqu'e par la macro
ANALOG.
Pour configurer les interfaces, utiliser les d?finitions suivantes qui
doivent ?tre ?crites dans l'?diteur C au dessus de :
#include "grafcet.io"
#define MAJUSCULE // variables en majuscules pour les touches (entr?es)
#define i0_i31 // d?finition des variables d'entr?e i0 .. i31
#define NUM 0x3xx // d?finition de l'adresse de la carte num?rique
#define ANALOG 0x3xx // d?finition de la carte analogique et de son adresse
#define GAIN0 xxx // d?finition du gain de chaque entr?e
#define GAIN1 xxx // xxx : 1, 10, 100, 1000 (1 par d?faut)
#define GAIN2 xxx
#define GAIN3 xxx
*/
bool boolinp[32]; // d?claration du tampon d'interfa?age pour les 32
// entr?es de la carte num?rique
bool boolout[16]; // d?claration du tampon d'interfa?age pour les 16
// sorties de la carte num?rique
// -------- D?claration des variables --------
#ifdef ANALOG // Carte analogique -----------
int intinp[4]; // d?claration du tampon d'interfa?age pour les 4
// entr?es de la carte analogique
int intout[2]; // d?claration du tampon d'interfa?age pour les 2
// sorties de la carte analogique
inti(ea0, 0);
inti(ea1, 1);
inti(ea2, 2);
inti(ea3, 3);
into(SA0, 0);
into(SA1, 1);
#endif // ------- ifdef ANALOG
int C1; // d?claration des 8 compteurs C1 .. C8
int C2;
int C3;
int C4;
int C5;
int C6;
int C7;
int C8;
bool boolout[12]; // tampon des sorties booleennes pour actions continues
boolo(SB0, 0); boolo(SB1, 1); boolo(SB2, 2); boolo(SB3, 3);
boolo(SB4, 4); boolo(SB5, 5); boolo(SB6, 6); boolo(SB7, 7);
boolo(SB8, 8); boolo(SB9, 9); boolo(SB10, 10); boolo(SB11, 11);
bool a, b, c, d, e, f, g, h; // variables des 8 entr?es
unsigned en, en_prec, // entr?es num?riques
sn, sn_prec, // sorties num?riques
sc; // sorties de contr?le
int tst1, b0, fin; // test automatique et sortie du programme
char *msg = "Pour utiliser la touche <Test> (test automatique),\n"
"relier les sorties aux entr?es correspondantes :\n"
"SN0..7 avec EN0..7; \n";
void aff_msg(int x1, int y1, int couleur, char *msg)
{
moveto(x1, y1);
color(couleur);
puts(msg);
}
void read_carte()
{
outp(ADR_CTRL, sc & 7); // selection des 4 msb (bit 3 ? 0)
en = inp(ADR_IN) & 0xf0;
outp(ADR_CTRL, sc | 8); // selection des 4 lsb (bit 3 ? 1)
en += inp(ADR_IN) >> 4;
a = (bool) (en & 0x01);
b = (bool) (en & 0x02);
c = (bool) (en & 0x04);
d = (bool) (en & 0x08);
e = (bool) (en & 0x10);
f = (bool) (en & 0x20);
g = (bool) (en & 0x40);
h = (bool) (en & 0x80);
}
sTreb
Messages postés2Date d'inscriptionjeudi 2 avril 2009StatutMembreDernière intervention 7 avril 2009 7 avril 2009 à 17:10
Parmis toute les personnes qui ont lu ce message, personne ne saurait comment assimiler a SB0 une sortie sur la carte SVP
C'est un grand soucis pour la poursuite de mon projet.
Merci