Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik für S71200

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Logik für S71200

    Hallo zusammen,
    bin noch Neuling im Smarthome/Python Gebiet!
    Ich möchte gerne mit der SmartVISU, Smarthome.py und Snap7 ein Siemens S71200 ansteuern!
    Bis auf die Logik funktioniert auch alles also der Smarthome.py Log ist sauber allerdings schaltet der ausgang der S7 nicht
    weiß nur leider nicht mehr woran dies wohl liegen könnte! Wie gesagt neuling

    Die logik sieht so aus
    Code:
    #!/usr/bin/env python3
    
    import S71200
    from time import sleep
    import snap7
    from snap7.util import *
    import struct
    
    
    
    plc = S71200.S71200("192.168.1.10")
    
    esstisch_leuchte_an = plc.writeMem('QX1.0',True)
    esstisch_leuchte_aus = plc.writeMem('QX1.0',False)
    
    if wohnzimmer.esstisch() ==1:
        esstisch_leuchte_an()
    elif wohnzimmer.esstisch() ==0:
        esstisch_leuchte_aus()
    Vielen Dank schon im vorraus für eure Hilfe!!

    #2
    Hallo,

    bist Du sicher mit dem
    esstisch_leuchte_an = plc.writeMem('QX1.0',True)?
    Dort wird doch der Ausgang erst gesetzt und anschließend gleich wieder deaktiviert.
    Wieso nicht direkt
    plc.writeMem('QX1.0',True)
    n die if Bedinung?

    Bis bald

    Marcus

    Kommentar


      #3
      Hallo Marcus,
      wie gesagt habe das Script etwas umgemodelt! Habe auch einfach mal ausschließlich plc.writeMem('QX1.0,True') verwendet klappt auch nicht! Hab auch schon direkt versucht sowie du es beschrieben hast! Wenn ich ein einfaches Python Skript schreibe und das im Terminal ausführe schaltet der Ausgang Q1.0 auch und mit Time.sleep(5) auch nach 5s wieder aus also die Schnittstelle Python -> S7 funktioniert also auch! Wie könnte die Logik denn funktionieren?
      vielen Dank schon mal

      Kommentar


        #4
        Hallo,

        wie sieht denn das DebugLog und die logic.conf dazu aus?

        Bis bald

        Marcus

        Kommentar


          #5
          Hallo,

          zuerst die logic.conf
          Code:
          [aussen]
              filename = logic1.py
              watch_item = item
          die logic.conf müsste so auch passen wenn ich etwas ändere gibts wieder einträge im LOG file

          und der Debug log

          Code:
          2015-06-28 21:47:36,049 DEBUG    Main         192.168.2.176:63014 sent '{"cmd":"item","id":"wohnzimmer.esstisch","val":"1"}' -- __init__.py:json_parse:270
          2015-06-28 21:47:36,062 DEBUG    Main         Item wohnzimmer.esstisch = True via Visu 192.168.2.176:63014 None -- item.py:__update:363
          2015-06-28 21:47:37,585 DEBUG    Main         192.168.2.176:63014 sent '{"cmd":"item","id":"wohnzimmer.esstisch","val":"0"}' -- __init__.py:json_parse:270
          2015-06-28 21:47:37,593 DEBUG    Main         Item wohnzimmer.esstisch = False via Visu 192.168.2.176:63014 None -- item.py:__update:363
          hat denn jemand soetwas schon einmal ausprobiert also eine S7 mit smartVISU und sh.py angesteuert?

          Gruss David

          Kommentar


            #6
            Hallo David,

            da muss doch
            watch_item = wohnzimmer.esstisch anstelle von
            watch_item = item stehen.

            Bis bald

            Marcus

            Kommentar


              #7
              Hallo Marcus,

              du hattest recht bei:
              watch_item muss wohnzimmer.esstisch stehen hatte das auch schonmal so aber da war die logic noch falsch

              korrekte Logic
              Code:
              #!/usr/bin/env python3
              
              import S71200
              from time import sleep
              import snap7
              from snap7.util import *
              import struct
              
              
              
              plc = S71200.S71200("192.168.1.10")
              
              ### Config ###
              wohnzimmer_esstisch = sh.wohnzimmer.esstisch
              
              ### end config ###
              
              if wohnzimmer_esstisch() ==1:
                  plc.writeMem('QX1.0',True)
              if wohnzimmer_esstisch() ==0:
                  plc.writeMem('QX1.0',False)
              Danke vielmals für deine/eure Hilfe jetzt kann es weitergehen

              MfG
              David

              Kommentar

              Lädt...
              X