Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Wangarad 10. 12. 2020, 11:45:42

Název: Co je co při OPC ?
Přispěvatel: Wangarad 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?
Název: Re:Co je co při OPC ?
Přispěvatel: Wangarad 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
Název: Re:Co je co při OPC ?
Přispěvatel: M_D 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"). 
Název: Re:Co je co při OPC ?
Přispěvatel: Wangarad 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
Název: Re:Co je co při OPC ?
Přispěvatel: M_D 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í).
Název: Re:Co je co při OPC ?
Přispěvatel: Wangarad 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
Název: Re:Co je co při OPC ?
Přispěvatel: Wangarad 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))