ASI-Bus Syntax (Suche dringend Hilfe)

Christoph_85

Level-1
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, an alle.
Bitte nicht sofort aufregen oder enen Schrecken bekommen.
Ich weiss ich bin noch recht am Anfang, aber es geht um folgendes.

Ich bau in meiner Ausbildung eine Anlage in der einige Sensoren über den ASI-Bus angeschlossen werden.

Meine Hardware besteht u.a. aus
CPU313 v1.2
und CP 343-2

Die Slave Module sowie das ASI Netzteil sind von ifm, das Adressiergerät auch.

Ich habe den Slaves mit dem Adressiergerät die Adressen 1 und 2 zugewiesen.

Wenn CP angeschlossen ist und im Modus "CM" ist, werden diese beiden Slaves auch laut den LEDs erkannt.

Nun habe ich im Simatic Manager die Hardware konfiguriert.
Die Adressen für ein und Ausgänge am CP Modul werden unveränderbar auf 288-304 festgelegt.

Nun stellt sich für mich die Frage wie verwende ich die Sensoren an den Slaves nun im Programm?
Logisch erschien für mich folgendes:

Slave 1 ist dann 288
Und Sensor 1 an diesem Slave somit E288.0 bis sensor 4 (E288.3)

Aaaber wenn ich mit dieser Syntax ein Netzwerk erstelle, bekomme ich eine Meldung das der Baustein nicht kopiert werden kann.

Lag ich richtig mit meiner Vermutung? oder fehlen noch EInstellungen um den BUS richtig zu nutzen?

Danke euch schonmal im Vorraus, wäre richtig wichtig das ich dort weiterkomme.

Dankesehr

Christoph
 
Ich denke, das ist alles soweit o.k. bis auf den Umstand, dass der verwendete Adressbereich nicht im Prozessabbild deiner CPU liegt, du also so nicht drauf zugreifen kannst.
Also musst du entweder die Adresse ändern (z.B. auf 64, sofern dort frei ist) oder dir die Eingänge mit z.B.
Code:
L PEB 288
T MB xy
einlesen.

Grüße von HaDi
 
Wow, danke jungs für die schnellen Antworten.
Daran lags und habs auch super hinbekommen, obwohl ich noch nie was in AWL gemacht habe.
Habe mir die Slaveadressen nun auf Merker gelegt und siehe da, ich kann den Baustein übertragen und die Signale der Slaves werden erkannt.

Nuur.. ich möcht jetzt kein neues Thema eröffnen, aber ich habe einen dritten Slave an welchem nun 2 Analoge Sensoren hängen die eine Spannung ausgeben.

Die Analogwertverarbeitung werde ich hinkriegen denke ich, mein Problem ist nur, wo liegen die Analogsignale an?

Gehn wir mal davon aus der Analogslave ist Slave 3 dann liegt er an E/A 289.0-3

Aber das würde bedeuten jeder der 4 anschliessbaren Sensoren hat nur 1Bit für den Analogwert zur verfügung.
Was ja eig. nicht geht.

Wie handhabe ich das denn nun?

Wenn ich
L PEW 289 auslese hab ich ja die Signale noch vom Slave 2 dabei.

Ich könnte den Analogslave auf E/A 290 legen, aber wieder die Frage wie und wo nun der Analogwert der beiden Sensoren zu finden ist.

Ich bedanke mich schonmal :)

Christoph
 
Hallo,
um welche(n) Analogslave geht es denn konkret?
Vielleicht kann man dir besser helfen wenn man den genauen Typ hat.

Ronnie
 
Es handelt sich den Analogslave von ifm AC2517

Datenblatt: http://www.ifm.de/ifmde/web/dsfs!AC2517.html

Hoffe das hilft euch etwas weiter.
Ich bin bei meinen Recherchen auf den Baustein ASI_3422 gestossen.
Bzw diverse möglichkeiten über SFC 59 und SFC 58 die Analogwerte in Datenbausteinen zu speichern, allderdings muss ich daszu sagen, das ich da kaum durchgeblickt habe und hoffe ja darauf das ihr einen besseren Weg findet ;)

Mein eigentliches Problem besteht ja im Prinzip nur daraus, das ich nicht weiss in welchen Byte/welcher Adresse/ect ich meine Analogen Werte (z.B. von Analogslave 3 Eingang 1) finde.

Christoph
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nur auf Binärdaten von Standard- bzw. A-Slaves kannst du direkt über die projektierte Adresse zugreifen. Sobald B-Slaves oder Analogslaves ins Spiel kommen, brauchst du Systemfunktionen. Die Behandlung von Analogmodulen beschreibt Kapitel 4.4 im Handbuch des CP343-2.

Grüße von HaDi
 
Moin,
habe nun die Adresse für die Analogeingänge gefunden.
Jez habe ich das Problem, das mir die Werte im hex Format geliefert werden. Z.B. 1d62

Gibts ne möglichkeit diese nun in der SPS in dez.Zahlen umwandeln kann?
Wäre ja lästig, jeden hex wert per Hand oder Rechner in dez umzurechnen um in meinem Fall auf die Länge des Wegmessensors zu kommen.

Vielen Dank schonmal ;)
 
Das hat m.E. nichts mit Umwandeln zu tun. Hex/Dezimal/Binär ... sind nur verschiedene Darstellungsformate für die selbe Zahl.
Trag doch deinen Wert mal in eine Variablentabelle ein und schalt mal das Anzeigeformat um ...

Grüße von HaDi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja, danke war zu voreilig ;)

Hab nachher auch entdeckt, das man per rechter Maustaste einfach die Darstellungsart ändern kann, sorry ;)


AAabber so ich glaub eine Frage habe ich noch und dann habt ihr mir echt super beim meinem Projekt geholfen, dann werde ich denke ich und hoffe ich super weiter klar kommen ;)

Also.. ich möchte eine Ventilinsel von Festo mit 4 Ventilen (davon 2 bistabil)
über den ASI Bus ansteuern.

Die Insel hat die SlaveAdresse 3.

Nun war ja am Anfang des Threads mein Problem ,das die E/A Adressen des CPs bei 288 anfangen und ich mir diese per:

L PEB 288
T MB50

usw usw in Merker transferiert habe.

Meine Frage ist nun, wie ich die Ausgänge setzte..
Wenn ich einfach den entsprechenden Merker für 289.7 zb auf 1 setze, wird das Signal nicht auf den Ausgang, bzw an die Insel weitergegeben.

Wenn mir dazu noch jemand Hilfe anbieten könnte wäre das super...

Vielen Dank
 
Jau, so hab ich das nun probiert:


U M50.1 <-- Zylinderschalter
= M20.1 <--Ventil1 Stellung 2
L MB 20
T PAB 289

Klappt bis hierher soweit ganz gut.
Nur wenn ich nun da ganze wiederhole und das Ventil wieder in Stellung 1 zurückstellen möchte fängt das Relais des Ventils total an zu "flattern"


U M50.2 <-- Zylinderschalter
= M20.0 <--Ventil1 Stellung 2
L MB 20
T PAB 289


Kommt mir so vor als ob das Signal bei jedem Zyklus des Programmes also mehrere 1000 male pro Sekunde an das Ventil geschickt wird und es deshalb nicht stabil geschaltet bleibt, sondern wie wild flackert und flattert ;)

Jemand ne Ahnung ;)
Danke
 
Sinnvoll wäre es auch, das PAB nur 1-mal und zwar möglichst am Ende des Zyklus zu beschreiben, weil damit direkt und ohne Umwege auf die Ausgänge geschrieben wird.
Ich würd das in etwa so machen:
Code:
OB1:
L PEB288
T MB10
 
CALL "Mein_Programm"
 
L MB20
T PAB289
Also am Anfang des Zyklus die Eingänge lesen, dann mit den Merkern arbeiten und am Ende die Merker zu den Ausgängen übertragen.
Zu überlegen wäre evtl. auch, den ASI-Bereich in einen DB zu legen.

Grüße von HaDi
 
Zurück
Oben