Einfaches Schalten der S7-300 via Ptp und PC

ChrisC.

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

habe hier eine S7-314C-2 Ptp. ich möchte mit meiner Software per Ptp Verbindung einen Ascii String senden der mir dann die Ausgänge ein bzw. wieder ausschaltet..

Wie kann ich das Softwareseitig bewerkstelligen..

Danke
 
Hi,

habe hier eine S7-314C-2 Ptp. ich möchte mit meiner Software per Ptp Verbindung einen Ascii String senden der mir dann die Ausgänge ein bzw. wieder ausschaltet..

Wie kann ich das Softwareseitig bewerkstelligen..

Danke

Ja Du musst eben auf der SPS-Seite die Strings empfangen und dem entsprechend auswerten.
Alle nötigen Bausteine sind vorhanden aber es ist schon etwas arbeit.

Steht Dir SCL zur Verfügung?
 
Moin
wenn du die Kommunikation (eifachstenfalls anhand Siemens Beispielprojekt zur CPU314C-P2P) hinbekommst dann gehts ganz einfach. Die Telegramme sollten am Anfang maximal Doppelwortlänge haben, dann meinetwegen das DW von der Schnittstelle lesen in den Speicher transferieren und vergleichen. Wenn DW 5678 == 'SIMA' denn A124.0 = 1.
Kannst natürlich auch ganze ABs, AWs oder ADs setzen - DW5678 == AW124.
Problem ist die Zeichen über die Schnittstelle einzufangen, ich erinnere mich gerne daran als das bei meiner 314C-PTP entlich klappte ....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
was willst du denn wohin schicken ?
Also : Welchen String-Inhalt an welche SPS-Adresse ?
Auf welche Inhalte soll der String verglichen werden ?
 
Also : Welchen String-Inhalt an welche SPS-Adresse ?
PTP --- das ist per Kabel direkt verbunden, Adresse brauchtst da keine !

Der String (wenn ASCII) -Inhalt, oder das Byte (wenn binär) kannste dir selber ausdenken und darauf muß auch verglichen werden. Wenn Du festlegts 'EIN1' ist 124.1 == ON denn vergleicht man halt eben ob das eintreffende (und der Schnittstelle 'entlockte') 'Telegramm' 'EIN1' lautet.
Kommt 'AUS1' an denn vergleicht halt auf 124.1 == OFF.
Das ist der einfachste Weg - besser gehts immer, funktioniert aber ersteinmal. Geht übrigens als 'PtP-BUS' auch eine Adresse mit einzubauen. Stootert dann aber ziemlich und ist alles andere als sicher weil alle Meldungen in voller Länge überall ausgewertet werden
 
Moin
kurzer Suche, langer Sinn: ich fand was anno 2002.
Lies es durchlaufen und ging. Leider verschob sich dann beim kopieren des Bsp.-Codes von einem auf de anderen PC die Stellung im Quelltext etwas. Sollte aber ungefähr hinkommen. Zugehöriges Simatic Beispiel ist als zDT26_01_TF____ 31xC_PtP benannt. Ca. von 2002 - Hardwarekonfig der 314C-2PtP ist AB1023 == PtP Schnittstelle; onboard Ein/Ausgänge xB124; ASCI Konfig und Vollduplex mit 38400 (zumindest Vollduplex das höchste ....). Die vollständigen Bausteine sind im Beispiel alle angelegt - das muß natürlich vollständig sein. Die PtP ist natürlich reines RS485 nach Bauanleitung zu belegen !
/*******************Kommentar only Anfang
Begin OB1
Beispiel S7300C
ASCII Send Recv
Komponenten:
OB 1 Zyklus OB
OB 100 Anlauf OB
FC 21 FC fuer SEND
FC 22 FC fuer RECV

DB 40 Arbeits-DB fuer SEND
DB 41 Arbeits-DB fuer RECV
DB 42 Quell-DB for SEND
DB 43 Ziel -DB for RECV

DB 21 Instanz-DB fuer SEND
DB 22 Instanz-DB fuer RECV
****************** Kommentar Ende *********/
// Spielt von hier keine Rolle
// UN M 30.7
// SPB ERNA
//L DB43.DBD 0
// L DW#16#53494D41
// ==D
// = A 124.0
// Spielt bis hier keine Rolle weis jezz auch nich was das war


// UC "SEND" //Aufruf des FC zum Bearbeiten des Sende-Auftrags
U M 30.7
= A 124.7
U A 124.7
CC "RECV" //Aufruf des FC zum Bearbeiten des Empfangs-Auftrags
===========================================================
Begin FC22
// -------------------------------
// Pruefen "Empfang mit Fehler"
// -------------------------------
CHER: UN "RECV WORK DB".RCV_ERROR //pruefen RECV_ERROR
BEB //falls kein Fehler aufgetreten, Baustein beenden
// -------------------------------
// "Empfang mit Fehler"
// -------------------------------
L "RECV WORK DB".RCV_WORK_COUNTER_ERR // "Durchlauf mit Fehler"
+ 1 //inkrementieren des Zaehlers
T "RECV WORK DB".RCV_WORK_COUNTER_ERR

L 1023 //LADDR
T "RECV WORK DB".RCV_WORK_LADDR
L W#16#1002 //Typ BYTE
T LW 0
L 43 //DB_NO
T "RECV WORK DB".RCV_WORK_DB_NO
T LW 4
L 0 //DBB_NO
T "RECV WORK DB".RCV_WORK_DBB_NO
SLD 3
OD DW#16#84000000
T LD 6
// ------------------------
// Freigabe des Empfangs
// ------------------------
SET
= "RECV WORK DB".RCV_EN_R //RECV mit RECV_EN_R=TRUE
// ------------------------
// RECV mit Instanz-DB
// -------------------------
CALL "RCV_PTP" , "RECV IDB"
EN_R :="RECV WORK DB".RCV_EN_R
R :=
LADDR :="RECV WORK DB".RCV_WORK_LADDR
NDR :="RECV WORK DB".RCV_NDR
ERROR :="RECV WORK DB".RCV_ERROR
STATUS:="RECV WORK DB".RCV_WORK_STATUS
RD_1 :=#ZIEL_ZEIGER
LEN :="RECV WORK DB".RCV_WORK_LEN
// -------------------------------
// Pruefen von RECV_NDR ("Empfang ohne Fehler")
// -------------------------------------------
UN "RECV WORK DB".RCV_NDR //pruefen von RECV_NDR
SPB CHER //falls RECV_NDR gleich FALSE, springe nach CHER
//und pruefen von RECV_ERROR
// -------------------------------
// RECV_NDR = 1 ("Empfang ohne Fehler")
// ------------------------------------------
L "RECV WORK DB".RCV_WORK_COUNTER_OK //"Empfang ohne Fehler"
+ 1 //inkrementieren des Zaehlers
T "RECV WORK DB".RCV_WORK_COUNTER_OK
L "RECV WORK DB".RCV_WORK_LEN //sichern der Empfangs-Laenge
T "RECV WORK DB".RCV_WORK_SAVE_LEN
//ichb (von hier setzte ichs ins Beispiel ein
L DB43.DBD 0
L 'SIMA'
==D
= A 124.0
U A 124.0
S A 125.0
L DB43.DBD 0
L 'OTTO'
==D
R A 125.0
//iche bis hier ins Beispiel eingesetzt )
// ----------------------------
// Sichern "RECV_STATUS"
// ----------------------------
L "RECV WORK DB".RCV_WORK_STATUS
T "RECV WORK DB".RCV_WORK_STATUS_SAV //sichern des STATUS
BE
 
Hat sich soweit erledigt! Das Programm habe ich direkt von Siemens bekommen.

Jetzt zum neuen Problem. Ich möchte ja via Hyperterminal Zeichen zur SPS schicken diese intern vergleichen lassen um dann entsprechend die Ausgänge zu schalten. Das oben genannte Programm habe ich 1:1 übernommen für deinen extraeintrag zum Vergleichen. Angebunden ist die SPS an den Rechner via RS422.
Öffne ich Hyperterminal Empfange ich dauerhaft wirres Zeug von der SPS.

Was kann das sein? evtl. falsche Schnittstellenparameter?

Danke

--------------------------------------------------------------------
Quell-DBs zum Beispiel Send Recv Byte 0384 bis 0511
--- Ende Block 4!~~Fuenfter Block des Quell-DBs zum Beispiel Send Rec
v Byte 0512 bis 0639 --- Ende Block 5!~~Se
chster Block des Quell-DBs zum Beispiel Send Recv Byte 0640 bis 0767
--- Ende Block 6!~~Siebter Block des Quell-DBs zum B
eispiel Send Recv Byte 0768 bis 0895 --- E
nde Block 7!~~Achter Block des Quell-DBs zum Beispiel Send Recv Byte 0896 b
is 1021 --- Ende Block 8!?6Ù*ppErster Blo
ck des Quell-DBs zum Beispiel Send Recv Byte 0000 bis 0127 ---
Ende Block 1!~~Zweiter Block des Quell-DBs zum Beispiel Send Recv Byt
e 0128 bis 0255 --- Ende Block 2!~~Dritter B
lock des Quell-DBs zum Beispiel Send Recv Byte 0256 bis 0383
--- Ende Block 3!~~Vierter Block des Quell-DBs zum Beispiel
Send Recv Byte 0384 bis 0511 --- Ende Bloc
k 4!~~Fuenfter Block des Quell-DBs zum Beispiel Send Recv Byte 0512 bis 0639
--- Ende Block 5!~~Sechster Block des Quell-D
--------------------------------------------------------------------------
 
Zurück
Oben