Migrar o programa Remoter no LogicLab

Produtos SlimLine e Netsyst III são os sucessores de produtos programáveis ​​de PLC anteriores desenvolvidos pela Elsist, as famílias Picosyst e e Netsyst I-II. Produtos que foram programados com o Remoter, uma ferramenta de desenvolvimento inteiramente desenhada por nós que permitia escrever programas em ladder, lista de instruções e linguagem C padrão. No mercado existem dezenas de milhares de produtos que executam aplicativos desenvolvidos no Remoter e, ao longo dos anos, o produto está no mercado desde 1991, muitos decidem substituir os produtos antigos por novos e se veem na necessidade de reescrever os programas antigos com LogicLab. Aqui está um programa clássico de lista de instruções escrito com o Remoter.

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

Se, para a linguagem ladder, for intuitivo passar do programa Remoter para o programa LogicLab, para a linguagem da lista de instruções, é possível consultar o Manual Remoter para entender como as instruções funcionam. Mas, para um programa de reescrever meu conselho é usar os nomes de até variáveis ​​LogicLab remotas, por isso é fácil de fazer um teste entre os dois programas Então aqui está o programa de imagem convertido (Download do programa).

Como você pode ver, eu declarei todas as variáveis ​​como variáveis ​​globais, assumindo o mesmo identificador usado no Remoter como um nome I 0000 torna-se I_0000, F 0000 torna-se F_0000 e assim por diante. Enquanto o programa é intuitivo para a escada, vamos ver como ele foi convertido em uma lista de instruções.

  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 *)

Aqui está a descrição das instruções do IL.

+-------+-----------------+----------------------------------------------------------------------------------+
| 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 também permitiu a programação em linguagem C padrão, neste caso, é possível realizar a conversão de programas usando a linguagem ST (Texto Estruturado), cuja construções são muito próximos aos da linguagem C. A conversão de um programa é uma operação que pode esconder muitos pontos complexos para se locomover, se houver dúvidas específicas sugiro que você postar sua pergunta no fórum, de modo a ser visível e, portanto, também fornecem ajuda aos outros.

Esse artigo foi útil?