IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

probleme script C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Automatisme
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut probleme script C
    Bonjour à tous. Je sais pas si je suis dans la bonne section mais je tente au besoin je redirigerai . Actuellement en stage pour valider ma formation de technicien en automatisme.. J'ai pour mission la programmation d'un Ihm PRO FACE sous GP PRO EX. Cet IHM devra communiqué avec un automate déporté de la meme marque ainsi qu'une centrale de mesure IME NEMO D4 DC.. J'auai besoin de votre aide s'il vous plait afin de coder un scrip qui me permetra de recuperer les valeurs de la centrale de mesure. J'ai un debut de code en C mais je n'arrive pas à l'adapter pour le scrip de gp pro.. Si quelqu'un peut m'aiguiller ce serait genial, comme je l'ai precisé au dessus je suis Novice en automatisme et j'ai vraiment besoin de terminé ce projet pour l'obtention de ma certif. Si vous avez besoin d'informations supplémentaire n'hesiter pas.. Je vous transmet dans un premier temps l'ebauche du code que j'ai pu trouvé sur le site ime:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    insigne int calc_crc (char *ptbuf, unsigned int num) 
    /*****************************************************************
    *           Descrizione : calculates a data buffer CRC WORD
    *           Input : ptbuf = pointer to the first byte of the buffer
    *           num = number of bytes
    *           Output : //
    *           Return :
    ** ***************************************************************/
    {
    unsigned int crc16;
    unsigned int temp;
    unsigned char c, flag;
     
     
    crc16 = 0xffff;                                                                     /* init the CRC WORD */ 
    for (num; num>0; num--) {
            temp = (unsigned int) *ptbuf;                                      /* temp  has the first byte */
            temp &= 0x00ff;                                                                     /* mask the MSB */
               crc16 = crc16 ^ temp;                                                /* crc16 XOR with temp */
             for (c=0; c<8; c++) {
                   flag = crc16 & 0x01;                                        /* LSBit di crc16 is mantained */
                   crc16 = crc16 >> 1;                                                 /* Lsbit di crc16 is lost */
                   if   (flag != 0)
                        crc16 = crc16 ^ 0x0a001;                              /* crc16 XOR with 0x0a001 */
             }
             ptbuf++;                                                                /* pointer to the next byte */
    } 
    crc16 = (crc16 >> 8) | (crc16 << 8);                               /* LSB is exchanged with MSB */ 
    return (crc16); 
     
    }                                                                                                        /* calc_crc */




    Address                   Byte n.                      Description                                           Unit
    0x1000                        4                                Voltage                                          mV
    0x1002                        4                                Current                                          mA
    0x1004                        4                         Signed power                                         (*)
    0x1006                        4                        Positive Energy                                        Wh
    0x1008                        4                      Negative Energy                                         Wh
    0x100A                        4                             Time                                            seconds
    0x100C                        4                      Average Power                                          (*)
    0x100E                        4                  Maximum Power Demand                                  (*)
    0x1010                        2         Minutes elapsed durino theaverage calculation          
    0x1012                        4                    Positive Amperehours                                    Ah
    0x1014                        4                   Negative Amperehours                                    Ah
    
    0x1201                     WORD           Current transformer ratio (KTA)                        integer
    0x1202                     WORD            Voltage transformer ratio (KTV)                         1/10 
    0x1203                     WORD                     Device identifier                                     0x14
    Voili voilou.; Je bloque complet si y a une ame charitable pour me sortir du brouillard svp ^^ en sachant que l'ihm me renvoie n code erreur qui est le suivant:

    RHAA036 Error has been responded for device read Command ( Error code 2[2H] There are out of range devices)
    Merci à tous. Cordialement

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    ...
    Tu es sur un système où la plus petite unité adressable fait deux bytes?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Hello,

    Le début de code que tu as écrit/trouvé est une fonction qui calcule le crc16 d'un bloc de données. Le premier paramètre est un pointeur sur le début du bloc, le deuxième le nombre d'éléments du bloc. la valeur retournée est le crc16. A priori, je ne vois pas trop le rapport avec un interfaçage d'automate. la ligne unsigned int crc16; me fait penser qu'il s'agit d'un 8 bits.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Automatisme
    Inscrit en
    Novembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Automatisme
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous merci pour l’intérêt porter.. Tout d'abord.. Médinoc je suis désolé mais je ne comprends pas bien ta réponse.. Tu veux parler des adresses 0x1000, 0x1002??? pfeuh en effet, c'est cela.. Il n'y a aucun rapport avec l’interfaçage. C’est uniquement pour calculer le crc.. Mon problème à moi c'est que je n'arrive pas a récupérer les valeurs de la centrale de mesure.. Je travail actuellement sur un projet qui a été réaliser par un de mes collègues déjà parti de la société.. Et j'ai beaucoup de mal a comprendre le programme.. Ce matin j'ai recommencé un nouveau projet avec uniquement la com avec la centrale de mesure. J'ai bien une information en bcd sur 32 bit qui revient mais elle est incohérente.. En tout cas j'ai du mal a la décoder.. Si j'ai bien lu le document du dessus normalement la valeur VOLTAGE devrait se trouvé a partir ou au bit n°4? Mais sur gp pro je ne sais même pas comment aller lire un bit en particulier dans un mot! Merci de votre aide excuser mon manque d’expérience et de connaissance.. J'essaie d'apprendre mais j'ai personne qui peut me renseigner dans ma boite..

Discussions similaires

  1. [Javascript] probleme script d'impression
    Par pimpmyride dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/03/2006, 14h37
  2. Problème script de chargement de données oracle
    Par nkongolo.m dans le forum Linux
    Réponses: 4
    Dernier message: 24/01/2006, 11h46
  3. petit probleme script heure et date
    Par ion dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/12/2005, 20h47
  4. Problème scripting
    Par mlequim dans le forum Linux
    Réponses: 15
    Dernier message: 08/08/2005, 17h04
  5. Problème script Bash
    Par Sphost dans le forum Linux
    Réponses: 10
    Dernier message: 26/07/2005, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo