s>9CP9`UX}r+MupZGVsmc
z&Q*-x18|kdYZQO5Ubly!1mUj@+~-Bza%uzlI!55@r1-4m=cNqvOUR8Np-Ti>S6jm0
z&r31=c-h8W@pyOyJhoEu+EN8b&e>M_Ptl!C;#pj`cG91+F4WFZxu&-
zABmjK#QhnO6EZ_Aj{9ZZ><;b!h5-YscMH&?!~>qc`(@=%=Q&SLChipviihy0e4a&i
zzbud*QWoX(5FNt>y#ZIfAMM_|w$s9At>?G2yZm}1vmhJ5C{ET@%q<
zv_>cfm7Uc+2KAFQG{(x=I{xwxjMn9ULl1(M*xd^+MEir(@_Ck_Jt><*^nUhPS2_hr58FCPi;YI+P=Lt8)pim^Z@lB9sULzT{23$}O(uY!K+|6X2
zcR}Zn`oi`WF}^y><}{SXrZAMomMoOUhA5OqGdZ+MyCY^jaELaIh6tt6V?t?7BhdJq
z2k==3cBO<2L6Q*@7os9hnS|2V*MVkzA0`2VrZ8@v90`@cr{YmU`RGoGKQLroB(0!$ps#9XF!6UWNL)P|yBWnzvE
zRfvh{)l3|R#O=B6<|dAliP?WsnK+qvv-Qh`?c2FLT)^0j`lfie{jgbVw)*Yx@+3$e
zcGr}Xpm+{%*m0l1ifoO$xRBLyXjru@0(V2zQVnnsEt^+X%kwW5;?i9WRn4d-!g}~n
zn(3){SQQerP2GxzdxS)7q8pAz`5kWJh65-oyJE_U9D}0y9Q?6%#g4_V&$}vq5k(JC
znWHCR9Tip
za#M{^8Y?Iz{6A7bLmCM>bZCz0!=W_#EVbCZJ9Om1!DA>l$AzIZjt9LoRw{mWqu-&g
ztLEWSq5mv62zl56N*MC#|Z@x
z;sA(H?EdQHs78fi5#l&zQ{elttfCKZYjd*u;46^izS0=`g;FBFT(
zD@P}U;GB^VqKs0oFaQLOPE;rgZADjx_zScMR*IE09o5SW7_
zj$;)<#6bVeawMWcMBunYg@~X+c*qxjpCARK#h!Adw5N?PN
z#o(k8?Bc0Jxh1Y00Nw2=^45k_2z
zEi*wP^mRg1qMr_#DE%w32dm(@*WwKkqCesY!3su*ED6D?v>$UCm5$#27u;{CL(#ra
zz!!?~g-n+AAS5IN+ebp=NC+(0A+FRG+87XfMVS*~ttfXwtQBq?YlRykLIpU9z`+p_
zI!FXe=S@To27$(JA|Zx2AwmpwLWFSR2;qhZF$|o9U{g+rP7(qu(5QIBZ7GQoVT2Qk
z7Uo{uN2cHtQ51W{X-i!+v%zZthaqZU&d#i@UmXh!AcZm2g8umW;&77q7orOq~Mzn1rh=)sDQ7sIa8z-K_^5dW;r1$;l@#k*@)wmG6k*Y
zRg}&L0xR)_Qatt%06oVR!RKb}MObB$&%@e_HBud-25uaS!3|M?dElf195PdZB8h+p
zkRxusEyYZg5L)w8389UYDofgpBZM0wM2!v6(uOFO5O{zF;?A-mT1tckPKZh@)FHNi
zd$IDbbZRM!!3_~&G2*BNNAlF7mxM@@5KHWIX%b?o6C%ViCq#thPKZjlA=&<|KqMj3
z@lA-{5(4i95LaU3E@T(!VM8(JvgZa$B%^QDBfg<{3^VhcE_1jo5lVt_=zD<6Qc)t1s$BAl;v
zY6~r{Q?D@rJfF~V9hwUT*cMuNLxk9dI6}0;Hz5W}2rkYZ5Zmo^T>80I-V;lexIlZI
z*x|$x;X*p3iX_B^P9z|#8~!pSWCbQ0@tij#UllrUXs==ne4&9;yCxkX&^m_Ds6rNK
zRAG=*Axo-oF~ZDOmQ>*qCqxx?GQ@E+o?i<6+{hSTh*sJKRzhUsn-HZEf~(C3FjY|y
zTui$b6BQkbM#yqPM7Yce5kZA8Zq7!vyB?Dl1(AbqLX=5}90{?YNa@ATKq{
zkwv}N39%g95E1qvj!MwRNL4El_^J;BkyqLY+e?W3PKXeHaYEGMDknrO+z=tIMjRnn
zWXxE(RH6eAZa`C}GTH$MH^OczWOjf%-2_28GT;lvh?|iC9TzM93J?WB51<$yJqKujv|jv9mYq-O#EEyJ7W-##hHU
z++ui{Z$+g-t)sLw=f$`SA6!WJJi}cm;X=yiNp6@6DMfKEKNnImQr&pYz2-G{!(2$o
z@GPvvp}u|I%ZxOz3Lg`HWtizfdr`PHDZy*%1U0B4kgV1&tR?&1QfY6;zCg22e0#w~k)lz~Wi2Qxr3;qCTunEaoMs3YAy;irTX~
zJhF-A$EX&&!*cnHrM%ZuYI3=(rCUlY#d%pOte3;uTeEhiVEyay8~gwNRWLcGW>4~e
zWSRQ^xmB=r*l2ZE!MqjFT?Jc@JuJ^E*f|(LslN?y9@b^nyN$kjw-K9Hy23;u?tUi}
zjnEM%#Lbq!IiVPY9&kdj2t9}pTYENin{atn!AxvaDTrufpcc)D4n<>Zbd(8X!hjtA
z94}Q%{V@n_Mz$FjAP+84#(56cy|zeo0#e>1h@f&@@;X=i9U+;9vw-suPyz#J6kUNa
zWWp6M1#*>33FHb_t#}kM6c_`6Tg77tJ&bjP7|1(c{;5pG+A@-)3@&3S8C=4u6_4v#
zV5}7Kge`=*_X3gk*f
zI4GAIsA0b3;Zj3557!FFQy_V`RuIm^kp_7RB@ZY37n)%?;+&mKMKbrCv#Z>5x*nQ)
zPQJ-oECq7%O;CRka`sG~UXq8iXD<(C!K{bu9LdyMGI9P(v-$;L!XSD2$c$kIizx;D
zhLhJ?+()rl{waB!ic(&Ql*g&)#bG?0OK##UsIO$=WRgsNP|gM^sGsEFY%rXM^EvYL
zmpq)#h4Zwvc?L)xPRLY-&hqA(Qz{A?D495=QcRlX4KYNViHf`^ssjehv$1A24ix>@
z9W?#t{?@;`TlsgU{ztPamPeMIlR+{koEe3ylx_2rN*+#a{JEu^9Gj<1@^Ef)iO<8H8h-NiK)+Ud~uxh6h?b<
z&|H^3=^Ja=!|HT%DI7>06X0m{aOyHA%;DC&7H2wPIjHswvN@<032r=xUm{_e!_VWL
zdu@I_9AmD8TxC_elkoj!A=~R5B7cu`PcmrHi{A&P42(LesFLX(qN<#$k^2
z{vMWwO?PM-8j(2TWt!x7Lvh$@hNfX7$utKJhwi4b+4G(WVouq*h0@rXfyNVwA>${u
zPodmwjzVc{b||47XAS+9VLQSYo@w;QutktDVQJ_vjNzF^e;QU=8FROH)q#C2Khwo?
z`2VoqdWsHvs}F3grdR87G1>!#Bx)-=mcXB`H~Zg
zMd)QG6o=3&PADFsSDjD-LjQC^jSzax2{lIObtlvWp*NgRB0{ZMk}5Y%5quLN*6%2M
z2d%_=yO=?FB7z*OOjG3s5yxTN3=PVZQK%e2+0yecByQ_PD2QXX?q5?WGnz7Ssr^gt
zkWLlvAV}F98&=_D5+<0C&FZLRM_c#Yo7~y{?ZIIRg%hvFdq^3y{&jDcQpL*(JXP)t
zs4=6?Ye34N?{S=oC+z|!h{{ZzS^I+4!Jr&Cw(IPy05)_{x74wGH
z4ypRy-+FYF_{^5XaiQYnm~g7x%%O}pr(}5Vp)MK9@M_C(Bc8{8e{0-V_Ju8xgG42f
z14P$;eAa@dYl+Mi?}-c|tImZBh`I+F0apa;o?eVd}*pWtI2}A?6iB$}(Ft
z$CGO1T199`-U{v(K!Q&RR@k6*&XLwrs>C<8NVH&**wp$WOHa6#MP;cCgIR_w)hTV
z6^cUW7(&c-6A^79s3HRRb%qlW3HrjDgpv6@Ot>8i-lIGodw(adMFeM@9>u44j>_t%HMb9vL{Cxcyn&|2rnXz7!|-8)rEEqyXt`ebk>60|;YWTZ(M
zgF&UO(;OLTJ{f5~8602)t&vByF5G~dD$fy61~=eTKGJ%QEf*g5cV%!m6SOiO(fQyOnk%D~Bcqj1Mk}8TPJn{exsD8OlDRTkJ2G1P
zWVH6l;NU4}edWmDE|@EWyI{&5ZG1A?_+)VY6tu?wUF*Wv227QE>9lF4BO}u%Bhx2?
zL$#oF#F4>$EZ4`lkEQa_)+eK_PX?!7K`Z;wE=7tLFW~jaXy?e_dkNffX{TgZ8y}tQ
zSrg~rHyiRohtHf4h0@wbpmm5q>llI7$xAcs{jbhmqD{+o`@O
zc%-}>M_!JU$L3X~qC5^7IHJjs1ELIrqw(elB_KZ75;Z%IPfmiP~ABW;{dGfzNPeM{2G_)kB(G2Q}A`Ld|m(
zDo$^>f65Qo)~vuaq>R$KV1&6+bViA)P!vMB2r(yJL^L=RJs?(=IYU`Kc27sd;+IyH
z4{qZv*e>K++bP(X1+9+HQt`3RrrD}=^<=pb4#O(fjfZok%M-4=`IyfS;HCc59f54}
zri*UU4Rdhb^*@>Pvqf|!{U(mSdT0H47+Jfs{ygaI&ieCU@8!;$^s
zH_=piD;tZ9uWOkq^6Y}`0hQc^fgap!aaRURfZa1kg(lc&?Xc=^@_%
z$oEwYzH3HRn0${?jc`~QUS=Xn4FTD)5lEeGE|5U)AdbSIMEnS0AeuNP?Oo$2av+O*kVTGeMUD{(!e=KbD`doNpF8TGE^xJ_K>81&dx1sE6(Ay(Cai
zgeb3bDzt(4a-XT9$Oh`;0QHeTB}he0`#3;-93bNK@!^mg{;!uZ
zN+eLR4OAk5df7lF4p4~?sKfy(@d1_ifH)!x;!-OaeI?EbglWf=z7pt11ex=`1hN*t
zr2B=wz5?m%6U#AO5SKa?-A{`B31N!uC#C+35T*8Wvfs}wc}dp=-_M8BPsFiZ&@BT8
zia}iJY;=DK#K(>ksJ{g2W80~}1JvJF^8Fn<^>={iy#1v@5G}LWU)CVf2XGUbkm|7X
z015d!!h{?kA^)%w4R9a__#g*3kOO>0Gr(sI8ME1d6hON+nRV4OB`X>%CXfGJ`T3r9P>AAY2fC@mA|sv#lYoW?5sti8nciEQ54x
zK|l&V_Qa+<0<9tfZEytIkO;J)5op8k(k>q`J*5ncL0sxMcbQZ-)mFDms@u|5w~Xpa
zMa!gF^}J;2e!foTj9V~_+Tq+SmlEi
zKG?xFtUCKWSfaK8j=Vu^u!Lp#6LzozJ6OW%Nx)zScCZ7>Hh8eltSo!#r;dORkw9&2
z^@d2Cb~ers;+V4hhDadY*bi}l_@XE^k7CA#NFY|DAyT(22%<^pT7*=a;St1j?8$;BmDJBq{P&CC3cUF(cx53kC)rSL9Ze{m+Q;1K#inxtE*4=jI-eOT}cUzj<
z*tMQhg4{RrZc}q_Nr&||b-tDTPUnz)XXZV0@d}dUelT{aLw0jxB5(sIOak|;xTE~P
zxn~`M%AJhRJaVg{nWzrn3q_(9WVm%e)LHL_=9`Q8p$k!5oDZdOc^x$CP?!X|Xef8f
z2sAE8Q-bkcXdbvk94diJzM(WO;Znl*_q;pQ>^L$baJP*>YZpRe9p-1cC_#n!FLt+4
zT`@{5RX%
zEOV7@??jjWJ`2>eKp=N#y;79gK-^ic6lFFL
zch;3aY6mW)qNd!Z*K{uscgkHLwpPSZ(_5a!tQ6(M;e8=IkXb1zY#?sDD}mg2uXGks
zx$&;)ULbC~yFlD{Cs3O*777n+R*J#4LOiosDTdfM+>VD;6`R*|+>cj4e6p)+I_}52
zKnVo0_I||8@u9Xz9^nj1Z{T*jyN1l$gf(6F|LlI%b~^+~OY+%vLD~PaEtzRG{+OHN
z!))39jdyn|KhnlK9ZGGy>-iD4+i4axVdaTXcT1di3eOh9Z5(dGtDS0W!gF(6PmQ??
zuOqx$;@pLw4a2A<8t%Ol$h-G`9ATQ7_Y1pQ;@Eq)WtrVx(K)j8(QjD^JnmRz-pLc<{Kd&;t{domMWw<}D=~U}<$f1K^YeYe+
zc`XmlRth~Y=lu$m;zw{$1aB)=BDkIJLUKD_(={ahgWLJ8YDqSZn#}U>ZKc3OT@7Y=
z0=H7=nL2MSRsy-_?*ehpU(>xn-1B#V*k#a$YBtM*yOmA
z1KdLnJQ$$qULYO}aDh1XAds5P^7L<|7-Iu*JXtBm+J(jA0!ki_3%Cm5mL=1P@B;C?
zfD6O{4T02bmPd#y#W)*?w;NZA@itJ31H>~0Zp+3q1u6qPQ{cKEo_yy8YGDJZc_hyv
zR|>u0z#ES#Liqx3JXQjE@WAa9c~ey+Ay8;3~wff(l_8$<~=?nJdMgAh1I5JaeU}
zw}E*3u@cDB2`&&%Cuq7Ch^G@=AolwNQZq-MgRVsW6%LQORpL2gw(0mxLnV+$7+fG8
zVbF9h5RWjpKpZg=NX->_n7R`0xl%y96}b{`s#2Cqb8vXfq0)3(Kb~_?Ks@K*mJ!c6
zxImnG5J=4xc_6#mIfTa>lIJ;x@X`S^Us{xBA*vl5o`ukK^v?60j+=)e=A(ab4?_@0
z%@BF2yIQ=5FpDSyK-J=XgxD_dwqzxc2PRw~9+=SdSp3oh1Rj`haAM^n5ocOgf2lXL
z)QJh*`Tx%+CYXg*Xol56J`TK@ZFQG0&yH8(WnwDZyb-xl#MlMF=O`+B^Lz#Ra12zW
zK0IKdBfJH{0~T&Uw6THIy}~?zUWr$VDIngCTq)vgAl{CwnWji*M~MQ4G?a#6P`XZaj}cSBc-
zCbqe<9CPu6fom?FFi_^=2?Muj;Ryq`TxcTVlu1X+W~WjqCO|aHh4(~PiitK5pTemG
z@)&|UqvA0HO?QE=F?b9CK!*<;zud4+JJ!Smj=F0Zg5#=qoz%U>?SZvGU}aQ|I@$wlfzV5%?E$t>>dGSu
zd~KhqRXn1wz^2E7L)TIsQCNr=)m(N^K(+3D(u;*&8RdP_l|rwK@;2#_XGwt_9Ie=h
zbpVj2d-da~1!hLgc00&XsXBA9-{^4oz)x2jW=DlCD#}<^yoGwP&O#Pp&W{|-O!!((s>1TK*GB+kbk1q@ll%wDcE}F8D=q^*TvX)yZroKiLsXH=WdnWxC3I>N!GJ
z7-_0BUifK&sfbaf!FoBeu=I-
zIX!CFp310vlT+vfTx6Vz3!mB`{snN=;Nr5!T3nod@5jYC@y)n6@4p)tXG4$R;$-DZ
zT>3*dItU@82OxyKKV{CvV+hvZo8hJcZ$2#tX)#(J^%599AfIo?;OiTND8p4-{ZRTZ
zd5;?WEqY#als>`VwH0mNxb4r!4GMzi)g3L4O0DbHJE{>35p9i+>Aa^Zs?2;4vCKZ#
zy{KXdE_`as@Q+jA5xA&I4KDicGF40x$b_Bk;IzJWPT;rOHZ
z_->h%J`EH-k^-~}*X66Ar^`i0nvXj%)r)Y=mC%W~UIX%2TzpFpKQtv>a}?so$_(&T
z2I`F*75Jt#=3?%|mx=I0lhYDYqy-kjN(5Ml=gFy8n2?9X!6F<9TeIInk(j>z*mYT>dlS*(+M
z`C%`C6GnMBvc%U8>sJpmRD@F}y=3P70y&bgq@!^IC3%f?lL3=HW9m|i$~(i?x}GQnUZ>)OnW`jlPDBmWD" + mode);
}
@@ -178,10 +219,18 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + "->" + status);
}
if (move_1 != last_move_1) {
+ if(move_1 ==0){
+ this.setRequireSucess1(false);
+ logServer.deviceExecuteLog(this.device_code, "", "", "前工位有货变无货,复位前工位请求标记requireSucess1:" + requireSucess1);
+ }
logServer.deviceItemValue(this.device_code, "move_1", String.valueOf(move_1));
logServer.deviceExecuteLog(this.device_code, "", "", "信号move_1:" + last_move_1 + "->" + move_1);
}
if (move_2 != last_move_2) {
+ if(move_2 ==0){
+ this.setRequireSucess2(false);
+ logServer.deviceExecuteLog(this.device_code, "", "", "后工位有货变无货,复位后工位请求标记requireSucess2:" + requireSucess2);
+ }
logServer.deviceItemValue(this.device_code, "move_2", String.valueOf(move_2));
logServer.deviceExecuteLog(this.device_code, "", "", "信号move_2:" + last_move_2 + "->" + move_2);
}
@@ -241,96 +290,120 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
logServer.deviceItemValue(this.device_code, "specifications", specifications);
logServer.deviceExecuteLog(this.device_code, "", "", "信号specifications:" + last_specifications + "->" + specifications);
}
- if (move_1 == 0 && task1 == 0) {
- this.setRequireSucess1(false);
- logServer.deviceExecuteLog(this.device_code, "", "", "前工位无货且无任务,复位前工位请求标记requireSucess1:" + requireSucess1);
+
+ if (to_task1 != last_to_task1) {
+ logServer.deviceItemValue(this.device_code, "to_task1",String.valueOf(to_task1));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task1:" + last_to_task1 + "->" + to_task1);
}
- if (move_2 == 0 && task2 == 0) {
- this.setRequireSucess2(false);
- logServer.deviceExecuteLog(this.device_code, "", "", "后工位无货且无任务,复位后工位请求标记requireSucess2:" + requireSucess1);
+ if (to_target1 != last_to_target1) {
+ logServer.deviceItemValue(this.device_code, "to_task1",String.valueOf(to_target1));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target1:" + last_to_target1 + "->" + to_target1);
+ }
+ if (to_oneset1 != last_to_oneset1) {
+ logServer.deviceItemValue(this.device_code, "to_task1",String.valueOf(to_oneset1));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_oneset1:" + last_to_oneset1 + "->" + to_oneset1);
+ }
+ if (to_command1 != last_to_command1) {
+ logServer.deviceItemValue(this.device_code, "to_task1",String.valueOf(to_command1));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command1:" + last_to_command1 + "->" + to_command1);
+ }
+
+ if (to_task2 != last_to_task2) {
+ logServer.deviceItemValue(this.device_code, "to_task1",String.valueOf(to_task2));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_task2:" + last_to_task2 + "->" + to_task2);
+ }
+ if (to_target2 != last_to_target2) {
+ logServer.deviceItemValue(this.device_code, "to_task2",String.valueOf(to_task2));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_target2:" + last_to_target2 + "->" + to_target2);
+ }
+ if (to_oneset2 != last_to_oneset2) {
+ logServer.deviceItemValue(this.device_code, "to_task2",String.valueOf(to_oneset2));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_oneset2:" + last_to_oneset2 + "->" + to_oneset2);
+ }
+ if (to_command2 != last_to_command2) {
+ logServer.deviceItemValue(this.device_code, "to_command2",String.valueOf(to_command2));
+ logServer.deviceExecuteLog(this.device_code, "", "", "信号to_command2:" + last_to_command2 + "->" + to_command2);
+ }
+// if (move_1 == 0 && task1 == 0) {
+// this.setRequireSucess1(false);
+// logServer.deviceExecuteLog(this.device_code, "", "", "前工位无货且无任务,复位前工位请求标记requireSucess1:" + requireSucess1);
+// }
+// if (move_2 == 0 && task2 == 0) {
+// this.setRequireSucess2(false);
+// logServer.deviceExecuteLog(this.device_code, "", "", "后工位无货且无任务,复位后工位请求标记requireSucess2:" + requireSucess1);
+// }
+
+ if(task1 > 0 || task2 > 0){
+ update_instruction_status();
}
- if (task1 > 0) {
- //inst_message
- inst1 = instructionService.findByCodeFromCache(String.valueOf(task1));
- if (inst1 != null) {
- if (StrUtil.equals(inst1.getInstruction_status(), "0")) {
- inst1.setInstruction_status("1");
- instructionService.update(inst1);
- }
+
+// //执行双任务下的业务逻辑
+// //给后工位下发空盘放货信号
+// if (mode == 3 && action_1 == 2 && action_2 == 2 && move_1 != 0 && move_2 != 0 && task1 > 0 && task2 > 0) {
+// if(to_command2 !=2 ){
+// writing("to_command2", "2");
+// }
+// }
+// //给前工位下发放货信号
+// if (mode == 3 && action_2 == 4 && move_1 != 0 && move_2 == 0 && task1 > 0) {
+// if(to_command2 !=2 ) {
+// writing("to_command1", "2");
+// }
+// }
+//
+// //执行单任务下的业务逻辑
+// //给后工位下发空盘放货信号
+// //判断条件 前工位无任务、无货 后工位有任务取货完成
+// if (mode == 3 && action_2 == 2 && move_2 != 0 && move_1 == 0 && task2 > 0 && task1 == 0) {
+// if(to_command2 !=2 ) {
+// writing("to_command2", "2");
+// }
+// }
+// //给前工位取满托下发放货信号
+// if (mode == 3 && action_1 == 2 && move_1 != 0 && move_2 == 0 && task1 > 0 && task2 == 0) {
+// if(to_command2 !=2 ) {
+// writing("to_command1", "2");
+// }
+// }
+
+ //双任务下 后工位取货完成,然后给前工位下发取满盘任务取货命令
+ if (mode == 3 && action_2 == 2 && action_1 == 0 && move_2 != 0 && move_1 == 0 && task2 > 0) {
+ if(to_command1 !=1 ){
+ writing("to_command1", "1");
}
}
- if (action_1 == 4 && move_1 == 0 && task1 > 0) {
- //inst_message
- inst1 = instructionService.findByCodeFromCache(String.valueOf(task1));
- if (inst1 != null) {
- try {
- finish_instruction(inst1);
- } catch (Exception e) {
- log.error("RGV 前工位完成指令异常", e);
- logServer.deviceExecuteLog(this.device_code, "", "", "前工位指令" + task1 + "完成异常,异常原因:" + e.getMessage());
- }
- writing("to_command1", "0");
- writing("to_onset1", "0");
- writing("to_target1", "0");
- writing("to_task1", "0");
-
- }
- this.requireSucess1 = false;
- }
-
- if (task2 > 0) {
- //inst_message
- inst2 = instructionService.findByCodeFromCache(String.valueOf(task2));
- if (inst2 != null) {
- if (StrUtil.equals(inst2.getInstruction_status(), "0")) {
- inst2.setInstruction_status("1");
- instructionService.update(inst2);
- }
+ //双任务下发 前后工位取货完成 给后工位放货命令
+ if (mode == 3 && action_2 == 2 && action_1 == 2 && move_2 != 0 && move_1 != 0 && task2 > 0 && task1 > 0) {
+ if(to_command2 !=2 ) {
+ writing("to_command2", "2");
}
}
- if (action_2 == 4 && move_2 == 0 && task2 > 0) {
- //inst_message
- inst2 = instructionService.findByCodeFromCache(String.valueOf(task2));
- if (inst2 != null) {
- try {
- finish_instruction(inst2);
- } catch (Exception e) {
- log.error("RGV 前工位完成指令异常", e);
- logServer.deviceExecuteLog(this.device_code, "", "", "后工位指令" + task1 + "完成异常,异常原因:" + e.getMessage());
- }
- writing("to_command2", "0");
- writing("to_onset2", "0");
- writing("to_target2", "0");
- writing("to_task2", "0");
+ //双任务下发 后工位放货完成 给前工位下发放货
+ if (mode == 3 && action_2 == 4 && action_1 == 2 && move_2 != 0 && move_1 != 0 && task2 > 0 && task1 > 0) {
+ if(to_command1 !=2 ) {
+ writing("to_command1", "2");
}
- this.requireSucess2 = false;
}
- //执行双任务下的业务逻辑
- //给后工位下发空盘放货信号
- if (mode == 3 && action_1 == 2 && action_2 == 2 && move_1 != 0 && move_2 != 0 && task1 > 0 && task2 > 0) {
- writing("to_command2", "2");
- }
- //给前工位下发放货信号
- if (mode == 3 && action_2 == 4 && move_1 != 0 && move_2 == 0 && task1 > 0) {
- writing("to_command1", "2");
+ //后工位单任务下发 空托或者半托缓存任务
+ if (mode == 3 && action_2 == 2 && action_1 == 0 && move_2 > 0 && move_1 == 0 && task2 > 0 && task1 == 0) {
+ if(to_command2 !=2 ) {
+ writing("to_command2", "2");
+ }
}
- //执行单任务下的业务逻辑
- //给后工位下发空盘放货信号
- //判断条件 前工位无任务、无货 后工位有任务取货完成
- if (mode == 3 && action_2 == 2 && move_2 != 0 && move_1 == 0 && task2 > 0 && task1 == 0) {
- writing("to_command2", "2");
- }
- //给前工位取满托下发放货信号
- if (mode == 3 && action_1 == 2 && move_1 != 0 && move_2 == 0 && task1 > 0 && task2 == 0) {
- writing("to_command1", "2");
+ //前工位单任务下发 强制包装的任务
+ if (mode == 3 && action_1 == 2 && action_2 == 0 && move_1 > 0 && move_2 == 0 && task1 > 0 && task2 == 0) {
+ if(to_command1 !=2 ) {
+ writing("to_command1", "2");
+ }
}
+
} catch (Exception var17) {
return;
}
@@ -362,19 +435,19 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
return;
case 2:
//后工位申请任务
- if (move_2 == 0 && action_2 == 0 && !requireSucess2 && task2 == 0) {
- instruction_require2();
- }
- //前工位申请任务
- if (move_2 == 0 && action_2 == 0 && task2 == 0 && move_1 == 0 && task1 == 0 && action_1 == 0 && !requireSucess1 && !requireSucess2) {
+// if (move_2 == 0 && action_2 == 0 && !requireSucess2 && task2 == 0) {
+// instruction_require2();
+// }
+ // 申请任务
+ if (move_1 == 0 && move_2 == 0 && action_1 == 0 && action_2 == 0 && task1 == 0 && task2 == 0 && !requireSucess1) {
instruction_require();
}
break;
case 3:
- //前工位申请任务
- if (move_1 == 0 && action_1 == 0 && task1 == 0 && ( action_2 == 1 || action_2 == 2 )&& !requireSucess1) {
- instruction_require();
- }
+ //前工位申请任务 新增上后工位任务号>0的判断
+// if (move_1 == 0 && action_1 == 0 && task2> 0 && task1 == 0 && ( action_2 == 1 || action_2 == 2 )&& !requireSucess1 && requireSucess2) {
+// instruction_require();
+// }
break;
}
@@ -410,6 +483,15 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
last_specifications = specifications;
last_batch = batch;
last_qty = qty;
+ last_to_command1 = to_command1;
+ last_to_oneset1 = to_oneset1;
+ last_to_target1 = to_target1;
+ last_to_task1 = to_task1;
+ last_to_command2 = to_command2;
+ last_to_oneset2 = to_oneset2;
+ last_to_target2 = to_target2;
+ last_to_task2 = to_task2;
+
}
@@ -426,12 +508,7 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
String demoArray[] = demosub.split(",");
List device_code_list = Arrays.asList(demoArray);
TaskDto task = null;
- if (mode == 3) {
- Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2));
- device_code_list = new ArrayList<>();
- device_code_list.add(inst2.getNext_device_code());
- logServer.deviceExecuteLog(device_code, "", "", "前工位申请起点为" + inst2.getNext_device_code() + "的任务");
- }
+
for (int i = 0; i < device_code_list.size(); i++) {
if (ObjectUtil.isNotEmpty(taskserver.queryTaskByDeviceCode(device_code_list.get(i).replace("\"", "")))) {
task = taskserver.queryTaskByDeviceCode(device_code_list.get(i).replace("\"", "")).get(0);
@@ -445,11 +522,21 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
String priority = task.getPriority();
String start_point_code = task.getStart_point_code();
String start_device_code = task.getStart_device_code();
+ String start_device_code2 = task.getStart_device_code2();
String route_plan_code = task.getRoute_plan_code();
String next_point_code = task.getNext_point_code();
String next_device_code = task.getNext_device_code();
+ String next_device_code2 = task.getNext_device_code2();
Device startdevice = deviceAppservice.findDeviceByCode(start_device_code);
Device nextdevice = deviceAppservice.findDeviceByCode(next_device_code);
+ Device startdevice2 = null;
+ Device nextdevice2 = null;
+ if(ObjectUtil.isNotEmpty(start_device_code2)){
+ startdevice2 = deviceAppservice.findDeviceByCode(start_device_code2);
+ }
+ if(ObjectUtil.isNotEmpty(next_device_code2)){
+ nextdevice2 = deviceAppservice.findDeviceByCode(next_device_code2);
+ }
Instruction instdto = new Instruction();
instdto.setInstruction_id(IdUtil.simpleUUID());
@@ -467,6 +554,10 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
instdto.setNext_device_code(next_device_code);
instdto.setStart_point_code(start_point_code);
instdto.setNext_point_code(next_point_code);
+ instdto.setStart_device_code2(start_device_code2);
+ instdto.setNext_device_code2(next_device_code2);
+ instdto.setStart_point_code2(start_device_code2);
+ instdto.setNext_point_code2(next_device_code2);
instdto.setPriority(priority);
instdto.setInstruction_status("0");
instdto.setExecute_device_code(start_point_code);
@@ -483,17 +574,266 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
//创建指令后修改任务状态
task.setTask_status("1");
taskserver.update(task);
- requireSucess1 = true;
- String start_addr = startdevice.getExtraValue().get("OPCServer").toString();
- String next_addr = nextdevice.getExtraValue().get("OPCServer").toString();
+ //下发4个点任务
+ if(ObjectUtil.isNotEmpty(start_device_code2) && ObjectUtil.isNotEmpty(next_device_code2) ){
+ //前工位送满托任务
+ String start_addr = startdevice.getExtraValue().get("OPCServer").toString();
+ String next_addr = nextdevice.getExtraValue().get("OPCServer").toString();
+ //后工位送空托盘任务
+ String start_addr2 = startdevice2.getExtraValue().get("OPCServer").toString();
+ String next_addr2 = nextdevice2.getExtraValue().get("OPCServer").toString();
- writing("to_command1", "1");
- writing("to_onset1", start_addr);
- writing("to_target1", next_addr);
- writing("to_task1", instdto.getInstruction_code());
- logServer.deviceExecuteLog(this.device_code, "", "", "申请前工位满料任务成功,requireSucess1" + requireSucess1 + ",指令号:" + instdto.getInstruction_code());
+// writing("to_command1", "1");
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr2);
+ writing("to_target1", next_addr2);
+ writing("to_task2", instdto.getInstruction_code());
+ while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task2").toString()
+ , instdto.getInstruction_code())) {
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr2);
+ writing("to_target2", next_addr2);
+ writing("to_task2", instdto.getInstruction_code());
+ logServer.deviceExecuteLog(device_code, "", "", instdto.getInstruction_code() + "再次下发信号");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(instdto.getTask_code()))){
+ requireSucess1 = false;
+ return false;
+ }
+ }
+ requireSucess1 = true;
+ logServer.deviceExecuteLog(this.device_code, "", "", "申请前后工位任务成功,requireSucess1" + requireSucess1 + ",指令号:" + instdto.getInstruction_code());
+ } else {
+ String start_addr = startdevice.getExtraValue().get("OPCServer").toString();
+ String next_addr = nextdevice.getExtraValue().get("OPCServer").toString();
+ //如果终点是BZSLW 则用前工位
+ if(StrUtil.equals("BZSLW",next_device_code)){
+ writing("to_command1", "1");
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task1").toString()
+ , instdto.getInstruction_code())) {
+ writing("to_command1", "1");
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ logServer.deviceExecuteLog(device_code, "", "", instdto.getInstruction_code() + "再次下发信号");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(instdto.getTask_code()))){
+ requireSucess1 = false;
+ return false;
+ }
+ }
+ } else {
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr);
+ writing("to_target2", next_addr);
+ writing("to_task2", instdto.getInstruction_code());
+ while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task1").toString()
+ , instdto.getInstruction_code())) {
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr);
+ writing("to_target2", start_addr);
+ writing("to_task2", instdto.getInstruction_code());
+ logServer.deviceExecuteLog(device_code, "", "", instdto.getInstruction_code() + "再次下发信号");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(instdto.getTask_code()))){
+ requireSucess1 = false;
+ return false;
+ }
+ }
+ }
+ requireSucess1 = true;
+ logServer.deviceExecuteLog(this.device_code, "", "", "申请后工位任务成功,requireSucess1" + requireSucess1 + ",指令号:" + instdto.getInstruction_code());
+ }
+ } else {
+ //申请后工位任务
+ String linkobj2 = (String) this.getDevice().getExtraValue().get("get_device_code2");
+ String demosub2 = linkobj2.substring(1, linkobj2.length() - 1);
+ String demoArray2[] = demosub2.split(",");
+ List device_code_list2 = Arrays.asList(demoArray2);
+ TaskDto task2 = null;
+ for (int i = 0; i < device_code_list2.size(); i++) {
+ if (ObjectUtil.isNotEmpty(taskserver.queryTaskByDeviceCode(device_code_list2.get(i).replace("\"", "")))) {
+ task2 = taskserver.queryTaskByDeviceCode(device_code_list2.get(i).replace("\"", "")).get(0);
+ }
+ if (ObjectUtil.isNotEmpty(task2)) break;
+ }
+ if (!ObjectUtil.isEmpty(task2)) {
+ String taskid = task2.getTask_id();
+ String taskcode = task2.getTask_code();
+ String vehiclecode = task2.getVehicle_code();
+ String priority = task2.getPriority();
+ String start_point_code = task2.getStart_point_code();
+ String start_device_code = task2.getStart_device_code();
+ String start_device_code2 = task2.getStart_device_code2();
+ String route_plan_code = task2.getRoute_plan_code();
+ String next_point_code = task2.getNext_point_code();
+ String next_device_code = task2.getNext_device_code();
+ String next_device_code2 = task2.getNext_device_code2();
+ Device startdevice = deviceAppservice.findDeviceByCode(start_device_code);
+ Device nextdevice = deviceAppservice.findDeviceByCode(next_device_code);
+ Device startdevice2 = null;
+ Device nextdevice2 = null;
+ if(ObjectUtil.isNotEmpty(start_device_code2)){
+ startdevice2 = deviceAppservice.findDeviceByCode(start_device_code2);
+ }
+ if(ObjectUtil.isNotEmpty(next_device_code2)){
+ nextdevice2 = deviceAppservice.findDeviceByCode(next_device_code2);
+ }
+
+ Instruction instdto = new Instruction();
+ instdto.setInstruction_id(IdUtil.simpleUUID());
+ instdto.setRoute_plan_code(route_plan_code);
+ instdto.setRemark(task2.getRemark());
+ instdto.setMaterial(task2.getMaterial());
+ instdto.setQuantity(task2.getQuantity());
+ instdto.setTask_id(taskid);
+ instdto.setTask_code(taskcode);
+ instdto.setVehicle_code(vehiclecode);
+ String now = DateUtil.now();
+ instdto.setCreate_time(now);
+ instdto.setCreate_by("auto");
+ instdto.setStart_device_code(start_device_code);
+ instdto.setNext_device_code(next_device_code);
+ instdto.setStart_point_code(start_point_code);
+ instdto.setNext_point_code(next_point_code);
+ instdto.setStart_device_code2(start_device_code2);
+ instdto.setNext_device_code2(next_device_code2);
+ instdto.setStart_point_code2(start_device_code2);
+ instdto.setNext_point_code2(next_device_code2);
+ instdto.setPriority(priority);
+ instdto.setInstruction_status("0");
+ instdto.setExecute_device_code(start_point_code);
+
+ try {
+ instructionService.create(instdto);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ //创建指令后修改任务状态
+ WQLObject taskwo = WQLObject.getWQLObject("acs_task");
+ task2.setTask_status("1");
+ //创建指令后修改任务状态
+ task2.setTask_status("1");
+ taskserver.update(task2);
+
+ //下发4个点任务
+ if(ObjectUtil.isNotEmpty(start_device_code2) && ObjectUtil.isNotEmpty(next_device_code2) ){
+ //前工位送满托任务
+ String start_addr = startdevice.getExtraValue().get("OPCServer").toString();
+ String next_addr = nextdevice.getExtraValue().get("OPCServer").toString();
+ //后工位送空托盘任务
+ String start_addr2 = startdevice2.getExtraValue().get("OPCServer").toString();
+ String next_addr2 = nextdevice2.getExtraValue().get("OPCServer").toString();
+
+// writing("to_command1", "1");
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr2);
+ writing("to_target1", next_addr2);
+ writing("to_task2", instdto.getInstruction_code());
+ while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task2").toString()
+ , instdto.getInstruction_code())) {
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr2);
+ writing("to_target2", next_addr2);
+ writing("to_task2", instdto.getInstruction_code());
+ logServer.deviceExecuteLog(device_code, "", "", instdto.getInstruction_code() + "再次下发信号");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(instdto.getTask_code()))){
+ requireSucess1 = false;
+ return false;
+ }
+ }
+ requireSucess1 = true;
+ logServer.deviceExecuteLog(this.device_code, "", "", "申请前后工位任务成功,requireSucess1" + requireSucess1 + ",指令号:" + instdto.getInstruction_code());
+ } else {
+ String start_addr = startdevice.getExtraValue().get("OPCServer").toString();
+ String next_addr = nextdevice.getExtraValue().get("OPCServer").toString();
+ //如果终点是BZSLW 则用前工位
+ if(StrUtil.equals("BZSLW",next_device_code)){
+ writing("to_command1", "1");
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task1").toString()
+ , instdto.getInstruction_code())) {
+ writing("to_command1", "1");
+ writing("to_onset1", start_addr);
+ writing("to_target1", next_addr);
+ writing("to_task1", instdto.getInstruction_code());
+ logServer.deviceExecuteLog(device_code, "", "", instdto.getInstruction_code() + "再次下发信号");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(instdto.getTask_code()))){
+ requireSucess1 = false;
+ return false;
+ }
+ }
+ } else {
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr);
+ writing("to_target2", next_addr);
+ writing("to_task2", instdto.getInstruction_code());
+ while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task1").toString()
+ , instdto.getInstruction_code())) {
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr);
+ writing("to_target2", start_addr);
+ writing("to_task2", instdto.getInstruction_code());
+ logServer.deviceExecuteLog(device_code, "", "", instdto.getInstruction_code() + "再次下发信号");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(instdto.getTask_code()))){
+ requireSucess1 = false;
+ return false;
+ }
+ }
+ }
+ requireSucess1 = true;
+ logServer.deviceExecuteLog(this.device_code, "", "", "申请后工位任务成功,requireSucess1" + requireSucess1 + ",指令号:" + instdto.getInstruction_code());
+ }
+
+ requireSucess1 = true;
+ }
}
}
return true;
@@ -563,7 +903,6 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
//创建指令后修改任务状态
task.setTask_status("1");
taskserver.update(task);
- requireSucess2 = true;
String start_addr = startdevice.getExtraValue().get("OPCServer").toString();
@@ -574,6 +913,26 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
writing("to_target2", next_addr);
writing("to_task2", instdto.getInstruction_code());
+ while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task2").toString()
+ , instdto.getInstruction_code())) {
+
+ writing("to_command2", "1");
+ writing("to_onset2", start_addr);
+ writing("to_target2", next_addr);
+ writing("to_task2", instdto.getInstruction_code());
+ logServer.deviceExecuteLog(device_code, "", "", instdto.getInstruction_code() + "再次下发信号");
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(instdto.getTask_code()))){
+ requireSucess2 = false;
+ return false;
+ }
+ }
+
+ requireSucess2 = true;
logServer.deviceExecuteLog(this.device_code, "", "", "申请后工位空盘任务成功,requireSucess2" + requireSucess2 + ",指令号:" + instdto.getInstruction_code());
}
@@ -781,4 +1140,95 @@ public class LnshRGVDeviceDriver extends AbstractOpcDeviceDriver implements Devi
public void setDeviceStatus(JSONObject data) {
}
+
+
+ /**
+ * 更新指令状态
+ */
+ public synchronized void update_instruction_status() throws Exception {
+ Date date = new Date();
+ if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) {
+ log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out);
+
+ } else {
+ this.instruction_update_time = date;
+
+ if(task1 >0 && task2>0 && action_1 == 4 && action_2 == 4 && move_1 ==0 && move_2==0){
+ //inst_message
+ inst1 = instructionService.findByCodeFromCache(String.valueOf(task1));
+ if (inst1 != null) {
+ try {
+ finish_instruction(inst1);
+ } catch (Exception e) {
+ log.error("RGV 前工位完成指令异常", e);
+ logServer.deviceExecuteLog(this.device_code, "", "", "前工位指令" + task1 + "完成异常,异常原因:" + e.getMessage());
+ }
+ writing("to_command1", "0");
+ writing("to_onset1", "0");
+ writing("to_target1", "0");
+ writing("to_task1", "0");
+ writing("to_command2", "0");
+ writing("to_onset2", "0");
+ writing("to_target2", "0");
+ writing("to_task2", "0");
+ }
+ this.requireSucess1 = false;
+ //单独的后工位任务
+ } else if (action_2 == 4 && move_2 == 0 && task2 > 0 && action_1 == 0 && move_2 == 0 && task1 == 0 ) {
+ //inst_message
+ inst2 = instructionService.findByCodeFromCache(String.valueOf(task2));
+ if (inst2 != null) {
+ try {
+ finish_instruction(inst2);
+ } catch (Exception e) {
+ log.error("RGV 前工位完成指令异常", e);
+ logServer.deviceExecuteLog(this.device_code, "", "", "后工位指令" + task1 + "完成异常,异常原因:" + e.getMessage());
+ }
+ writing("to_command2", "0");
+ writing("to_onset2", "0");
+ writing("to_target2", "0");
+ writing("to_task2", "0");
+
+ }
+ this.requireSucess1 = false;
+ } else if (action_1 == 4 && move_1 == 0 && task1 > 0 && action_2 == 0 && move_2 == 0 && task2 == 0 ) {
+ inst1 = instructionService.findByCodeFromCache(String.valueOf(task1));
+ if (inst1 != null) {
+ try {
+ finish_instruction(inst1);
+ } catch (Exception e) {
+ log.error("RGV 前工位完成指令异常", e);
+ logServer.deviceExecuteLog(this.device_code, "", "", "前工位指令" + task1 + "完成异常,异常原因:" + e.getMessage());
+ }
+ writing("to_command1", "0");
+ writing("to_onset1", "0");
+ writing("to_target1", "0");
+ writing("to_task1", "0");
+ }
+ this.requireSucess1 = false;
+ }
+
+
+
+ if (task1 > 0) {
+ inst1 = instructionService.findByCodeFromCache(String.valueOf(task1));
+ if (inst1 != null) {
+ if (StrUtil.equals(inst1.getInstruction_status(), "0")) {
+ inst1.setInstruction_status("1");
+ instructionService.update(inst1);
+ }
+ }
+ }
+ if (task2 > 0) {
+ inst2 = instructionService.findByCodeFromCache(String.valueOf(task2));
+ if (inst2 != null) {
+ if (StrUtil.equals(inst2.getInstruction_status(), "0")) {
+ inst2.setInstruction_status("1");
+ instructionService.update(inst2);
+ }
+ }
+ }
+ }
+ }
+
}
diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java
index d30e61d..8cada63 100644
--- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java
+++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java
@@ -80,6 +80,11 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
task_code = task.getString("task_code");
String start_point_code = task.getString("start_device_code");
String next_point_code = task.getString("next_device_code");
+ // 双工RGV任务 后工位任务
+ String start_point_code2 = task.getString("start_device_code2");
+ String next_point_code2 = task.getString("next_device_code2");
+ String start_device_code2 = task.getString("start_device_code2");
+ String next_device_code2 = task.getString("next_device_code2");
String start_device_code = "";
String next_device_code = "";
String start_parent_code = "";
@@ -153,6 +158,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService {
jo.put("next_parent_code", next_parent_code);
jo.put("start_device_code", start_device_code);
jo.put("next_device_code", next_device_code);
+ jo.put("start_point_code2", start_point_code2);
+ jo.put("next_point_code2", next_point_code2);
+ jo.put("start_device_code2", start_device_code2);
+ jo.put("next_device_code2", next_device_code2);
jo.put("priority", priority);
jo.put("vehicle_code", vehicle_code);
jo.put("vehicle_type", vehicle_type);
diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java
index 06f3e1a..f7dd1ee 100644
--- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java
+++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/InstructionService.java
@@ -71,6 +71,9 @@ public interface InstructionService {
*/
Instruction findById(String instruction_id);
+ Instruction findByTaskcodeAndStatus(String code);
+
+
/**
* 根据编码查询
*
diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java
index 45aef48..2a43d6b 100644
--- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java
+++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/InstructionDto.java
@@ -104,6 +104,26 @@ public class InstructionDto implements Serializable {
*/
private String next_device_code;
+ /**
+ * 起始点位编码2
+ */
+ private String start_point_code2;
+
+ /**
+ * 起始设备编码2
+ */
+ private String start_device_code2;
+
+ /**
+ * 目标点位编码
+ */
+ private String next_point_code2;
+
+ /**
+ * 目标设备编码2
+ */
+ private String next_device_code2;
+
/**
* 排
*/
diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
index 796a770..91e4511 100644
--- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
+++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java
@@ -203,6 +203,20 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu
return obj;
}
+ @Override
+ public Instruction findByTaskcodeAndStatus(String code) {
+ Iterator var3 = instructions.iterator();
+ while (var3.hasNext()) {
+ Instruction instruction = (Instruction) var3.next();
+ if (StrUtil.equals(instruction.getTask_code(), code)
+ && StrUtil.equals(instruction.getInstruction_status(), "0")) {
+ return instruction;
+ }
+ }
+ return null;
+ }
+
+
@Override
public Instruction findByCode(String code) {
WQLObject wo = WQLObject.getWQLObject("acs_instruction");
diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java
index 96e79e0..8329db9 100644
--- a/acs/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java
+++ b/acs/hd/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java
@@ -78,6 +78,16 @@ public class TaskDto implements Serializable {
*/
private String start_device_code;
+ /**
+ * 起始点位编码
+ */
+ private String start_point_code2;
+
+ /**
+ * 起始设备编码
+ */
+ private String start_device_code2;
+
/**
* 目标点位编码
*/
@@ -88,6 +98,16 @@ public class TaskDto implements Serializable {
*/
private String next_device_code;
+ /**
+ * 目标点位编码2
+ */
+ private String next_point_code2;
+
+ /**
+ * 目标设备编码2
+ */
+ private String next_device_code2;
+
/**
* 排
*/
diff --git a/acs/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java b/acs/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java
index 6269334..fa0631d 100644
--- a/acs/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java
+++ b/acs/hd/nladmin-system/src/main/java/org/nl/start/auto/run/NDCSocketConnectionAutoRun.java
@@ -32,6 +32,7 @@ import org.springframework.stereotype.Component;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Date;
import java.util.Map;
@@ -73,7 +74,7 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
return "NDC在线连接";
}
- public void autoRun() {
+ public void autoRun() throws IOException {
try {
AcsConfigService acsConfigService = SpringContextHolder.getBean(AcsConfigServiceImpl.class);
@@ -85,8 +86,11 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogServiceImpl.class);
ip = acsConfigService.findConfigFromCache().get(AcsConfig.AGVURL);
port = Integer.parseInt(acsConfigService.findConfigFromCache().get(AcsConfig.AGVPORT));
+ InetSocketAddress socketAddress = new InetSocketAddress(ip, port);
byte[] b = new byte[1028];
socket = new Socket(ip, port);
+ socket.connect(socketAddress,2*1000);
+ socket.setKeepAlive(true);//长链接
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
@@ -94,9 +98,14 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
int count = dis.read(b);
if (count == -1) {
+ log.error("agv连接出现异常:服务端被关闭");
+ if (ObjectUtil.isNotEmpty(socket)) {
+ socket.close();
+ }
break;
}
+
int[] arr = new int[count];
StringBuffer bs = new StringBuffer();
@@ -858,7 +867,9 @@ public class NDCSocketConnectionAutoRun extends AbstractAutoRunnable {
} catch (Exception e) {
log.error("[NDC在线连接] 执行错误,请重新启动线程!", e);
-
+ if (ObjectUtil.isNotEmpty(socket)) {
+ socket.close();
+ }
}
}
diff --git a/acs/qd/src/views/acs/instruction/index.vue b/acs/qd/src/views/acs/instruction/index.vue
index e1be702..afae27d 100644
--- a/acs/qd/src/views/acs/instruction/index.vue
+++ b/acs/qd/src/views/acs/instruction/index.vue
@@ -129,6 +129,8 @@
+
+
diff --git a/acs/qd/src/views/acs/task/index.vue b/acs/qd/src/views/acs/task/index.vue
index c986dda..2305cb6 100644
--- a/acs/qd/src/views/acs/task/index.vue
+++ b/acs/qd/src/views/acs/task/index.vue
@@ -246,6 +246,8 @@
+
+
否