De quel langage de programmation s'agit-il ?
Répondre à la discussion
Affichage des résultats 1 à 17 sur 17

De quel langage de programmation s'agit-il ?



  1. #1
    pcht

    De quel langage de programmation s'agit-il ?


    ------

    Bonjour tous le Monde,
    j'ai chargé un programme depuis un régulateur ABB, pour le comprendre et le remplacer en fin par un autre de siemens, mais je sais pas de quelle language s'agit-elle meme s'il ressemble au language C, voici une partie du code:

    debit-prod=debit-h2o debit-sirop +
    production= prod-cuve1 * 100 /
    x=y z 6.0 // w

    if a>b
    {
    maxA=2
    }
    else
    ......

    -----

  2. #2
    pcht

    Re : S'agit-il de quelle language de programmation???

    prière de me répondre, car je me suis bloqué la dessus

  3. #3
    cherbe

    Re : S'agit-il de quelle language de programmation???

    Bonjour
    Avec si peu de code, c'est impossible à identifier, pour moi en tous cas !

  4. #4
    Bluedeep

    Re : S'agit-il de quelle language de programmation???

    Un C-like mais sans les points virgules, ni parenthèses dans les if, c'est bizarre.
    J'ai un doute sur la précision du copier-coller

  5. A voir en vidéo sur Futura
  6. #5
    Paraboloide_Hyperbolique

    Re : S'agit-il de quelle language de programmation???

    Bonsoir,

    Je confirme: pour moi ce n'est pas du C. Quelque soit le code, les trois premières lignes ont été codées de manière à ne pas être facilement interprétable (assignation de variables lors de leur utilisation dans un calcul et le tout sans parenthèses).

    Par ailleurs, je n'arrive pas à interpréter la troisième ligne. Que signifie "x=y z 6.0" ?

    Est ce que ce code a été bien copié ?

  7. #6
    pcht

    Re : S'agit-il de quelle language de programmation???

    Merci pour vos réponse, et voici une partie du programme:


    Code:
     ********************************************************************** \
    \ Programma di gestione NUOVO PREDOSIX  SIMONAZZI                        \
    \ Parma 28/02/1996                                                       \
    \ Autore Cocchi Enrico                                                   \
    \ Function INDEX = 80                                                    \ 
    \ NOME simbolico del programma = MAIN                                    \
    \ Versione 5.10                                                          \
    \                                                                        \
    \ Descrizione Bit di stato  ERR_CODE                                     \
    \                                                                        \
    \ 0 Overflow inserito                                                    \
    \ 1 Errore Fase 1 Troppa Acqua                                           \
    \ 2 Errore Fase 2 Troppo sciroppo                                        \
    \ 3 Errore Fase 2 Troppo Prodotto                                        \
    \ 4 Errore Fase 2 Troppa CO2                                             \
    \ 5 Pressione Serbatoio non OK                                           \
    \ 6 Brix Sciroppo troppo alto                                            \
    \ 7 Brix Sciroppo troppo basso                                           \
    \ 8 Presenza flusso verso la riempitrice                                 \
    \                                                                        \
    \ DI0 = PRODUZIONE/CIP*                                                  \
    \ DI1 = RISCIAQUO                                                        \
    \ DI2 = START MISCELAZIONE                                               \
    \ DI3 = ABILITAZIONE PRESSIONE STOCCAGGIO                                \
    \ DI4 = RESET ALLARMI                                                    \
    \ DI5 = START_UP                                                         \
    \ DI6 = BRIX COSTANTE                                                    \
    \                                                                        \
    \ DO0 = FASE1 OK                                                         \
    \ DO1 = FASE2 OK                                                         \
    \ DO2 = PRESSIONE SERBATOIO STOCCAGGIO OK                                \
    \ DO3 = SFIATO PER SOVRAPRESSIONE                                        \
    \ DO4 = PRESENZA FLUSSO PRODOTTO ALLA RIEMPITRICE                        \
    \ DO5 = BRIX SCIROPPO FUORI STANDARD / LIMITE RAPPORTO RAGGIUNTO         \
    \ DO6 = LIVELLO SERBATOIO > 50%                                          \
    \ DO7 = LIVELLO SERBATOIO < MINIMO LIVELLO IMPOSTATO                     \
    \                                                                        \
    \ ***********************************************************************\
    
    #include "F&P\define.DEF"
    #include "F&P\Variab.DEF"
    
    \ ************** Gestione del Bit di Power UP ***************************\
    
    IF START          \ se e' stato eseguito un PWR_UP resetta tutti i dati  \
       {              
       MAIN_RESET
       }
    
    OLD_PROG = B000            \ Salva la Function index in old_prog         \
    TE = 0.1                   \ Azzera il flag di TE   Temporary error      \       
    
    \ **************************************************************** ******\
    
    		     
    
    IF DI_1                   \ Se inserisco il risciaquo vado ad eseguire   \
       {                      \ Il programma specifico                       \ 
       NOW_DSPL = RINS_DSPL;    
       START = 1              \passa il controllo al programma di risciaquo  \
       EXE_PROG = RINS_PRG;
       }
    
    IF DI_0!                   \se vado in CIP esegue lo swap delle schermate\
       {                       
       NOW_DSPL = CIP_DSPL;    
       POINTER = 0
       WHILE 19 > POINTER
          {
          B80 = POINTER 17 +
          B81 = POINTER 37 +
          B82 = POINTER 57 +
    \     B@81 = B@80   una volta salvavo i display   \
          B@80 = B@82
          
          POINTER = POINTER 1 +
          }
    
       START = 1                    \passa il controllo al programma di CIP \
       EXE_PROG = CIP;
       }
    
    NEW_PROD = C440 0.1 + $     \mette in una variabile byte il num Ricetta \
    
    IF OLD_PROD NEW_PROD Q      \ esegue l'if se ho il cambio prodotto  \  
       {
       MAIN_RESET
       OLD_PROD = NEW_PROD      
       }
    \ ***********************************************************************\
    \ Trasferisce i valori max e min nelle variabili quando macchina ferma   \
    \ ***********************************************************************\
    
    IF DI_2 !                   \ Se sono a macchina ferma trasferisco le    \
       {                        \ Variabili nelle varie locazioni del F&P    \
       C115 = MAX_F_H2O MAX_F_SYRUP + 1.1 * 
       C125 = MAX_F_H2O MAX_F_SYRUP + 1.1 *       
       C151 = MAX_F_SYRUP 1.1 *
       C161 = MAX_F_SYRUP 1.1 *
       C187 = MAX_F_CO2 1.1 *
       C197 = MAX_F_CO2 1.1 *   
       C256 = MAX_F_H2O
       C257 = MAX_F_SYRUP
       C260 = MAX_F_CO2 
       }
    
    \ ***********************************************************************\
    \ Trasferisce gli ingressi analogici nelle parole in trasmissione al PLC \
    \ ***********************************************************************\
    IF DI_2  MISURA_OK &
    {
        FLOW_H2O       = AIN_0;         
        FLOW_SCIR      = AIN_1;          
    }
    ELSE
    {
        FLOW_H2O       = 0.0         
        FLOW_SCIR      = 0.0          
    }
    
    IF AUT_0 ! AUT_1 ! '
    {
        FLOW_H2O       = AIN_0;         
        FLOW_SCIR      = AIN_1;          
    } 
    
    LIV_SERB       = AIN_2;          
    TEMP_H2O       = AIN_3;
    FLOW_CO2       = AIN_4;
    PRESS_CO2      = AIN_5;
    SP_TEMP        = AIN_6;
    PV_BRIX        = AIN_7;     
    
    TOT_H2O        = TOTALE_0    
    TOT_SCIROPPO   = TOTALE_1 $ SP_KGR_L /
    TOT_CO2        = TOTALE_3
    TOT_PRODOTTO   = TOT_H2O TOT_SCIROPPO +
    
    IF BX_FACT 0.01 :
    {
      BRIX_SYR = PV_BRIX BX_FACT /
    }
    ELSE
    {
      BRIX_SYR = PV_BRIX
    }
    
    IF DI_6 ! DI_5 ! & EN_PID0 & TIME_OK 15.0 : &
    {
      BX_FACT = PV_BRIX SYRUP_BRIX /
    }
    
    
    \ ********************************************************************** \
    \ Cambio il rapporto durante la fine produzione al fine di               \
    \ mantenere il brix finale costante                                      \
    \ ********************************************************************** \
    
    IF DI_6                         \ se brix costante abilitato             \
      {
      IF PV_BRIX > 5.0              \ se Brix sciroppo misurato > 5          \  
    				\ cambia il rapporto per mantenere il    \
    				\ brix costante in uscita                \
        {
        RATIO = BRIX_SYR BEV_BRIX - BEV_BRIX / PSR * 
    	
        IF AOUT_1 > 95.0            \ Se L'apertura della valvola sciroppo   \
          {                         \ Ë maggiore del 98% fermo tutto         \
          RATIO_OUT = 1
          }
        ELSE
          {
          RATIO_OUT = 0
          }    
    
        }
      ELSE
        {
        RATIO_OUT = 1
        }
      }
    ELSE
      {
      RATIO_OUT = 0
      RATIO = SET_H2O_SCIR   \ dello sciroppo a quella impostata \
      }
    
    RR = RATIO
    RATIO_CALC = RATIO       \ rapporto calcolato da proc brix cost * PC \
    
    \ ********************************************************************** \
    \ Calcola il Set point H2O e Sciroppo partendo dal Set Point             \
    \ Prodotto e dal rapporto da mantenere                                   \
    \ ********************************************************************** \
    
    IF AUT_0 AUT_1 &
       {
       P_PERC = -0.2 LIV_SERB * 120.0 +        \ Percentuale di produzione     \
       }
    ELSE
       {
       P_PERC = 100.0
       }
    
    IF P_PERC > 102.0
       {
       P_PERC = 102.0
       }
    
    IF DI_5 DI_6 '                        \ Se sono in brix costante o nello startup    \
       {                                  \ imposto la produzione al 50% della nominale \
       AA = SET_PORTATA MAX_F_H2O 2.0 / / \ Calcola la portata minima gestibile \
       IF AA > 1.0
          {
          P_PERC = 100.0 AA /
          REAL_P_PERC = P_PERC
          }
       }
    
    IF TIME_OK 10.0 :
       {
       IF P_PERC REAL_P_PERC - | 0.2 :
          {
          IF P_PERC REAL_P_PERC :
    	 {
    	 REAL_P_PERC = REAL_P_PERC 0.1 +
    	 }
          ELSE
    	 {
    	 REAL_P_PERC = REAL_P_PERC 0.1 -
    	 }
          }
       }
    
    P_PROD = REAL_P_PERC SET_PORTATA * 100.0 /  \ produzione prodotto in base al       \
    					    \ livello del serbatoio                \
    
    IF MAX_F_H2O 4.0 / P_PROD :                 \ Limita l'escursione della produzione \
       {                                        \ ad 1/4 del flusso di acqua massimo   \
       P_PROD = MAX_F_H2O 4.0 /
       }
    
    IF DI_5 DI_6 '
       {   
       PSR = 100.0 PV_BRIX 1.6055 / 100.0 + PV_BRIX - /  \ Densit‡ sciroppo \
       P_H2O = P_PROD 1.0 RR + / RR * 
       P_SCIR =  P_PROD 1.0 RR + / PSR *
       FLOW_PROD = FLOW_H2O FLOW_SCIR PSR / +
       }
    ELSE
       {
       P_H2O = P_PROD 1.0 RR + / RR * 
       P_SCIR =  P_PROD 1.0 RR + / SP_KGR_L *
       FLOW_PROD = FLOW_H2O FLOW_SCIR SP_KGR_L / +
       }
    Dernière modification par JPL ; 09/03/2016 à 13h30. Motif: Ajout de la balise Code (#) pour garder l'indentation

  8. #7
    WizardOfLinn

    Re : S'agit-il de quelle language de programmation???

    Les expressions mathématiques sont en notation polonaise inversée.
    Bizarre ce langage, ce n'est pas du C en tout cas.

  9. #8
    CM63

    Re : S'agit-il de quelle language de programmation???

    Bonjour,

    Ça a l'air d'être un dialecte du C, mais avec des variations très importantes comme par exemple ici:

    P_H2O = P_PROD 1.0 RR + / RR *

    Plusieurs variables ou constantes peuvent être indiquées entre les opérateurs, les opérateurs peuvent être indiqués après les opérandes...

    Ah oui, c'est peut-être de la notation polonaise inverse.

    Mais quel est le contexte : on t'a donné un logiciel sans te dire dans quel langage il était programmé, et il est "urgent" que tu fasse quelque chose avec ça?
    Dernière modification par CM63 ; 09/03/2016 à 09h37.

  10. #9
    Stan_94

    Re : S'agit-il de quelle language de programmation???

    Hello,
    pour moi c'est un langage propriétaire lié aux régulateurs ABB.
    Je serais surpris que ce soit le même langage chez Siemens !
    Il faut te tourner vers ABB pour voir s'il fournissent de la doc sur la syntaxe de leur langage de programmation.

  11. #10
    pcht

    Re : S'agit-il de quelle language de programmation???

    Merci Bq pour votre aide,
    j'ai pas mal cherché sur le langage de programmation des régulateur ABB (spécifiquement cette référence qui est un peut ancienne), mais rien du tout, la société qui a programmé ce régulateur est d'origine italienne...
    l'objectif comme j'ai déjà cité (pour moi ), est de comprendre les programme chargé depuis le régulateur pour pouvoir juste simplifié mon travail qui consiste à faire la re-modélisation du système tout en remplaçant ce régulateur avec celui du siemens (PID intégré dans la CPU de gamme S300)

    Ce que j'ai compris c'est que par expl: X=Y Z + veut dire: X=Y+Z mais il y en a d'autre notation que j'ai pas bien saisie

    je vous remercie pour vos réponse.

  12. #11
    CM63

    Re : S'agit-il de quelle language de programmation???

    Bonsoir,

    Nous avons supposé que c'est la "notation polonaise inverse" qui est utilisée pour les opérations. Si c'est le cas, cela fonctionne de la façon suivante:
    Je prends l'exemple de la formule:

    Code:
     P_H2O = P_PROD 1.0 RR + / RR *
    Je rentre la variable P_PROD
    Je rentre la constante 1.0
    Je rentre la variable RR

    A ce moment la pile des régistres contient les variables entrées dans l'ordre inverse:

    Code:
    P_PROD
    1.0
    RR
    Ensuite la première opération que l'on tape va se faire entre la dernière variable entrée et l'avant dernière, le résuitat va être mis dans la dernuière position de la pile, et on va descendre les autres valeurs d'une position. Donc on va avoir maintenant dans la pile, après l'execution de l'opération "+":

    Code:
    (rien là où il y avait P_PROD)
    P_PROD
    1.0 +RR
    La prochaine opération qui va être executée sera "/". Une fois qu'elle sera exécutée, on aura dans la pile:

    Code:
    (rien au dessus)
    P_PROD/(1.0+RR)
    Ensuite on rentre à nouveau la valeur RR et on multiplie, donc on aura dans la pile:

    Code:
    (rien au dessus)
    RR*(P_PROD)/(1.0+RR)
    Le résultat, c'est-à-dire la dernière position de la pile, est mis dans la variable P_H2O.

    Ok?
    Dernière modification par CM63 ; 10/03/2016 à 17h05.

  13. #12
    pcht

    Re : S'agit-il de quelle language de programmation???

    Merci bq, oui c'est exactement ce que je cherche parceque ça résoudre quelque équation que je savais au paravant,
    c'est le langage C avec notation polonaise
    Je vous remercie encore et bq
    Problème résolu

  14. #13
    CM63

    Re : S'agit-il de quelle language de programmation???

    D'ailleurs la dernière opération, l'affectation du résultat à la variable P_H2O, ne suit pas cette syntaxe dite de "polonaise inverse", sur un HP des années 80 on aurait plutôt écrit:

    Code:
    P_PROD 1.0 RR + / RR * -> P_H2O

  15. #14
    JPL
    Responsable des forums

    Re : De quel langage de programmation s'agit-il ?

    Juste parce que le titre m'écorche la rétine j'ai remis les mots dans l'ordre et
    Dernière modification par JPL ; 11/03/2016 à 12h44.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  16. #15
    f.oreste

    Re : De quelle language de programmation s'agit-il

    hm, JPL, pour l'instant y'a ça qui s'affiche ?? la modification ne semble pas s'être faîtes
    S'agit-il de quelle language de programmation???
    je propose, "de quel langage de programmation s'agit-il ? "

  17. #16
    Bluedeep

    Re : S'agit-il de quelle language de programmation???

    Citation Envoyé par CM63 Voir le message
    D'ailleurs la dernière opération, l'affectation du résultat à la variable P_H2O, ne suit pas cette syntaxe dite de "polonaise inverse", sur un HP des années 80
    70, pas 80. Les premières HP en notation polonaises sont arrivées vers 72.

  18. #17
    pm42

    Re : S'agit-il de quelle language de programmation???

    Citation Envoyé par Bluedeep Voir le message
    70, pas 80. Les premières HP en notation polonaises sont arrivées vers 72.
    En effet. Et il y avait même des calculateurs HP, plus gros en polonaise inversée avant, en 1968. Pour ceux que ça intéresse, le site de référence : http://hpmuseum.org/

Discussions similaires

  1. quel langage de programmation pour pic
    Par lessi dans le forum Électronique
    Réponses: 13
    Dernier message: 17/10/2014, 22h12
  2. quel langage de programmation
    Par invite0cbf59fc dans le forum Programmation et langages, Algorithmique
    Réponses: 17
    Dernier message: 27/03/2013, 15h39
  3. Quel langage de programmation choisir?
    Par Nobel_prize_of_music dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 03/04/2012, 19h25
  4. quel langage de programmation comprend linux?
    Par lebiologiste2 dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 06/05/2011, 10h16
  5. Quel langage pour la programmation des PIC
    Par gaga2410 dans le forum Électronique
    Réponses: 39
    Dernier message: 22/09/2007, 10h41