发布于 2013-11-17 19:49:52
1楼
很感谢这位网友的共享。
请允许我冒昧点评一下。
这个程序有一个较大的漏洞,有一个可以优化的地方。
漏洞:I0.1是反向移动。置位Q0.2的指令在执行end的时候才会把Q0.2改变,但是执行pls指令的网络4,就已经立即可以输出脉冲。你现在这样安排的顺序,当速度很高的时候,会出现一个现象是,已经发出了几个脉冲了,方向信号才发生变更。结果你发的脉冲总量例如100个向后脉冲,其实变成了先发2个向前脉冲然后方向信号到来,然后才得到98个向后脉冲。最终结果是向后走了96个脉冲。而不是你意图里的100个。之所以为漏洞而不说错误,是因为pls指令到end指令之间的时间很短,所以很可能步进驱动器观察不到这样的区别。进而仍然为你执行向后100个脉冲。
优化:后面4个mov指令由于都是完成相同的任务,而且没有其他地方再操作过。可以把他们集中到sm0.1里面执行,可以省下程序量和扫描时间。
再次感谢!
祝你学业进步。