From da3bf82cfed8c802fea4303200627bbfb365e384 Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Thu, 13 Dec 2018 16:15:29 +0100 Subject: [PATCH] Fix controller crashes with $exec --- config/config.properties | 4 +- config/devices.properties | 85 ++++++++++++------------------------- config/plugins.properties | 1 - plugins/MXSC-1.10.0.jar | Bin 262914 -> 262941 bytes script/data/samples.py | 2 +- script/devices/RobotSC.py | 5 +-- script/devices/RobotTCP.py | 25 ++++++++++- script/devices/Wago.py | 31 -------------- 8 files changed, 55 insertions(+), 98 deletions(-) diff --git a/config/config.properties b/config/config.properties index f6a2e08..5d22e9c 100644 --- a/config/config.properties +++ b/config/config.properties @@ -1,4 +1,4 @@ -#Mon Dec 03 12:22:43 CET 2018 +#Wed Dec 12 09:19:49 CET 2018 autoSaveScanData=true commandExecutionEvents=false createSessionFiles=true @@ -20,7 +20,7 @@ notificationLevel=null scanStreamerPort=-1 serverEnabled=true serverPort=8080 -simulation=true +simulation=false terminalEnabled=false terminalPort=3579 userAuthenticator= diff --git a/config/devices.properties b/config/devices.properties index 9c89763..7f3bcad 100644 --- a/config/devices.properties +++ b/config/devices.properties @@ -5,65 +5,42 @@ #cam=ch.psi.pshell.epics.AreaDetector|MX-SAMCAM||| microscan=ch.psi.pshell.serial.TcpDevice|MicroHAWK38C528:2001||| microscan_cmd=ch.psi.pshell.serial.TcpDevice|MicroHAWK38C528:2003||| -ue=LaserUE|COM4|||false -puck_detection=ch.psi.mxsc.PuckDetection|tell-raspberrypi:5556||| -#onewire=ch.psi.pshell.serial.TcpDevice|129.129.126.83:5000||| -#robot=RobotTcp|127.0.0.1:1000||| -#$robot_modbus=ch.psi.pshell.modbus.ModbusTCP|129.129.126.100:502||| -#jf1=ch.psi.pshell.modbus.AnalogInput|robot_modbus 0||100| -#jf2=ch.psi.pshell.modbus.AnalogInput|robot_modbus 1||100| -#jf3=ch.psi.pshell.modbus.AnalogInput|robot_modbus 2||100| -#jf4=ch.psi.pshell.modbus.AnalogInput|robot_modbus 3||100| -#jf5=ch.psi.pshell.modbus.AnalogInput|robot_modbus 4||100| -#jf6=ch.psi.pshell.modbus.AnalogInput|robot_modbus 5||100| -#robot_sts=ch.psi.pshell.modbus.AnalogInputArray|robot_modbus 6 6||100| -#robot_cmd=ch.psi.pshell.modbus.AnalogOutput|robot_modbus 12||| -#robot_args=ch.psi.pshell.modbus.AnalogOutputArray|robot_modbus 47 12||| -#robot_req=ch.psi.pshell.modbus.AnalogOutput|robot_modbus 13||| -#robot_ack=ch.psi.pshell.modbus.AnalogInput|robot_modbus 14||| -#robot_ret=ch.psi.pshell.modbus.AnalogInputArray|robot_modbus 15 12||| -wago=ch.psi.pshell.modbus.ModbusTCP|wago-mxsc-1:502||| +$ue=LaserUE|COM4|||false +puck_detection=ch.psi.mxsc.PuckDetection|tell6s-raspberrypi:5556||| +wago=ch.psi.pshell.modbus.ModbusTCP|tell6s-wago:502||| led_ok_1=ch.psi.pshell.modbus.DigitalInput|wago 0||1000| led_ok_2=ch.psi.pshell.modbus.DigitalInput|wago 1||1000| led_ok_3=ch.psi.pshell.modbus.DigitalInput|wago 2||1000| feedback_local_safety=ch.psi.pshell.modbus.DigitalInput|wago 3||1000| feedback_psys_safety=ch.psi.pshell.modbus.DigitalInput|wago 4||1000| -filling_phase_separator=ch.psi.pshell.modbus.DigitalInput|wago 5||1000| -filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 6||1000| -dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 7||1000| -guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 8||1000| -air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000|false -n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 10||1000| -#spare_di_1=ch.psi.pshell.modbus.DigitalInput|wago 11||| -#spare_di_2=ch.psi.pshell.modbus.DigitalInput|wago 12||| -#spare_di_3=ch.psi.pshell.modbus.DigitalInput|wago 13||| -#spare_di_4=ch.psi.pshell.modbus.DigitalInput|wago 14||| -he_chamber_valve_1=ch.psi.pshell.modbus.DigitalInput|wago 15||1000| -he_chamber_valve_2=ch.psi.pshell.modbus.DigitalInput|wago 16||1000| -smc_magnet_status=ch.psi.pshell.modbus.DigitalInput|wago 17||1000| -smc_mounted_1=ch.psi.pshell.modbus.DigitalInput|wago 18||1000| -smc_mounted_2=ch.psi.pshell.modbus.DigitalInput|wago 19||1000| +filling_dewar=ch.psi.pshell.modbus.DigitalInput|wago 5||1000| +dewar_level_high_alarm=ch.psi.pshell.modbus.DigitalInput|wago 6||1000| +guiding_tool_park=ch.psi.pshell.modbus.DigitalInput|wago 7||1000| +air_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 8||1000|false +n2_pressure_ok=ch.psi.pshell.modbus.DigitalInput|wago 9||1000| +smc_magnet_status=ch.psi.pshell.modbus.DigitalInput|wago 10||1000| +smc_mounted_1=ch.psi.pshell.modbus.DigitalInput|wago 11||1000| +smc_mounted_2=ch.psi.pshell.modbus.DigitalInput|wago 12||1000| +#spare_di_1=ch.psi.pshell.modbus.DigitalInput|wago 13||| +#spare_di_2=ch.psi.pshell.modbus.DigitalInput|wago 14||| +#spare_di_3=ch.psi.pshell.modbus.DigitalInput|wago 15||| +#spare_di_4=ch.psi.pshell.modbus.DigitalInput|wago 16||| relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000| release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0||| release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1||| -ln2_main_power=ch.psi.pshell.modbus.DigitalOutput|wago 2||| -rim_heater=ch.psi.pshell.modbus.DigitalOutput|wago 3||| -phase_separator_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 4||| -dewar_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 5|||false -valve_he_chamber=ch.psi.pshell.modbus.DigitalOutput|wago 6||| -gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 7||| -valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 8||| -valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 9||| -valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 10||| -valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 11||| -#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 12||| -smc_sup_det=ch.psi.pshell.modbus.DigitalOutput|wago 13||| -#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 14||| -#spare_do_4=ch.psi.pshell.modbus.DigitalOutput|wago 15||| -phase_separator_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000| -dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000| -rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 2||10000| -#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 3|||true +#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 2||| +#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 3||| +#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 4||| +gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 5||| +smc_sup_det=ch.psi.pshell.modbus.DigitalOutput|wago 6||| +valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 7||| +valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 8||| +valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 9||| +valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 10||| +dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||10000| +rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||10000| +#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 2|||false +#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 3||| smc_current_rb=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||1000| #spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 5||| #spare_ai_4=ch.psi.pshell.modbus.AnalogInput|wago 6||| @@ -72,9 +49,3 @@ led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0||| led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1||| led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2||| smc_current=ch.psi.pshell.modbus.ProcessVariable|wago 3||| -#img_back=ch.psi.pshell.imaging.CameraSource|cam||-100| -#fx=ch.psi.pshell.epics.Motor|SAR-EXPMX:MOT_FX|||true -#fy=ch.psi.pshell.epics.Motor|SAR-EXPMX:MOT_FY|||true -#ry=ch.psi.pshell.epics.Motor|SAR-EXPMX:MOT_ROT_Y|||true -#cz=ch.psi.pshell.epics.Motor|SAR-EXPMX:MOT_CZ|||true -#cx=ch.psi.pshell.epics.Motor|SAR-EXPMX:MOT_CX|||true diff --git a/config/plugins.properties b/config/plugins.properties index 1568671..a3380ea 100644 --- a/config/plugins.properties +++ b/config/plugins.properties @@ -9,7 +9,6 @@ HexiposiPanel.java=enabled MjpegSource2.java=enabled LN2.java=disabled Hexiposi.java=disabled -NewJPanel.java=disabled RobotPanel.java=enabled SmartMagnetConfig.java=disabled SmartMagnetPanel.java=enabled diff --git a/plugins/MXSC-1.10.0.jar b/plugins/MXSC-1.10.0.jar index 5e3025c8f71cc6fa79fd781f23d1a337641a49c0..dd0ba72ba31a7569ad628018c7db96517500e5e2 100644 GIT binary patch delta 16052 zcmZv@1z40p*FMhflG4)M-JOa^mvnb1At{mqi-3S2C9#NrbV+vzh;(;IgLHR;|7927 z?|Z-Bf3FMn_CDv_bLKqr%#2(!0l_#a!8n*|N+85X2=^aq`G^=ydJqNli$9ef`lSM+ zAAW(L-pcf%|{d)CmH_Q0~n&=T88w7%BCP;IRVq!x6w5kOW7mwg4^yn9`6RfE~{L^#{zs(L&%q)Eo?W48*!uXWRP1Rs}#n zKmkF9!T=OCH=%$Ic&6=PfX5)1)^r2_9f*4GohO??4%v+YNP)%8K9!l3E8yaxVIT3& zVZAjIeeG_YEfGdU_30yan>85!aPMvAaOKB_-(UF7XP>yP&0l)m-ah(?Zr_&?^iI3B zc7N%82(nZ=hSjuBN9l9~a!alja;rKiQi|SJdL2c2vAAOmJ6jW;AGRt=qEGiy4+q87 zjJ_eGH1gqoNkK~o_tPQQ;GH8$6|q%$LNMRaimW`5iD`EvcX4aO`%)5~_VwEGK&nV) zL|t43iDNS7!p1Sy*jl<%KWT+|J(X`ZS-!uwk}hs~TZwPJe)dsoe-s9vf)DOi6ERO| zv^i&(w&0jd))mdbXZauTmsC{}FRG6yn9FnN2y!*P?Vbnh7b{l znGwfZ5A5Nz*DE6t7N_2RSkJM1DPR5MR@x|CygmC2)#yB8=}8Pk%wWr8C(HBvgnY4av3$ndFDOX&+gYsFx^owCuZ^a4Y>p@O^uckS63p zyP-ZpAjx>P#dwxliz9CH66xPiMn$-Pq=9L+V#|;PZXgkaI}U(eL-84K3?Be^aexo- zf%7#15Cg=$_daBBd8W#WfPig;fItqRi35;;IW6tYU0sWO(0tryF4|@ZZ19yuecCd11>&HugVZvL#_%8uTLQz23!@GUWFlwJm@BNm?9y) zb(BfW>m*0Qej=&EDL=W7FUx*Ly9E~tSp|Ya3SJ6G5PIhsr*>79v)h}+gg8b=+z5Z{ zylry5!+?c=#m`aJBr8a z1^{xsHl#6r_HNz?2U2~%EMrviUNxW`Z>f4AyXe~MX5>y%{*~$Um~mjG(>rP>rcs;| z{4**|?yS3lm_AO$jkm7~RpM&S0=cH|ybJS9rkvyFuN5o5kH{P^Rs1dq_b+ECFDbkt z4f|HU=+v*)Il5FD`ay<$203cD9R`l0xhF}Eys?dGzt0^(e!tEB(Zb>Mw)gAo8?o5UH6L295V?7l{WrZ0buV*i z_Lp4Fy{SzbF4Q|(GlFOPr_QW;8{be#oE<;jw`BS8t&@U#r6h59T>mKTMqrY%>od4H zrg?Qb(9tWj*Y)BMM@phEkZNfn^^lbEhRV|^^Q7T5~|+H1^az9Og(w_{B9)y z?B459zS3~?B+AFs?`P)U&kWNmrk95_;L%$rj9U*spSJJwT@HVpd%^Xq&9g@fj+az5 zH;H0Tmo6pTdIx8ZnjJ6ei8%acrvezQvL@o43wW8mo4 zVd}5w=sT_+4qda7Irs37ao3RU>4;EXg=VkQ#cwBpIb!5i^L_j{xV31c2oFKNV5cE{f@3x{qe$`BqdB?- z8LGVf&MTz?EDT`i(bN?8j62@eQd88f)n+)$FE}b|CUs0rRaNXao0U7XWPCjz>*&Uh zx63L;=sCvj_DQZ^r}OB-peD&O4_p_}*YWHpQNi|MaBEX(`Wjk~-R{0#^IKP{W=bYz zi0O>)duML`=FCFA!l|BSl02PQf1r@PSSxaIPLpdmN#aI2)fvn6pbnM2>A}Sv`@Hj)I0@pYVt?pqoiayt0M7by#ju3fTci}_L!N{H?&WxzEZK9SQf?3}|ukS8Xf9pT6xxZ~C z+S&R2jY-gnh~g{UDs#<{l0n8EZtez4--;SlE-XM|T3_9rzXXtu{swg#!wskx;5M#* z;&gu6hH4VJnmsH-x3j&4L{He^qw>mzPODC7RG816t@6<&!q>9*r(in$Mo8fkyxO(W z&gePRUx;46NPWMj*5vshv^o@E+aTK(#qhB4@_H4H7s?UkY?tbdlGh})vlJ>+ex(e@ z?Y(V^ASS}#4@l;=yQ|roHyaj$4FBI@T+s~NnRnb5>8_s9*>b^}H^CIHFuZXS4g#2|r)cd(P zbU)bA&=Nkx@GL{Xt5fvlT%iq>TIEcl0(>rXKcYI`Z-3mCx)N()lEeLVI2`f*#RSnB zUSZAB?hc0Se)K3n3SW_atV{Bh(9}*v2YWfD8=GH32gZ2_$L%554U6Vi?$2qSs>jst zIVEx&`j$uq*X#*U1S90DMM@E?=U9~9r-64J+}?~ScwrRU+726%J7oTIH|xGO2S`lm&| z-Z@tY4ejrinV9b+f}QV7oFId|*WR>J{X~_u;vyY+=x1k0pi*_$yGi#65nWSN?qBXc zIK(x)F!kuO-zRP1M%gtTyUERj&|UBR?bW zRMvJ2E)c>Gi2K2vZ1$-9<|t14kP+#i!BRawop70BO@Hwe8SFi+#}u7{>MX_a_^rm} z-(1Xt0MFH3n~lTvNgl_vt2QEDx4QJSkFDv=3MK@|kOc$%5?^jmYtgx2-dA0rm7lb) zumAY3bQml@6IToo;7J@_4b)?F$hl^}j<<{o8;l)Z-~BjsHeB8v@Cy4SRcvc3o=C>A zhw%FgZtEl+n`Cer+G;*XEFfJ^tDCwoW@ir9z($e+;^#j%Sl*x0&09vdT-xo}dEjv5 zcETsGUSH%-tv~IgZ~iNkpF5X3+M2^6wixGz9+lz6u*o~>EF{uBEJyp}mRFK#=+B$n z%#=LdJ|d%rYp(Efbs47(Es$Q}N5HA(y4wuLX_{+-%P$(qzJd;S6M`|G_f?jY`6S=8Y3H&B7do+$)Tf?V@J5HGMvFgB1~Go^UI42)bTI8HijABJg>$s!nDp)wq#yGr1Z zXvbl>tCo^;#FKCOn2XFVg~bGi3+qJ$N$?hLyMjeoem##7Ia8!SJ5}2;s&BAx_Ip1p zKgD0lC)kmP%$oKum0w>RVoBVw{|FWx)!J_N%Gp{vJMo?C3lhUu7^x63UU-#pVl!p9YK0Xf3EM@Q>9fpE{gUa5ppPk&30TM%2~X=7`Fr zye`-;*e9_I&mXX4{RFT&iZLgj-%@!hp_~lf^>IPVYNML+kE_>gjlU9mt)x%LX~yC+ zhffq1o;IUE?M|y}_=xFsK~dpnBHs9B4zqT~oR_S*^yKgL`UJ*hwk)IoLSMG7w@^Oq zYiQmibNqa{b(DxSGs_TaOoDxSz;DAkwH*8NpjEl@coR4GuI?q%EB zlbu|5>VEnmfI>k2ik!qrCNRG`|GPgLxJ8qm9L?)G$v0-t%vzX9^OjxL_={!UxAh+N zoU0G@(`u86TLx|vUoj*5mv1oQAT@MMUvN_UrU+^^#eRrpBzmY=403*m-`XCCP0D$H{nzobmLiE)0VbEfVWI;j~7 z%6JLpseis-=Hep*Jt``#5alxI$|Q>f;SM$IFI(oa$EeuN1WEan1Rg($8PVJMP5phT z_?qdnbFp)fG}J^(PP#TnRZbJVXTkVP=m#fgsn#cHLk9zy8lqyi=IG(+e%1v{$#f zq9#8sbIE)2ET2W&Q?dFL7s5Ah^&gQd-x^hIRoU$a$4U@-ziEWoo>W#71pNXxTZMu1 zA-}O2f&9j{L&~cTH=SA~tfB6AKhp-ZO7bT$Ph~%IR2fYyGTstvHs;Sir~XW=NOsI2 z)wZ`7mE&!A%R*otOYkhJVgUSDp_-GpJVGDwrv0zSlJeNQbCBi@yH}^5)73p;J0Gg)g z14pbgsmQ-McUZ?|zdA*)EKhN_Filc;D-oq)98(coSR1Y}q#b9Y_m#EwDHp&8^?$Tq)lQ>8?E=e=0Oiw56m;;jSJDUV7~5sxX?3 z6IEwajA1t1G#2KgdyV_&d6)5*oL=WTOx=XdquO#6$R=qHwz@Cbtq-dpaj!Kx>umwv zJ1bYy;|!K|4Tc4qw!q1_cZiasD5{ISI~pjCFVY^RVvd+t95>Ld?1zt4ZqugE9C_WD zsr>mIG~v=sW5hhRfHIka09F&<$j9W)sq1hVcx%C%UgS%cb0!-=L!po(;x(Y+5ZHE! z^LXQ}X#Yp4dYdr{G=tm4rlxeg@)tveCF0GLD>;mrlg%HG|MrxhMcm1wT>mbQ+~dVy z`(yrcvt1^&hiO=i0qjpy(sSBi>}2{aO4Yhx^s`lTsqc%PQ%MZt`kAby*ReNz z)!W!L9w}7cRl@@$u)IN$^DMr&3yiYj>hG@Kv`bU^QrIksgel!0ZnQBICql6+! z*4ing2~zDn=|niYjh+X`l8mfNmi1dXA$&r`bP5C7riT`M1G$h7e`Y<`)aI^ zqmwdb!``6pr|(51zKym2ywH)Rs%FTtIm0EPN>2HF_XAv8^{qB*wJrUG2xp?`b5()5 z%kCbUyPGXlu!gCD$DwH9Rb|V0%B!7ZJ>Zww^_ic`alhwF$=^HdfVo*QF{ql-Xd(qL z<*zDg&C9I12~ZV}*k?dR)jDE020R0E-Q z(C-OtPxb~}ez%`7PS1h(7$^3Q$8J35p4AGb=tH8Kj!|=*9U(EQY0y zVg&rc0W!*+gA4p^RPb~Y1FNEkVK;f;6XLc!^8jUZqMuh+bS&$;ps0+I#N1ji>M6=v zh!Bb>VpW#@Zd!#6$rdW|P6?^q#aUiwuBsl<*>V32dDQD#woa*$c=V>0zO$dGY6(9?~ay(f&vo6d#J=UCbK2NoRnu71Jzgd$9?v30Uvzd9A69LfdAbzpIIXL?|L`5( z`3ufSu|*K(Ro^}P`BaKBCGk(?u`3DUqo+w96L+!gQH#$7ysEw^)knX{Sxi|8vZNGp zpX4tWpVJp)krN^k1}ooZ6>;+bxeVn#ji~)2ue) zt@uyQWXu*Yz*EI_r7}&f%iDJB{iTlGVts#6_Y+2H^6HCaoICTD4KU|LECTuntwL@6*a*<$w+VX)3@S~=hxy3S0< zn-Ve2+1QeqWUlIhY@8z}2$4Y_XDlpSV=IdEKnt<7Yx9d0CP%$QSmZ4o+!HAy-5bhp zYmkIEk1iYP=@Lv1A=J##y%C^QS~{_$i($nDlCrm8c&gU?crOJQ}%@oC7ThzQ%jXf#_5>AT7* zit>^ow(2jxH!GURgDb_RE{BHab;Ll`nLzDw{FC7qxw&SHURhFMV2PF#i6)`urH9#qZ^L#{$Nr zjeR2vvC+Z;)5f86;Tht@=}%e;*Wh0Eu5<^7k!KVFcM@&}%psIwZe~s?HMzNSgA12+ z9n@4;2G*+rLj={b;YpTzd!B{Mo9zlaKW(7Rr^H8mIc$t*?O@5pa{&`y(m%R8NrQ57MpE*6pdQcIN$ zY{OHOMJS5ol$%j4%jJhiC>(}Srt@~APDg(RCnZUdgbibfucy4cbk~h%I*euNDc3IV zkig(PFzm)yORenNqc5{E4K|2dbahYdhzK&DCT&}~tD|jM);)D3ijZr3JMNfN8XlR~ zMd2Z#GAr}a&O~9acAIC-gq7{LDxPk9EqG!lM`716Ys&8;C9Efq--}2kA3;iT{LM3p z_Y0xSDlhL0wDjb?Jlz9tA{Gw~dUE|p<^CeLJvE`${x6VbohR(3{zxH(*_e zMSfk4${`)cSkYW1U1P_MAwHC|ON8&ZoH$e6(hE092Z~k!KYUUNZ!m+8JNxlWHaD5M)DlRQwb& zagl}n%L7eG>J>e8oS(><)?FF@YUBgXr|`UZPGt2a zYzw1;8eei9L*?BJ6gw6`o!Utlf;^Zf_Ek8w9p|Sc>Z_rzEe+)#mvh{f*>TH1Y79sp zYUVI1PT}B6ooqLw4x9I}7GV{=A#0O0e7#i{avB!DW|E{%lAWoceJ*FV9Yq0nH6Fp! z-XMIu0!FF#5w>|jw*weGlTy%*-O_5v1N_8D3!;z_<6-atG|)K0ykd3 z9tEr(1?n!L9gfzmxb!QP!ydsJmy$6 zmO)K)17%2D=ol7Lyhe+{}#5SkC=FL6VAj=lHw&i@i@q?KnWbY5QIu?<- zX!`S=j6WofO#M+K0fAZ`p&idYg12=U1om=}(H)okL}RQC+W2Jhahqcg3_qD_CJ%M0 zW2FjN;??}LnM1Cr0vR?(tqtEs2ZPj>11rP)RIG;s)drbp+Epdre9KYVAgTY9s$|x) zilxa(v~Jfqmj99CuTq5O!I|;lldqMg{@Q)>0`X$`myA78nz=9A-R+)le+GZedq1gP z7GiL$8mTcOX}2Jw)O#dYl;d&o!a5+`m1dp&?IWBV z!Fl`WN#O=ly6Vv5O8G+E^-M;v07ZG108n&;&pfmZDKgHXbUZV0Zmfs7X!^w~%@5O3 zxoM6ris(f6G}R%)(+R%*)!4&VM9zC9&LZGIw#$ZAOuS`cSGIOEN9Z34h{K)#xV^T= zTxOp!ZN}b8@eX}c_p`*4D}@m)e)Nw6Ls>Q7vcsPu!QEH7hP<^(9%jV>;0vSI^bWZJ zJ|qnLlm-p4qDNwxE0+B~AQL=#arLaMM-7=PlYGgJ=4&J`YPhkJmy}b}X~DkseIye- zp7+0yBR5+TYcFcvzokD~{BWGFhCf2AF1>0&KOU+cswzv@M+}lOdQM?M?xVqy!p1m+ z-G=-2Ln7+#H|d7O7%Cj_>Pcv#B3GEAx2hJ?RM0t|{5KW-4@gL{u91CT5<$OAnK>0L zvwJiO@oC%M>TFrKe0<`W$|0f8e#xEQn2*<|I5fmACtJ~WzVu{D zP}o@R7OOTVs2v&LJlV}Uc)x9n81~uLvX}vMIEqCf-pJ-5%tns#MEW3tK+y7o619EN z!48wuV!{xxYz)me2mFlOGF`Q?;>_D6yTUz|S3FaqQ)$UM?d39MwFu)H8S$XYbCTGC z{G*@ZZnIOLxAW89?0hoN<>|Aw3jYO^koEu@@yH$!k3DK<)r*ejr~ID8{K7R)AJwOE znbo1Q_i>vKaW_}DW#~7wLo|Ox@C$3MEHb4(MV~AjB;?7?9*=+z8!HulwpT8U2l;o0 z<%N@LT9>`SBrxZrGaIt#I&|%u$wOShDSgT9^z$6ur7EJTpK#lSC&vMKlzQG;Zj)@0 z%>A~X+4r?vShPDsXuojC$)99|byAli4q6Y32zJ_v^U)ffzaB|D#NKuvRzD4}NCtWB z2@cJ8EhsI-S3VC1w;#u|*A~~Bqg2gipwt;~#nX;`jl5zHa^s0PP>ZK~T#@qANi?8k zyR=~2p}pL|&lbI#Tf>xF$q^@3PtkGAun{d~roA8QbzDDb_42|WtL|*yAwuyGvwq~# zS9E$6n_#nkjzF^~`>!o;1xx)<^ad}fO6RxCjGZhgGRsoGfy3f`_sv2FQI^sDJzoQt zF;ET@D?^>gtQv@Xc6aX(^tg~FdhbGZ_na#oiz2k;^e+ub*dE6>Bpq>89$~!xcPW|L^h(9dR03nEtVRLXU+c{|Go(0Zwi0xUYDt`JEXZn^FvkEOCYB)_)%LG zR!=|>2O&eIJ-9+`9xao4S8eWP$ky{vX5-|?1yakHE~7uyp1k7va&R+T_+*Ac4|k^b z>h>)f{?)ZT{V`ar4#KHj2^{Y&NZwi<*U@%54Y5}OYn4U$DdT6e>9prX6N1o*A zP@$VPc^1ojdqQpeTMN)y!{NBXvAmyYZXrSJY#PwdR!YS4iMQP(?c)sL_m@-##Y2eh z9~;{IJ~dMDQQ$O}51}*q5ME90rhiZRjzymPsxHjPvLrWKTc((#iX=Xn_pd$It=vknOG8U<;**^P_Dc&oDhsdu-bSoy@U(KUaQ_D-Lkr&QuUPF zV@>_gCEcM00*KH$1%mBtpYBjvwE_a+^Chy47OADHB+A^f3-z*=qB*?_(J#P=5W5%JCuY?SBbNLDTQrwG9fkC@hi-_E+n4)t7W1DyHH}5V9 zMxS7c5X*bdxOnrISHnCUN(3W84G7;cF3+T-PO zaUw7)7-tY$9$czi=qaf$I| zF;8gc*nyu%+%A8km=T`I$w8U-#a?o9VvR)8yW2rb675|FU%njF=;RIJ zjS?`UD$$)&P20V@u$rdn6^Wx+*CG7FC`Jdz&|2)?8dTQujwP z{2coChf*1j%8Gm+!%*zKtWI_D7z>{jTb$@o7SmM8_BSfPfnltH;nIQ5jtEsAoV#`r z2{CLH)V&RNl%G$EH#R{j^O8A zKT?eBbYu(n^Ys=qUzom9?+{E1+7cgIO z<^H^uI+A;bt@Go3W00i z*?VZ+FVlq;*vH>CKcUfLW*UTOW$bg^F+R;D3BI^SW0phrizM1pWhPVD%@qaSpzA8g4?e7fnM=|<2`eVy+e%6lv%q${&|-X9-g;~Afms-o5=6xBI^dWQqfCT%+G z2B((z78+8Z4p7=fNd7SMSZO8(`LZBSR0CbDbu$iEcMXmspPk0jP6`%`wOo8J6EO+L z^nDV^P-3=C>1`<%k=HLTT!l}5+?21{_D61pqw?#S$j7+$4p*C6aU%O0PJ(U@v(-y2 zh8m6VABlopNmum`bvkRt7h0FI~MQO?Hi*&!JSb zDiC*m;1caQ$nbsis|x#sVBFao!=s>TnZczU^Ftu7yum-Z`OXF`w_`O1yUhJC><>+Zk_og+!Ik z%UlI`&b=_Tt99qF=GRW{qVCKW2s0)*AAR>-%jMNIt8Uq_BL%=g;zs(^&l^lI7HiyM za^-)V-i%P`8{hMn?b)$}J$OL{96qveJ}Ng*_D7-+uW()O?Vat%e#a}K694v^H7vPcat3rXLcF5C>d^%9NOt*T$Wk)SZCno+DR$OLwOZTnszaE3lv0E{U!w3?_d zs&6?hB=*mpsxYlp?+<%47GCj4+FdI#uMWM9yO;#+R@O!KJ#n#NI3E~YI#T->Kh&rg zAUR(k?p-@YL2!8<7BH8=%^DU~F(SC#@F9;_omzIw&qY7g=wq>kWfXB$_#W3l!BnT9 z2&*hn16u*x`A42BhEzfm6-{cvnilL`|A^+mjvg`FJHhkyey@@4DE`G3M0QvB&MSx z(p|m(dk^V5#H$3a!h49{0sc? z*F5t;8k4BDQ$^eWq*Gd^OT;SWBo0TyZ()Pf7su@a%gxK8Q`Na(>Ea9WFRzeSZZQwD zg+KLip=_aZJfnUROc|%ais-IsQ}Q-Ffgxwqm{;oPH#g$KM~3-IZLbVrYQC6xMW)8_ z+AMRnBk3OK|HX4iub*D-2frob?ZpwI?q9t=%akCPUuDU^nR%o=WKG# z*Hgs)CO?n3Ata}D9vn9PDY2Tsn!2bY&*HZ)<6gpvZJy5u-qr8?vQ5Z3jW1S@FoUq2 zM9$ET#dK`z89xsR%;SHJ-5iN)JyB#`aTX>gV%Na!@@7ZvoatdW6^VGvWP_(2#B>%N zI3y^5TuqcjdeRt5e35;^Q!2~OZJdh7*oWjTnDy2CPliP@Ru)(%&4jwckSJNydxnT0 zTX*=7Ja_jyI}YAiC>>T9+QsW)Q3Sl<3~aOlEF;wqIxN4Q}#34S)^{*!zQy z7A_fo{p&nO>lKXx5xQeNFWH!WB_&95Fsgq^R@PkA3bKypSJfH*SWddv9H!GlYCsp2 zgC!Cux~e|LVNDBG{X=m*J;Nw4C*4e&jb^jtoXJN=Rpo4q}+r zkF_Z1Rkh+Uh4q?2P96br9yI+w$RZt>;zQr1R8phUwxEcEC;krd`7JJVnrdxK8|Wve zQ4!ue#TjXm>N$Q!Dl67<=XveQlKD)zK4h(8gWiv4TtP9?+~qTannuRHMsZ@_L7k&I z7Qdz{Ga&&pn<}x)e(dRjUIV!Ugl_jpx*_>Bt0$=1o%h8fef{553P=rSy;o>{^2YAAlf_N^6LK)Wa>->$(utKd%J zzYf0Eq_hIo0ciJ!T3_v!r=>ym2LKF^;&l*8OoWmZhR2#u0Z`!wbnT}Bi*QbL7LW+%w&np- z@D#MfdY+|14(0*$HT#RuTwy7sF9UwVk?#s%8jcLs05kBAicc#@Y48w>4L}*3oTIhM ze;}W2K}nd-$u_|MF${U!0UQuvXdMWA2T$T95-<=A#%*H(5s_d=&I$FO_tZd-)$^f1 zpr^jbYe?{cT_D(lX!#w9Uk_O%0n$Rg?L*6rM+|I(w=zuvJcOeGGT<>hopds4=4zOC z%?<^y^C9tPVudwuiNOP?#3~iA1#XFo1+_K6-G^y_eQ>ojI^Yr99JyQl86H^E$N=nu zlj6#|$&L4iqiJeNn1F-unD;EeQ#kTs0~#a2diR_AA2-bV4|VhZLoI^;P@OOk0)!pw zci{Gr9EBdd7leQ%fD{np6KJyU#ej2gW%DOMTzCcDB!D<@6e{_TOP2bFN@ak)a4WYw z5C}&CiogPS*lF!Q;vO0Ihx;j^)uw@%ivfviP-B6;@FphWfF>xgviE*S8>xiwqyiah zER%ula5Gyfw9c@;(WC)S;N|#z(2i6Eca+WmKHL+)%z`??hW~iNqh1JiDv+s$E9c+y z_#yJqwiX`3kO%CBD<0+p&){h5J8%^Ms|QK2U)>!v*O&L#9B6Cqih$Vg?%JaO$08qc2n6EQeA@w*z+Ke$fya2ThU7pXIry`VK?VJRTRqT0 zhH%kwY!C_j(#Iho2n`t)aZ3)mfLkwUK#Oqe3=8NJJl2jKR0l_lT%gx*zc@aS5+dvp z$+8eAodbq~UxJviVW{jaXc3O$fLGJqIGh!|G<%c2-c);pW%jF0JI{F6FI)0OvspFtHc& zApZLfU)7xN%q7~og{3Eig!v0ebl!a(T)Nafy?um~mYqZJlG$}o_) z2vUQA?M09-49F~jUcf-Y53&=Tsl#Ti z|GD`9*;oUKQ$rh7AxlH$EQAg@0_gii4XyIOPuBbIt&pX45IMwb9rXBrtuYH*AOb)< zBxW7N4P)W!3yggWS^USs*Oq%0sM!tIfvzzqkf#SAjQ?3@=C?qEK<-|+U8NUl4};oa zNtbPa$bfkLa1(UZLBUp20s!$r_xGJ(w>}a!p$_K*a0ii15NwD;RPWijAvhcQk4?R2 zTSnk4bZJ6?%x^xlvwLsK9fO+~w;p7~x1em;1e|sI$A;gtPE+?R86@H8!T0w)>pcx; zakoMEu)0Ez?LRewzK+ZH^VYwjLcg=#8_&XB&7iKZ3ff4{T&6(OccHbqn1|a+wn2C> z8+_fnw*f{WOWPnW80$c1Lz@bZC|QO_DD6C?W4;4TCwv9Ye)-3i+_N@oaCZG4dwb8y zZopZA-3JAwT_{Vx1!tkFB=o85K2+<=y$QH;Zz6>Z?SdXt-H)N?ug=Q25fKm!P!SMl z|EsSbAb>p(56r3eJWb>ov>-sJBlUkdokG<2KwL1Vsc~s<1vCT%9s&des{e9wg?!t4 z7}!I5ATq!uWCt1q8!D9h(4-LXA?C**Vu_q{2B32uTe+NcnYt%ujfN;T*Ur0fVp z2#A9496dB(egyRoVY~Myfk2Kxu)PeV@Sa`ghO>{M0}A%uB_#Ln!UTW|yl@le@q;N& zT>uBJJqa;8e$b9ShN=t-!d*L{uCUU~-m{&;585XnJlL53&wc6we&yAt1T z5#VWLFLS(vV4Xr=f2SvKQy$a=({4I}Y6nWd+2emK+9{Mxkc6`(l0X!;|1%$`bg|0K z{)WzEV*gL;1rX;`5Iao#+r3Pa3|!_vBYx|ieJT%Usm?%nu)!EX^ZM^wc?5(XX$S~p z|J5BSi250H(Yl|s{m!7F2cPdli6GFO2?nI;?BQkUzc;PK!A&=Dz()}D^9K{@Ifx7- zlMICLqyfnxTIUaMdo*sceKmyo97F&TNqsP8{WGeHzkXZ;H*%%HjC7D|s32@q!nZZB zNXCqZNa>3QS!F~_fd^T#tOsM{l+0HlM2Up{m*=@Qz_i|-FHW0%l=-PdgAo?a|^prP9&6bQ%FLx}hl z)J9nfvynmEt{w(+*gc)t0)!;B0BIoIP;Z+1nP(mQ#q1fRG8DSP1{?aVkP2uR#p3)NHSz?X*q+A;a@PQV4YKg$l{PerRlh zpmuj0I=EO-{_m9TH}w#3a1FwTCHB0q-*y)|7^9&6y#LkM=h+8ei5n0D%y$keqcaE- z0YQND|8@d;#Nj>>YFLM1o%qi#@Bf)aqai~#ATHQ@*ir0RUyp}?kjxC-H~&}Tru&fL z8|c(6a{Ex%7q`&4R2yP<3u1-k;*NO1nhq@}KeV7s{}uWT6$D8~1u;YBZXX`i4m1|@ z0UbsYLa6T^Rs)aD&1VzH2nfQ^T0;}~&nN5sABg%LbjNi+1j6s2v406c5C9Q~9@2mJ zAUO-Af#?*F#lIkY2sH%=8TR;Konl(W9>|7P{sQa&t{=#>aDOsd5Eew@Uv|!ap;DVH z_a+iZ&R-BItbVf1${lXd{asR!ZXTa#KOKktz}~N4j7R1cWqB=w;;p5wVly5Q4LHcBqc-!h{y`qyvIB+mH*nK|1Zg`_eGGOKtyq5gL&vnfbjnTzL`M* delta 16078 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 Vl0cw*G{|otA{nyuGIS0g{2yKB(QyC( diff --git a/script/data/samples.py b/script/data/samples.py index f6ba272..44064a2 100644 --- a/script/data/samples.py +++ b/script/data/samples.py @@ -48,7 +48,7 @@ def restore_samples_info(): set_samples_info(info) def get_samples_info(as_json=True): - global samples_info + global samples_info return json.dumps(to_list(samples_info)) if as_json else samples_info def has_puck_datamatrix(datamatrix): diff --git a/script/devices/RobotSC.py b/script/devices/RobotSC.py index f878be7..d0289e8 100644 --- a/script/devices/RobotSC.py +++ b/script/devices/RobotSC.py @@ -268,10 +268,7 @@ class RobotSC(RobotTCP): if simulation: add_device(RobotSC("robot","localhost:1000"),force = True) else: - #add_device(RobotSC("robot", "129.129.243.120:1000"), force = True) - #add_device(RobotSC("robot", "pcp068129.psi.ch:1000"), force = True) - #add_device(RobotSC("robot", "saresb-cons-06.psi.ch:1000"), force = True) - add_device(RobotSC("robot", "129.129.243.90:1000"), force = True) + add_device(RobotSC("robot", "TellRobot6S:1000"), force = True) robot.set_default_desc(DESC_DEFAULT) diff --git a/script/devices/RobotTCP.py b/script/devices/RobotTCP.py index e2a0454..c701a48 100644 --- a/script/devices/RobotTCP.py +++ b/script/devices/RobotTCP.py @@ -382,8 +382,13 @@ class RobotTCP(TcpDevice, Stoppable): def resume(self): self.evaluate("restartMove()") - def reset_motion(self, joint=None): - self.evaluate("resetMotion()" if (joint is None) else ("resetMotion(" + joint + ")")) + def reset_motion(self, joint=None, timeout=None): + #TODO: in new robot robot.resetMotion() is freezing controller + #self.evaluate("resetMotion()" if (joint is None) else ("resetMotion(" + joint + ")")) + if joint is None: + self.execute('reset', timeout=timeout) + else: + self.execute('reset', str(joint), timeout=timeout) def is_empty(self): self.empty = self.eval_bool("isEmpty()") @@ -652,6 +657,7 @@ class RobotTCP(TcpDevice, Stoppable): self.setState(State.Offline) #Cartesian space + """ def get_flange_pos(self): return self.eval_pnt("jointToPoint(" +FLANGE + ", " + self.frame + ", herej())") @@ -660,6 +666,21 @@ class RobotTCP(TcpDevice, Stoppable): return self.eval_pnt("jointToPoint(" + self.tool + ", " + self.frame + ", herej())") #self.set_jnt(self.herej()) #return self.joint_to_point(tool, frame) + """ + + #TODO: in new robot robot.evaluate("tcp_p=jointToPoint(tSuna, world, herej())") is freezing controller (cannot cal herej directly) + #We can consider atomic because tcp_j is only accessed in comTcp + def get_flange_pos(self): + self.evaluate("tcp_j=herej(); tcp_p=jointToPoint(" +FLANGE + ", " + self.frame + ", tcp_j)") + return self.get_pnt() + + def get_cartesian_pos(self): + self.assert_tool() + self.evaluate("tcp_j=herej(); tcp_p=jointToPoint(" + self.tool + ", " + self.frame + ", tcp_j)") + return self.get_pnt() + #self.set_jnt(self.herej()) + #return self.joint_to_point(tool, frame) + def get_cartesian_destination(self): self.assert_tool() diff --git a/script/devices/Wago.py b/script/devices/Wago.py index 1ce7931..d76a5b0 100644 --- a/script/devices/Wago.py +++ b/script/devices/Wago.py @@ -2,37 +2,6 @@ LED_LEVEL_ROOM_TEMPERATURE = 0.4 LED_LEVEL_LN2 = 1.0 -""" -wago=ch.psi.pshell.modbus.ModbusTCP|wago-mxsc-1:502||| -relays=ch.psi.pshell.modbus.DigitalOutputArray|wago 0 16||1000| -release_local_safety=ch.psi.pshell.modbus.DigitalOutput|wago 0||| -release_psys_safety=ch.psi.pshell.modbus.DigitalOutput|wago 1||| -ln2_main_power=ch.psi.pshell.modbus.DigitalOutput|wago 2||| -rim_heater=ch.psi.pshell.modbus.DigitalOutput|wago 3||| -phase_separator_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 4||| -dewar_ln2=ch.psi.pshell.modbus.DigitalOutput|wago 5|||false -valve_he_chamber=ch.psi.pshell.modbus.DigitalOutput|wago 6||| -gripper_dryer=ch.psi.pshell.modbus.DigitalOutput|wago 7||| -valve_1=ch.psi.pshell.modbus.DigitalOutput|wago 8||| -valve_2=ch.psi.pshell.modbus.DigitalOutput|wago 9||| -valve_3=ch.psi.pshell.modbus.DigitalOutput|wago 10||| -valve_4=ch.psi.pshell.modbus.DigitalOutput|wago 11||| -#spare_do_1=ch.psi.pshell.modbus.DigitalOutput|wago 12||| -#spare_do_2=ch.psi.pshell.modbus.DigitalOutput|wago 13||| -#spare_do_3=ch.psi.pshell.modbus.DigitalOutput|wago 14||| -#spare_do_4=ch.psi.pshell.modbus.DigitalOutput|wago 15||| -phase_separator_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 0||1000| -dewar_level=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 1||1000| -rim_heater_temp=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 2||1000| -air_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 3||1000| -n2_pressure=ch.psi.pshell.modbus.ReadonlyProcessVariable|wago 4||1000| -#spare_ai_1=ch.psi.pshell.modbus.AnalogInput|wago 5||| -#spare_ai_2=ch.psi.pshell.modbus.AnalogInput|wago 6||| -#spare_ai_3=ch.psi.pshell.modbus.AnalogInput|wago 7||| -led_ctrl_1=ch.psi.pshell.modbus.ProcessVariable|wago 0||| -led_ctrl_2=ch.psi.pshell.modbus.ProcessVariable|wago 1||| -led_ctrl_3=ch.psi.pshell.modbus.ProcessVariable|wago 2||| -""" ################################################################################################### # Leds ###################################################################################################