Jump to content
PLC Forum
Informazione di servizio:
Questa versione del forum si basa su una installazione non completa in quanto a seguito dell'incendio del datacenter di Strasburgo avvenuto il 10 marzo.
Stiamo attendendo di avere accesso agli ultimi backup siti nello stesso datacenter. Appena disponibili provvederemo all’integrazione dei dati.
Tutti i malfunzionamenti che potreste riscontrare (mancanza di file, immagini, messaggi privati, discussioni, post e funzionalità del sito) sono dovuti al ripristino ancora in versione parziale dei database, file e pagine web.
Per chi volesse fare delle segnalazioni può scrivere a segnalazioni@plcforum.it o attraverso la nostra sezione di assistenza disponibile su ticket.plcforum.it

Vi ringraziamo anticipatamente per la pazienza e l'attesa a cui, nostro malgrado, vi stiamo sottoponendo.

Grazie
L'amministrazione di PLC Forum.



Mauriziob82

NX1P2 Omron funzioni libreria

Recommended Posts

Mauriziob82

Salve volevo sapere se per i PLC Omron NX1P2 in ambiente Sysmac Studio esiste una funzione similare alla PEEK_WORD di Tia Portal che legge indirizzi di Memoria Standard senza indicare il tipo di dati,

 


 
#Peeker := PEEK(AREA := 16#84, DBNUMBER := 1, BYTEOFFSET := 2, ENO => ENO);
 

AREA
 Input
 BYTE
 I, Q, M, D
 Possono essere selezionati i seguenti campi:

16#81: Input

16#82: Output

16#83: Merker

16#84: DB

16#1: Ingresso periferia (solo S7-1500)

 

Grazie
 
 

Link to post
Share on other sites

Ctec

Non penso proprio si possa fare. Il Sysmac Studio usa una allocazione dinamica delle variabili, per cui è il compilatore che decide dove mettere la variabile. Te puoi volendo "forzare" un indirizzo specifico per una o più variabili (% davanti all'indirizzo, quindi %D, %W, ecc) nel campo AT.

Anche gli ingressi e uscite fisiche del PLC (moduli) hanno un indirizzo "strano" come: "IOBus://rack#0/slot#0/Ch1_In/Ch1_In00"

Sono fatti per lavorare in simbolico, usa le strutture e le union per fare combinazioni "strane" per indirizzare le variabili.

Link to post
Share on other sites
Mauriziob82

Grazie per le informazioni. Usando invece Strutture in Tipi di Dati e Poi le Strutture richiamate in Dati Globale è possibile?

 

Link to post
Share on other sites
Ctec

Esattamente, cosa devi fare?

Una volta definita una struttura come tipo dati, puoi poi definirci diverse variabili. Gli elementi della variabile si accedono con il punto (NomeVariabile.Elemento).

Puoi anche fare una FB che prende in ingresso, uscita o ingresso-uscita una struttura, per semplificare il passaggio dati.

Le variabili con tipo struttura possono essere sia locali che globali. E' a tutti gli effetti una variabile, che però ha un tipo complesso. E' come un array, ma mentre questo ha elementi omogenei (tutti dello stesso tipo), la struttura ha dati eterogenei (tipi diversi). Si possono fare anche array di strutture (per esempio le ricette...). E' uno strumento potente.

Link to post
Share on other sites
Mauriziob82

Buongiorno grazie per le delucidazioni. Devo creare nel PLC un Archivio Ricette- Ricetta in Lavorazione e Ricetta da Visualizzare, composto da dati di diverso formato, INT, DINT, REAL e BOOL. Quindi la strada intrapresa è corretta? Una ulteriore domanda, poichè il progetto da cui parto è Siemens e la struttura ricette e costituita da puntatori che accedono ad aree DATI e a secondo dell'indice popolano le aree di interesse, in questo caso l'unica strada se si adopera in Omron ST è utilizzare funzione ad Hoc oppure c'è un metodo più veloce. Grazie anticipatamente.

Buona giornata

Maurizio

Link to post
Share on other sites
Ctec

Definisci un tipo dati RicettaStruct, dove metti gli elementi, chiamiamoli Dato1 INT, Dato2 DINT, Dato3 REAL, Dato4 BOOL.

Poi nelle globali definisci una variabile Ricette[nricette] come Array di RicettaStruct, di dimensione nricette che vuoi te, e impostalo Ritentivo. Questo è l'archivio delle ricette.

Inoltre definisci una variabile RicettaLav e una RicettaVis sempre di tipo RicettaStruct, che saranno quella in lavorazione e in visualizzazione.

A questo punto, se vorrai aggiornare la ricetta in lavorazione prelevandola dall'archivio, scriverai

RicettaLav := Ricette[n];   

dove n è il numero della ricetta.

Per salvare una ricetta in lavorazione, avrai

Ricette[m] := RicettaLav;   

dove m è il numero della ricetta da sovrascrivere in archivio.

Piuttosto semplice, no?

Link to post
Share on other sites
Mauriziob82

Si molto chiaro la mia difficoltà è nell'automatizzare gli indici n (numero della ricetta) ed m (numero della ricetta da sovrascrivere in archivio senza fare una serie di condizione IF per la lettura ricetta e scrittura ricette. Grazie molte per le delucidazioni, precise e puntuali

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...