Vai al contenuto
PLC Forum


Sfc58-sfc59 Questi Sconosciuti? - Comunicazione aciclica con CU320-2DP


Spand

Messaggi consigliati

Salve,

A breve dovrò mettere in funzione una macchina con una CPU313C-DP che comunica con una CU320-2DP che gestisce 5 motori brushless con encoder assoluti. Normalmente utilizzo il telegramma 110 per la comunicazione tra plc e azionamento.

In questo caso però mi viene richiesto di permettere al manutentore di fare l'azzeramento dell'asse dall'esterno, ho trovato il parametro per fare l'azzeramento, ma non quello per fare il salvataggio da RAM a ROM. Mi sono informato e ho capito che si rende necessaria una comunicazione aciclica con SFC58 - SFC59, ho guardato un pochino in giro nel forum ma non è che mi sia molto chiaro. Qualcuno può aiutarmi ad approcciare alla cosa?

Grazie

Link al commento
Condividi su altri siti


SFC58 e 59 servono a comunicare dati tramite Profibus in modo asincrono, il puntatore fa riferimento ad un data set, cioè una formattazione di un messaggio secondo una sintassi ben precisa.

per esempio:

questo è il richiamo:

// RAM TO ROM

CALL SFC 58 // SFC 58 call

IN0 :=M996.7 // RAM to ROM start bit

IN1 :=B#16#54 // B#16#54 (fixed,not to change!)--> Periphery code identification (PE)

IN2 :=#HW_address // Logic address of module;from HW Konfig: in example 256(Dec) = 100(Hex)

IN3 :=B#16#2F // Dataset number (fixed,not to change!) : DS47(Dec) = 2F(Hex)

IN4 :="Para_write".store_RAM_to_ROM //Data Struct with data to write

RET_VAL:=MW992 // Error code in transfer error case

OUT5 :=M996.4 // BUSY = 1: Write job still running.

mentre il "Para_write".store_RAM_to_ROM è una parte di DB:

store_RAM_to_ROM STRUCT

Job_Nr BYTE B#16#1 Job number (0...255), job identification

Job_ID BYTE B#16#2 Job type:Parameter read = 1; Parameter write = 2

Axis_Object_Nr BYTE B#16#1 Axis Object Nr. (Profibus sub ID) CU and not AXIS module

Number_of_Parameters BYTE B#16#1 Number_of_Parameters to read/write

Parameter_type BYTE B#16#10 Type of Parameter: 10 Value, 20 Description, 30 Text

Number_of_SubIndexes BYTE B#16#1 Number of subIndexes to read/write

Parameter_Number WORD W#16#3D1 Parameter number P977 copy RAM to ROM

Subindex WORD W#16#0 Subindex

datatype WORD W#16#4201 42 word, 01hex=1 number of blocks to be downloaded

RAM_TO_ROM WORD W#16#1 Parameter ram to rom

END_STRUCT

questo è l'esempio di scrittura del parametro P977 che guarda caso corrisponde alla scrittura da RAM a ROM.

pigroplc

Link al commento
Condividi su altri siti

Grazie molte, ora comincio a capirci qualcosa. A questo punto la domanda successiva è come mi risponde l'azionamento a questo comando? è possibile avere la spiegazione della struttura dei dati anche per SFC59? Nello specifico dovrei sapere quando il salvataggio è stato completato.

Come mai negli esempi si leggono e scrivono 240byte, a cosa servono gli altri?

Link al commento
Condividi su altri siti

La struttura dei dati fa riferimento al DS47, identico per entrambe le direzioni da e evrso il PLC.

L'azionamento conferma la avvenuta ricezione del messaggio attraverso i flag parametrizzati nella SFC, fronte di discesa del busy e assenza di errore.

Quanto alla lunghezza di 240 byte è il limite fisico della trasmissione, se vedi la struttura che ti ho allegato della DB nel thread precedente vedi che sono molto meno i byte.

Io queste SFC le ho usate una pigna di volte per scambio dati con Sinamics ma non ho mai avuto la necessità di superare i 240 byte....

pigroplc

Link al commento
Condividi su altri siti

La mia domanda sulla lunghezza era per capire come mai cosi tanti byte (240) mi sembra che se ne usino molto meno, forse per questo che non ci capisco molto cosa è il DS47?

Link al commento
Condividi su altri siti

il DS47 è un data set, cioè un formato dati, in poche parole è suddiviso in intestazione (secondo uno standard predefinito) e un corpo dati che viene definito nell'intestazione.

nell'esempio che ti ho postato il corpo dati è composto solamente da una word, RAM_TO_ROM WORD W#16#1 Parameter ram to rom

mentre nell'intestazione c'è il significato di ciò che viene spedito: Parameter_Number WORD W#16#3D1 Parameter number P977 copy RAM to ROM

se invece devi trasferire i sottoparametri dove vengono scritte per esempio delle quote l'intestazione cambierà in funzione dei parametri da trasmettere, mentre la parte dati arriverà facilmente a 240 bytes.

se per esempio l'intestazione sono se non erro è lunga 12 bytes hai un pacchetto dati netto di 228 bytes.

228 bytes sono 57 Dword e se pensi che puoi trasmettere 64 quote vedi bene che lo devi fare tramite 2 pacchetti separati.

pigroplc

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...