# Eine Visualisierung mehrere SPSén



## daniel1987 (26 August 2011)

Hi Leute,

Ich habe folgendes problem, und zwar habe ich 3 BC9050 Controller hier liegen und will die via Ethernet über eine einzige Visualisierung laufen lassen, will die Visualisierung mit TwinCat intern entwerfen.

Weiß einer ob das geht und wenn wie man das macht? weil ich kenne das nur das die Visu`s für das jeweilige Programm im PLC control geschrieben werden.

Wäre sehr dankbar wenn mir einer helfen könnte!!


----------



## mac203 (26 August 2011)

Hallo Daniel,

wenn man die TwinCAT PLC Visu nutzen möchte, so muss man auch ein Zielsystem haben, was diese zur Anzeige bringen kann.
Ein BC/BX kann das nicht.

Hast Du allerdings einen CX/PC, der dies übernehmen kann, könntest du z.B. per ADSREAD/ADSWRITE die Daten der BCs einsammeln und auf dem VISU-CX/PC zur Anzeige bringen.
Diese Variante erfordert natürlich eine TwinCAT Vollversion, mindestens mit Level PLC sowie eine Lizenz für das 

Supplement TwinCAT PLC Control HMI
Supplement TwinCAT PLC Control HMI CE

Gruß,
Mac203


----------



## daniel1987 (29 August 2011)

AAhh das hört sich wieder schwer umständlich an! ich meine da ich die BC´s sowieso alle ins Intranet hängen würde und wir da auch nen "Beckhoff Server" am laufen haben über den alle Steuerungen ins Intranet eingespeist sind, da haben wir auch eine Twin Cat vollversion am laufen allerdings ohne hmi!

und über ads  usw. ist erst wieder umständliche programmiererei mit C# etc. oder?


----------



## mac203 (29 August 2011)

> und über ads  usw. ist erst wieder umständliche programmiererei mit C# etc. oder?



Nein, nicht zwangsläufig.
- TcSystem.lib
- ADSREAD
- ADSWRITE
Alles komplett in der IEC ohne .NET-Programmierung o.ä.


----------



## daniel1987 (29 August 2011)

wenn ich die funktion ADSREAD bei PLC hinzufügen will kennt Twincat diese gar nicht muss ich da evtl. noch irgendetwas nachinstallieren oder zu bibliothek hinzufügen????? Weil habe jetzt den Versuch ne BC9050 zusammen mit ner CX9001 laufen zu lassen!


----------



## Chräshe (29 August 2011)

Hallo Daniel,

ein grossteil aller Bedienpanel- Hersteller vertreiben Geräte, welche mit mehreren Steuerungen reden können. Das EXTER T40 von Beijer kann bis zu 5 SPS’en direkt ansprechen. Ich denke, dass du mit so was am schnellsten zum Ziel kommst. Sieh dir mal die Links an…  

*Bedienpanels*
http://www.sps-forum.de/showthread.php?t=42095

*Display von Beijer Electronics (EXTER T40)*
http://www.sps-forum.de/showthread.php?t=26747

*Welche HMI Software hattet ihr schon im Einsatz?*
http://www.sps-forum.de/showthread.php?t=35014&highlight=HMI+Beckhoff+Beijer

  Gruß
  Chräshe


----------



## daniel1987 (29 August 2011)

Ja möchte allerdings gerne ne datei etc. ins intranet stellen die man öffnet und dann den überbliick hat adsread and write hört sich gut an aber warum klappzt das nicht???


----------



## mac203 (29 August 2011)

TcSystemBCxx50.lbx wäre vielleicht ne Hilfe 

Wenn Du keinen BC aus der xx50er-Serie hast, musst Du natürlich eine andere Lib nutzen.
Schau mal hier.


----------



## daniel1987 (30 August 2011)

Habe ja eine BC9050 will jetzt gerne austesten ob ich die Kommunikation mit einer CX9001 hinbekomme per ADSREAD aber bekomme nicht raus was ich bei IDXGRP und IDXOFFS eingeben muss weil nirgendwo die Indexgroup/Offset Adressen herauszufinden sind. und kann ich bei Destaddr einfach ADR eingeben?

Was ist der unterschied zwischen ADSREAD und ADSREADEX?


MFG
Daniel


----------



## mac203 (30 August 2011)

Folgendes Beipspiel:

```
MeineVariable1 AT%MB20 :INT;
MeineVariable2 AT%MX10.1 :BOOL;
```

IDXGRP = Startadresse für MB-oder MX- Variablen
IDXOFFS = jeweilige Variablen-Adresse
MeineVariable1 = 20
MeineVariable2 = Byte*8+Bit = 10*8+1

                 MB         MX            IB            IX           QB          QX
IDXGRP       0x4020    0x4021       0xF020    0xF021     0xF030    0xF031
IDXOFFS     20           81

Hast Du Dir mal die Beispiele angehesen für den ADSREAD/ADSWRITE?
Ex steht idR für eine Erweiterung. Im speziellen Fall für den Ausgang COUNT_R.


----------



## daniel1987 (30 August 2011)

Was mache ich denn falsch???


----------



## daniel1987 (30 August 2011)

Okay läuft ja jetzt doch aber ich bekomme auf der CX nicht angezeigt wenn ich bei der BC den eingang schalte! 

Mache ich evtll. noch etwas falsch? fehlt noch etwas???
:!:


----------



## mac203 (30 August 2011)

ADR ist ja der Adressoperator, dier die Anfangsadresse einer Variablen ermittelt.

So kanns nicht gehen.
ADR(MeineZielVariable) könntest Du machen.


----------



## daniel1987 (30 August 2011)

Okay habe jetzt langsam alles komplett rau aber läuft trotzdem nicht dabei will ich doch nur einen einzigen digitalen eingang der BC9050 abfragen.

Habe jetzt an DESTADDR ADR(Save) als variable und die soll einfach dann nur ein RS Glied setzten.

In der BC9050 ist nur die Grundkonfig also eingänge Deklariert und ein Semikolon in Main.

bei IDXGRP habe ich 16#F021 stehn und bei IDXOFFS will ich eingang1 abfragen also 1

ich weiss nicht mehr weiter!!!!


Gruss Daniel:TOOL:


----------



## mac203 (31 August 2011)

Es wäre hilfreich, wenn Du mal von beiden Seiten(BC + PC/CX) Quellcode veröffentlichst.
Weiterhin:


Gibt es einen AdsReurnCode (ErrId)?
Ist die Route zum BC eingetragen?
Wie sieht die genaue Adressierung der Variable auf dem BC aus, die Du ansprechen möchtest?


----------



## daniel1987 (31 August 2011)

Hallo!

Habe das ganze nach dem infosys in Fup gemacht, deshalt habe ich screenshots angefügt,

Als ErrId gibt er mir immer "7" zurück! Halt dieses "no Target found"
Im BC habe ich nicht wirklich viel reingeschrieben nur die verknüpfung der Ausgänge!

Mfg


----------



## daniel1987 (31 August 2011)

Falls noch die Frage aufkommt was "SAve" ist, das ist die einfach eine BOOL variable, die mir eigentlich nur das RS Glied im Netzwerk darunter schalten sollte aber bekomme ja nichtmal die Abfrage hin.


----------



## mac203 (31 August 2011)

0x7       7       target machine not found
Deshalb meine Frage: Ist die Route hinzugefügt?


----------



## Commander_Titte (31 August 2011)

Vieleicht auch mal die TimeOut Zeit am Baustein erhöhen. Zum Test einfach mal auf 5 Sekunden setzten. 

Und wenn mehrere Eingänge/Daten zum PC übertragen werden sollen, diese in ein Array packen und mit einem Merker versehen. 
Es sind glaub ich nur max 4 Verbindungen gleichzeitig erlaubt.

Könnte dann in ST so aussehen:

```
Für BC9050:
PROGRAM MAIN
VAR
Eingang1 AT %IX0.0 :BOOL;
Eingang2 AT %IX0.1 :BOOL;
Eingang3 AT %IX0.2 :BOOL;
Eingang4 AT %IX0.3 :BOOL;

ArrayEingänge AT %MB0 : ARRAY[1..4] OF BOOL;
END_VAR
---------
ArrayEingänge[1] := Eingang1;
ArrayEingänge[2] := Eingang2;
ArrayEingänge[3] := Eingang3;
ArrayEingänge[4] := Eingang4;
```


```
Für PC:
PROGRAM MAIN
ADSRead_BC9050 :ADSREAD;
ArrayEingaenge_BC9050 :ARRAY[1..4] OF BOOL;
Trigger :TON;
 ---------
ADSRead_BC9050 (NETID:='192.168.114.7.1.1',
                         Port:=800,
                         IDXGRP:=16#4020,
                         IDXOFFS:=0,
                         LEN:=SIZEOF (ArrayEingaenge_BC9050),
                         DESTADDR:=ADR (ArrayEingaenge_BC9050),
                         READ:=Trigger.Q AND NOT ADSRead_BC9050.BUSY,
                         TMOUT:=t#5s);
Trigger (IN:=NOT Trigger.Q, PT:=t#1s);
```
So würde jetzt der PC jede Sekunde, vorausgesetzt es liegt kein Fehler an, das Array vom BC9050 lesen.
Wichtig ist auch wie mac203 schon sagte, muss der BC9050 im AMS Router vom PC eingetragen ist.

MFG Christoph


----------



## daniel1987 (31 August 2011)

Jaaa... 
Ich Idiot! ich habe tatsächlich vergessen die route hinzuzufügen, darum keine Connection! 

Jetzt läufts ja endlich alles!!!!!!!

Danke an alle für eure Hilfe!!!

Noch etwas: Weiss jemand ob man einen BK9050 auch einsetzen kann ohne ihn im Realtime Ethernet zu benutzen??? 

Grüsse
Daniel


----------

