SIMATIC
S7ProSim
Manuale
01/2001
2809927-0001
Avvertenze tecniche di sicurezza
Il presente manuale contiene avvertenze tecniche relative alla sicurezza delle persone e alla prevenzione dei danni mate
riali che vanno assolutamente osservate. Le avvertenze sono contrassegnate da un triangolo e, a seconda del grado di
pericolo, rappresentate nel modo seguente:
!
!
!
Pericolo di morte
significa che la non osservanza delle relative misure di sicurezza provoca la morte, gravi lesioni alle persone e ingenti
danni materiali.
Pericolo
significa che la non osservanza delle relative misure di sicurezza può causare la morte, gravi lesioni alle persone e ingenti
danni materiali.
Attenzione
significa che la non osservanza delle relative misure di sicurezza può causare leggere lesioni alle persone o lievi danni
materiali.
Avvertenza
è una informazione importante sul prodotto, sull'uso dello stesso o su quelle parti della documentazione su cui si deve
prestare una particolare attenzione.
Personale qualificato
La messa in servizio ed il funzionamento del dispositivo devono essere effettuati solo in base alla descrizione del manuale.
Interventi nel dispositivo vanno effettuati esclusivamente da personale qualificato. Per personale qualificato ai sensi delle
avvertenze di sicurezza contenute nella presente documentazione si intende chi dispone della qualifica a inserire, mettere
a terra e contrassegnare, secondo gli standard della tecnica di sicurezza, apparecchi, sistemi e circuiti elettrici.
Uso conforme alle disposizioni
Osservare quanto segue:
!
Pericolo
Il dispositivo deve essere impiegato solo per l'uso previsto nel catalogo e nella descrizione tecnica e solo in connessione
con apparecchiature e componenti esterni omologati dalla Siemens.
Per garantire un funzionamento ineccepibile e sicuro del prodotto è assolutamente necessario un trasporto, immagazzina
mento, una installazione ed un montaggio conforme alle regole nonché un uso accurato ed una manutenzione appropriata.
Marchi di prodotto
SIMATIC, SIMATIC HMI e SIMATIC NET sono marchi rtegistrati della SIEMENS AG.
Tutte le altre sigle qui riportate possono corrispondere a marchi il cui uso, da parte di terzi, può violare i diritti di proprietà.
Copyright Siemens AG 2000 All rights reserved.
La duplicazione e la cessione della presente documentazione sono
vietate, come pure l’uso improprio del suo contenuto, se non dietro
autorizzazione scritta. Le trasgressioni sono passibili di risarcimento
dei danni. Tutti i diritti sono riservati, in particolare quelli relativi ai
brevetti e ai marchi registrati.
Siemens AG
Bereich Automatisierungs- und Antriebstechnik
Geschaeftsbereich Industrie-Automatisierungssysteme
Postfach 4848, D-90327 Nuernberg
Siemens Aktiengesellschaft
Esclusione della responsabilità
Abbiamo controllato che il contenuto della presente documentazione corrisponda all’hardware e al software descritti. Non potendo
tuttavia escludere eventuali divergenze, non garantiamo una concordanza totale. Il contenuto della presente documentazione viene
comunque verificato regolarmente e le correzioni o modifiche eventualmente necessarie sono contenute nelle edizioni successive. Saremmo lieti di ricevere qualsiasi proposta di miglioramento.
 Siemens AG 2000
Ci riserviamo eventuali modifiche
Contenuto
Sommario.............................................................................................................1
Progetto di esempio............................................................................................3
Inserire il controllo S7ProSim in un'applicazione Visual Basic ......................5
Accedere alle proprietà del controllo S7ProSim in Visual Basic ....................6
Proprietà AutoConnect .......................................................................................7
Proprietà ControlEngine.....................................................................................8
Proprietà Enabled ...............................................................................................9
Proprietà ScanMode .........................................................................................10
Metodo AboutBox .............................................................................................11
Metodo BeginScanNotify..................................................................................12
Metodo EndScanNotify .....................................................................................13
Metodo Connect ................................................................................................14
Metodo Disconnect ...........................................................................................15
Metodo ExecuteNmsScan ................................................................................16
Metodo ExecuteNScans ...................................................................................17
Metodo ExecuteSingleScan .............................................................................18
Metodo ReadOutputImage................................................................................19
Metodo ReadOutputPoint .................................................................................20
Metodo WriteInputImage ..................................................................................21
Metodo WriteInputPoint....................................................................................22
Evento ConnectionError...................................................................................22
Evento PLCSIMStateChanged..........................................................................23
Evento ScanFinished........................................................................................24
Costanti predefinite ..........................................................................................25
Codice Return del metodo BeginScanNotify ..................................................26
Codice Return del metodo EndScanNotify .....................................................27
Codice Return del metodo Connect ................................................................28
Codice Return del metodo Disconnect ...........................................................28
Codice Return del metodo ExecuteSingleScan..............................................29
Parametri e codice Return del metodo ExecuteNmsScan.............................30
Parametri e codice Return del metodo ExecuteNScans ................................31
Parametri e codice Return del metodo ReadOutputImage ............................32
Parametri e codice Return del metodo ReadOutputPoint .............................33
Parametri e codice Return del metodo WriteInputImage...............................34
Parametri e codice Return del metodo WriteInputPoint ................................35
Codice del progetto di esempio.......................................................................36
Codice di esempio per ExecuteNmsScan, ExecuteNScans ..........................44
Manuale SIMATIC S7ProSim
Sommario
S7ProSim è un controllo ActiveX™ che fornisce accesso programmatico all'interfaccia di
simulazione di processo S7-PLCSIM. Questo controllo può essere usato in qualsiasi applicazione
in grado di accettare i controlli ActiveX. Con tale controllo si può assegnare una simulazione di
processo a S7-PLCSIM.
La presente Guida online descrive le funzioni e le operazioni del controllo S7ProSim, versione
1.2. Tutte le proprietà, i metodi e gli eventi sono utilizzati in un progetto di esempio.
Il controllo ActiveX fornisce tutti i metodi e gli eventi necessari per l'interazione con S7-PLCSIM.
La figura qui sotto riporta il diagramma di sequenza dei diversi metodi e eventi.
1
Manuale SIMATIC S7ProSim
2
Manuale SIMATIC S7ProSim
Progetto di esempio
Il presente esempio dimostra l'utilizzo di tutte le proprietà, i metodi e gli eventi del controllo. Il
form in basso è una rappresentazione del diagramma di sequenza in "Sommario". Tutti i controlli
del form sono pulsanti di Visual Basic. Si prega di vedere anche il codice del progetto di esempio.
3
Manuale SIMATIC S7ProSim
Form del progetto di esempio
4
Manuale SIMATIC S7ProSim
Inserire il controllo S7ProSim in un'applicazione
Visual Basic
Il controllo S7ProSim può essere utilizzato in vari contenitori di altri produttori. Adoperare la
procedura seguente per usare i controlli S7 in un form di Visual Basic.
1. Selezionare il comando Progetto -> Componenti per visualizzare la finestra di dialogo
Componenti.
2. Selezionare dalla lista a scorrimento “Siemens S7ProSim Control”.
3. Cliccare su ”Applica”. Compare il controllo S7ProSim nella casella degli strumenti sulla sinistra
del form di Visual Basic.
4. Cliccare su ”OK”.
5. Selezionare il controllo S7ProSim nella casella degli strumenti e incollarlo nel form.
5
Manuale SIMATIC S7ProSim
Accedere alle proprietà del controllo S7ProSim in
Visual Basic
Se si seleziona il controllo S7ProSim, Visual Basic visualizza una finestra secondaria con una
lista di proprietà. Le proprietà possono essere modificate in una supplementare finestra delle
proprietà.
La finestra delle proprietà permette di configurare i seguenti parametri del controllo S7ProSim:
6
Auto Connect: La proprietà AutoConnect determina se il controllo è connesso
automaticamente a S7-PLCSIM all'avviamento o alla commutazione dal modo design al
modo Run.
Control Engine: La proprietà ControlEngine (di sola lettura) definisce l'indirizzo del
motore di controllo a cui si connette il controllo S7ProSim. L'indirizzo è S7-PLCSIM.
Enabled: La proprietà Enabled determina se il controllo è registrato o no. (Sono
disponibili gli eventi ScanFinished e PLCSIMStateChanged).
Scan Mode: La proprietà ScanMode imposta il modo di scansione di S7-PLCSIM. I modi
di esecuzione validi sono SingleScan Mode e Continuous Mode.
Manuale SIMATIC S7ProSim
Proprietà AutoConnect
La proprietà AutoConnect determina se il controllo è connesso automaticamente a S7-PLCSIM
all'avviamento o alla commutazione dal modo design al modo Run. Se la proprietà AutoConnect
è impostata su False, il controllo deve essere connesso con il metodo Connect e disconnesso
con il metodo Disconnect.
Sintassi: S7ProSimX.AutoConnect = [Boolean]
laddove:
X è l'identificativo per il controllo specifico S7ProSim.
Boolean è una espressione booleana che specifica se il controllo ActiveX è connesso o
no automaticamente a S7-PLCSIM. Le impostazioni di Boolean sono le seguenti.
- True (default): il controllo ActiveX è connesso e disconnesso automaticamente al e
dall'S7-PLCSIM specificato in ControlEngine.
- False: il controllo ActiveX deve essere connesso e disconnesso programmaticamente
dai metodi Connect e Disconnect.
7
Manuale SIMATIC S7ProSim
Proprietà ControlEngine
Questa proprietà di sola lettura definisce l'indirizzo del motore di controllo a cui si connette
S7ProSim Control. L'indirizzo è S7-PLCSIM.
8
Manuale SIMATIC S7ProSim
Proprietà Enabled
La proprietà Enabled determina se il controllo è registrato o no. (Sono disponibili gli eventi
ScanFinished e PLCSIMStateChanged).
Sintassi: S7ProSimX.Enabled = [Boolean]
laddove:
X è l'identificativo per il controllo specifico S7ProSim.
Boolean è una espressione booleana che specifica se il controllo ActiveX è registrato o
meno per i richiami (callback) dal motore di controllo (determina se l'evento ScanFinished
e l'evento PLCSIMStateChanged sono disponibili o no). Le impostazioni di Boolean sono
le seguenti.
- True: il controllo ActiveX è registrato per richiami (callback) dal motore di controllo.
- False (default): il controllo ActiveX non sarà registrato per l'evento ScanFinished e per
l'evento PLCSIMStateChanged per quanto riguarda i richiami (callback) dal set del
motore di controllo.
9
Manuale SIMATIC S7ProSim
Proprietà ScanMode
Questa proprietà imposta il modo di scansione di S7-PLCSIM. I modi di esecuzione valida sono
SingleScan Mode e ContinuousScan Mode.
Sintassi: S7ProSimX.ScanMode = [ScanModeConstants]
laddove:
€X
ScanModeConstants determina il modo di scansione del controllo. I valori validi sono i
seguenti:
è l'identificativo per il controllo specifico S7ProSim.
ContinuousScan: S7-PLCSIM è impostato sul modo di ciclo continuo.
SingleScan (default): S7-PLCSIM è impostato sul modo di ciclo singolo. S7-PLCSIM
deve essere in questo modo per una simulazione di processo assegnata.
10
Manuale SIMATIC S7ProSim
Metodo AboutBox
Con questo metodo si possono ottenere informazioni specifiche sul controllo e sulla sua versione.
La finestra di dialogo About può essere vista nella figura qui sotto.
11
Manuale SIMATIC S7ProSim
Metodo BeginScanNotify
Il metodo BeginScanNotify registra il controllo ActiveX per i callback del motore di controllo.
(Sono disponibili gli eventi ScanFinished e PLCSIMStateChanged).
Sintassi: risultato = S7ProSimX.BeginScanNotify
dove:
12
X è l'identificativo di S7ProSim Control.
risultato è un valore Long che indica se si è verificato un errore. Il risultato è zero se non
avvengono errori.
Manuale SIMATIC S7ProSim
Metodo EndScanNotify
Il metodo EndScanNotify annulla la registrazione del controllo ActiveX per i callback del motore di
controllo. (Gli eventi ScanFinished e PLCSIMStateChanged non sono disponibili).
Sintassi: risultato = S7ProSimX.EndScanNotify
dove:
X è l'identificativo di S7ProSim Control.
risultato è un valore Long che indica se si è verificato un errore. Il risultato è zero se non
avvengono errori.
13
Manuale SIMATIC S7ProSim
Metodo Connect
Con questo metodo il controllo S7ProSim può essere connesso programmaticamente all'S7PLCSIM definito nel ControlEngine (motore di controllo).
Sintassi: result = S7ProSimX.Connect
laddove:
14
X è l'identificativo per il controllo specifico S7ProSim.
result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
Manuale SIMATIC S7ProSim
Metodo Disconnect
Con questo metodo il controllo S7ProSim può essere disconnesso programmaticamente.
Sintassi: result = S7ProSimX.Disconnect
laddove:
€X
result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
è l'identificativo per il controllo specifico S7ProSim.
15
Manuale SIMATIC S7ProSim
Metodo ExecuteNmsScan
Questo metodo forza S7-PLCSIM ad eseguire dei cicli di scansione per un dato tempo (Nms)
senza attendere che termini l'esecuzione del ciclo corrente. Se la proprietà Enabled è impostata
su true, verrà comunicato al programma quando S7-PLCSIM ha raggiunto il numero di cicli
impostato.
Sintassi: risultato = S7ProSimX.ExecuteNmsScan (MsNumber)
dove:
X è l'identificativo per il controllo specifico S7ProSim.
risultato è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.MsNumber è un valore Long che indica per quanto tempo (in
millisecondi) dovranno essere eseguiti i cicli di scansione.
Nota
questo metodo viene utilizzato solo in modo Ciclo singolo.
16
Manuale SIMATIC S7ProSim
Metodo ExecuteNScans
Questo metodo forza S7-PLCSIM ad eseguire un dato numero di cicli di scansione senza
attendere che termini l'esecuzione del ciclo corrente. Se la proprietà Enabled è impostata su true,
verrà comunicato al programma quando S7-PLCSIM ha raggiunto il numero di cicli impostato.
Sintassi: risultato = S7ProSimX.ExecuteNScans (NScanNumber)
laddove:
X è l'identificativo per il controllo specifico S7ProSim.
risultato è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
NScanNumber è un valore Long che indica il numero di cicli di scansione che devono
essere eseguiti.
Nota
questo metodo viene utilizzato solo in modo Ciclo singolo.
17
Manuale SIMATIC S7ProSim
Metodo ExecuteSingleScan
Questo metodo forza S7-PLCSIM ad eseguire un ciclo di scansione, senza attendere che termini
l'esecuzione del ciclo corrente. Se la proprietà Enabled è impostata su true, verrà comunicato al
programma quando S7-PLCSIM ha raggiunto il ciclo.
Sintassi: risultato = S7ProSimX.ExecuteSingleScan
laddove:
18
X è l'identificativo per il controllo specifico S7ProSim.
risultato è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
Manuale SIMATIC S7ProSim
Metodo ReadOutputImage
Iniziando dal punto StartIndex nell'immagine di uscita di periferia (area di memoria PQ), il numero
di byte, parole (2 byte) o doppie parole (4 byte) (ElementsToRead) sarà letto dall'immagine di
uscita di periferia (area di memoria PQ) di S7-PLCSIM e posto in un array memorizzato in pData.
Il tipo di elementi da leggere è determinato dal tipo richiesto nel parametro DataType. Tutti gli
elementi hanno lo stesso tipo di dati. S7Byte ritorna byte, S7Word ritorna parole e S7DoubleWord
ritorna doppie parole. I valori letti saranno ”crudi” e non interpretati o convertiti in alcun modo dal
metodo.
Syntax: result = S7ProSimX.ReadOutputImage (StartIndex, ElementsToRead, DataType,
pData)
laddove:
X è l'identificativo per il controllo specifico S7ProSim.
StartIndex è un Long e rappresenta la posizione iniziale del byte nel buffer dell'immagine
delle periferiche da leggere.
ElementsToRead è un Long e rappresenta il numero di byte, parole e doppie parole da
leggere nel buffer di immagine.
DataType è un ImageDataTypeConstants e deve essere S7Byte, S7Word o
S7DoubleWord.
pData è un Variant e rappresenta lo SPAZIO per gli elementi restituiti. La memoria è
allocata dal server e liberata dall'applicazione.
result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
19
Manuale SIMATIC S7ProSim
Metodo ReadOutputPoint
Questo metodo legge un particolare bit (Boolean), un byte (Byte), una parola a due byte (Integer)
o una parola a quattro byte (Long) dall'immagine di uscita di periferia (area di memoria PQ).
Se il parametro DataType è impostato su S7_Bit, ByteIndex e BitIndex devono essere entrambi
impostati su indici validi. In caso di successo, il metodo ritorna il bit dato in pData, e il tipo di dati
Variant è Boolean.
Se il parametro DataType è impostato su S7_Byte, S7_Word o S7_DoubleWord, ByteIndex deve
essere impostato su un indice valido (BitIndex è ignorato). In caso di successo, il metodo ritorna il
valore in pData, e il suo tipo di dati Variant è Byte, Integer o Long, a seconda del parametro
DataType.
Sintassi: risultato = S7ProSimX.ReadOutputPoint (ByteIndex, BitIndex, DataType, pData)
laddove:
20
X è l'identificativo per il controllo specifico S7ProSim.
ByteIndex è un Long e rappresenta la posizione del byte nel buffer di immagine delle
periferiche.
BitIndex è un Long e rappresenta la posizione del bit (del byte) nel buffer di immagine
delle periferiche da leggere. I valori validi vanno da 0 a 7.
DataType è un PointDataTypeConstants e può essere impostato a S7_Bit, S7_Byte,
S7_Word o S7_DoubleWord.
pData è di tipo Variant e contiene i dati letti.
result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
Manuale SIMATIC S7ProSim
Metodo WriteInputImage
Iniziando dal valore StartIndex, gli elementi memorizzati in Data saranno scritti nell'immagine di
ingresso di periferia (area di memoria PI) di S7-PLCSIM. Il tipo di elementi da scrivere è
determinato dal tipo di elementi di Data. Tutti gli elementi devono avere lo stesso tipo di dati. Un
array di Bytes scrive byte, un array di Integer scrive parole, un array di Long scrive doppie parole.
I valori letti saranno ”crudi” e non interpretati o convertiti in alcun modo dal metodo. Notare che il
numero di elementi scritti è determinato dalla dimensione dell'array memorizzato in Data.
Sintassi: result = S7ProSimX.WriteInputImage (StartIndex, Data)
laddove:
X è l'identificativo per il controllo specifico S7ProSim.
StartIndex è un Long e rappresenta la posizione del byte iniziale nel buffer dell'immagine
delle periferiche da scrivere.
Data è un Variant e rappresenta l'array contenente gli elementi da scrivere. La memoria
è allocata e liberata dall'applicazione. Gli elementi saranno scritti in S7-PLCSIM.
result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
21
Manuale SIMATIC S7ProSim
Metodo WriteInputPoint
Questo metodo legge un particolare bit (Boolean), byte (Byte), o una parola a due byte (Integer) o
una parola a quattro byte (Long) dalla Data Variant all'immagine di ingresso di periferia (area di
memoria PI).
Se Boolean è indicato come tipo di dati Variant, ByteIndex e BitIndex devono essere entrambi
impostati su indici validi. In caso di successo, il metodo scrive il bit indicato in Data.
Se Byte, Integer o Long viene indicato come tipo di dati Variant, ByteIndex deve essere
impostato su un indice valido (BitIndex è ignorato). In caso di successo, il metodo scrive gli
elementi in pData.
Sintassi: result = S7ProSimX.WriteInputPoint (ByteIndex, BitIndex, Data)
laddove:
X è l'identificativo per il controllo specifico S7ProSim.
ByteIndex è un Long e rappresenta la posizione del byte iniziale nel buffer dell'immagine
delle periferiche da scrivere.
BitIndex è un Long e rappresenta la posizione del bit (nei byte) nel buffer di immagine
delle periferiche da scrivere. I valori validi vanno da 0 a 7.
Data è un Variant e rappresenta il valore da scrivere.
result è un valore Long che indica se è avvenuto un errore. Il risultato è zero se non
avvengono errori.
Evento ConnectionError
Questo evento avviene se si verifica un errore nella connessione.
Sintassi: ConnectionError(ByVal ControlEngine As String, ByVal Error As Long)
laddove:
22
ControlEngine memorizza il nome del motore di controllo.
Error memorizza il codice di errore di sistema Windows. Per maggiori informazioni si può
consultare la documentazione di Windows.
Manuale SIMATIC S7ProSim
Evento PLCSIMStateChanged
Questo evento avviene quando viene rilevato un nuovo stato di commutazione PLC.
Sintassi: PLCSIMStateChanged(NewState As String)
laddove:
NewState contiene il nuovo stato operativo di S7-PLCSIM. I valori validi sono Stop, Run
e RunP.
23
Manuale SIMATIC S7ProSim
Evento ScanFinished
Questo evento avviene quando è terminato un ciclo di S7-PLCSIM.
Syntax: ScanFinished (ByVal ScanInfo As Variant)
laddove:
ScanInfo è un SafeArray di Longs che rappresenta varie informazioni sulla scansione.
(Vedere la tabella qui sotto per informazioni dettagliate sull'array).
Elementi di ScanInfo
Indice
Informazioni
0
Tempo di esecuzione (ms)
1
Tempo di ciclo minimo programmato (ms)
2
Tempo di esecuzione massimo (ms)
3
Tempo di ciclo medio (ms)
24
Manuale SIMATIC S7ProSim
Costanti predefinite
Costante
Valore
Descrizione
ContinuousScan:
1
Simulazione in ContinuousScan
SingleScan
0
Simulazione in Single Scan
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_INVBYTENDX
&H80040201
‘ByteIndex’ valore fuori campo
PS_E_INVBYTECOUNT
&H80040202
'ByteIndex' e dimensione di array Data sono fuori
campo, oppure 'BytesToRead' è fuori campo
PS_E_READFAILED
&H80040203
S7-PLCSIM ha rifiutato richiesta di lettura
PS_E_WRITEFAILED
&H80040204
S7-PLCSIM ha rifiutato richiesta di scrittura
PS_E_INVBITNDX
&H80040205
‘BitIndex’ valore fuori campo
PS_E_INVTYPE
&H80040206
Tipo di dati non valido
PS_E_NOTREGISTERED
&H80040209
L'applicazione non è registrata
PS_E_NOTSINGLESCAN
&H8004020A
S7-PLCSIM non è nel modo di ciclo singolo
PS_E_PLCSIMNOTRUNNING
&H8004020E
S7-PLCSIM non è nel modo Run o Run-P
PS_S_ALLREADSNOTPOSSIBLE
&H8004020F
Il metodo ha potuto solo leggere le uscite
configurate con successo
PS_S_ALLWRITESNOTPOSSIBLE
&H80040210
Il metodo ha potuto solo scrivere gli ingressi
configurati con successo
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
PS_E_INVALIDINPUT
&H80040213
Ingresso specificato non valido
Codice Return
Numero di elementi in ScanInfo
NUM_OF_SCANINFO_ELEMENTS
4
Indici di ScanInfo
EXECUTION_TIME_NDX
0
Tempo di esecuzione (ms)
MIN_CYCLE_TIME_NDX
1
Tempo di ciclo minimo programmato (ms)
LARGEST_CYCLE_TIME_NDX
2
Tempo di esecuzione massimo (ms)
AVERAGE_CYCLE_TIME_NDX
3
Tempo di ciclo medio (ms)
25
Manuale SIMATIC S7ProSim
Codice Return del metodo BeginScanNotify
Costante
Valore
Descrizione
S_OK
&H0
Metodo eseguito correttamente
PS_E_FAIL
&H80004005
Si è verificato un errore sconosciuto
PS_E_NOTSINGLESCAN
&H8004020A
S7-PLCSIM non è nel modo di scansione singola
PS_E_PLCSIMNOTRUNNING
&H8004020E
S7-PLCSIM non è in modo Run o Run-P
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è spento
Il tipo di codice Return di tutti i metodi è Long.
26
Manuale SIMATIC S7ProSim
Codice Return del metodo EndScanNotify
Costante
Valore
Descrizione
S_OK
&H0
Metodo eseguito correttamente
PS_E_FAIL
&H80004005
Si è verificato un errore sconosciuto
PS_E_NOTSINGLESCAN
&H8004020A
S7-PLCSIM non è nel modo di scansione singola
PS_E_PLCSIMNOTRUNNING
&H8004020E
S7-PLCSIM non è in modo Run o Run-P
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è spento
Il tipo di codice Return di tutti i metodi è Long.
27
Manuale SIMATIC S7ProSim
Codice Return del metodo Connect
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
Codice Return del metodo Disconnect
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
28
Manuale SIMATIC S7ProSim
Codice Return del metodo ExecuteSingleScan
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_NOTSINGLESCAN
&H8004020A
S7-PLCSIM non è nel modo di ciclo singolo
PS_E_PLCSIMNOTRUNNING
&H8004020E
S7-PLCSIM non è nel modo Run o Run-P
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
29
Manuale SIMATIC S7ProSim
Parametri e codice Return del metodo
ExecuteNmsScan
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_NOTSINGLESCAN
&H8004020A
S7-PLCSIM non è nel modo di ciclo singolo
PS_E_PLCSIMNOTRUNNING
&H8004020E
S7-PLCSIM non è nel modo Run o Run-P
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
30
Manuale SIMATIC S7ProSim
Parametri e codice Return del metodo
ExecuteNScans
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_NOTSINGLESCAN
&H8004020A
S7-PLCSIM non è nel modo di ciclo singolo
PS_E_PLCSIMNOTRUNNING
&H8004020E
S7-PLCSIM non è nel modo Run o Run-P
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
31
Manuale SIMATIC S7ProSim
Parametri e codice Return del metodo
ReadOutputImage
Parametro
Tipo dati
Numeri e campi validi
StartIndex
[in] Long
dipende dalla CPU
ElementsToRead
[in] Long
dipende dalla CPU
DataType
[in] Long
S7Byte, S7Word, S7DoubleWord
pData
[out] Variant
dipende da ElementsToRead
Il tipo di codice Return di tutti i metodi è Long.
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_INVBYTENDX
&H80040201
‘ByteIndex’ valore fuori campo
PS_E_INVBYTECOUNT
&H80040202
'BytesToRead' è fuori campo
PS_E_READFAILED
&H80040203
S7-PLCSIM ha rifiutato richiesta di lettura
PS_E_INVTYPE
&H80040206
Tipo di dati non valido
PS_S_ALLREADSNOTPOSSIBLE
&H8004020F
Il metodo ha potuto solo leggere le uscite
configurate con successo
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
32
Manuale SIMATIC S7ProSim
Parametri e codice Return del metodo
ReadOutputPoint
Parametro
Tipo dati
Numeri validi
ByteIndex
[in] Long
dipende dalla CPU
BitIndex
[in] Long
da 0 a 7
DataType
[in] Long
S7_Bit, S7_Byte, S7_Word or S7DoubleWord
pData
[out] Variant
dipende dal tipo di dati
Il tipo di codice Return di tutti i metodi è Long.
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_INVBYTENDX
&H80040201
‘ByteIndex’ valore fuori campo
PS_E_INVBYTECOUNT
&H80040202
'ByteIndex' e dimensione di array Data sono fuori campo
PS_E_READFAILED
&H80040203
S7-PLCSIM ha rifiutato richiesta di lettura
PS_E_INVBITNDX
&H80040205
‘BitIndex’ valore fuori campo
PS_E_INVTYPE
&H80040206
Tipo di dati non valido
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
33
Manuale SIMATIC S7ProSim
Parametri e codice Return del metodo
WriteInputImage
Parametro
Tipo dati
Numeri validi
StartIndex
[in] Long
dipende dalla CPU
Data
[in] Variant
dipende dalla CPU
Il tipo di codice Return di tutti i metodi è Long.
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_INVBYTENDX
&H80040201
‘ByteIndex’ valore fuori campo
PS_E_INVBYTECOUNT
&H80040202
'ByteIndex' e dimensione di array Data sono fuori
campo
PS_E_WRITEFAILED
&H80040204
S7-PLCSIM ha rifiutato richiesta di scrittura
PS_E_INVTYPE
&H80040206
Tipo di dati non valido
PS_S_ALLWRITESNOTPOSSIBLE
&H80040210
Il metodo ha potuto solo scrivere gli ingressi
configurati con successo
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
34
Manuale SIMATIC S7ProSim
Parametri e codice Return del metodo
WriteInputPoint
Parametro
Tipo dati
Numeri validi
ByteIndex
[in] Long
dipende dalla CPU
BitIndex
[in] Long
da 0 a 7
Data
[in] Variant
dipende dal tipo di dati
Il tipo di codice Return di tutti i metodi è Long.
Costante
Valore
Descrizione
S_OK
&H0
Il metodo ha avuto successo
PS_E_FAIL
&H80004005
Si è verificato errore sconosciuto
PS_E_INVBYTENDX
&H80040201
‘ByteIndex’ valore fuori campo
PS_E_INVBYTECOUNT
&H80040202
'ByteIndex' e dimensione di array Data sono fuori campo
PS_E_WRITEFAILED
&H80040204
S7-PLCSIM ha rifiutato richiesta di scrittura
PS_E_INVBITNDX
&H80040205
‘BitIndex’ valore fuori campo
PS_E_INVTYPE
&H80040206
Tipo di dati non valido
PS_E_NOTCONNECTED
&H80040211
Il controllo S7ProSim non è connesso a S7-PLCSIM
PS_E_POWEROFF
&H80040212
S7-PLCSIM è nello stato Power-off
Il tipo di codice Return di tutti i metodi è Long.
35
Manuale SIMATIC S7ProSim
Codice del progetto di esempio
'=======================================
'DECLARATIONPART OF THE FORM
'=======================================
'Variables must be declared
Option Explicit
'Default Error Code Values of S7ProSim
'--------------------------------------Private Const S_OK = &H0
Private Const PS_E_FAIL = &H80004005
Private Const PS_E_INVBYTENDX = &H80040201
Private Const PS_E_INVBYTECOUNT = &H80040202
Private Const PS_E_READFAILED = &H80040203
Private Const PS_E_WRITEFAILED = &H80040204
Private Const PS_E_INVBITNDX = &H80040205
Private Const PS_E_INVTYPE = &H80040206
Private Const PS_E_NOTREGISTERED = &H80040209
Private Const PS_E_NOTSINGLESCAN = &H8004020A
Private Const PS_E_MODENOTPOSSIBLE = &H8004020C
Private Const PS_E_NOTIFICATION_EXIST = &H8004020D
Private Const PS_E_PLCSIMNOTRUNNING = &H8004020E
Private Const PS_S_ALLREADSNOTPOSSIBLE = &H8004020F
Private Const PS_S_ALLWRITESNOTPOSSIBLE = &H80040210
Private Const PS_E_NOTCONNECTED = &H80040211
Private Const PS_E_POWEROFF = &H80040212
'Default Error Text
'--------------------------------------Private Const MSG_OK = "&H0: Method was successful"
Private Const MSG_FAIL = "&H80004005: Unknown error occurred"
Private Const MSG_INVBYTENDX = _
"&H80040201: ByteIndex value out of Range"
Private Const MSG_INVBYTECOUNT = _
"&H80040202: ByteIndex + size of Data array out of range or BytesToRead out
of Range"
Private Const MSG_READFAILED = _
"&H80040203: S7-PLCSIM refused read request"
Private Const MSG_WRITEFAILED = _
"&H80040204: S7-PLCSIM refused write request"
Private Const MSG_INVBITNDX = _
"&H80040205: BitIndex value out of range"
Private Const MSG_INVTYPE = "&H80040206: Invalid data type"
Private Const MSG_NOTREGISTERED = _
"&H80040209: The application is not registered"
Private Const MSG_NOTSINGLESCAN = _
"&H8004020A: S7-PLCSIM is not in single scan mode"
Private Const MSG_NOTIFICATION_EXIST = _
"&H8004020D: Application is already registered"
Private Const MSG_PLCSIMNOTRUNNING = _
"&H8004020E: S7-PLCSIM is not in Run or Run-P mode"
Private Const MSG_ALLREADSNOTPOSSIBLE = _
"&H8004020F: Only the configured outputs could be read successful"
Private Const MSG_ALLWRITESNOTPOSSIBLE = _
"&H80040210: Only the configured inputs could be written successful"
Private Const MSG_NOTCONNECTED = _
"&H80040211: The S7ProSim control is not connected to S7-PLCSIM"
Private Const MSG_POWEROFF = _
"&H80040212: S7-PLCSIM is in Power-off state"
'=======================================
'CODE FOR THE BUTTONS
'=======================================
36
Manuale SIMATIC S7ProSim
'cmdAutoConnectEnd
'--------------------------------------Private Sub cmdAutoConnectTrueEnd_Click()
S7ProSim1.AutoConnect = True
'***** If the AutoConnect property is set to true
End Sub
'cmdAutoConnectTrueStart
'--------------------------------------Private Sub cmdAutoConnectTrueStart_Click()
S7ProSim1.AutoConnect = True
End Sub
'cmdCalculateValuesOfProcessSimulation
'--------------------------------------Private Sub cmdCalculateValuesOfProcessSimulation_Click()
'***** TODO by the User *****
'***** In this function you have to implement the *****
'***** Code for the Process Simulation. Take the *****
'***** values from the Outputs of S7-PLCSIM and *****
'***** calculate the new values for the Input of *****
'***** S7-PLCSIM. *****
End Sub
'cmdConnect
'--------------------------------------Private Sub cmdConnect_Click()
Dim errConnect As Long
errConnect = S7ProSim1.Connect
If errConnect = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errConnect
End If
End Sub
'cmdDisconnect
'--------------------------------------Private Sub cmdDisconnect_Click()
Dim errDisconnect As Long
errDisconnect = S7ProSim1.Disconnect
If errDisconnect = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errDisconnect
End If
End Sub
'cmdEnableFalse
'--------------------------------------Private Sub cmdEnableFalse_Click()
S7ProSim1.Enabled = False
End Sub
'cmdEnableTrue
'--------------------------------------Private Sub cmdEnableTrue_Click()
S7ProSim1.Enabled = True
End Sub
'cmdExecuteSingleScan
'--------------------------------------Private Sub cmdExecuteSingleScan_Click()
Dim errExecuteSingleScan As Long
errExecuteSingleScan = S7ProSim1.ExecuteSingleScan
37
Manuale SIMATIC S7ProSim
If errExecuteSingleScan = S_OK Then
'MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errExecuteSingleScan
End If
End Sub
'cmdReadOutputImage
'--------------------------------------Private Sub cmdReadOutputImage_Click()
'Long
Dim errReadOutputImage As Long
Dim lStartIndex As Long
Dim lElementsToRead As Long
'ImageDataTypeConstants
Dim DataType As ImageDataTypeConstants
'Variant
Dim vData As Variant
'***** Read 2 Bytes at the starting address Q 8.0 *****
DataType = S7Byte 'Read type Byte
lStartIndex = 8 'Start at address Q 8.0
lElementsToRead = 2 'Read 2 elements (Bytes)
errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _
lElementsToRead, DataType, vData)
If errReadOutputImage = S_OK Then
MsgBox "Value of QB 8 is: " & CByte(vData(0)) & vbCrLf & _
"Value of QB 9 is: " & CByte(vData(1)), _
vbInformation, "S7ProSim Example"
Else
ShowError errReadOutputImage
End If
'***** Read 2 Words at the starting address Q 10.0 *****
DataType = S7Word 'Read type Word
lStartIndex = 10 'Start at address Q 10.0
lElementsToRead = 2 'Read 2 Elements (Words)
errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _
lElementsToRead, DataType, vData)
If errReadOutputImage = S_OK Then
MsgBox "Value of QW 10 is: " & CInt(vData(0)) & vbCrLf & _
"Value of QW 12 is: " & CInt(vData(1)), _
vbInformation, "S7ProSim Example"
Else
ShowError errReadOutputImage
End If
'***** Read 2 DoubleWords at the starting address Q 14.0 *****
DataType = S7DoubleWord 'Read type DoubleWord
lStartIndex = 14 'Start at addresse Q 14.0
lElementsToRead = 2 'Read 2 Elements (DoubleWords)
errReadOutputImage = S7ProSim1.ReadOuputImage(lStartIndex, _
lElementsToRead, DataType, vData)
If errReadOutputImage = S_OK Then
MsgBox "Value of QD 14 is: " & CLng(vData(0)) & vbCrLf & _
"Value of QD 18 is: " & CLng(vData(1)), _
vbInformation, "S7ProSim Example"
Else
ShowError errReadOutputImage
End If
'***** After this section the calculations for the *****
'***** Process Simulation can be done if the return *****
'***** value is S_OK. *****
End Sub
'cmdReadOutputPoint
'---------------------------------------
38
Manuale SIMATIC S7ProSim
Private Sub cmdReadOutputPoint_Click()
'Long
Dim errReadOutputPoint As Long
Dim lByteIndex As Long
Dim lBitIndex As Long
'PointDataTypeConstants
Dim DataType As PointDataTypeConstants
'Variant
Dim vData As Variant
'***** Read the Bit at the address Q 0.5 *****
lByteIndex = 0 'Start at address 0.0
lBitIndex = 5 'Read specific Bit 5 (of Byte 0)
DataType = S7_Bit 'Read type Bit
errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _
lBitIndex, DataType, vData)
If errReadOutputPoint = S_OK Then
MsgBox "The current value of Q 0.5 is: " & CInt(vData), _
vbInformation, "S7ProSim Example"
Else
ShowError errReadOutputPoint
End If
'***** Read the Byte at the address Q 1.0 *****
lByteIndex = 1 'Start at address 1.0
DataType = S7_Byte 'Read type Byte
errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _
lBitIndex, DataType, vData)
If errReadOutputPoint = S_OK Then
MsgBox "The current value of QB 1 is: " & CByte(vData), _
vbInformation, "S7ProSim Example"
Else
ShowError errReadOutputPoint
End If
'***** Read the Word at the address Q 2.0 *****
lByteIndex = 2 'Start at address 2.0
DataType = S7_Word 'Read type Word
errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _
lBitIndex, DataType, vData)
If errReadOutputPoint = S_OK Then
MsgBox "The current value of QW 2 is: " & CInt(vData), _
vbInformation, "S7ProSim Example"
Else
ShowError errReadOutputPoint
End If
'***** Read the DoubleWord at the address Q 4.0 *****
lByteIndex = 4 'Start at address 4.0
DataType = S7_DoubleWord 'Read type DoubleWord
errReadOutputPoint = S7ProSim1.ReadOutputPoint(lByteIndex, _
lBitIndex, DataType, vData)
If errReadOutputPoint = S_OK Then
MsgBox "The current value of QD 4 is: " & CLng(vData), _
vbInformation, "S7ProSim Example"
Else
ShowError errReadOutputPoint
End If
'***** After this section the calculations for the *****
'***** Process Simulation can be done if the return *****
'***** value is S_OK. *****
End Sub
'cmdScanModeCont
'--------------------------------------Private Sub cmdScanModeCont_Click()
39
Manuale SIMATIC S7ProSim
S7ProSim1.ScanMode = ContinuousScan
End Sub
'cmdScanModeSingle
'--------------------------------------Private Sub cmdScanModeSingle_Click()
S7ProSim1.ScanMode = SingleScan
End Sub
'cmdWriteInputImage
'--------------------------------------Private Sub cmdWriteInputImage_Click()
'Byte
Dim cByteArray(0 To 1) As Byte
'Integer
Dim iWordArray(0 To 1) As Integer
'Long
Dim errWriteInputImage As Long
Dim lDoubleWordArray(0 To 1) As Long
Dim lStartIndex As Long
'Variant
Dim vData As Variant
'***** Write 2 Bytes and start at address I 8.0 *****
cByteArray(0) = 8 'Write 8 in first element (Byte)
cByteArray(1) = 9 'Write 9 in second element (Byte)
lStartIndex = 8 'Start at address I 8.0
vData = cByteArray
errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _
vData)
'***** After this section the calculations for the *****
'***** Process Simulation can be done if the return *****
'***** value is S_OK. *****
If errWriteInputImage = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errWriteInputImage
End If
'***** Write 2 Words and start at address I 10.0 *****
iWordArray(0) = 10 'Write 10 in first element (Word)
iWordArray(1) = 12 'Write 12 in second element (Word)
lStartIndex = 10 'Start at address I 10.0
vData = iWordArray
errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _
vData)
If errWriteInputImage = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errWriteInputImage
End If
'***** Write 2 DoubleWords and start at address I 14.0 *****
lDoubleWordArray(0) = 14 'Write 14 in first element (DoubleWord)
lDoubleWordArray(1) = 18 'Write 18 in second element (DoubleWord)
lStartIndex = 14 'Start at address I 14.0
vData = lDoubleWordArray
errWriteInputImage = S7ProSim1.WriteInputImage(lStartIndex, _
vData)
If errWriteInputImage = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errWriteInputImage
End If
End Sub
'cmdWriteInputPoint
'---------------------------------------
40
Manuale SIMATIC S7ProSim
Private Sub cmdWriteInputPoint_Click()
'Boolean
Dim bBoolIn As Boolean
'Byte
Dim cByteIn As Byte
'Integer
Dim iWordIn As Integer
'Long
Dim errWriteInputPoint As Long
Dim lBitIndex As Long
Dim lByteIndex As Long
Dim lDoubleWordIn As Long
'Variant
Dim vData As Variant
'***** Write 1 Bit to the address I 0.5 *****
bBoolIn = 1 'Write value 1
lByteIndex = 0 'Start at address 0.0
lBitIndex = 5 'Write specific Bit 5 (of Byte 0)
vData = bBoolIn
errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _
lBitIndex, vData)
'***** After this section the calculations for the *****
'***** Process Simulation can be done if the return *****
'***** value is S_OK. *****
If errWriteInputPoint = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errWriteInputPoint
End If
'***** Write 1 Byte to the address I 1.0 *****
cByteIn = 1 'Write value 1
lByteIndex = 1 'Start at address 1.0
vData = cByteIn
errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _
lBitIndex, vData)
If errWriteInputPoint = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errWriteInputPoint
End If
'***** Write 1 Word to the address I 2.0 *****
iWordIn = 2 'Write value 2
lByteIndex = 2 'Start at address 2.0
vData = iWordIn
errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _
lBitIndex, vData)
If errWriteInputPoint = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errWriteInputPoint
End If
'***** Write 1 DoubleWord to the address I 4.0 *****
lDoubleWordIn = 4 'Write value 4
lByteIndex = 4 'Start at address 4.0
vData = lDoubleWordIn
errWriteInputPoint = S7ProSim1.WriteInputPoint(lByteIndex, _
lBitIndex, vData)
If errWriteInputPoint = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errWriteInputPoint
End If
End Sub
41
Manuale SIMATIC S7ProSim
'=======================================
'EVENTS IMPLEMENTATION FOR THE CONTROL
'=======================================
'ConnectionError
'--------------------------------------Private Sub S7ProSim1_ConnectionError(ByVal ControlEngine As String, _
ByVal Error As Long)
Dim errMessage As String
errMessage = "Unable to connect to " & ControlEngine & vbCrLf
errMessage = errMessage & vbCrLf & _
"Start " & ControlEngine & vbCrLf
errMessage = errMessage & "and connect with Connect method"
MsgBox errMessage, vbExclamation, "Connection Error"
End Sub
'PLCStateChanged
'--------------------------------------Private Sub S7ProSim1_PLCSIMStateChanged(ByVal NewState As String)
Dim cMessage As String
cMessage = "PLCSIM changed the operating state to " & NewState
MsgBox cMessage, vbInformation, "S7ProSim Example"
End Sub
'ScanFinished
'--------------------------------------Private Sub S7ProSim1_ScanFinished(ByVal ScanInfo As Variant)
Dim cMessage As String
Dim vArrayInfo As Variant
'***** Before this section of code, the calculations *****
'***** for the Process Simulation should be done. *****
vArrayInfo = ScanInfo
cMessage = "Last scan took " & vArrayInfo(0) & vbCrLf
cMessage = cMessage & _
"minimum cyle time " & vArrayInfo(1) & vbCrLf
cMessage = cMessage & _
"Largest Execution time took " & vArrayInfo(2) & vbCrLf
cMessage = cMessage & _
"Average scan took " & vArrayInfo(3)
MsgBox cMessage, vbInformation, "S7ProSim Example"
End Sub
Private Sub Form_Unload(cancel As Integer)
Dim errDisconnect As Long
errDisconnect = S7ProSim1.Disconnect
If errDisconnect = S_OK Then
MsgBox MSG_OK, vbInformation, "S7ProSim Example"
Else
ShowError errDisconnect
EndIf
End Sub
'=======================================
'PRIVATE SUBs
'=======================================
'ShowError
'--------------------------------------Private Sub ShowError(ErrorNumber)
Select Case ErrorNumber
Case PS_E_FAIL
MsgBox MSG_FAIL, vbExclamation, "S7ProSim Example"
Case PS_E_INVBYTENDX
MsgBox MSG_INVBYTENDX, vbExclamation, "S7ProSim Example"
Case PS_E_INVBYTECOUNT
MsgBox MSG_INVBYTECOUNT, vbExclamation, "S7ProSim Example"
42
Manuale SIMATIC S7ProSim
Case PS_E_READFAILED
MsgBox MSG_READFAILED, vbExclamation, "S7ProSim Example"
Case PS_E_WRITEFAILED
MsgBox MSG_WRITEFAILED, vbExclamation, "S7ProSim Example"
Case PS_E_INVBITNDX
MsgBox MSG_INVBITNDX, vbExclamation, "S7ProSim Example"
Case PS_E_INVTYPE
MsgBox MSG_INVTYPE, vbExclamation, "S7ProSim Example"
Case PS_E_NOTREGISTERED
MsgBox MSG_NOTREGISTERED, vbExclamation, "S7ProSim Example"
Case PS_E_NOTSINGLESCAN
MsgBox MSG_NOTSINGLESCAN, vbExclamation, "S7ProSim Example"
Case PS_E_NOTIFICATION_EXIST
MsgBox MSG_NOTIFICATION_EXIST, vbExclamation, _
"S7ProSim Example"
Case PS_E_PLCSIMNOTRUNNING
MsgBox MSG_PLCSIMNOTRUNNING, vbExclamation, _
"S7ProSim Example"
Case PS_S_ALLREADSNOTPOSSIBLE
MsgBox MSG_ALLREADSNOTPOSSIBLE, vbExclamation, _
"S7ProSim Example"
Case PS_S_ALLWRITESNOTPOSSIBLE
MsgBox MSG_ALLWRITESNOTPOSSIBLE, vbExclamation, _
"S7ProSim Example"
Case PS_E_NOTCONNECTED
MsgBox MSG_NOTCONNECTED, vbExclamation, "S7ProSim Example"
Case PS_E_POWEROFF
MsgBox MSG_POWEROFF, vbExclamation, "S7ProSim Example"
Case Else
MsgBox "System Error occured: &H" & Hex(ErrorNumber), _
vbExclamation, "S7ProSim Example"
End Select
End Sub
43
Manuale SIMATIC S7ProSim
Codice di esempio per ExecuteNmsScan,
ExecuteNScans
Private Sub CmdNmsScan_Click()
Dim ReturnValue As Long
ReturnValue = S7ProSim1.ExecuteNmsScan(Int(txtScanNumber.Text))
If ReturnValue <> 0 Then
MsgBox "Failed!", vbOKOnly
End If
End Sub
Private Sub CmdNScan_Click()
Dim ReturnValue As Long
ReturnValue = S7ProSim1.ExecuteNScans(Int(txtScanNumber.Text))
If ReturnValue <> 0 Then
MsgBox "Failed!", vbOKOnly
End If
End Sub
Private Sub CmdSingleScan_Click()
S7ProSim1.ExecuteSingleScan
End Sub
Private Sub cmdStart_Click()
S7ProSim1.BeginScanNotify
End Sub
Private Sub cmdStop_Click()
S7ProSim1.EndScanNotify
End Sub
Private Sub Form_Load()
S7ProSim1.Connect
txtScans.Text = 0
S7ProSim1.ScanMode = SingleScan
End Sub
44
Manuale SIMATIC S7ProSim
Private Sub Form_Unload(Cancel As Integer)
S7ProSim1.Disconnect
End Sub
Private Sub S7ProSim1_ConnectionError(ByVal ControlEngine As String, ByVal Error
As Long)
MsgBox "Connection Error!", vbOKOnly
End Sub
Private Sub S7ProSim1_PLCSimStateChanged(ByVal NewState As String)
MsgBox "State Changed!", vbOKOnly
End Sub
Private Sub S7ProSim1_ScanFinished(ByVal ScanInfo As Variant)
DoEvents
txtScans.Text = Int(txtScans.Text) + 1
Set ScanInfo = Nothing
End Sub
45
Manuale SIMATIC S7ProSim
Indice analitico
A
Accedere alle proprietà del controllo
S7ProSim in Visual Basic, 6
C
Codice del progetto di esempio, 36
Codice di esempio per ExecuteNmsScan
ExecuteNScans, 44
Codice Return del metodo BeginScanNotify,
26
Codice Return del metodo Connect, 28
Codice Return del metodo Disconnect, 28
Codice Return del metodo EndScanNotify,
27
Codice Return del metodo
ExecuteSingleScan, 29
Constanti, 25
Costanti predefinite, 25
E
Evento ConnectionError, 22
Evento PLCSIMStateChanged, 23
Evento ScanFinished, 24
I
Inserire il controllo S7ProSim in
un'applicazione Visual Basic, 5
M
Metodo AboutBox, 11
Metodo BeginScanNotify, 12
46
Metodo Connect, 14
Metodo Disconnect, 15
Metodo EndScanNotify, 13
Metodo ExecuteNmsScan, 16
Metodo ExecuteNScans, 17
Metodo ExecuteSingleScan, 18
Metodo ReadOutputImage, 19
Metodo ReadOutputPoint, 20
Metodo WriteInputImage, 21
Metodo WriteInputPoint, 22
P
Parametri e codice Return del metodo
ExecuteNmsScan, 30
Parametri e codice Return del metodo
ExecuteNScans, 31
Parametri e codice Return del metodo
ReadOutputImage, 32
Parametri e codice Return del metodo
ReadOutputPoint, 33
Parametri e codice Return del metodo
WriteInputImage, 34
Parametri e codice Return del metodo
WriteInputPoint, 35
Progetto di esempio, 3
Proprietà AutoConnect, 7
Proprietà ControlEngine, 8
Proprietà Enabled, 9
Proprietà ScanMode, 10
S
Sommario, 1
Scarica

S7ProSim