Vai al contenuto
PLC Forum


Protocollo SIEMENS 3964R


CD4INT

Messaggi consigliati

Ciao a tutti,

c'è qcn che conosce la descrizione del protocollo 3964R.

Ho trovato dei driver, ma mi servirebbe proprio la struttura del prot. per

ricostruire il flusso di dati da un vecchio supervisore a un AS115 944B.

Grazie in anticipo a quanti sapranno darmi qualche dritta. :o

Link al commento
Condividi su altri siti


Ivan Castellaro

Ti serve la descrizione del 3964r o la desrizione del protocollo per comunicare con la porta di programmazione del plc (AS511)?

Link al commento
Condividi su altri siti

Ho realizzato tempo fa una comunicazione tra un supervisore (Fix) e un plc S595U (seconda interfaccia seriale con protocollo 3964R).

Non è stato un parto semplice, se ti interessa mettiti in contatto e (appena possibile) cerco di mandarti per fax qualche doc.

Ciao.

Link al commento
Condividi su altri siti

Ivan+Oct 4 2002, 10:42 AM-->
CITAZIONE(Ivan @ Oct 4 2002, 10:42 AM)

Mi serve proprio quella del 3964R!

La comun. avviene attraverso una 6ES5524-3UA13 di un 115 cpu 944B.

Grazie x l'interessamento.

Link al commento
Condividi su altri siti

Ivan Castellaro

Questo è quello che ho della porta di comunicazione. Spero sia la stessa cosa, altrimenti prova su

SiemensSupport

se trovi qualcosa

--------------------------------------------------------------------------------

SIEMENS SIMATIC S5 AS511 (Porta di programmazione) descrizione del

protocollo

--------------------------------------------------------------------------------------------------------

La struttura dei dati della Siemens non è abituale, apri la porta

seriale con:

velocità 9600 baud

dati 8 bits

stop 1 bit

parità PARI

DLE (10hex) è un carattere di controllo, usato per informare il

ricevitore che il carattere seguente

deve essere considerato come un carattere di controllo e non come un

byte di dati.

In altre parole, DLE è un deviatore software dentro il protocollo AS511

per dividere i bytes di

controllo e di dati.

Ogni volta che deve essere inviato un byte di DATI contenente il valore

10hex, il trasmettitore deve

RADDOPPIARE il carattere. Ciò significa che per inviare il byte di dati

10hex, il trasmettitore deve

inviare 10hex 10hex (DLE DLE).

Il ricevitore deve considerare la cosa, così un DLE singolo rappresenta

un segnale del protocollo,

mentre due DLE consecutivi devono essere interpretati come un SINGOLO

byte di dati avente il

valore 10hex. Questo è trucchetto giacchè il ricevitore non sa MAI

esattamente quanti bytes

aspettare.

Tieni anche nota che l'AG può rispondere DLE NAK al posto di DLE ACK se

l'operazione richiesta

non può essere effettuata.

In questo caso, il PG deve terminare la comunicazione ed attendere per

500ms prima di tentare una

nuova comunicazione.

Il valore di 500ms è anche utilizzato come valore di attesa nel caso di

mancata risposta dal partner.

Questo significa anche che nessun "buco" di 500ms (o più) è consentito

durante una comunicazione

(per esempio dentro una funzione DB_READ).

Per leggere o scrivere un valore di datablock, hai bisogno di sapere il

suo indirizzo nella memoria

del PLC. Quindi devi chiamare la funzione B_INFO per sapere

l'indirizzo, quindi puoi chiamare

DB_READ o DB_WRITE passando l'indirizzo iniziale e finale dell'area per

essere letta o scritta.

Ricordati che in SIMATIC l'ordine dei bytes LSB/MSB è invertito:

SIMATIC:

15..............0

BYTE 0 BYTE 1

INTEL:

15..............0

BYTE 1 BYTE 0

Per ottenere il valore intero corretto di una dataword, l'utente deve

dunque:

- scambiare i bytes ricevuti

e

- scambiare i bytes prima di inviarli al PLC

//////////////////////////////////////////////////////////////////////////////

B_INFO

input: numero del blocco

output: indirizzo iniziale della DW0 in AG

PG AS

(hex) (hex)

---------------------- function start --------

02 ----> STX

<---- 10 DLE

<---- 06 ACK

1A ----> B_INFO function code = 1Ah

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 16 AG answer=16h

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

---------------------- header info --------

01 ----> ID=01h for Datablock

XX ----> DB number (0..255)

10 ----> DLE

04 ----> EOT

<---- 10 DLE

<---- 06 ACK

---------------------- data --------

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 00 NUL

<---- XX DB initial address

<---- XX

<---- 70 synchronization code: 70 70

<---- 70

<---- 41 block ID and DB number : 41 XX

<---- XX

<---- XX PG ID code: XX XX

<---- XX

<---- XX library number: XX XX

<---- XX

<---- XX block length (words): XX XX

<---- XX

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

---------------------- terminate --------

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 12 AG "end of transmission" code: 12h

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

//////////////////////////////////////////////////////////////////////////////

DB_READ

input: indirizzo iniziale in AG

indirizzo finale in AG

output: contenuto delle datawords

PG AS

(hex) (hex)

---------------------- function start --------

02 ----> STX

<---- 10 DLE

<---- 06 ACK

04 ----> DB_READ function code = 04h

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 16 AG answer=16h

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

---------------------- header info --------

XX ----> initial address in AG: XX XX

XX ---->

XX ----> final address in AG: XX XX

XX ---->

10 ----> DLE

04 ----> EOT

<---- 10 DLE

<---- 06 ACK

---------------------- data --------

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 00 NUL

<---- 00 NUL

<---- 00 NUL

<---- 00 NUL

<---- 00 NUL

<---- XX first byte of data

<---- XX

<---- XX

. . .

. . .

<---- XX

<---- XX

<---- XX last byte of data

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

---------------------- terminate --------

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 12 AG "end of transmission" code: 12h

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

//////////////////////////////////////////////////////////////////////////////

DB_WRITE

input: indirizzo iniziale in AG

contenuto delle datawords

output: none

PG AS

(hex) (hex)

---------------------- function start --------

02 ----> STX

<---- 10 DLE

<---- 06 ACK

03 ----> DB_WRITE function code = 03h

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 16 AG answer=16h

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

---------------------- header info --------

XX ----> initial address in AG: XX XX

XX ---->

---------------------- data --------

XX ----> first byte of data

XX ---->

XX ---->

. . .

. . .

XX ---->

XX ---->

XX ----> last byte of data

10 ----> DLE

04 ----> EOT

<---- 10 DLE

<---- 06 ACK

---------------------- terminate --------

<---- 02 STX

10 ----> DLE

06 ----> ACK

<---- 12 AG "end of transmission" code: 12h

<---- 10 DLE

<---- 03 ETX

10 ----> DLE

06 ----> ACK

//////////////////////////////////////////////////////////////////////////////

fine documento

Esempio di disposizione in memoria in una CPU90

Scritto il seguente programma:

OB1 segm.1

: U E 32.0

: = A 32.0

:

:

: BE

Scritta la DW0 della DB10

DW0 : 0005

Memoria occupata dall’indirizzo D0000 all’indirizzo D01F

D000 70 70 Codice di sincronizzazione

D002 50 01 OB1

D004 80 00

D006 00 00

D008 00 0A

D00A C0 20 U E 32.0

D00C D8 A0 = A 32.0

D00E 10 82 :

D010 10 82 :

D012 65 00 BE

D014 70 70 Codice di sincronizzazione

D016 41 0A DB 10

D018 80 00

D01A 00 00

D01C 00 06

D01E 00 05 DW0 = 00 05

Protocollo AS511

Pagina 1 di 1

Link al commento
Condividi su altri siti

Il protocollo di comunicazione che cerchi è quello che descrive Ivan , io qualche cosa in piu' solo su supporto cartaceo , inviami il tuo indirizzo alla mia e-mail fskata[at]katamail.it ,cercherò di inviarti le fotocopie .

Saluti Draccula

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