对您提供程序的补充:
1. 假如放进来10块砖,各自按分类标准去到的位置是1#检查站2块;2#检查站2块;3#检查站2块;4#检查站4块。假如1#或2#或3#站检测开关有坏了的,只要4#检测开关是好的,最终每一块砖都会经过检测,对程序不会有影响。假如前面3个开关都是好的,第四只检测开关坏了,则本应4#站检测的4块砖都不会检测了,直接通过,Y4不会得电。 4#检查站处的出栈程序 SFRDP D1300 D14 不会执行;指针不会回移;时间长了,前面砖进口处程序 SFWR D1 D1000 k99; 这里的指针有可能超过99(如果4#站检测开关是好的,指针则不会超;因此,可以在程序里加一句,如果指针超99,对应的 M8022=1,则可以判断出是4#检测开关坏了。)
2.程序中用到:在各站检测有误砖通过,无砖通过,将0赋值给D11(D12...);前面一句是有砖通过则按先进先出原则取出堆栈值放D11(或D12...);我以为这两句程序秩序兑换一下逻辑更好。(更不更换应该对程序执行无影响)。
3.西门子里面的移位指令只能移位一个字或双字中的某些位,而不能像三菱可以移位写入n个字或移位读出n个字(或双字)。但用指针应该可以做到,有空再试一下。
对上述1,2点有异议可以讨论。谢谢