Migrieren Sie das Remoter-Programm in LogicLab

Die Produkte SlimLine e Netsyst III sind die Nachfolger früherer programmierbarer SPS - Produkte von Elsist, die Picosyst und e Familien Netsyst I-II. Produkte, die mit Remoter programmiert wurden, einem vollständig von uns entwickelten Entwicklungstool, mit dem Sie Programme in Ladder, Anweisungsliste und Standardsprache C schreiben können. Auf dem Markt gibt es Zehntausende von Produkten, die in Remoter entwickelte Anwendungen ausführen, und im Laufe der Jahre ist das Produkt seit 1991 auf dem Markt. Viele entscheiden sich, die alten Produkte durch neue zu ersetzen und müssen neu schreiben die alten Programme mit LogicLab. Hier ist ein klassisches Befehlslistenprogramm, das mit Remoter geschrieben wurde.

ORGR
LODT  I 0000            ; Pulsante start
ORLT  O 0000            ; Comando pompa
ANDT  I 0001            ; Pulsante stop
OUTT  O 0000            ; Comando pompa
OUTM  T 0000  K 0050    ; Pausa comando Ev

ORGR
LODF  T 0000            ; Pausa comando Ev
UTCH  O 0001            ; Ev acqua

ORGR
LODT  T 0000            ; Pausa comando Ev
LTCH  O 0001            ; Ev acqua

Wenn es für die Kontaktplansprache intuitiv ist, vom Remoter-Programm an das LogicLab-Programm zu übergeben, kann für die Anweisungslistensprache auf die Sprache verwiesen werden Remoter Handbuch zu verstehen, wie die Anweisungen funktionieren. Um ein Programm jedoch umzuschreiben, empfiehlt es sich, die Remoter-Variablennamen auch in LogicLab zu verwenden. Es ist also einfach, die beiden Programme zu überprüfen. Hier ist der Screenshot mit dem konvertierten Programm (Programm herunterladen).

Wie Sie sehen können, habe ich alle Variablen als globale Variablen deklariert, unter der Annahme, dass derselbe Bezeichner in Remoter als Name verwendet wird I 0000 wird I_0000, F 0000 wird F_0000 und so weiter. Wenn das Programm für die Ladder intuitiv ist, sehen wir, wie es in eine Anweisungsliste umgewandelt wurde.

  LD    I_0000    (* Pulsante start *)
  OR    O_0000    (* Comando pompa *)
  ANDN  I_0001    (* Pulsante stop *)
  ST    O_0000    (* Comando pompa *)
  ST    T_0000.IN (* Pausa comando Ev *)

  LD    500       (* 500 mS *)
  ST    T_0000.PT
  CAL   T_0000    (* Pausa comando Ev *)

  LDN   O_0000    (* Comando pompa *)
  R     O_0001    (* Ev acqua *)

  LD   T_0000.Q   (* Pausa comando Ev *)
  S    O_0001     (* Ev acqua *)

Hier ist die Beschreibung der IL-Anweisungen.

+-------+-----------------+----------------------------------------------------------------------------------+
| Istr. | Operandi        | Descrizione                                                                      |
+-------+-----------------+----------------------------------------------------------------------------------+
| LD    | Tutti           | Carica il valore operando nell'accumulatore                                      |
| LDN   | Tutti           | Carica il valore negato operando nell'accumulatore                               |
| ST    | Tutti           | Trasferisce il valore dell'accumulatore nell'operando                            |
| STN   | Tutti           | Trasferisce il valore negato dell'accumulatore nell'operando                     |
| S     | BOOL            | Setta l'operando (Accetta solo BOOL) se l'accumulatore è TRUE                    |
| R     | BOOL            | Resetta l'operando (Accetta solo BOOL) se l'accumulatore è TRUE                  |
| AND   | Tutti meno REAL | AND a bit tra accumulatore e valore operando, risultato in accumulatore          |
| ANDN  | Tutti meno REAL | AND a bit tra accumulatore e valore negato operando, risultato in accumulatore   |
| OR    | Tutti meno REAL | OR a bit tra accumulatore e valore operando, risultato in accumulatore           |
| ORN   | Tutti meno REAL | OR a bit tra accumulatore e valore negato operando, risultato in accumulatore    |
| XOR   | Tutti meno REAL | XOR a bit tra accumulatore e valore operando, risultato in accumulatore          |
| XORN  | Tutti meno REAL | XOR a bit tra accumulatore e valore negato operando, risultato in accumulatore   |
| NOT   |                 | Esegue l'inversione a bit del valore in accumulatore                             |
| ADD   | Tutti meno BOOL | Somma tra accumulatore e valore operando, risultato in accumulatore              |
| SUB   | Tutti meno BOOL | Sottrazione tra accumulatore e valore operando, risultato in accumulatore        |
| MUL   | Tutti meno BOOL | Moltiplicazione tra accumulatore e valore operando, risultato in accumulatore    |
| DIV   | Tutti meno BOOL | Divisione tra accumulatore e valore operando, risultato in accumulatore          |
| MOD   | Tutti meno BOOL | Ritorna il modulo della divisione nell'accumulatore                              |
| GT    | Tutti meno BOOL | Controlla se accumulatore > operando, risultato (BOOL) in accumulatore           |
| GE    | Tutti meno BOOL | Controlla se accumulatore >= operando, risultato (BOOL) in accumulatore          |
| EQ    | Tutti meno BOOL | Controlla se accumulatore = operando, risultato (BOOL) in accumulatore           |
| NE    | Tutti meno BOOL | Controlla se accumulatore <> operando, risultato (BOOL) in accumulatore          |
| LE    | Tutti meno BOOL | Controlla se accumulatore <= operando, risultato (BOOL) in accumulatore          |
| LT    | Tutti meno BOOL | Controlla se accumulatore < operando, risultato (BOOL) in accumulatore           |
| JMP   | Etichetta       | Salta incondizionatamente su etichetta                                           |
| JMPC  | Etichetta       | Salta su etichetta se accumulatore diverso da zero                               |
| JMPCN | Etichetta       | Salta su etichetta se accumulatore uguale a zero                                 |
| CAL   | FB              | Esegue incondizionatamente il blocco funzione                                    |
| CALC  | FB              | Esegue blocco funzione se accumulatore diverso da zero                           |
| CALCN | FB              | Esegue blocco funzione se accumulatore uguale a zero                             |
| RET   |                 | Ritorna incondizionatamente al programma che ha eseguito CALL                    |
| RETC  |                 | Ritorna al programma che ha eseguito CALL se accumulatore diverso da zero        |
+-------+-----------------+----------------------------------------------------------------------------------+

Remoter erlaubte auch die Programmierung in der Standardsprache C, in diesem Fall ist es möglich, Programme mit der ST-Sprache (Structured Text) zu konvertieren, deren Konstrukte denen der C-Sprache sehr nahe kommen. Die Konvertierung eines Programms ist eine Operation, die dies ermöglicht verstecken Sie viele komplexe Punkte, die umgangen werden sollen. Wenn Sie spezifische Fragen haben, rate ich Ihnen, die Frage im Forum zu veröffentlichen, um sichtbar zu sein und anderen zu helfen.

War dieser Artikel hilfreich?