Phoenix ILC 170 ETH + IL ETH BK + IB IL AI 4/U

valik.vak

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Als SPS-Neuling soll ich eine Steuerung aufbauen mit der in der im Titel benannten Konstellation und hoffe auf eure Hilfe!
Am Buskoppler sollen 2 bis 3 analoge Werte (Spannung) von einem Lichtsensor über die AI 4/U registriert und via Ethernet an den ILC gesendet werden.
Nun habe ich leider nicht viel Ahnung wie ich diese abrufe und die Modbusbausteine konfiguriere.
Als ModBus Bausteine habe ich den MODBUS_TCP_Client_V1_20_1 und MT_ReadInputReg_V1_20_1.
Stimmt die Startingadress mit WORD#8003 als Adresse für den analogen Eingang?
Kann das Empfangsregister nur Boolsche Werte empfangen? (Ich muss doch analoge Werte als WORD verarbeiten, oder?)

Bin für jeden Rat dankbar!

Gruß Valentin
 
Hallo,

hast du denn diese zwei PDF's dir schon angeschaut?
Ansonsten noch ein Beispielprojekt.
 

Anhänge

  • MODBUS_TCP_Client_V1_2x_049.pdf
    327,5 KB · Aufrufe: 34
  • Modbus_TCP_Communication_V1_00_049.pdf
    174,9 KB · Aufrufe: 25
  • Modbus_Client_v1_00.zip
    8 MB · Aufrufe: 23
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Info!
Modbus_TCP_Communication_V1_00_049 hatte ich noch nicht. Aber das Beispielprojekt kann ich mit PC Worx Express leider nicht öffnen!

Gruß Valentin
 
Leider gibts es das Projekt (noch) nicht für Express.
Aber mit Hilfe der PDF kannst du es ja nachbauen.
Wenn du noch Hilfe brauchst einfach melden.
 
Ich hab mal was zusammengestellt.
Aber ich komm da nicht weiter.
Wie kann ich die Daten als WORD empfangen?
Das MB_Empfangsregister lässt nur BOOL oder BYTE zu.
Kann ich die Werte irgendwie anders auslesen oder brauch ich da nen anderen Baustein?

Gruß Valentin
 

Anhänge

  • Code ModBus_TCP.pdf
    25,2 KB · Aufrufe: 22
Zuviel Werbung?
-> Hier kostenlos registrieren
Eigentlich mit dynamischer, allerdings hab ich hier grad die statische, weil ich mit der dynamischen nicht weitergekommen bin. Die dynamische müsste die Adresse 8003 haben oder?

Gruß Valentin
 
Ne eigentlich 8001 und 8002. Die AI sitzt direkt neben der BK, d.h. da sind nur die Eingänge von dem BK zwischen und die haben ja 8000.
 
Du bekommst ja ein Array mit Bytes. D.h. zwei Bytes sind ja ein Word, als ein Wert. Diese beiden Bytes musst du nur verbinden.
 
Ah Moment falsch. Wenn du den Baustein MT_ReadInputReg_V1_2x nimmst, hast du ein Array aus Words. Bei ByteCount, müsstest du 8 bekommen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hab ich jetzt nicht so ganz verstanden...
Muss ich jetzt ByteCount zusammenzählen oder muss da ne 8 stehen?
Oder doch das Empfangsregister die zwei Bytes zu einem WORD verbinden?

(Bei ByteCount steht im DebugMode ne 2 drin)
 

Anhänge

  • Debug.JPG
    Debug.JPG
    268,1 KB · Aufrufe: 16
Zuletzt bearbeitet:
Also.

StartingAddress: WORD#16#8001
QuantityOfRegisters: UINT#4

Bei ByteCount müsste er 8 anzeigen.

In MB_Empfangsregister[1] steht der erste Wert,
in MB_Empfangsregister[2] der zweite,
in MB_Empfangsregister[3] der dritte und
in MB_Empfangsregister[4] der vierte.


Nicht vergessen MB_Empfangsregister als COM_ARR_W_1_125 deklarieren! Kein Struct.
 
Zuletzt bearbeitet:
Danke, ich glaub das hab ich jetzt kapiert!

Aber wie verbinde ich jetzt diese zwei BYTEs zu einem Wert mit dem ich weiterarbeiten kann? (soll ja die Spannungswerte mit vorgegebenen Werten vergleichen um verschiedene Lichtstufen zu schalten - je höher die Spannung um so mehr Lampen müssen geschaltet werden)

Muss ja jetzt nicht unbedingt WORD sein, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Array basiert auf Words, d.h. du musst nur WORD_TO_REAL machen.
Also MB_Empfangsregister[1] -> WORD_TO_REAL. Mit Bytes arbeitest du bei den anderen Bausteinen. Hier liest du ja die Register aus und ein Register hat eine Größe von einem WORD. Wir wollen 4 Register auslesen. Deswegen auch 4x MB_Empfangsregister. Also ohne .X0 und so.
 
Zurück
Oben