# Modbus TCP Kommunikation von SENTRON PAC3200



## Vassily (2 November 2010)

Hallo,
Da ich es immernoch nich geschafft habe eine Kommunikation zwischen SENTRON und ET200S hoffe ich dass mir jemand von euch weiterhelfen kann.
Ich habe wie schon beschrieben eine ET200S und eine SENTRON PAC3200 und möchte eine Kommunikation herstellen. Da die Kommunikation über Profinet geht brauche ich einen Modbus TCP Treiber:
http://support.automation.siemens.c...busTCP.zip?func=cslib.csFetch&nodeid=40119030
Pdf dazu: 
http://support.automation.siemens.c.../70131.pdf?func=cslib.csFetch&nodeid=40119023
Diesen Treiber habe ich bereits zu meinem Projekt hinzugefügt. Mein Problem ist dass ich nich genau weiß wie ich diesen Treiber Parametrieren muss. Ich hab mir die Pdf zum Treiber und die Hilfen zu den Bausteinen schon x male durchgelesen aber habs nich hinbekommen weil mir einige Parameter nix sagen und ich nich weiß welche ich ändern muss.
Würd mich sehr freuen wenn mir da jemand helfen kann


----------



## Lars Weiß (4 November 2010)

Probier mal bitte :


----------



## Marcus (22 Februar 2011)

Hallo Lars,

habe deine Bausteine zum PAC3200 eingebunden. Habe jedoch noch einige Fragen.

Mit dem Merker 10.0 wird eine Verbindung hergestellt? Und M10.1 ist ein Art Statusbit?

Wie können in diesem Fall die Energiezähler resetet werden? Sonst erfolgt dies über das Setzen von Bit 1 hier Auftrag_1.

Gruß Marcus


----------



## Lars Weiß (22 Februar 2011)

Mit steigender Flanke am Eingang Connect wird die Verbindung aufgebaut, mit fallender abgebaut. Der Ausgang Connected ist ein Statusbit, ja.
Energiezähler resetten ist nicht drin, dazu müsste das Kommandotelegramm angepasst werden.


----------



## vollmi (27 Juli 2011)

Hi

Hat noch jemand zu den Links von oben das PDF? Bei Siemens scheint das nicht mehr zur Verfügung zu stehen (klar die wollen open TCP verkaufen)


----------



## Lars Weiß (27 Juli 2011)

Ne, oder ? Haben die das echt wieder rausgeholt ?


----------



## vollmi (27 Juli 2011)

Lars Weiß schrieb:


> Ne, oder ? Haben die das echt wieder rausgeholt ?



Oh hab die PDF noch im Cache gefunden ^^

Scheint aber so als hätten die die PAC over TCP Treiber nicht mehr im Angebot. Heisst also man muss sich die OpenModbus Treiber dazu kaufen.


----------



## Lars Weiß (6 Juli 2012)

Lars Weiß schrieb:


> Probier mal bitte :



Hier ist ein Fehler drin: (Vorher hatte ich für die Slave-Adresse 0 drin stehen)


```
(*********************************************************)    (*  Build the ModbusTCP Request                          *)
(*********************************************************)  


  KOMTEL : STRUCT     
    HEADER_TI  : WORD := 0;
    HEADER_PI  : WORD := 0;
    HEADER_LFL : BYTE := 0;
    HEADER_HFL : BYTE := 6;  
    SLAVE : BYTE := [COLOR=#ff0000]1[/COLOR]; [COLOR=#ff0000]// Standart Slave-Adresse Sentron[/COLOR]
    FUNCTIONCODE : BYTE := 3;
    STARTREG : INT := 1;
    NOOFREGS : INT := 120;
END_STRUCT;
     
END_VAR


BEGIN
```


----------



## mordecai (14 August 2012)

Hallo,
Wo in dem Baustein trage ich die IP des PAC3200 ein ?


----------



## vollmi (14 August 2012)

Die IPs werden im Config DB eingetragen. Ist ja nicht nur für einen PAC.

mfG René


----------



## Lars Weiß (14 August 2012)

vollmi schrieb:


> Die IPs werden im Config DB eingetragen. Ist ja nicht nur für einen PAC.
> 
> mfG René



Hä ? Wie kommst du denn darauf ?


```
VAR_INPUT
  RESTART : BOOL;
  ID : WORD;  
  DEV_ID : BYTE;  
  IP_ADDR1 : INT;  
  IP_ADDR2 : INT;  
  IP_ADDR3 : INT;  
  IP_ADDR4 : INT;
  PollCyle : TIME;  
END_VAR
```


----------



## vollmi (14 August 2012)

Oh Sorry. Haben hier zwei Programme vermischt.
Dachte direkt an das PMC_ModbusTCP Multipoint von Siemens das ja nicht mehr weitergeführt wird.
Weil sie ja jetzt vermutlich die Profinetmodule für die PACs verkaufen wollen.

mfG René


----------



## handyman (13 September 2012)

Moin,

versuche auch gerade ein Pac3200 via PN zu verbinden. Benötige ich nun den Open Modbus Baustein, oder kann ich es auch nur mit dem Baustein  realisieren?

      CALL  "ModbusPAC3200" , "IDB_FB100"
       CONNECT  :="Connect"
       ID       :=W#16#2
       DEV_ID   :=B#16#2
       IP_ADDR1 :=192
       IP_ADDR2 :=168
       IP_ADDR3 :=1
       IP_ADDR4 :=2
       CONNECTED:="Connected"
       PAC_3200 :="RegsPAC3200".PAC

Gibt es eine Parameterbeschreibung des Bausteins ???? Wie werden die Inputparamter ID: und DEV_ID: belegt ???

 Testaufbau ist eine 315-2PN/DP

Gruss und Danke


----------



## Lars Weiß (13 September 2012)

handyman schrieb:


> Moin,
> 
> versuche auch gerade ein Pac3200 via PN zu verbinden. Benötige ich nun den Open Modbus Baustein, oder kann ich es auch nur mit dem Baustein  realisieren?
> 
> ...



ID und DEV_ID sind Parameter für den Baustein TCON der in dem FB aufgerufen wird. ID ist die Verbindungsnummer die fortlaufend für jede Verbindung vergeben wird; DEV_ID sagt dem Baustein in was für einem Typ CPU er werkelt: http://support.automation.siemens.com/WW/llisapi.dll?func=cslib.csinfo&objId=51339682&objAction=csOpen&lang=de&siteid=cseus&aktprim=0&extranet=standard&viewreg=WW


----------



## handyman (13 September 2012)

OK ..... also beginne ich mit der ID:1 für meinen 1. Pac3200 und führe dies dann fortlaufend weiter...
Weiterhin belege ich die DEV_ID:2 da ich eine 315-2PN/DP nutze.....
IP_ADDR1-4 ist belege ich mit der IP des Pac3200 ....

Muss ich noch weitere Parameter vergeben..... Was ist mit dem UDT 65??? Müssen dort noch Einstellungen gemacht werden ???

Muss der Pac3200 nicht noch in der HW-Konfig angelegt werden ???? ... ist im Beispiel nicht vorhanden???

Gruss Handyman


----------



## bckintme (25 März 2013)

kurze Info:

ich glaube es gibt noch einen kleinen Fehler:

(*********************************************************)
(* Send data over existing connection                    *)    
(*********************************************************) 

  TSEND.LEN := 12;

  IF TON_CON.Q THEN

    TON_SEND(IN := NOT TON_SEND.Q AND NOT TRCV2.NDR,
             PT := T#500ms);

    FG_TSND := NOT TON_SEND.Q ;

    CASE Count OF

    1:  KOMTEL.STARTREG := 1;    // Hier wurde ab Riegister 0 gestartet. Das Startregister ist aber 1
        KOMTEL.NOOFREGS := 120;

    2:  KOMTEL.STARTREG := 121;  // Somit hier nicht 120 sondern 121
        KOMTEL.NOOFREGS := 120;

    3:  KOMTEL.STARTREG := 241; // Somit hier nicht 240 sondern 241
        KOMTEL.NOOFREGS := 62;

    END_CASE;

    TSEND(REQ  := FG_TSND,
          ID   := TCON_PAR.id,
          LEN  := TSEND.LEN, 
          DATA := KOMTEL);


----------



## Lars Weiß (25 März 2013)

bckintme schrieb:


> kurze Info:
> 
> ich glaube es gibt noch einen kleinen Fehler:
> 
> ...



Richtig! Habe ich bei mir auch drin stehen...komisch das es erst jetzt jemandem auffällt. Danke!


----------



## Onkel Dagobert (5 März 2014)

Hallo Lars,

ich bin zur Zeit auch ein bisschen mit Modbusseln beschäftigt. Es handelt sich nicht um einen PAC, sondern um Kältemaschinen und Lüftungsgeräte. Ich wollte einen möglichst universellen Client kreieren, wovon ich mich zunächst erst einmal verabschiedet habe. Ich werde mich mal an deinen Code orientieren. Er ist im Gegensatz zu anderen Beispielen, die ich gefunden habe sehr übersichtlich und durchschaubar.

Besten Dank dafür :s12:


----------



## Lars Weiß (5 März 2014)

Ist eigentlich auch nicht nötig. Ich tippe mir das immer so zusammen wie ich es brauche. Ein Ansatz für einen universellen Client wäre ein DB mit einer Jobliste die abgearbeitet wird. Wenn ein Client nur ausgelesen wird ist das ganz brauchbar, wenn gelesen und geschrieben werden soll muss das ganze schon sehr durchdacht sein.


----------



## Burkhard (1 April 2014)

*SENTRON PAC3200 an ModbusTCP und S7300 SPS*

Hallo liebe SPS-Freunde,

auch auf mich kommt das Thema "Sentron PAC3200 am ModbusTCP an S7 300 SPS nun zu. Der Sentron PAC ist nicht direkt an die S7 angeschlossen, sondern ueber einen Switch, spielt das eine Rolle?

Ich werde mir die Bausteine des Beispielprojektes, die hier vorgestellt wurden, nun zu Gemuete fuehren und die Anpassungen vorhehmen, die hier einige User gefunden haben und hoffe das es dann funzt! 

Hoert sich ja recht vielversprechend an. Danke!


----------



## Burkhard (1 April 2014)

Brauche ich denn die "S7 OpenModbus/TCP" Library noch extra, oder reicht das Beispiel-Projekt von Lars Weiss?


----------



## vollmi (1 April 2014)

Lars Seins reicht. 


Sent from my iPhone using Tapatalk


----------



## uz71 (8 September 2014)

Hallo

kann man mit dem FB100 auch eine Verbindung über eine S7 400 (416 2XK02 0AB0) und einem CP443-1 auf Steckplatz 6 eine Verbindung zu einem PAC3200 herstellen?


----------



## Markus (28 Dezember 2014)

Lars Weiß schrieb:


> Probier mal bitte :



>560 Downloads und nur 5x Danke...
Von mir ein EXTRA dickes Danke, werde den Code entsprechend anpassen um eine Messumformer von Endress Hauser auszulesen.

Danke dir!


----------



## RONIN (28 Dezember 2014)

Jep, da schließe ich mich noch mal an.
Durch das Beispiel von Lars hab ich den Modbus-Header für die Janitza UMG endlich richtig hinbekommen.

Danke nochmal.

 Da ich bei den 5 Danke schon drin bin kann ich leider kein zweites geben...


----------



## Lars Weiß (5 Januar 2015)

Kein Danke zu bekommen ist normal. Das ist ok für mich, das juckt mich nicht. Nervig finde ich allerdings jene die keinerlei Eigeninitiative zeigen und fertige Lösungen für Ihre Modbus Probleme von mir haben wollen. Der dreisteste User an den ich mich erinnere hat mir Sonntags sein Programm (komplettes S7-Projekt) geschickt und wollte es bis Montag Morgen zurück weil er auf Inbetriebnahme müsse und natürlich keine Zeit habe sich noch um Modbus-Kommunikation zu kümmern. 
Ach, die wo Fehler finden und mir natürlich nicht sagen wo der Fehler ist sind natürlich auch ganz klasse.


----------



## de vliegende hollander (5 Januar 2015)

> Nervig finde ich allerdings jene die keinerlei Eigeninitiative zeigen und fertige Lösungen für Ihre Modbus Probleme von mir haben wollen. Der dreisteste User an den ich mich erinnere hat mir Sonntags sein Programm (komplettes S7-Projekt) geschickt und wollte es bis Montag Morgen zurück weil er auf Inbetriebnahme müsse und natürlich keine Zeit habe sich noch um Modbus-Kommunikation zu kümmern.



Oder : kannst du mal per Teamviewer bei mir das und das nachschauen.

Hab gerade es ZIP mir auch geholt. :s12:
Vielen Dank.

Bram


----------



## Lars Weiß (5 Januar 2015)

Ich hatte da mal noch was geändert, dann verzettelt sich die CPU auch nicht wenn man den PAC im Milisekundentakt anspricht:


```
(*********************************************************)    
(* Recieve Registers                                     *)
(*********************************************************) 


          TRCV2(EN_R := FG_TRCV,
                ID   := TCON_PAR.ID,
                LEN  := 0,
                DATA := REGS);
                             
IF TRCV2.NDR THEN
    
      CASE (BYTE_TO_INT(HEADER[1])) OF 
            1: ret :=  SFC20(SRCBLK  := REGS,DSTBLK  := PAC_3200.block1); 
            2: ret :=  SFC20(SRCBLK  := REGS,DSTBLK  := PAC_3200.block2); 
            3: ret :=  SFC20(SRCBLK  := REGS,DSTBLK  := PAC_3200.block3);                                      
      END_CASE;
                                  
      FG_TRCV := FALSE;
      
      Count := Count + 1;
      
      IF Count > 3 THEN
        Count := 1;
      END_IF; 
   END_IF;         
           
END_IF;
```


----------



## Markus (11 Januar 2015)

@Lars
wie überwachst du eigentlich die Verbindung?
Ich hätte da jetzt noch einen Watchdog reingebastelt mit dem ich Positive Flanken vom Empfangsbaustein überwache.
Oder habe ich das Prinzip nicht verstanden?


----------



## Lars Weiß (11 Januar 2015)

Theoretisch müsste da eine ordentliche Auswertung des Response vom Slave rein, sprich Transaction Identifier, Slave Adresse, Funktionscode, Anzahl der gelesenen Werte, Auswertung der Modbus-Fehlercodes. Mir reicht es eigentlich aus das ich erkenne wenn einer der T-Bausteine einen Fehler erkennt. Wenn du es die positive Flanke des TRCV2.NDR auswertest bist du auf der Sicheren Seite. Ob du zusätzlich überprüfst das die empfangenen Werte plausibel sind liegt bei dir.


----------



## Schlaumeier (3 Februar 2015)

Hat denn jemand das Ganze schon einmal mit einer 1200-er CPU und einem Janitza UMG96RM-E probiert?


----------



## Markus (3 Februar 2015)

Für die 1200 gibt es einen kostenlosen Baustein von SIEMENS inkl. Beispielproejkt für einen PAC.
Den habe ich schon problemlos mit UMGs eingesetzt.


----------



## Schlaumeier (3 Februar 2015)

Diesen habe ich mir auch heruntergeladen. Bekomme aber leider keine Werte aus dem UMG gelesen. Lt. Siemens wird ja keine zusätzliche Hardware benötigt. Ist denn trotzdem eine GSD für das UMG notwendig? Muss eine Verbindung zum UMG angelegt werden,oder genügen die Bausteine aus dem Beispielprojekt?


----------



## Markus (4 Februar 2015)

Du benötigst keine GSD - du willst doch Mobus TCP?
SPS und UMG brauchen eine IP im gleichen Netz und dann war es das.
Hast du das Beispiel gefunden, bin grad unterwegs und müsste es auch suchen.


----------



## RONIN (4 Februar 2015)

Die Modbus-Slave-Adresse wirst du wahrscheinlich auch noch irgendwo eintragen müssen (kenn das angesprochene Beispiel nicht)
Bei UMG ist die standardmäßig 101.


----------



## Schlaumeier (4 Februar 2015)

Das Beispielprojekt haben wir gefunden. Habe hier mal ein Bild des relevanten Bausteines. Habe lediglich die IP-Adressen angepasst (auch in der HW)
	

		
			
		

		
	



Ich versuche die ModBus-Adressen ab 19000 auszulesen. Da wir diese Werte für unser BHKW benötigen.


----------



## RONIN (4 Februar 2015)

Verlink das Beispiel bitte mal.


----------



## Schlaumeier (4 Februar 2015)

http://support.automation.siemens.c...7-1200.zip?func=cslib.csFetch&nodeid=85626210


----------



## Schlaumeier (4 Februar 2015)

"support.automation.siemens.com/WW/llisapi.dll/csfetch/83130159/Modbus_TCP_S7-1200.zip?func=cslib.csFetch&nodeid=85626210"


----------



## RONIN (4 Februar 2015)

Hmm... Bekommst du beim Verbindungsaufbau am Status-Ausgang was angezeigt?

Du könntest auch mal versuchen die "MB_Unit_ID" im den STAT-Daten (siehe F1-Hilfe zu MB_Client) auf 101 zu setzen, oder am UMG selbst die MB-Adresse auf 255 zu parametrieren.
Ich kann mich noch düster dran erinnern dass es bei mir (S7-300) ohne korrekte MB-Adresse nicht funktioniert hat.


----------



## Schlaumeier (4 Februar 2015)

Hallo Ronin,
danke für den Tipp. Habe die Adresse am UMG und im DB gleich eingestellt, brachte aber leider auch keine Ergebnisse. Die 255 darf laut Handbuch des UMG nicht verwendet werden.


----------



## Schlaumeier (4 Februar 2015)

Habe den Fehler gefunden. Lt. Siemens-Support kann die verwendete CPU 1212 6ES7 212-1BE31-0XB0 mit der Firmware V3.0 keine Mod-Bus-Adressen ab 19000 auslesen. Soll erst ab V4.0 möglich sein. Habe die Adresse jetzt auf 43527 eingestellt und siehe da, man bekommt endlich Messwerte angezeigt. Zu den angegebenen Werten im Handbuch des UMG muss ein Offset von 40000 addiert werden, um die entsprechende Mod-Bus-Adresse zu erhalten.


----------



## Afromann (31 März 2015)

Wie genau fügt man Bausteine im TIA Portal hinzu?


----------



## DerMatze (6 März 2016)

#2 





Lars Weiß schrieb:


> Probier mal bitte :



Hallo.

Ich bin aktuell auch gerade an dieser Thematik dran.
Allerdings ist die CPU eine 315-2DP.
Ein LEAN-CP stellt die Ethernet Schnittstelle bereit.
Kann ich dieses Beispiel auch nutzen oder funktioniert es nur mit CPUs die eine integrierte PN-Schnittstelle haben?

Gruß
DerMatze


----------



## DerMatze (9 März 2016)

Hallo Zusammen.

Ich konnte anhand des Beispiels von Lars mein Programm erweitern.
Allerdings werden SFC133 & SFC134 benötigt. Diese werden anscheinend von der CPU (6ES7 315-AG10-0AB0) nicht unterstützt = CPU Stop.
Ich schließe daraus, dass es wohl doch nur mit CPUs funktioniert, die eine PN Schnittstelle integriert haben. Und meine Variante mit dem CP nicht klappt. 

*Lässt sich das Beispielprogramm so umstricken, dass man die Funktionalität auch mit einem LEAN CP realisieren kann?
*Mir fehlen dazu leider SCL-Kenntnisse.

Gruß
Matze


----------



## RONIN (9 März 2016)

DerMatze schrieb:


> *Lässt sich das Beispielprogramm so umstricken, dass man die Funktionalität auch mit einem LEAN CP realisieren kann?
> *Mir fehlen dazu leider SCL-Kenntnisse.


Wie du bereits festgestellt hast funktionieren TCON und Konsorten nur bei CPUs mit Onboard-ETH Schnittstelle.

Machbar ist es mit dem LEAN schon. Man muss halt die FC5 und FC5 AG-SEND/RECV nehmen.
Die Verbindung muss man dann fest in Netpro projektieren und den PAC als unspezifizierten Teilnehmer einfügen
(Da das PAC eh ein Siemen-Teil ist kann man das Ding auch "original" (aus dem Katalog) in Netpro einfügen)

Danach müsstest du das Verbindungsmanagment z.B. nach dieser Vorlage umstricken.
https://support.industry.siemens.com/cs/ww/de/view/17853532

Ist halt ordentlich Arbeit.
Ob dir da eine CPU mit Onboard-Schnittstelle oder ein Profinet-Erweiterungsmodul für den PAC (geht das auf dem LEAN?) nicht billiger kommt.


----------



## DerMatze (10 März 2016)

Danke für den Tipp,
dem werde ich mal nachgehen. 
Eigentlich benötige ich doch nur den FC6, da ich zum PAC nix senden möchte sondern nur aus dem PAC lesen will.



RONIN schrieb:


> ein Profinet-Erweiterungsmodul für den PAC (geht das auf dem LEAN?) nicht billiger kommt.


Leider wird eine Übertragung via CP nicht unterstützt, so steht es im Kapitel 5.3 (Beitrag ID 86299299)

CPU gegen eine mit PN Schnittstelle austauschen fällt aus, da Bestandsanlage.

Also ist ordentlich umsticken angesagt.

Gruß
Matze


----------



## DerMatze (11 März 2016)

RONIN schrieb:


> den PAC als unspezifizierten Teilnehmer einfügen


Wie stelle ich das an?



RONIN schrieb:


> (Da das PAC eh ein Siemen-Teil ist kann man das Ding auch "original" (aus dem Katalog) in Netpro einfügen)


Habe ich, trotz aktuellem HSP Update, nicht im Katalog.


----------

