......O.......Ai0.1..........Bi0.2..........Ci0.3.... ....Di0.4.............. . c0 c21 c31 c22 c32 c23 c24
如下:假设 o为称重位置 ,距A,B,C的距离分别为3,6,9个盒子(D处别管,备用来计数落下盒子)。 c0计数经过称重台盒子个数,c21计数i0.1检测个数,c31计数A处气缸推杆计数次数;c22=c31+i0.2计数; c32计数B处推杆计数次数,c23=c31+c32+i0.3计数 。 c0要循环计数1至9,另设c1,c2,c3....c9共9个计数器用以标识一个循环内的9个盒子。 上称重台,c0开始计数,同时比较称重数据(假设为mw0)与A(假设mw10) B(mw20) C(mw30)处规定重量(只要在其范围内则认定本盒子应放置A或B或C); 假设第一个是A位置,则将c1=3(第二个B位置则c2=6),这里需用指针或变量ld0辨识是第几个盒子,也就是是c1还是c2,c3...c9.......这里已经假设c1=3,c2=6,c3=9... ... i0.1检测到第一个盒子,c21=1,则将c1拿出来与3比较,c1=3,A处推杆动作,同时c22=1+i0.2... 等第二个盒子过来后(先在A处备案,让c21=2表示已经过来2个,但此时条件不符放行),到达B处i0.2检测到c22=c31+i0.2=2表示这是第二个盒子,则将c2拿出来与6比较,(按假设c2=6,符合条件,启动B处推杆动作,同时c23=c31+c32+i0.3=1+1+i0.3=2+i0.3 )... ...当第三只盒子过来时(也会在A处备案,i0.1已经第三次检测到,c21=3; 经过B处也会备案c22=c31+i0.2=2+1=3; 前面两个地方经过比较不符条件放行)到达C处时,i0.3检测到,此时c23=2+i0.3=3,则知道是第三只盒子,把c3=9拿出来比较,符合条件,气缸动作。 注意:本题有第四类自由落体盒子,只需计数一下落下的数量便可。(假设第4只盒子c4=12是落下位置,经过A,B,C处时条件不符都放行,但是此只数已经被i0.1,i0.2,i0.3备案了)... 最后要考虑复位(自己仔细考虑吧) , ...思路如此,估计这次应该是正解了?
感觉你没真正理解,思路是:1. 称重时,c0计数同时决定被称重盒子的位子(根据实际情况定,但就3个不同位置) 2.给每个盒子赋位置值,要用到变量或指针(比如第三个盒子位置是15,你需要知道15是赋给c3的) 3.算法与A,B,C中间相隔几个箱子无关 4. A,B,C处分别有一个检测开关,相应的分别给它配一个计数器c21 c22 c23 5. 这三只计数器能准确计数经过的是第几只盒子(i0.1能检测全部, i0.2处 i0.3...后面的检测数会因为推出盒子而减少,但前面的推了几次,我用计数器加了几) 6. 只要知道经过的是第几只盒子,就可以取出第几只盒子的数据,在与本位子数据(固定值)比较,就能做出判断是放行,还是就在本位置推出。 第二步2. 每称一次都赋值( 假如三个位置是4,8,11...c1,c2,c3,c4,c5,c6....每一个盒子都想必须赋值4或8或11)这样每一只盒子就都带上了位置信息。再仔细想想吧
前面考虑有所不周,修改后思路如下:
...............................................................................................................................................................................................................
■----O----O----A(3)----O----O----B(6)----O----O----C(9)----O----O----▲
...............................................................................................................................................................................................................
如上所示共12格,代表放12只盒子,传送带每秒右移一格,一个循环12秒移完。第0格称重,称重台检测到盒子让c0自加1记录盒子数量,每只称重重量与A B C处标准比较,符合C标准,让计数器c1= 9(假如第二只符合B标准,C2=6,第三只符合A标准 c3=3)。 次处用指针变量lw0的自增作为计数器的下标: L 1 / L lw0/+i /T lw0 / .... L c#6 (3,6,9根据称重结果).......S c[lw0].....(这样就可以得到诸如c1=9,c2=6,c3=3的结果)。
第二步:上边图像,黑方块代表称重台,想办法让盒子从称重台上到皮带第一格的时刻比盒子从别处上到称重台的时刻稍晚一点,即是,盒子从称重台算起移动一格到位时,已经又加上了一个盒子到称重台,此时c0=2(此时移动了一格);.............第一次假设前三只盒子的应到位置是3,6,9位置....当盒子移动到第3格A处时,c0=4; (当移动到B处时c0=7... ...); 看出来了吗,当到A处时,c0=4,用此时c0的值减去本地格数3,即4-3=1,表示第一只经过盒子......推出去了后此时第二只盒子经过B时c0=8(A处推出后的空位先过);8-6=2即是第二只盒子,B处是第二只盒子的假设位置,推出...... 到C处时,c0=12(c处过2个空位),12-9=3,正好是第三只盒子。
第三: 假如第1,2,3, 4,5,6盒子位置分别是A,B,C,C, A, A... 第一只到达A推出,第二只到达B推出,此时c0=8, 注意此时B左边数起的第3只(B处推出的是第二只,即第5只已经在A位置且符合推出条件),A处此时c0=8, 8-3=5表明是第5只。下一步,c0=9时,第6只盒子到A处,9-3=6表示到A处的此时是第6只盒子。 (此时只剩第3,第4只盒子了,正是图中当第二只在B处c0=8时的前面两只),此时,第3,4只右边只有第2只推出后的一个空位,第3只到达C处时c0=12,第4只到达C处c0=13; 12-9=3;13-9=4,正好是第3只和第4只。
第四:通过以上推论看出,每只盒子经过A,B,C时,用此时c0的值减去本处的固定值,即是第几只盒子经过本处。
第五: 注意计数器计数最大值,清零。
肯定还有其他方法,欢迎指正。