要点:
- 当windows系统与运动控制卡通讯时,在通讯函数过程中,应避免使用windows的消息机制及窗口操作的所有指令。保证windows系统和运动控制卡通讯的时长足够短。
- 一些需要在窗口提示错误的地方,采用异步执行方式,提示错误与显示错误异步执行,保证与运动控制卡的通讯时长的稳定性。可将错误信息存储在一个list中,在显示时,从list中循环读取所有错误。
- 在通讯函数调用中,应使用多媒体定时器,而不是使用settimer来定时,因为settimer的定时精度不够,而多媒体定时器能保证1-2ms的精度。完全能够满足运动控制卡在windows系统下的一般使用要求。从实际的应用来看,将多媒体定时器设置为10ms,足以保证与控制器的通讯完成,目前项目中最长仅需2.9ms执行完成通讯过程,这样就有7ms左右的空闲时间存在,故此可利用这7ms的空闲时间为下面插补数据提供机会。保证插补数据动态插入,同时保证数据交换及时性,也可将定时器设置为20ms或者更大,根据实际的操作体验及效果来适当改变定时时长。
- 为了实现插补中实现数控加工大量代码的,采用动态插入数据的方式,但在插入数据的过程中需要保证windows与运动控制卡的通讯函数停止执行,避免同时操作时可能产生的资源抢占发生。故此需要在通讯函数的定时中断中加入一个当前通讯状态判断,保证在插入数据的时候,通讯函数已经执行完成。
- 动态插入数据采用实时判断当前剩余插补段数,当超过100条时,停止执行插补数据的插入,当剩余插补段数少于50条时,则重新启动后续插补数据插入工作。
- 在每条指令的后面,尽量增加一个返回值判断,及时提醒与控制卡数据交换过程中的错误,帮助尽早准确发现开发过程中可能出现的bug。及时修正一些指令执行过程中的条件及执行顺序。