Vai al contenuto
PLC Forum


Utilizzo di puntatori ?


claudio

Messaggi consigliati

Gentilissimi frequentatori del forum

Buon pomeriggio.

Ho un problema che proprio non so come risolvere; cerco di spiegarmi il meglio che posso.

Lavoro in una scuola e ho una postazione di lavoro dove un PLC Bosch è collegato via profibus con due servodrive Ecodrive. Tanti anni fa svevo scritto una routine per la gestione del posizionamento degli assi avvalendomi di CoDeSys e dei puntatori. Per esigenze didattiche, vorrei sostituire il PLC Bosch con un S7-1500, aggiornando la routine.

La routine dovrebbe ricevere in ingresso l'indirizzo base dell'area di memoria nella quale si trovano i parametri del servodrive più altri parametri come velocità e accelerazione; internamente alla routine, tali parametri sono opportunamente elaborati e trasferiti negli indirizzi corrispondenti dell'area di memoria.

 

Di seguito ho riportato quanto avevo fatto in CoDeSys: dapprima la chiamata alla funzione

 

PosStart(
    Axis_base_addr_CTRL:=ADR(Axis_2_base_address_CTRL),                             
    axis_base_addr_STAT:=ADR(Axis_2_base_address_STAT),
    position:=0.0,
    velocity:=300.0,
    acceleration:=130,
    deceleration:=130,
    start:=TRUE);

 

e poi una parte del contenuto della funzione 

 

FUNCTION PosStart: Bool

VAR_INPUT
axis_base_addr_CTRL,axis_base_addr_STAT:POINTER TO DWord;
position,velocity,acceleration,deceleration:REAL;
start:Bool;
END_VAR
VAR
tmp0:Real;
tmp:DWord;
pt:Pointer TO DWord;
END_VAR

 

IF start = TRUE THEN
    pt := axis_base_addr_CTRL;
    tmp0 := position * 10000;
    tmp := REAL_TO_DWORD(tmp0);
    pt := pt + 2;
    pt ^ := ROR(tmp, 16);

 ......

 

Il mio problema è che proprio non so come fare in TIA Portal a convertire la funzione: non riesco ad assegnare un indirizzo a un puntatore, a incrementare il puntatore, a assegnare un valore a una variabile puntata da un puntatore. Chiederei se ci fosse qualcuno che mi potesse dare qualche indicazione a tal proposito, anche perchè finora le mie ricerche in rete sono state infruttuose. Vi ringrazio per il tempo che potrete dedicarmi. Ciao. Claudio

 

Link al commento
Condividi su altri siti

  • 5 months later...

Quì puoi trovare un manualetto rapido sull'indicizzazione dei dati in simbolico su S7-1500. Chiaramente si potrebbe utilizzare anche un puntamento assoluto (su indirizzo) ma, visto che S7-1500 mette a disposizione possibilità di programmazione completamente simboliche sarebbe meglio sfruttarle:

 

https://support.industry.siemens.com/tf/it/en/posts/indirect-access-s7-1500-indicizzazione-dei-dati-su-s7-1500/200654/?page=0&pageSize=10

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...