# B&R über TCP/IP programmieren



## Kobold (27 September 2005)

Im Rahmen meiner Projektarbeit als Praktikant habe ich die Aufgabe eine B&R Steuerung in Betrieb zu nehmen. Die SPS läuft soweit ohne Probleme. Bisher programmiere ich die Steuerung über die serielle Schnittstelle, die aber für große Datenübertragung irgendwann zu langsam wird. Nun möchte ich mit der Steuerung über das TCP/IP- Protokoll kommunizieren,
bekomme aber keine Verbindung zustande. Kann mir irgendjemand eine kurze Beschreibung liefern, welche Einstellungen ich in der Automation Software tätigen muss um eine Verbindung zu bekommen?

Zentraleinheit CP340
Automation Software 2.4.0.9
Automation Runtime 2.66

MfG
Kobold


----------



## harrylask (27 September 2005)

unter extras->optionen->reiter online ethernet konfiguration wählen (falls diese nicht vorhanden ist hinzufügen drücken, namen vergeben und unter schnittstellentyp tcpip wählen), im grauen textfeld gerät sollte jetzt tcpip stehen. eigenschaften drücken und unter zieladresse die gleiche nummer eingeben die du an der sps mit den beiden knotennummernschaltern vergeben hast. die quelladresse muss natürlich anders lauten. dann noch die ip adresse der sps angeben und ok drücken. wenn du mehr als 3 bis 4 spsn am ethernetstrang hast würde ich dir v2.71 empfehlen. darunter hatten wir performance probleme!


----------



## Kobold (27 September 2005)

Ich bin den Anweisungen gefolgt. Doch leider kann ich die SPS immer noch nicht über tcp/ip programmieren, die Software meldet immer noch, dass sie offline sei. Aber ich kann sie jetzt wenigstens anpingen im DOS-Modus, was vorher nicht möglich war. Ich bin für jeden kleinen Hinweis dankbar.

MfG
Kobold


----------



## harrylask (27 September 2005)

schau unter den etherneteigenschaften der cpu wo du die ip adresse festgelegt hast. dort gibts einen reiter mit dem namen ina. dort musst du die ina kommunikation aktivieren!

ps: runterspielen nicht vergessen


----------



## Kobold (18 Oktober 2005)

Ich möchte nun in mein vohandenes Projekt, indem die Zentraleinheit CP340 konfiguriert ist, ein Panel hinzufügen. Beide sind über einen HUB an das Ethernet angeschlossen. Ich kann für das Panel ein eigenständiges Projekt erstellen und programmieren, aber kann dann nicht auf die CPU zugreifen. Welche Einstellungen muss ich machen um mein Panel in das Projekt mit der Zentraleinheit zu bekommen?


----------



## harrylask (18 Oktober 2005)

wenn ich dich richtig verstanden habe hast du 2 cpus (cp340 und ein panel). zurzeit kannst du mit dem as nicht mehr als eine cpu bearbeiten. du kannst auch keine kommunikation zwischen diesen beiden cpus "konfigurieren". das soll sich nächstes jahr mit v3.0 ändern.
zur zeit musst du dich um diese kommunikation selbst kümmern. wir verwenden die inaclnt library zur komm. zwischen den cpus. falls dir diese zu umständlich ist sieh dir die asima library an, diese baut auf der inaclnt auf, ist aber leichter zu bedienen!

mfg, harry


----------



## Kobold (26 Oktober 2005)

Ich habe nun versucht mittels dem Beispiel aus der Asima library eine Verbindung mit dem Panel aufzubauen. Die SPS benutze ich als Server und das Panel als Client. Ich habe so wie es in dem Beispiel erklärt die einzelnen tasks importiert und in dem Datenobjekt  in der Sektion Interface den Routingstring geändert. Der Server hat den Gerätename IF2 und die Knotennummer 17, das Panel hat den Gerätename IF5 und die Knotennummer 1.
Nun habe ich in das Datenobjekt „station1“ unter Sektion Interface geschrieben „/CN=IF2.11“(11 weil Hexadezimal von 17)
Laut dem Beispiel muss nichts weiteres verändert werden um eine Verbindung aufzubauen. Die Verbindung funktioniert nicht, weil in der ima_Task die Variable statusInit die Zahl 1 anzeigt und somit Fehler. Weiter Frage ich mich woher die IMAinit den ident von dem Datenobjekt bekommt, muss ich den ident nochmals extra zuweisen?

Mit freundlichen Grüßen 
Kobold


----------



## harrylask (29 Oktober 2005)

tach kobold,
bitte den inhalt des datenmoduls posten!
grüsse, harry


----------



## Kobold (2 November 2005)

Guten Morgen Harry,

folgendes habe ich im Datenobjekt stehen. Es ist praktisch das gleiche wie im beschriebenen Beispiel von B&R. Nur den Knotenpfad habe ich geändert.

"[ROUTING_PATH]"              
"/SECTION=INTERFACE"          

"/CN=IF2.11"                


"[PV_LIST_1]"		          
"/SECTION=PV"                 

"/CONPV=var_task:condition_1 /CONVAL=1 /MINT=0 /MAXT=0	"

"/SV=READ_WRITE /CLNTPV=PV_BYTE /EVPV=var_task:byte_link_cnt"


"[PV_LIST_2]"
"/SECTION=PV"

"/SV=READ_WRITE /SERVPV=ima_serv:field_long    /CLNTPV=var_task:field_long_link /EVPV=var_task:field_long_link_cnt"
"/SV=WRITE      /SERVPV=ima_serv:struct_data.a /CLNTPV=var_task:struct_data_link.a"
"/SV=READ       /SERVPV=ima_serv:struct_data.b /CLNTPV=var_task:struct_data_link.b"

"[BRMODUL_1]"        
"/SECTION=BRMODUL"   

"/SV=DOWNLOAD /LD=USRROM /MO=testmod1 /CMDPV=var_task:brmod_download[0]"
"/SV=UPLOAD	  /LD=USRRAM /MO=testmod1 /CMDPV=var_task:brmod_upload[0]"

"[CPU-FUNCTIONS]"             
"/SECTION=CPU"                

"/SV=CSTART   /CMDPV=var_task:cpu_cmd[0]"

"[DATE_AND_TIME]"             
"/SECTION=DATE_TIME"         


"/SV=READ   /CLNTPV=var_taskateTime    /CMDPV=var_task:date_time_cmd[0]"
"/SV=READ   /CLNTPV=var_task:*dDateTime  /CMDPV=var_task:date_time_cmd[1]"
"/SV=WRITE  /CLNTPV=var_taskateTime    /CMDPV=var_task:date_time_cmd[2]"


MfG
Kobold


----------



## harrylask (3 November 2005)

morjen kobold,

1. ich nehme zwar an das du es schon gemacht hast, aber damits funktioniert sind die systemvoraussetzungen zwingend erforderlich, siehe [hilfe>b&r software welt>automation studio>libraries>asima>allgemeines>systemvorraussetzungen]

diese einstellungen musst du bei *beiden* kommunikationspartnern vornehmen!

2. bau das datenmodul schritt für schritt auf

"[PANEL]
"/SECTION=INTERFACE"
"/CN=IF3.4"

IF3=schnittstellenbeschreibung (diese "beschreibung" findest du bei den eigenschaften der schnittstelle unter der bezeichnung "INA Gerätename"). diese schnittstelle definiert die lokale schnittstelle über die der partner erreichbar ist.

.4=ist die knotennummer des partners in hexadezimaler schreibweise (die ina kommunikation benötigt die knotennummer und nicht die ip!)

"[PV_LIST]"
"/SECTION=PV"
"/SV=WRITE /CLNTPV=Test

wichtig: bei beiden spsn muss eine globale pv mit den namen "Test" existieren, datentyp prinzipiell egal (könnte auch eine struktur sein) aber nehmen wir mal ein UDINT. zum testen inkrementierst du die pv zyklisch in der sps mit dem datenmodul. gehst du an der anderen sps online müsste in pv der gleiche wert stehen!

sollte die kommunikation jetzt funktionieren kannst du das datenmodul nach deinen wünschen anpassen!

grüsse, harry


----------



## Kobold (29 November 2005)

Hallo Harry,

ich hoffe du bist noch aktiv. Leider konnte ich mich in der letzten Zeit nicht weiter mit der B&R Steuerung beschäftigen. Heute hab ich es nochmals versucht eine Verbindung zwischen der Steuerung CP340 und dem Panel zustande zubekommen, leider wieder ohne Erfolg. Ich hab nun das Datenobjekt so aufgebaut, wie du es oben beschrieben hast. Ebenfalls habe ich in beiden Projekten eine globale Variable „Test“ erstellt. Mir sind aber zwei Dinge nicht ganz schlüssig. Erstens beim Einstellen der Systemvoraussetzung für die Asima library. Wenn ich mich genau an die Anleitung in der Hilfe halte kann ich keine Verbindungen, Kommunikationskanäle, Semaphoren oder den Stack- Bereich einstellen. Es ist praktisch nichts vorhanden zum einstellen von Parametern, oder muss ich bei meinem System SG4 nichts eingestellt werden. Aber ich habe dann in „Software -> rechtsklick CPU -> Kommunikation -> die Verbindungen auf 16 konfiguriert. 
Zweitens in meinem zyklischen Projekt mit dem Aufruf der Asima library, zeigt der Status von IMAinit und IMAcomm die Zahl null an, also keine Fehler. Aber bei meiner globalen Variablen „Test“ geschieht gar nichts, es wird immer nur „0“ angezeigt.

Mein zyklischer Task: 

(* init program *)
pDatObjName = "verbin"
statusInit = IMAinit(pDatObjName, errorInfo, ADR(ident))

(* cyclic program *)

IF (statusInit=IMA_OK) THEN
	statusComm = IMAcomm(ident, connInfoPV, connInfoAUX)
ENDIF
Prozessvariable = Test

Ist mein zyklische Projekt falsch aufgebaut oder muss ich noch irgendwas anderes verändern?

mfg
Kobold


----------



## harrylask (29 November 2005)

hallo kobold,
ja du hast recht, sg3 und sg4 unterscheiden sich da ein bisschen. die konfiguration der steuerung stellt man, wie du es schon gemacht hast, im softwarebaum bei den eigenschaften der cpu ein. ich hab auf die schnelle eine projekt mit einem pp200 und einer cp474 gemacht und hatte mit dem datenmodul, das ich gepostet hatte, keine probleme. guck dir die variablen errorInfo, connInfoPV und connInfoAUX an, vielleicht stehen da noch irgendwelche informationen drin. du kannst mir deine projekte auch mailen, hab dir eine pn gesendet!

grüsse, harry


----------



## Oberchefe (1 Dezember 2005)

@Kobold:
Offtopic:
wo bist Du denn Praktikant? B&S? Oder direkt in "Craalse"?


----------

