Sei sulla pagina 1di 63

SIMATIC

S7ProSim V5.4
Oggetto COM

Manuale utente

Edizione: 01/2007

Copyright e indicazioni sulla sicurezza


Il presente manuale contiene avvertenze relative alla sicurezza delle persone e alla prevenzione dei danni materiali
a cui ci si deve attenere per tutelare la propria incolumit e proteggere il prodotto e le apparecchiature ad esso
collegate. Le avvertenze sono contrassegnate da un triangolo e, a seconda del grado di pericolo, sono
rappresentate nel modo seguente.
Pericolo di morte
Segnala una situazione di imminente pericolo che, se non evitata con le opportune misure di sicurezza,
provoca la morte, gravi lesioni alle persone e ingenti danni materiali.
Pericolo
Segnala una situazione potenzialmente pericolosa che, se non evitata con le opportune misure di sicurezza,
pu causare la morte, gravi lesioni alle persone e ingenti danni materiali.
Attenzione
Questa avvertenza accompagnata dal triangolo segnala una situazione potenzialmente pericolosa che, se
non evitata con le opportune misure di sicurezza, pu causare lesioni non gravi alle persone o danni
materiali di lieve entit.
Attenzione
Questa avvertenza senza triangolo segnala una situazione potenzialmente pericolosa che, se non evitata
con le opportune misure di sicurezza, pu provocare danni materiali.
Avvertenza
Questa avvertenza senza triangolo segnala una situazione potenziale che, se non evitata con le opportune
misure di sicurezza, pu determinare una situazione o uno stato indesiderati.

Personale qualificato
L'apparecchio o il sistema devono essere messi in servizio e utilizzati esclusivamente secondo le modalit
prescritte nel presente manuale. L'installazione e l'utilizzo dell'apparecchio sono consentiti solo al personale
qualificato. Come tale si intende il personale autorizzato a mettere in servizio, collegare a massa e contrassegnare
i circuiti elettrici, le apparecchiature e i sistemi secondo gli standard e le pratiche di sicurezza consolidate.

Utilizzo conforme alle disposizioni


Si noti quanto segue:
Pericolo
L'apparecchio e i relativi componenti devono essere destinati esclusivamente all'uso previsto nel catalogo e
nelle descrizioni tecniche e assieme ad apparecchiature e componenti di terzi approvati o raccomandati da
Siemens.
Per garantire un funzionamento corretto e sicuro indispensabile che il prodotto venga trasportato,
immagazzinato, installato e montato correttamente e che venga utilizzato e sottoposto a manutenzione
secondo le modalit previste.

Marchi registrati

Siemens e SIMATIC sono marchi registrati di SIEMENS AG.


STEP 7 e S7sono marchi registrati di SIEMENS AG.
Microsoft , Windows , Windows 95 , Windows 98 , Windows NT , Windows ME e Windows 2000 sono
marchi registrati di Microsoft Corporation.
Copyright Siemens AG, 2007
Tutti i diritti riservati
La riproduzione, la trasmissione e l'utilizzo della presente
documentazione sono vietati se non previa autorizzazione
scritta. I trasgressori saranno puniti a termini di legge. Tutti i
diritti sono riservati, in particolare quelli relativi ai brevetti o ai
marchi registrati.

Esclusione della responsabilit


Abbiamo controllato che il contenuto della presente
documentazione corrisponda all'hardware e al software
descritti. Non potendo tuttavia escludere eventuali differenze
non possiamo garantire una completa rispondenza. Il
contenuto della presente documentazione viene comunque
verificato regolarmente e le correzioni o modifiche
eventualmente necessarie sono contenute nelle edizioni
successive. Saremo lieti di ricevere qualunque tipo di
proposta di miglioramento.

Siemens AG
Automation and Drives
Postfach 4848, D-90327 Nuernberg

Siemens AG 2007
Dati tecnici soggetti a modifiche senza preavviso.

Prefazione
S7ProSim consente di accedere in modo programmatico all'interfaccia di simulazione PLC di S7PLCSIM. Con S7ProSim possibile scrivere un software per eseguire task quali la modifica della
posizione dell'interruttore a chiave del PLC simulato, la verifica del programma di controllo un ciclo di
scansione per volta, la lettura o la scrittura dei valori del controllore, ecc.
A chi destinato il manuale
Il presente manuale si rivolge a tecnici, programmatori e personale addetto alla manutenzione che
dispongono di conoscenze teoriche e pratiche sui controllori a logica programmabile S7 e sullo sviluppo
di software in Visual Basic (6.0 o .NET) o Visual C++ (6.0 o .NET).
Oggetto del manuale
Il manuale descrive le caratteristiche e il funzionamento di S7ProSim V5.4. .
Altri manuali
Per maggiori informazioni si consiglia di consultare la Guida in linea di STEP 7 e S7-PLCSIM e i
seguenti manuali:

Manuale Programmazione con STEP 7. Questo manuale fornisce informazioni di base sulla
progettazione e la programmazione dei programmi di controllo. utile consultarlo quando si
scrive un programma di controllo con il software per l'automazione STEP 7.

Manuale di riferimento Software di sistema per S7-300/400, Funzioni standard e di sistema.


Questo manuale descrive le funzioni di sistema, i blocchi organizzativi e le funzioni standard
per lo sviluppo del programma di controllo.

Primi passi ed esercitazioni con STEP 7 - Getting Started Manual. Questo manuale spiega
come utilizzare il software di automazione STEP 7 e descrive le procedure per la
configurazione dei PLC e lo sviluppo dei programmi di controllo.

S7-PLCSIM - Testing Your S7-CPU Program. Questo manuale illustra l'interfaccia utente e il
funzionamento di S7-PLCSIM, il simulatore di PLC S7.

Per richiamare questi e altri manuali selezionare il comando di menu Start > Simatic >
Documentazione nel menu Start del PC in cui stato installato STEP 7.

Ulteriore assistenza tecnica


Per ricevere assistenza su problemi tecnici e richiedere informazioni sui corsi di formazione e
l'ordinazione di questo prodotto, si consiglia di rivolgersi al proprio distributore o al pi vicino ufficio
vendite Siemens.
America del Nord e del Sud

Europa e Africa

Asia e area del Pacifico

Tel.: +1 (800) 333-7421

Tel.: +49 (0) 180 5050 222

Tel.: +86 10 64 75 75 75

Fax: +1 (423) 262-2200

Fax: +49 (0) 180 5050 223

Fax: +86 10 64 74 74 74

simatic.hotline@siemens.com

adsupport@siemens.com

adsupport.asia@siemens.com

S7ProSim V5.4
A5E00992433-01

iii

Sommario
S7ProSim Overview ............................................................................................. 7
Inserimento nel progetto di un oggetto COM S7ProSim................................................ 7
Programmazione di un'interfaccia verso S7-PLCSIM con S7ProSim............................ 8

Metodi .................................................................................................................. 11
BeginScanNotify .......................................................................................................... 13
Connect ....................................................................................................................... 14
Continue ...................................................................................................................... 15
Disconnect ................................................................................................................... 16
EndScanNotify ............................................................................................................. 17
ExecuteNmsScan ........................................................................................................ 18
ExecuteNScans ........................................................................................................... 19
ExecuteSingleScan...................................................................................................... 20
GetPauseState ............................................................................................................ 21
GetScanMode.............................................................................................................. 22
GetStartUpSwitch ........................................................................................................ 23
GetState....................................................................................................................... 24
HotStartWithSavedValues ........................................................................................... 25
Pause........................................................................................................................... 26
ReadDataBlockValue................................................................................................... 27
ReadFlagValue ............................................................................................................ 28
ReadOutputImage ....................................................................................................... 29
ReadOutputPoint ......................................................................................................... 30
SavePLC...................................................................................................................... 31
SetScanMode .............................................................................................................. 32
SetStartUpSwitch......................................................................................................... 33
SetState ....................................................................................................................... 34
StartPLCSim ................................................................................................................ 35
WriteDataBlockValue................................................................................................... 36
WriteFlagValue ............................................................................................................ 37
WriteInputImage .......................................................................................................... 38
WriteInputPoint ............................................................................................................ 39

Eventi................................................................................................................... 41
ConnectionError........................................................................................................... 42
PauseStateChanged.................................................................................................... 43
PLCSimStateChanged................................................................................................. 44
ScanFinished ............................................................................................................... 45
ScanModeChanged ..................................................................................................... 46

S7ProSim V5.4
A5E00992433-01

COM Object Manual

Definizione dei tipi.............................................................................................. 47


CPURunMode.............................................................................................................. 48
ImageDataTypeConstants ........................................................................................... 49
PauseStateConstants .................................................................................................. 50
PointDataTypeConstants............................................................................................. 51
RestartSwitchPosition.................................................................................................. 52
ScanModeConstants ................................................................................................... 53
tagPauseState ............................................................................................................. 54
ScanInfo Constants ..................................................................................................... 55

Codici di ritorno degli errori.............................................................................. 59


Indice analitico ................................................................................................... 61

vi

S7ProSim V5.4
A5E00992433-01

S7ProSim Overview
S7ProSim un oggetto COM che consente di accedere tramite programma all'interfaccia per la
simulazione del processo di S7-PLCSIM. S7ProSim pu essere usato in qualsiasi applicazione che
accetta gli oggetti COM per collegarsi a una simulazione di processo S7-PLCSIM.
Questa documentazione online spiaga come aggiungere S7ProSim a un'applicazione e descrive le
funzioni, le caratteristiche, l'interfaccia e le operazioni di S7ProSim, comprese le definizioni degli oggetti
software dei metodi e degli eventi.

Inserimento nel progetto di un oggetto COM S7ProSim


Per poter utilizzare nel progetto un oggetto COM S7ProSim necessario inserire un riferimento
all'oggetto seguendo una procedura che varia in funzione dell'ambiente di programmazione. Ad
esempio, per inserire un oggetto COM S7ProSim in Microsoft Visual Basic (6.0 o .NET) si dovr
procedere come descritto di seguito.
1. Selezionare il comando di menu Progetto > Riferimenti o Progetto > Aggiungi riferimento.
2. Nella finestra di dialogo Riferimenti selezionare la casella di opzione relativa all'oggetto COM
S7ProSim Siemens (in Visual Basic .NET questa opzione si trova nella scheda COM della
finestra Riferimenti).
3. Fare clic su OK.
Una volta aggiunto il riferimento al progetto possibile esaminare i metodi e gli eventi dell'oggetto COM
S7ProSim mediante il Visualizzatore oggetti. Selezionare S7PROSIMLib nell'elenco a discesa delle
librerie del Visualizzatore. La classe S7ProSim contiene i metodi e gli eventi che consentono di
programmare un'interfaccia con S7-PLCSIM.
Per inserire un oggetto COM in Microsoft Visual Studio C++ V6.0 o in Microsoft Visual C++ .NET si
dovranno seguire le procedure adatte all'ambiente di programmazione scelto.

S7ProSim V5.4
A5E00992433-01

Introduzione a S7ProSim

Programmazione di un'interfaccia verso S7-PLCSIM con S7ProSim


Per poter comandare il PLC simulato S7-PLCSIM in modo programmato con S7ProSim necessario
eseguire le operazioni descritte di seguito.

Inserire nel progetto l'oggetto COM Siemens S7ProSim.

Inserire nel progetto una dichiarazione per S7ProSim.


Esempio: Visual Basic 6.0
Option Explicit
Private WithEvents S7ProSim As S7PROSIMLib.S7ProSim
...
Private Sub Form_Load()
Set S7ProSim = New S7PROSIMLIB.S7ProSim
...
End Sub

Esempio: Visual Basic .NET


Private WithEvents S7ProSim As New S7PROSIMLib.S7ProSim

Esempio: Visual C++ 6.0


// La libreria ProSim /tlb nella dll
#import <S7wspsmx.dll> named_guids, no_namespace//, solo_interfacce_grezze
class ProSimWrapper
{
public:
ProSimWrapper() : m_pProSim(OLESTR("S7wspsmx.S7ProSim"), NULL,
CLSCTX_INPROC_SERVER)
{};
// Lo spartptr viene creato automaticamente nello stack all'avvio
dell'app.
virtual ~ProSimWrapper()
{};
// Nessuna implementazione, lo smartptr viene rilasciato
automaticamente alla chiusura dell'app.
IS7ProSim * GetPtr()
{
return m_pProSim;
};
// Attributi
protected:
// IProSimPtr un CComPtr (smart ptr) all'interfaccia IProSim
// del file dll importato
// CoCreateInstance verr creato automaticamente
// nell'oggetto ptr nel costruttore di questa classe
// Il rilascio di ptr viene richiamato automaticamente
// dal distruttore di questa classe
IS7ProSimPtr
m_pProSim;
};

Esempio: C#
using S7PROSIMLib;
...
private S7ProSim ps;

Per Visual Basic programmare handler per gli eventi S7ProSim. Gli handler di evento non sono
necessari in Visual C++. All'interno di ogni handler di evento si pu inserire un codice
personalizzato per la propria applicazione.
Esempio: Visual Basic 6.0
Private Sub S7ProSim_PauseStateChanged(ByVal NewState As String)
DoEvents
...
End Sub

S7ProSim V5.4
A5E00992433-01

Introduzione a S7ProSim
Private Sub S7ProSim_ScanFinished(ByVal ScanInfo As Variant)
DoEvents
...
End Sub
Private Sub S7ProSim_PLCSimStateChanged(ByVal NewState As String)
DoEvents
...
End Sub
Private Sub S7ProSim_ConnectionError(ByVal ControlEngine As String, ByVal
error As Long)
DoEvents
MsgBox "Connection Error"
End Sub
Private Sub S7ProSim_ScanModeChanged(ByVal NewState As String)
DoEvents
...
End Sub

Nota
In Visual Basic .NET non necessario utilizzare il richiamo "DoEvents".

Aggiungere all'applicazione i pulsanti dei comandi, le caselle di testo o gli altri oggetti necessari
per accedere ai vari metodi di S7ProSim. Programmare il codice di ogni handler dei pulsanti di
comando per richiamare i metodi S7ProSim e impostare dei valori per le caselle di testo che
siano adeguati all'applicazione.

S7ProSim V5.4
A5E00992433-01

Metodi

Connect

Registra S7ProSim per i richiami (callback) provenienti dal


controllore. Quando si verificano questi eventi vengono
trasmessi gli eventi ScanFinished e PLCSimStateChanged.
Collega S7ProSim a S7-PLCSIM.

Continue

Prosegue una simulazione che era stata messa in pausa.

Disconnect

Scollega S7ProSim da S7-PLCSIM.

BeginScanNotify

GetPauseState

Annulla la registrazione di S7ProSim per i richiami (callback)


provenienti dal controllore.Gli eventi ScanFinished e
PLCSimStateChanged non vengono trasmessi.
Forza S7-PLCSIM ad eseguire i cicli di scansione per un dato
tempo (Nms) senza attendere che termini l'esecuzione del
ciclo attuale. Se attiva l'opzione di notifica della scansione,
verr comunicato al programma quando S7-PLCSIM ha
concluso il ciclo.
Forza S7-PLCSIM ad eseguire il numero indicato di cicli di
scansione senza attendere che termini l|qesecuzione del ciclo
attuale. Se attiva l'opzione di notifica della scansione, verr
comunicato al programma quando S7-PLCSIM ha concluso la
scansione.
Forza S7-PLCSIM a eseguire un ciclo di scansione senza
attendere che termini l'esecuzione del ciclo attuale. Se attiva
l'opzione di notifica della scansione, verr comunicato al
programma quando S7-PLCSIM ha concluso la scansione.
Restituisce lo stato di pausa attuale di S7-PLCSIM.

GetScanMode

Restituisce il modo di scansione di S7-PLCSIM.

GetStartUpSwitch

Rileva il tipo di avvio impostato (riavviamento, nuovo


avviamento o avviamento a freddo) per S7-PLCSIM.
Restituisce una stringa contenente il valore della posizione
dell'interruttore a chiave di S7-PLCSIM (RUN, RUN-P o
STOP).
Imposta un valore booleano per determinare se S7-PLCSIM
caricher o meno gli I/O della periferia quando viene avviato
nello stato HotStart.
Per fare in modo che S7-PLCSIM si avvii e carichi gli I/O della
periferia, si deve richiamare HotStartWithSavedValues con un
valore TRUE, salvare il programma del PLC ( SavePLC), e
impostare lo stato di avviamento di S7-PLCSIM su HotStart (
SetStartUpSwitch). Quando verr riavviato S7-PLCSIM
caricher gli I/O della periferia.
Mette in pausa una simulazione.

EndScanNotify
ExecuteNmsScan

ExecuteNScans

ExecuteSingleScan

GetState

HotStartWithSavedValues

Pause
ReadDataBlockValue
ReadFlagValue
ReadOutputImage
ReadOutputPoint

S7ProSim V5.4
A5E00992433-01

Legge un particolare bit, byte, parola o doppia parola dall'area


di memoria dei DB di S7-PLCSIM.
Legge un particolare bit, byte, parola o doppia parola dall'area
di memoria dei flag M di S7-PLCSIM.
Legge gli elementi dell'immagine di uscita della periferia (area
di memoria PQ) di S7-PLCSIM.
Legge un particolare bit (Boolean), byte (Byte), parola di due
byte (Integer) o parola di quattro byte (Long) dall'immagine di
uscita della periferia (area di memoria PQ).

11

Metodi
SavePLC

Salva in un file i dati del PLC simulato.

SetScanMode

I dati salvati sono costituiti dal programma, dalla


configurazione hardware, dalla posizione dell'interruttore a
chiave indicata dall'oggetto di visualizzazione CPU, dal tipo di
scansione (continuo o ciclo singolo), dallo stato degli I/O, dai
valori dei temporizzatori, dagli indirizzi simbolici e
dall'alimentazione (on o off).
Imposta il modo di scansione di S7-PLCSIM.

SetStartUpSwitch
SetState
StartPLCSim
WriteDataBlockValue
WriteFlagValue
WriteInputImage

WriteInputPoint

12

Imposta il tipo di avvio di S7-PLCSIM (nuovo avvio???, a


caldo o a freddo).
Imposta la posizione attuale dell'interruttore a chiave di S7PLCSIM (RUN, RUN-P o STOP).
Avvia S7-PLCSIM con il file di simulazione PLC specificato
(salvato in seguito a un precedente richiamo di SavePLC).
Scrive un particolare bit, byte, parola o doppia parola nall'area
di memoria dei DB di S7-PLCSIM.
Scrive un particolare bit, byte, parola o doppia parola nall'area
di memoria dei flag M di S7-PLCSIM.
Scrive gli elementi nell'immagine di ingresso della periferia
(area di memoria PI) di S7-PLCSIM iniziando dallo StartIndex
dei dati puntati da pData.
Scrive un particolare bit (Boolean), byte (Byte), parola di due
byte (Integer) o parola di quattro byte (Long) dalla Data
Variant nell'immagine di ingresso della periferia (area di
memoria PI).

S7ProSim V5.4
A5E00992433-01

Metodi

BeginScanNotify
STDMETHOD(CS7ProSim::BeginScanNotify)()

Descrizione
Registra S7ProSim per i richiami (callback) provenienti dal controllo. Quando si verificano questi eventi
vengono trasmessi gli eventi ScanFinished e PLCSIMStateChanged.

Parametri
Nessuno

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTCONNECTED
PS_E_POWEROFF

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040211 : S7ProSim non collegato a S7-PLCSIM
0x80040212 : S7-PLCSIM spento

Visual Basic Usage

S7ProSim V5.4
A5E00992433-01

13

Metodi

Connect
STDMETHOD(CS7ProSim::Connect)()

Descrizione
Collega S7ProSim a S7-PLCSIM.

Parametri
Nessuno

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTCONNECTED
PS_E_POWEROFF

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040211 : S7ProSim non collegato a S7-PLCSIM
0x80040212 : S7-PLCSIM spento

Utilizzo di Visual Basic

14

S7ProSim V5.4
A5E00992433-01

Metodi

Continue
STDMETHOD(CS7ProSim::Continue)()

Descrizione
Prosegue una simulazione che era stata messa in pausa.

Parametri
Nessuno

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

15

Metodi

Disconnect
STDMETHOD(CS7ProSim::Disconnect)()

Descrizione
Scollega S7ProSim da S7-PLCSIM.

Parametri
Nessuno

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_POWEROFF

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040212 : S7-PLCSIM spento

Utilizzo di Visual Basic

16

S7ProSim V5.4
A5E00992433-01

Metodi

EndScanNotify
STDMETHOD(CS7ProSim::EndScanNotify)()

Descrizione
Annulla la registrazione di S7ProSim per i richiami (callback) provenienti dal controllore. Gli eventi
ScanFinished e PLCSIMStateChanged non vengono trasmessi.

Parametri
Nessuno

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTCONNECTED
PS_E_POWEROFF

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040211 : S7ProSim non collegato a S7-PLCSIM
0x80040212 : S7-PLCSIM spento
0x80040209 : S7ProSim non registrato per i richiami (callback)
PS_E_NOTREGISTERED
provenienti da S7-PLCSIM

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

17

Metodi

ExecuteNmsScan
STDMETHOD(CS7ProSim::ExecuteNmsScan)( long MsNumber)

Descrizione
Forza S7-PLCSIM ad eseguire i cicli di scansione per un dato tempo (Nms) senza attendere che
termini l'esecuzione del ciclo attuale. Se attiva l'opzione di notifica della scansione, verr comunicato
al programma quando S7-PLCSIM ha concluso il ciclo. Per poter utilizzare questo metodo S7-PLCSIM
deve essere modalit Ciclo singolo.

Parametri
MsNumber Tempo (in millisecondi) per cui dovranno essere eseguiti i cicli di scansione.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTSINGLESCAN
PS_E_PLCNOTRUNNING
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x8004020A : S7-PLCSIM non in modo Ciclo singolo
0x8004020E : S7-PLCSIM non in esecuzione
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

18

S7ProSim V5.4
A5E00992433-01

Metodi

ExecuteNScans
STDMETHOD(CS7ProSim::ExecuteNScans)( long NScanNumber)

Descrizione
Forza S7-PLCSIM ad eseguire il numero indicato di cicli di scansione senza attendere che termini
l'esecuzione del ciclo attuale. Se attiva l'opzione di notifica della scansione, verr comunicato al
programma quando S7-PLCSIM ha concluso il ciclo. Per poter utilizzare questo metodo S7-PLCSIM
deve essere modalit Ciclo singolo.

Parametri
NScanNumber Numero di cicli di scansione da eseguire

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTSINGLESCAN
PS_E_PLCNOTRUNNING
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x8004020A : S7-PLCSIM non in modo Ciclo singolo
0x8004020E : S7-PLCSIM non in esecuzione
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Visual Basic Usage

S7ProSim V5.4
A5E00992433-01

19

Metodi

ExecuteSingleScan
STDMETHOD(CS7ProSim::ExecuteSingleScan)()

Descrizione
Forza S7-PLCSIM a eseguire un ciclo di scansione senza attendere che termini l'esecuzione del ciclo
attuale. Se attiva l'opzione di notifica della scansione, verr comunicato al programma quando S7PLCSIM ha concluso il ciclo. Per poter utilizzare questo metodo S7-PLCSIM deve essere modalit
Ciclo singolo.

Parametri
Nessuno

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_PLCNOTRUNNING
PS_E_NOTSINGLESCAN

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x8004020E : S7-PLCSIM non in esecuzione
0x8004020A : S7-PLCSIM non in modo Ciclo singolo
0x8004020C : S7-PLCSIM non riuscito a impostare il modo di
PS_E_MODENOTPOSSIBLE
scansione specificato

Utilizzo di Visual Basic

20

S7ProSim V5.4
A5E00992433-01

Metodi

GetPauseState
STDMETHOD(CS7ProSim::GetPauseState)( PauseStateConstants *pVal)

Descrizione
Restituisce lo stato di pausa attuale di S7-PLCSIM.

Parametri
pVal

Puntatore allo stato di S7-PLCSIM restituito, che costituito da una delle


PauseStateConstants

Note
Se richiamato da Visual Basic, lo stato di pausa viene restituito nel valore di ritorno della funzione e il
parametro pVal non presente.
Se richiamato da C++ lo stato di pausa viene restituito nel valore puntato da pVal.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

21

Metodi

GetScanMode
STDMETHOD(CS7ProSim::GetScanMode)( ScanModeConstants *pVal)

Descrizione
Restituisce il modo di scansione di S7-PLCSIM.

Parametri
pVal

Puntatore al modo di scansione restituito. Il modo di scansione restituito una delle


ScanModeConstants

Note
Se richiamato da Visual Basic, il modo di scansione viene restituito nel valore di ritorno della funzione e
il parametro pVal non presente.
Se richiamato da C++ lo stato viene restituito nel valore puntato da pVal.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

22

S7ProSim V5.4
A5E00992433-01

Metodi

GetStartUpSwitch
STDMETHOD(CS7ProSim::GetStartUpSwitch)( RestartSwitchPosition *pPos)

Descrizione
Rileva il tipo di avvio impostato (riavviamento, nuovo riavviamento o riavviamento a freddo) per S7PLCSIM.

Parametri
pPos

Puntatore al valore della posizione di avvio di S7-PLCSIM che una delle impostazione di
RestartSwitchPosition

Note
Se richiamata da Visual Basic, la posizione dell'interruttore viene restituita nel valore di ritorno della
funzione e il parametro pPos.
Se richiamato da C++ lo stato viene restituito nel valore puntato da pPos.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

23

Metodi

GetState
STDMETHOD(CS7ProSim::GetState)( BSTR *pVal)

Descrizione
Restituisce una stringa contenente il valore della posizione dell'interruttore a chiave di S7-PLCSIM
(RUN, RUN-P o STOP).

Parametri
pVal Puntatore al valore della posizione dell'interruttore a chiave di S7-PLCSIM restituito.

Note
Se richiamato da Visual Basic, lo stato viene restituito nel valore di ritorno della funzione e il parametro
pVal non presente.
Se richiamato da C++ lo stato viene restituito nel valore puntato da pVal.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
E_INVALID_STATE
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x00008002 : Stato non valido
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

24

S7ProSim V5.4
A5E00992433-01

Metodi

HotStartWithSavedValues
STDMETHOD(CS7ProSim::HotStartWithSavedValues)( BOOL val)

Descrizione
Imposta un valore booleano per determinare se S7-PLCSIM dovr caricare gli I/O di periferia salvati se
avviato nello stato HotStart.
Per fare in modo che S7-PLCSIM si avvii e carichi gli I/O della periferia, si deve richiamare
HotStartWithSavedValues con un valore TRUE, salvare il programma del PLC (SavePLC) e
impostare lo stato di avvio di S7-PLCSIM su HotStart (SetStartUpSwitch). Quando verr riavviato, S7PLCSIM caricher gli I/O della periferia.

Parametri
val

Un valore TRUE indica che, in caso di riavviamento, S7-PLCSIM dovr caricare i dati di I/O
della periferia salvati. Un valore FALSE indica che non dovr caricarli.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

25

Metodi

Pause
STDMETHOD(CS7ProSim::Pause)()

Descrizione
Mette in pausa una simulazione.

Parametri
Nessuno

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

26

S7ProSim V5.4
A5E00992433-01

Metodi

ReadDataBlockValue
STDMETHOD(CS7ProSim::ReadDataBlockValue)(
BlockNumber,
long ByteIndex,
long BitIndex,
PointDataTypeConstants DataType,
VARIANT* pData)

Descrizione
Legge un particolare bit, byte, parola o doppia parola dall'area di memoria dei DB di S7-PLCSIM.

Parametri
BlockNumber

Numero del blocco dati da leggere. I valori consentiti per BlockNumber dipendono
dalla CPU.

ByteIndex

Posizione del byte iniziale nel blocco dati da leggere. I valori ammessi per
ByteIndex dipendono dalla CPU.

BitIndex

In caso di lettura di un valore booleano (bit), posizione del bit iniziale nel blocco dati
da leggere. I valori consentiti per BitIndex vanno da 0 a 7.

DataType

Tipo di dati da leggere. DataType deve essere una PointDataTypeConstants.

pData

Puntatore allo spazio per il valore restituito. Questa area di memoria deve essere
assegnata e resa disponibile nell'applicazione.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTCONNECTED
PS_E_POWEROFF
PS_E_BADTYPE
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040211 : S7ProSim non collegato a S7-PLCSIM
0x80040212 : S7-PLCSIM spento
0x80040206 : Tipo di dati non valido
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice del byte
PS_E_BADBYTECOUNT
iniziale specificato
PS_E_READFAILED
0x80040203 : Operazione di lettura non riuscita

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

27

Metodi

ReadFlagValue
STDMETHOD(CS7ProSim::ReadFlagValue)( long ByteIndex,
long BitIndex,
PointDataTypeConstants DataType,
VARIANT* pData)

Descrizione
Legge un particolare bit, byte, parola o doppia parola dall'area di memoria dei merker M di S7-PLCSIM.

Parametri
ByteIndex

Rappresenta la posizione del byte iniziale della memoria M da scrivere. I valori


ammessi per ByteIndex dipendono dalla CPU.

BitIndex

In caso di scrittura di un valore booleano (bit) rappresenta la posizione del bit iniziale
all'interno del byte di memoria M da scrivere. I valori consentiti per BitIndex vanno da 0
a 7.

DataType

Rappresenta il tipo di dati da leggere. DataType deve essere una


PointDataTypeConstants.

pData

Puntatore allo spazio per il valore restituito. Questa area di memoria deve essere
assegnata e resa disponibile nell'applicazione.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore di ritorno
Valore
S_OK
E_FAIL
PS_E_NOTCONNECTED
PS_E_POWEROFF
PS_E_BADTYPE
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040211 : S7ProSim non collegato a S7-PLCSIM
0x80040212 : S7-PLCSIM spento
0x80040206 : Tipo di dati non valido
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice del byte
PS_E_BADBYTECOUNT
iniziale specificato
PS_E_READFAILED
0x80040203 : Operazione di lettura non riuscita

Utilizzo di Visual Basic

28

S7ProSim V5.4
A5E00992433-01

Metodi

ReadOutputImage
STDMETHOD(CS7ProSim::ReadOutputImage)( long StartIndex,
long ElementsToRead,
ImageDataTypeConstants DataType,
VARIANT* pData)

Descrizione
Legge gli elementi dell'immagine di uscita della periferia (area di memoria PQ) di S7-PLCSIM.

Parametri
StartIndex

Rappresenta la posizione del byte iniziale nel buffer dell'immagine di uscita


della periferia da leggere. I valori consentiti per StartIndex dipendono dalla
CPU.

ElementsToRead

Rappresenta il numero di byte, parole o doppie parole da leggere dal buffer


dell'immagine. I valori consentiti per ElementsToRead dipendono dalla CPU.

DataType

Rappresenta il tipo di dati da leggere. Il DataType valore deve essere una


ImageDataTypeConstants.

pData

Puntatore allo spazio degli elementi restituiti. I valori consentiti per i dati
dipendono da ElementsToRead. Questa area di memoria deve essere
assegnata e resa disponibile nell'applicazione.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice
PS_E_BADBYTECOUNT
del byte di ingresso specificato
PS_E_READFAILED
0x80040203 : Operazione di lettura non riuscita
PS_E_BADTYPE
0x80040206 : Tipo di dati non valido
PS_E_NOTALLREADSWORKED 0x8004020F : Nessuna operazione di lettura riuscita
PS_E_NOTCONNECTED
0x80040211 : S7ProSim non collegato a S7-PLCSIM
PS_E_POWEROFF
0x80040212 : S7-PLCSIM spento

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

29

Metodi

ReadOutputPoint
STDMETHOD(CS7ProSim::ReadOutputPoint)( long ByteIndex,
long BitIndex,
PointDataTypeConstants DataType,
VARIANT* pData)

Descrizione
Legge un particolare bit (Boolean), byte (Byte), parola di due byte (Integer) o parola di quattro byte
(Long) dall'immagine di uscita della periferia (area di memoria PQ).

Parametri
ByteIndex

Rappresenta la posizione del byte iniziale nel buffer dell'immagine della periferia da
leggere. I valori consentiti per ByteIndex dipendono dalla CPU.

BitIndex

Rappresenta la posizione del bit (nei byte) nel buffer dell'immagine della periferia da
leggere. Sono ammessi i valori da 0 a 7.

DataType

Una delle PointDataTypeConstants

pData

Puntatore ai dati da leggere. I valori consentiti per Data dipendono dal tipo di dati.

Note
Se il parametro DataType S7_Bit, ByteIndex e BitIndex devono essere impostati su indici validi. Se
riesce, il metodo restituisce il bit indicato in pData e il relativo tipo di dati Variant booleano.
Se il parametro DataType impostato su S7_Byte, S7_Word o S7_DoubleWord, ByteIndex deve
essere impostato su un indice valido (BitIndex viene ignorato). Se riesce, il metodo restituisce il valore
in pData. Il suo tipo di dati Variant Byte, Integer o Long in funzione del parametro DataType.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice del byte
PS_E_BADBYTECOUNT
iniziale specificato
PS_E_READFAILED
0x80040203 : Operazione di lettura non riuscita
PS_E_BADBITNDX
0x80040205 : Indice del bit non valido
PS_E_BADTYPE
0x80040206 : Tipo di dati non valido
PS_E_NOTCONNECTED 0x80040211 : S7ProSim non collegato a S7-PLCSIM
PS_E_POWEROFF
0x80040212 : S7-PLCSIM spento

Utilizzo di Visual Basic

30

S7ProSim V5.4
A5E00992433-01

Metodi

SavePLC
STDMETHOD(CS7ProSim::SavePLC)( BSTR FileName)

Descrizione
Salva in un file i dati del PLC simulato.
I dati salvati sono costituiti da programma, configurazione hardware, posizione dell|qinterruttore a
chiave indicata dalla sottofinestra CPU, tipo di scansione (Continuo o Ciclo singolo), stato degli I/O,
valori dei temporizzatori, indirizzi simbolici e alimentazione (on o off).

Parametri
FileName Nome del file in cui salvare i dati simulati del PLC

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
STG_E_CANTSAVE
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80030103 : Impossibile salvare
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

31

Metodi

SetScanMode
STDMETHOD(CS7ProSim::SetScanMode)( ScanModeConstants newVal)

Descrizione
Imposta il modo di scansione di S7-PLCSIM.

Parametri
newVal

Modo di scansione da impostare per S7-PLCSIM. Il modo di scansione deve essere una
delle ScanModeConstants

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

32

S7ProSim V5.4
A5E00992433-01

Metodi

SetStartUpSwitch
STDMETHOD(CS7ProSim::SetStartUpSwitch)( RestartSwitchPosition postion)

Descrizione
Imposta il tipo di avvio (riavviamento, nuovo avviamento o avviamento a freddo) di S7-PLCSIM.

Parametri
postion Valore da impostare per la posizione dell'interruttore di avvio di S7-PLCSIM.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore di ritorno
Valore
S_OK
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

33

Metodi

SetState
STDMETHOD(CS7ProSim::SetState)( BSTR newVal)

Descrizione
Imposta la posizione dell'interruttore a chiave di S7-PLCSIM (RUN, RUN-P o STOP).

Parametri
newVal Valore della posizione dell'interruttore a chiave di S7-PLCSIM da impostare

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
E_INVALID_STATE
PS_E_NOTCONNECTED

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x00008002 : Stato non valido
0x80040211 : S7ProSim non collegato a S7-PLCSIM

Utilizzo di Visual Basic

34

S7ProSim V5.4
A5E00992433-01

Metodi

StartPLCSim
STDMETHOD(CS7ProSim::StartPLCSim)( BSTR plcFile)

Descrizione
Avvia S7-PLCSIM con il file di simulazione PLC specificato (salvato durante un precedente richiamo di
SavePLC).

Parametri
plcFile Nome del file per l'avvio di S7-PLCSIM.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

35

Metodi

WriteDataBlockValue
STDMETHOD(CS7ProSim::WriteDataBlockValue)(
long BlockNumber,
long ByteIndex,
long BitIndex,
const VARIANT* pData)

Descrizione
Scrive un particolare bit, byte, parola o doppia parola nall'area di memoria dei DB di S7-PLCSIM.

Parametri
BlockNumber

Rappresenta il numero del blocco dati da scrivere. I valori ammessi per


BlockNumber dipendono dalla CPU.

ByteIndex

Rappresenta la posizione del byte iniziale nel blocco dati da scrivere. I valori
ammessi per ByteIndex dipendono dalla CPU.

BitIndex

In caso di scrittura di un valore booleano (bit) rappresenta la posizione del bit


iniziale all'interno del blocco dati da scrivere. I valori validi per BitIndex vanno da 0 a
7.

pData

Puntatore allo spazio di memoria che contiene i dati da scrivere. Questa area di
memoria deve essere assegnata e resa disponibile nell'applicazione.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTCONNECTED
PS_E_POWEROFF
PS_E_BADTYPE
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040211 : S7ProSim non collegato a S7-PLCSIM
0x80040212 : S7-PLCSIM spento
0x80040206 : Tipo di dati non valido
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice del byte
PS_E_BADBYTECOUNT
iniziale specificato
PS_E_WRITEFAILED
0x80040204 : Operazione di scrittura non riuscita

Utilizzo di Visual Basic

36

S7ProSim V5.4
A5E00992433-01

Metodi

WriteFlagValue
STDMETHOD(CS7ProSim::WriteFlagValue)( long ByteIndex,
long BitIndex,
const VARIANT* pData)

Descrizione
Scrive un particolare bit, byte, parola o doppia parola nall'area di memoria dei flag M di S7-PLCSIM.

Parametri
ByteIndex

Rappresenta la posizione del byte iniziale della memoria M da scrivere. I valori


ammessi per ByteIndex dipendono dalla CPU.

BitIndex

In caso di scrittura di un valore boolenano (bit) rappresenta la posizione del bit iniziale
all'interno del byte di memoria M da scrivere. I valori consentiti per BitIndex vanno da 0
a 7.

pData

Puntatore allo spazio di memoria che contiene i dati da scrivere. Questa area di
memoria deve essere assegnata e resa disponibile nell'applicazione.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_NOTCONNECTED
PS_E_POWEROFF
PS_E_BADTYPE
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040211 : S7ProSim non collegato a S7-PLCSIM
0x80040212 : S7-PLCSIM spento
0x80040206 : Tipo di dati non valido
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice del byte
PS_E_BADBYTECOUNT
iniziale specificato
PS_E_WRITEFAILED
0x80040204 : Operazione di scrittura non riuscita

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

37

Metodi

WriteInputImage
STDMETHOD(CS7ProSim::WriteInputImage)( long StartIndex, const
VARIANT* pData)

Descrizione
Scrive gli elementi nell'immagine di ingresso della periferia (area di memoria PI) di S7-PLCSIM
iniziando dallo StartIndex dei dati puntati da pData.

Parametri
StartIndex

Rappresenta la posizione del byte iniziale nel buffer dell'immagine di ingresso della
periferia da scrivere. I valori consentiti per StartIndex dipendono dalla CPU.

pData

Puntatore ai dati da scrivere in S7-PLCSIM. I valori consentiti dipendono dalla CPU.


Questa area di memoria deve essere assegnata e resa disponibile nell'applicazione.

Note
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 tipo Bytes scrive byte, un array di tipo Integer scrive parole, un array di
tipo Long scrive doppie parole. I valori scritti sono grezzi e non vengono interpretati o convertiti in
alcun modo dal metodo. Il numero di elementi scritti dipende dalla dimensione dell'array puntato da
Data.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valori restituiti
Valore
S_OK
E_FAIL
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice
PS_E_BADBYTECOUNT
del byte di ingresso specificato
PS_E_WRITEFAILED
0x80040204 : Operazione di scrittura non riuscita
PS_E_BADTYPE
0x80040206 : Tipo di dati non valido
PS_E_NOTALLWRITESWORKED 0x80040210 : Nessuna operazione di scrittura riuscita
PS_E_NOTCONNECTED
0x80040211 : S7ProSim non collegato a S7-PLCSIM
PS_E_POWEROFF
0x80040212 : S7-PLCSIM spento

Visual Basic Usage

38

S7ProSim V5.4
A5E00992433-01

Metodi

WriteInputPoint
STDMETHOD(CS7ProSim::WriteInputPoint)( long ByteIndex,
long BitIndex,
const VARIANT* pData)

Descrizione
Scrive un particolare bit (Boolean), byte (Byte), parola di due byte (Integer) o parola di quattro byte
(Long) dalla Data Variant nell'immagine di ingresso della periferia (area di memoria PI).

Parametri
ByteIndex

Rappresenta la posizione del byte iniziale nel buffer dell'immagine di ingresso della
periferia da scrivere. I valori ammessi per ByteIndex dipendono dalla CPU.

BitIndex

Rappresenta la posizione del bit (nei byte) nel buffer dell'immagine della periferia da
scrivere. Sono ammessi i valori da 0 a 7.

pData

Puntatore ai dati da scrivere. I valori consentiti per Data dipendono dal tipo di dati.

Note
Se si indica come tipo di dati Booleano, ByteIndex e BitIndex devono essere impostati su indici validi.
Se riesce, il metodo scrive il bit indicato in pData.
Se si indica come tipo di dati Byte, Integer o Long, si deve impostare ByteIndex su un indice valido
(BitIndex is ignored). Se riesce, il metodo scrive gli elementi indicati in pData.

Gestione degli errori


Gli errori vengono restituiti nell'evento ConnectionError e non dal richiamo della funzione.

Valore restituito
Valore
S_OK
E_FAIL
PS_E_BADBYTENDX

Significato
0x00000000 : Codice di metodo riuscito
0x80004005 : Errore non specificato
0x80040201 : Indice del byte non valido
0x80040202 : Dimensione dell'array di dati non valida per l'indice del byte
PS_E_BADBYTECOUNT
iniziale specificato
PS_E_WRITEFAILED
0x80040204 : Operazione di scrittura non riuscita
PS_E_BADBITNDX
0x80040205 : Indice del bit non valido
PS_E_BADTYPE
0x80040206 : Tipo di dati non valido
PS_E_NOTCONNECTED 0x80040211 : S7ProSim non collegato a S7-PLCSIM
PS_E_POWEROFF
0x80040212 : S7-PLCSIM spento

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

39

Eventi
Viene generato se non possibile stabilire il collegamento con il
motore di controllo ("S7-PLCSIM") o se si verifica un errore nel
richiamo di un metodo S7ProSim.
Viene generato se viene rilevato un passaggio dello stato da
PauseStateChanged
Interrompi a Continua. NewState una stringa che costituisce una
delle PauseStateConstants.
Viene generato se viene rilevato un nuovo stato dell'interruttore del
PLCSimStateChanged PLC. NewState corrisponde al nuovo stato operativo: "RUN",
"RUN_P" o "STOP".
Viene generato al termine di un singolo ciclo di scansione. ScanInfo
ScanFinished
fornisce informazioni indicizzate sulla scansione.
Viene generato se viene rilevato un cambiamento del modo di
ScanModeChanged
scansione. NewState una stringa che costituisce una delle
ScanStateConstants.
ConnectionError

S7ProSim V5.4
A5E00992433-01

41

Eventi

ConnectionError
HRESULT ConnectionError(BSTR ControlEngine, long Error)

Descrizione
Viene generato se non possibile stabilire il collegamento con il motore di controllo ("S7-PLCSIM") o
se si verifica un errore nel richiamo di un metodo S7ProSim.

Utilizzo di Visual Basic

42

S7ProSim V5.4
A5E00992433-01

Eventi

PauseStateChanged
HRESULT PauseStateChanged(BSTR NewState)

Descrizione
Viene generato se viene rilevato un passaggio dello stato da Interrompi a Continua. NewState una
stringa che costituisce una delle PauseStateConstants.

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

43

Eventi

PLCSimStateChanged
HRESULT PLCSimStateChanged(BSTR NewState)

Descrizione
Viene generato se viene rilevato un nuovo stato dell'interruttore del PLC. NewState corrisponde al
nuovo stato operativo: "RUN", "RUN_P" o "STOP".

Utilizzo di Visual Basic

44

S7ProSim V5.4
A5E00992433-01

Eventi

ScanFinished
HRESULT ScanFinished(VARIANT ScanInfo)

Descrizione
Viene generato al termine di un singolo ciclo di scansione. ScanInfo fornisce informazioni indicizzate
sulla scansione.

Utilizzo di Visual Basic

S7ProSim V5.4
A5E00992433-01

45

Eventi

ScanModeChanged
HRESULT ScanModeChanged(BSTR NewState)

Descrizione
Viene generato se viene rilevato un cambiamento del modo di scansione. NewState una stringa che
costituisce una delle ScanStateConstants.

Utilizzo di Visual Basic

46

S7ProSim V5.4
A5E00992433-01

Definizione dei tipi


CPURunMode

Costanti per lo stato di scansione "run" della CPU

ImageDataTypeConstants Costanti per il metodo ReadOutputImage


Costanti per lo stato "pausa"
PauseStateConstants
PointDataTypeConstants

Costanti per il metodo ReadOutputPoint

RestartSwitchPosition
ScanModeConstants

Costanti per la posizione dell'interruttore di avvio sul pannello


frontale
Costanti per il modo di scansione

tagPauseState

Costanti per lo stato "pausa"

ScanInfo Constants

Costanti per le informazioni sul ciclo di scansione

S7ProSim V5.4
A5E00992433-01

47

Definizione dei tipi

CPURunMode
enum CPURunMode { CONTINUOUS_SCAN, SINGLE_SCAN, SINGLE_STEP }

Descrizione
Costanti per lo stato di scansione in modo RUN della CPU.

Membri
CONTINUOUS_SCAN
SINGLE_SCAN
SINGLE_STEP

48

S7ProSim V5.4
A5E00992433-01

Definizione dei tipi

ImageDataTypeConstants
enum {
S7Byte = 2,
S7Word = 3,
S7DoubleWord = 4
}

Descrizione
Costanti del metodo ReadOutputImage.

Membri
S7Byte
S7DoubleWord
S7Word

S7ProSim V5.4
A5E00992433-01

49

Definizione dei tipi

PauseStateConstants
enum {
Running = 0,
Paused = 1,
Disabled = 2
}

Descrizione
Costanti dello stato di pausa.

Membri
Disabled
Paused
Running

50

S7ProSim V5.4
A5E00992433-01

Definizione dei tipi

PointDataTypeConstants
enum {
S7_Bit = 1,
S7_Byte = 2,
S7_Word = 3,
S7_DoubleWord = 4
}

Descrizione
Costanti del metodo ReadOutputPoint.

Membri
S7_Bit
S7_Byte
S7_DoubleWord
S7_Word

S7ProSim V5.4
A5E00992433-01

51

Definizione dei tipi

RestartSwitchPosition
enum {
WarmStart = 0,
HotStart = 1,
ColdStart = 2
}

Descrizione
Costanti della posizione dell'interruttore di avvio sul pannello frontale.

Membri
ColdStart

Posizione di riavvio OB102

HotStart

Posizione di riavvio OB101

WarmStart Posizione di riavvio OB100

52

S7ProSim V5.4
A5E00992433-01

Definizione dei tipi

ScanModeConstants
enum {
SingleScan = 0,
ContinuousScan = 1
}

Descrizione
Costanti del modo di scansione.

Membri
ContinuousScan
SingleScan

S7ProSim V5.4
A5E00992433-01

53

Definizione dei tipi

tagPauseState
enum tagPauseState { ENABLED_RUNNING, ENABLED_PAUSED,

DISABLED }

Descrizione
Costanti dello stato di pausa.

Membri
DISABLED
ENABLED_PAUSED
ENABLED_RUNNING

54

S7ProSim V5.4
A5E00992433-01

Definizione dei tipi

ScanInfo Constants
Costanti ScanInfo
ScanInfo
NUM_OF_SCANINFO_ELEMENTS Numero di elementi nell'array di ritorno ScanInfo.
EXECUTION_TIME_NDX

Indice 0: tempo di esecuzione in ms

MIN_CYCLE_TIME_NDX

Indice 1: valore del tempo di esecuzione pi basso in


ms

LARGEST_CYCLE_TIME_NDX

Indice 2: tempo di esecuzione massimo espresso in ms

AVERAGE_CYCLE_TIME_NDX

Indice 3: tempo di ciclo medio in ms

IS_PLC_RUNNING_NDX

Indice 4: merker: 1=PLC in funzione; 0=PLC non in


funzione

ScanInfo
ScanInfo
Il tipo di dati ScanInfo un array di long. Ogni long dell'array definisce delle informazioni sul ciclo
di scansione nelle modalit definite dalle constanti di ScanInfo.

S7ProSim V5.4
A5E00992433-01

55

Definizione dei tipi

NUM_OF_SCANINFO_ELEMENTS
#define NUM_OF_SCANINFO_ELEMENTS

Descrizione
Numero di elementi nell'array di ritorno ScanInfo.

EXECUTION_TIME_NDX
#define EXECUTION_TIME_NDX

Descrizione
Indice 0: tempo di esecuzione in ms

MIN_CYCLE_TIME_NDX
#define MIN_CYCLE_TIME_NDX

Descrizione
Indice 1: valore del tempo di esecuzione pi basso in ms

56

S7ProSim V5.4
A5E00992433-01

Definizione dei tipi

LARGEST_CYCLE_TIME_NDX
#define LARGEST_CYCLE_TIME_NDX

Descrizione
Indice 2: tempo di esecuzione massimo espresso in ms

AVERAGE_CYCLE_TIME_NDX
#define AVERAGE_CYCLE_TIME_NDX

Descrizione
indice 3: tempo di ciclo medio in ms

IS_PLC_RUNNING_NDX
#define IS_PLC_RUNNING_NDX

Descrizione
Indice 4: merker: 1=PLC in funzione; 0=PLC non in funzione

S7ProSim V5.4
A5E00992433-01

57

Codici di ritorno degli errori


PS_E_BADBITNDX

0x80040205 : Indice del bit non valido

PS_E_BADBYTECOUNT

0x80040202 : Dimensione dell'array di dati non valida


per l'indice del byte iniziale specificato

PS_E_BADBYTENDX

0x80040201 : Indice del byte non valido

PS_E_BADTYPE

0x80040206 : Tipo di dati non valido

PS_E_INVALIDCALLBACK

0x80040207 : Callback non valido

PS_E_INVALIDDISPATCH

0x80040208 : Dispatch non valido

PS_E_INVALIDINPUT

0x80040213 : Input non valido

PS_E_MODENOTPOSSIBLE

0x8004020B : Tipo di scansione non valido, deve essere


una ScanModeConstants
0x8004020C : S7-PLCSIM non riuscito a impostare il
modo di scansione specificato

PS_E_NOTALLREADSWORKED

0x8004020F : Nessuna operazione di lettura riuscita

PS_E_INVALIDSCANTYPE

PS_E_NOTALLWRITESWORKED 0x80040210 : Nessuna operazione di scrittura riuscita


PS_E_NOTCONNECTED

0x80040211 : S7ProSim non collegato a S7-PLCSIM

PS_E_NOTIFICATION_EXIST

0x8004020D : S7ProSim gi registrato per la notifica

PS_E_NOTREGISTERED

0x80040209 : S7ProSim non registrato per i richiami


(callback) da S7-PLCSIM

PS_E_NOTSINGLESCAN

0x8004020A : S7-PLCSIM non nel modo Ciclo singolo

PS_E_PLCNOTRUNNING

0x8004020E : S7-PLCSIM non in esecuzione

PS_E_POWEROFF

0x80040212 : S7-PLCSIM spento

PS_E_READFAILED

0x80040203 : Operazione di lettura non riuscita

PS_E_WRITEFAILED

0x80040204 : Operazione di scrittura non riuscita

E_FAIL

0x80004005 : Errore non specificato

E_INVALID_STATE

0x00008002 : Stato non valido

S_OK

0x00000000 : Codice di metodo riuscito

STG_E_CANTSAVE

0x80030103 : Impossibile salvare

S7ProSim V5.4
A5E00992433-01

59

Indice analitico
A
AVERAGE_CYCLE_TIME_NDX, 57

B
BeginScanNotify, 13

C
Caricamento degli I/O della periferia al
riavviamento, 25

ScanModeConstants, 53
tagPauseState, 54
Disconnect, 16

E
EndScanNotify, 17
Esecuzione in modo Ciclo continuo
GetScanMode, 22

Caricamento del file .plc salvato, 35

ScanModeConstants, 53

Codici di ritorno degli errori, 59

SetScanMode, 32

ColdStart, 52
impostazione, 33

Esecuzione in modo Ciclo singolo


ExecuteNmsScan, 18

Connect, 14

ExecuteNScans, 19

ConnectionError, 42

ExecuteSingleScan, 20

Continue, 15

GetScanMode, 22

Costanti, 47

ScanModeConstants, 53

CPURunMode, 48
ImageDataTypeConstants, 49

SetScanMode, 32
Eventi, 41

PauseStateConstants, 50

ConnectionError, 42

PointDataTypeConstants, 51

PauseStateChanged, 43

RestartSwitchPosition, 52

PLCSimStateChanged, 44

ScanModeConstants, 53

ScanFinished, 45

tagPauseState, 54

ScanModeChanged, 46

Costanti definite, 47

ExecuteNmsScan, 18

CPURunMode, 48

ExecuteNScans, 19

ImageDataTypeConstants, 49

ExecuteSingleScan, 20

PauseStateConstants, 50

EXECUTION_TIME_NDX, 56

PointDataTypeConstants, 51

RestartSwitchPosition, 52

GetPauseState, 21

ScanModeConstants, 53

GetScanMode, 22

tagPauseState, 54

GetStartUpSwitch, 23

Costanti ScanInfo, 55
CPURunMode, 48

D
Definizione dei tipi, 47
CPURunMode, 48
ImageDataTypeConstants, 49
PauseStateConstants, 50
PointDataTypeConstants, 51

GetState, 24

H
Handler di evento, 8
HotStart, 52
impostazione, 33
HotStartWithSavedValues, 25

I
ImageDataTypeConstants, 49

RestartSwitchPosition, 52

S7ProSim V5.4
A5E00992433-01

61

Definizione dei tipi


Introduzione, 7
IS_PLC_RUNNING_NDX, 57

WriteInputPoint, 39
Metodi di esecuzione del ciclo di scansione
ExecuteNmsScan, 18

LARGEST_CYCLE_TIME_NDX, 57

ExecuteNScans, 19

Lettura

ExecuteSingleScan, 20

immagine delle uscite, 29

Metodi S7ProSim Pro

uscita, 30

ReadDataBlockValue, 27

valore dei merker (memoria M), 28

ReadFlagValue, 28

Valori dei blocchi dati (DB), 27

WriteDataBlockValue, 36

M
Memoria M
lettura, 28
scrittura, 37
Metodi, 11
BeginScanNotify, 13
Connect, 14
Continue, 15
Disconnect, 16
EndScanNotify, 17
ExecuteNmsScan, 18

WriteFlagValue, 37
MIN_CYCLE_TIME_NDX, 56
Modo di scansione
impostazione, 32
rilevamento, 22

N
NUM_OF_SCANINFO_ELEMENTS, 56

O
Oggetto COM Siemens S7ProSim, aggiunta a
un progetto, 7

ExecuteNScans, 19

Pause, 26

ExecuteSingleScan, 20

PauseStateChanged, 43

GetPauseState, 21

PauseStateConstants, 50

GetScanMode, 22

PLCSIM, avvio, 35

GetStartUpSwitch, 23

PLCSimStateChanged, 44

GetState, 24

PointDataTypeConstants, 51

HotStartWithSavedValues, 25

Posizione dell'interruttore a chiave

Pause, 26

impostazione, 34

ReadDataBlockValue, 27

rilevamento, 24

ReadFlagValue, 28

Posizione dell'interruttore di avvio, 52

ReadOutputImage, 29

impostazione, 33

ReadOutputPoint, 30

rilevamento, 23

SavePLC, 31
SetScanMode, 32
SetStartUpSwitch, 33
SetState, 34
StartPLCSim, 35
WriteDataBlockValue, 36
WriteFlagValue, 37
WriteInputImage, 38

Programmazione dell'interfaccia S7ProSim


verso S7-PLCSIM, 8

R
ReadDataBlockValue, 27
ReadFlagValue, 28
ReadOutputImage, 29
ReadOutputPoint, 30
RestartSwitchPosition, 52
Riferimenti, 7

62

S7ProSim V5.4
A5E00992433-01

Indice analitico
Riferimenti per il progetto, 7

S
S7-PLCSIM, avvio, 35
S7ProSim
interfaccia verso S7-PLCSIM,
programmazione, 8
introduzione, 7
Salvataggio del file .plc, 31
SavePLC, 31
ScanFinished, 45
ScanModeChanged, 46
ScanModeConstants, 53
Scrittura
immagine degli ingressi, 38
ingresso, 39
valore dei merker (memoria M), 37
Valori dei blocchi dati (DB), 36
SetScanMode, 32
SetStartUpSwitch, 33
SetState, 34
StartPLCSim, 35
Stato di pausa
impostazione, 26
rilevamento, 21

T
tagPauseState, 54
Tipi enum, 47
CPURunMode, 48
ImageDataTypeConstants, 49
PauseStateConstants, 50
PointDataTypeConstants, 51
RestartSwitchPosition, 52
ScanModeConstants, 53
tagPauseState, 54

V
Valore dei merker
lettura, 28
scrittura, 37
Valori dei blocchi dati (DB)
lettura, 27
scrittura, 36
Valori di ritorno, 59

W
WarmStart, 52
impostazione, 33
WriteDataBlockValue, 36
WriteFlagValue, 37
WriteInputImage, 38
WriteInputPoint, 39

S7ProSim V5.4
A5E00992433-01

63