先说外部中断,在外部输入状态变化时,立即跳出当前循环扫描执行程序,转而执行中断服务子程序,执行完中断服务子程序后,再跳回到之前跳出的循环扫描程序位置继续执行顺序程序。所以你只需要在中断服务子程序中写入你的停止程序即可。外部中断输入点不受扫描周期影响。另外基于以上特性不是所有的输入点都可以执行中断,只有硬件支持的才能中断(具体那几个点支持中断,需要你自行根据PLC的型号查手册)。 再回到楼主的工作模型,其实你停止的位置精度除了受你的程序执行周期影响外,还受你当前运行速度影响,例如你以1MM/S的速度立即停止和以100MM/S的速度立即停止是相差蛮远的(其实速度差异远远大于PLC扫描周期带来的差异)。。。。。。。由于在运行之前你并不知道目标地址在哪里,是检测到停止,都存在一个滞后性,不管你运用什么马达这个滞后性肯定是不能消除的,所以只要马达响应性还可以,不管是类型的马达没有什么大的区别。。。。。感应到停止最好例子是就PLC自带的马达归原点指令。我们可以去查看下各种PLC手册,对于马达归原点指令:有近原点开关 有原点开关 有原点回归高速 有原点回归爬行速度。你可以留意一下对系统归原点指令的原点开关,都是系统已经指定的一个输入点,为什么指定呢,就是因为这个输入点需要具有高响应性,换句话说需要具有中断能力。马达归原点的过程是这样的:先高速运行,检测到近原点开关后,切换到爬行速度,以爬行速度检测到原点开关后立即停止(当然回归方式很多,大概都是这个模式)。即使是这样,你的爬行速度不一样,找的原点位置也不一样。纯手打,希望楼主有所启发