Technical Forum

Industrie Software allgemein

Kommunikation zwischen C7-621ASI und S7-1200

Erstellt von matthias87 am 21.06.2012 16:18 (2 Antworten)

« Vorheriges Thema Nächstes Thema »
Seite 1 von 1 (3 Objekte)
  21.06.2012, 16:18
Beigetreten am: 26.04.2012
Letzter Besuch: 27.11.2012
Beiträge: 11
Bewertung:
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hallo,

für die Kommunikation zwischen einer S7-1200 und einer C7-621 brauche ich Hilfe bei einigen Zwischenschritten meines Konzepts.
Meine erste Frage: Kann man eine Tabelle erstellen, in die man Werte als auch Sensordaten (1 oder 0) einfügen und auslesen kann?

Beispiel:
|     Zeile     |     Wert     |     Sensorzustand     |
|     1          |        1       |                0              |
|      2         |         0      |                 1             |

Die Spalte Sensordaten müsste mit den aktuellen Sensordaten gefüttert werden.
Die Spalte Wert soll durch eine Funktion gefüllt werden.
Die Spalte Zeile ist fix 1,2,3,4,.... und muss nur ausgelesen werden.

Ich kenne bis jetzt nur Datenbausteine mit den Bitadressen. Da ich die Spalten Wert und Sensorzustand zeilenweise vergleichen will wäre es sehr hilfreich das durch eine For-Schleife zu verwirklichen.

Beispiel:
For (counter=1, counter<128, counter+1)
{ If (Wert aus Zeile 1 == Sensorzustand aus Zeile 1 dann ...}

Gibt es solch eine Tabelle in STEP7 und wie kann ich die Felder ansprechen bzw. füllen?

MfG Matthias
Top
  25.06.2012, 13:18
Beigetreten am: 25.08.2005
Letzter Besuch: 08.05.2013
Beiträge: 973
Bewertung:
Bewertung: Herausragend [3,68 von 5 / 92 mal bewertet]. (92) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hallo matthias87,

mir ist noch nicht klar, wo Du im Augenblick stehst. Ich habe die Diskussion Kommunikation zwischen S7 1200 und C7 621 gelesen. Hast Du die Verbindung zwischen den Geräten in der Zwischenzeit umsetzten können? Rnf:lblSmileyTooltip_  think

Bei der aktuellen Frage hier: Du schreibst nicht, wo die die Tabelle erstellen willst. In der C7-621?

... ich habe mal ein wenig gestöbert. Diese Applikation hab ich gefunden:
 Indizierte Bearbeitung von Arrays mit zusammengesetzten Datentypen
Hilft das weiter???

Ich denke, es wäre gut, wenn Du mal genauer beschreiben könntest, was Du vorhast. Dann wird es vielleicht einfacher zu klären was geht und wie es sich dann am geschicktesten umsetzten läßt.

Viel Erfolg
Sabine
Top
  25.06.2012, 17:27
Beigetreten am: 26.04.2012
Letzter Besuch: 27.11.2012
Beiträge: 11
Bewertung:
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Bewertung: keine [0 von 5 / 0 mal bewertet]. (0) 
Hallo,

die Kommunikation zwischen der C7-621 und der S7-1200 soll über zwei ASI-Module mit jeweils 4 Ein und Ausgängen erfolgen. Die C7-621 kann über die ASI-Leitung direkt mit den ASI-Modulen kommunizieren (Es handelt sich um die C7-621ASI). Die S7 wird über ihre digitalen Ein und Ausgänge mit den ASI-Modulen verbunden. Damit könnte man schon 8 Signale pro Richtung übertragen.
Da ich aber gerne mehr Signale übertragen will, versuche ich zurzeit eine Art Codierung zu verwirklichen. Ich will einem Signal eine feste Kombination von Kanäle zuweisen.
Bsp: wenn ich den Knopf 1 drücke, nimmt die C7-621 dieses Signal auf. Zu dem Signal "Knopf gedrückt" wird nun ein binärer Code gesucht (Jedem Signal wurde vorher ein Code zugewiesen).
D.h. die Ausgänge der ASI-Module nehmen diesen Code an:
Ausgang1 = 1
Ausgang2 = 0
Ausgang3 = 0
Ausgang4 = 1 ...
Die S7-1200 ließt nun alle Kanäle ein und setzt den Code wieder zu "Knopf gedrückt" um.
So kann ich mit den 8 Kanälen 256 Signale übertragen.
(Eigentlich 128, weil jedes Signal einen Kanal für ON und einen für OFF benötigt)


Eigentlich wollte ich das Programm mit einigen IF-Bedingungen in einer FOR-Schleife realisieren.
Das hat leider nicht funktioniert. (Zu schwer zu Programmieren)(für mich ^^)

Deshalb probier ich gerade eine simplere Variante in der FUP-Sprache der C/ zu schreiben.
Im Anhang habe ich zwei Bilder hinzugefügt, die das Programm auf dem Papier zeigen.
(In dem Beispiel arbeite ich mit 6 von 8 Ausgängen)

Das Programm (C7-621 zu S7-1200 --> Senden):
Der erste Schritt (der XOR-Kasten) dient zur Kontrolle ob sich das Signal (E 0.0) geändert hat. Wenn es sich geändert hat, wird der aktuelle Zustand überprüft (0 oder 1) und danach das binäre Signal erzeugt und der Vergleichswert M 0.0 angepasst (M0.0 = E0.0).
Die Pause dient dazu, dass die S7-1200 genug Zeit bekommt das Signal zu lesen.
Leider muss ich so für jedes Signal das komplette Programm verwenden (wird ne lange Liste)

Das Programm (S7-1200 zu C7-621 --> Empfangen):
Beim empfangen würde ich gerne durch if/else Anweisungen die Binärcodes entschlüsseln.
Die Eingänge sollen der Reihe nach abgefragt werden.
Leider versteh ich nicht wie man mit FUP eine IF/Else Anweisung bauen kann. (Es soll mit den MOVE Befehl funktionieren. Leider habe ich keine Ahnung wie.

Ich hoffe ich konnte meinen Plan halbwegs verständlich erklären.

MfG Matthias

EDIT: Die Pause und das Zurücksetzen der Kanäle müsste in einen eigenen Funktionsbaum (Hinter den Zuweisungen darf man ja nichts mehr machen)

Dateianhang: C7-621 Programm Forum.jpg  (6 Downloads)



=== Bearbeitet von matthias87 @ 25.06.2012 17:32 [GMT ] ===



Top
Seite 1 von 1 (3 Objekte)
Aktionen