Co je co při OPC ?

Co je co při OPC ?
« kdy: 10. 12. 2020, 11:45:42 »
Zdravim snazim sa rozchodit komunikaciu pomocov OPC.
Nie je mi vsak jasne co je co resp. ako to volat.
https://github.com/FreeOpcUa/python-opcua/blob/master/examples/client-minimal.py
Zoberiem si tento priklad. Na servery mam toto https://ibb.co/PQ81szv
Ako vycitam tu hodnotu? Celkovo mi unika pointa ako to namapovat. Vedel by niekto poradit?
« Poslední změna: 10. 12. 2020, 12:15:08 od Petr Krčmář »


Re:Co je co při OPC ?
« Odpověď #1 kdy: 10. 12. 2020, 12:20:16 »
Resp nastavim si cestu   
Kód: [Vybrat]
   myvar = root.get_child(["0:Objects", "4:new_Controller_0", "3:GlobalVars","4:Scan_String"])
   
        print("myvar is: ", myvar)
ale namiesto hodnoty to vracia len
Root node is:  i=84
Objects node is:  i=85       
myvar is:  ns=4;s=Scan_String

M_D

  • ****
  • 319
    • Zobrazit profil
    • E-mail
Re:Co je co při OPC ?
« Odpověď #2 kdy: 10. 12. 2020, 13:39:23 »
Asi by mělo být v nadpisu OPC-UA, protože OPC je něco jiného. :-)
V tom myvar by měl skončit objekt daného koncového uzlu na uvedené browse cestě, pokud existuje (v tom screen shootu nic se jménem "Scan_String" pod name space indexem 4 není vidět, ale když ti to hlásí to ns=4,s=Scan_String, tak ho třeba našel).
Pokud existuje někde níže, tak to chce ještě myvar.get_value() abych dostal datovou hodnotu v Python notaci, pokud chápu správně (nepoužívám OPC-UA z Pythonu, tak jen odhaduji dle toho demo kódu).
To i=84 a i=85 je jedinečný identifikátor jednotlivých uzlů (plně to je ns=0,i=84 a ns=0,i=85, což odpovídá tomu popisnému "Root" a "Object"). 

Re:Co je co při OPC ?
« Odpověď #3 kdy: 10. 12. 2020, 13:50:25 »
Dobre doriesil som ano pravda bola ze to vracalo len cestu a pridal som tam este .getValue()
Hlupa chyba ale dakujem za radu. Este doriesit ako zapisovat bool a budem happy

M_D

  • ****
  • 319
    • Zobrazit profil
    • E-mail
Re:Co je co při OPC ?
« Odpověď #4 kdy: 10. 12. 2020, 14:01:00 »
myvar.set_value(true)
Za předpokladů: a) to myvar je node typu scalar datavalue, b) je to datový typ boolean (nebo je povoleno změnit datový typ na boolean), c) máte právo zápisu do ní (třeba to vyžaduje pro zápis prvně autorizaci při připojení).


Re:Co je co při OPC ?
« Odpověď #5 kdy: 10. 12. 2020, 15:32:23 »
No teoreticky by to malo fungovat v realite nechce.
Kód: [Vybrat]

PC_Valve_1_1_Close_var = root.get_child(["0:Objects", "4:new_Controller_0", "3:GlobalVars","4:PC_Valve_1_1_Close"])
        PC_Valve_1_1_Close_var.set_value(True)


Nastavene to je na strane PLC ako boolean a vracia chybu
Kód: [Vybrat]
opcua.ua.uaerrors._auto.BadWriteNotSupported: "The server does not support writing the combination of value, status and timestamps provided."(BadWriteNotSupported) pritom mu ziaden  timestamps etc neposielam

Re:Co je co při OPC ?
« Odpověď #6 kdy: 10. 12. 2020, 15:40:56 »
Takto je riesenie
Kód: [Vybrat]
PC_Valve_1_1_Close_var.set_attribute(ua.AttributeIds.Value, ua.DataValue(True))