Vai al contenuto
PLC Forum


Funzione 16 Modbus Con Vipa


Messaggi consigliati

Inserito:

Buongiorno a tutti, stò utilizzando l'SFC217 della VIPA per trasmettere un telegramma con la funzione 10hex(16 dec).

Queste sono le righe di codice:

//Formato messaggio Master

// --------------------------------------------------------------------------------------------------------

// |Indirizzo| Codice | Indirizzo 1° |N° Word da|n° byte |Val.1°word |Val.n°word | CRC |

// | Slave |funzione|W. da scriv. | scrivere |dei dati |da scrivere |da scrivere | |

// --------------------------------------------------------------------------------------------------------

// | Byte | Byte | MSB | LSB | MSB |LSB | Byte | MSB | LSB | MSB | LSB | LSB | MSB|

// ---------------------------------------------------------------------------------------------------------

// Il CRC viene incluso nel telegramma dall'SFC217

// quindi non è necessario calcolarlo

// l'Indirizzi partono da 0 quindi è necessario sotrarre 1

L W#16#110 // slave 1 ,funzione 16 scrivi n words

T DB20.DBW 0

L W#16#26AB // Indirizzo del 1° registro nel quale scrivere

T DB20.DBW 2

L 6 // n.di registri(in word) da scrivere

T DB20.DBW 4

L 12

T DB20.DBB 6 // n.di byte dei dati da scrivere

L DB3.DBD 34 //valore del 1° e 2° registro

T DB20.DBD 7 //Quota obiettivo

L DB3.DBD 30 //valore del 3° e 4° registro

T DB20.DBD 11 //Velocità di posizionamento

L DB3.DBD 26 //valore del 5° e 6° registro

T DB20.DBD 15 //Velocità manuale

CALL SFC 217 // Send

DataPtr:=P#DB20.DBX0.0 BYTE 19 // Lunghezza in byte del telegramma

DataLen:=MW190 // Uso interno SFC

RetVal :=MW192 // Return-Code

Il mio dubbio è quel "N° di byte dei dati", che guardano il protocollo standard Modbus dovrebbe essere inserito

nel telegramma.

Quindi la mia domanda è questa:

Secondo voi è corretta la composizione del telegramma?

Ma il parametro DataPtr avrà sempre una lunghezza dispari allora!!!


Inserita:
Quindi la mia domanda è questa:

Secondo voi è corretta la composizione del telegramma?

Ma il parametro DataPtr avrà sempre una lunghezza dispari allora!!!

Il messaggio del comando 16 è costituito da un numero dispari di byte.

La costruzione che fai è corretta. Non ho mai usato Vipa, ma se il protocollo deve essere modbus RTU standard sei a posto.

Inserita:

Si il protocollo è Modbus RTU

Mi piacerebbe sapere se qualcuno ha già provato questo comando;

Io purtroppo fin'ora ho solo provato a leggere con la funzione 03 ma non ho mai

sviluppato codice PLC per la funzione 16

Inserita:

SONO riuscito a testarla con esito positivo!!!!!

Quindi il codice che vedete per la composizione del telegramma e OK !!!

Inserita:

Ottimo! Anche per aver segnalato la soluzione del problema. :clap:

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