(2)S_EN挂起使能信号。置位后,PL-2301支持标准的USB挂起特性。
(3)RESET_O块输出管道的复位信号,用于出现错误时复位块输出通道。
(4)RESET_IN块输入管道的复位信号,用于出现错误时复位块输入管道。
(5)TX_REQ块传输的请求信号。
(6)TX_C块传输完成的指示信号。
(7)PEER_E告诉对方本地端口是否连接好的指示信号。
在这几个握手信号的协调下,上位机和下位机可以双向通信。图2是主机PC A向PC B传输数据的流程图。这些底层的细节问题并不需要控制,由PL-2301的驱动程序完成。
3、 软件结构
3.1 教学机器人软件结构
EDUROBOT-680-II型教学机器人控制系统的控制软件包括下位机的底层控制软件和上位机的上层控制软件,它们通过USB端口通信。其软件结构如图3所示。
上层控制软件运行在Windows98平台上,它为用户提供与机器人交互的人机接口界面,完成复杂运动控制的数据处理和插补计算。它由人机界面、运算插补、主控、通信四大模块构成。通信模块能够实时地发送控制命令给下位机并从下位机获得反馈信息,同时保证数据传输的准确性。
为了提供对USB的支持(为了使底层控制系统有更好的实时性和更紧凑,下一步准备将底层控制系统改用支持USB的Windows CE、VxWorks或嵌入式Linux),底层控制系统目前采用Windows98平台。底层控制软件接口收上层控制软件的控制命令,同时解释并执行控制命令。这通过多线程实现。任务调度和管理模块是底层控制软件的主线程,它负责从指令队列中取出指令并解释执行。主线程执行过程会产生一个辅助线程——通信线程。通信线程调用通信模块的输出函数,负责监视USB端口。如果上位机传来控制命令,则遵循教学机器人通信协议接收并存入指令队列中。
3.2 通信模块的实现
上位机和下位机控制软件共用相同的PL-2301客户驱动程序、传输模块(由Prolific公司提供)和通信模块。
PL-2301客户驱动程序是典型的WDM驱动程序。驱动程序屏蔽了底层的硬件细节和USB协议,使上层软件仅通过驱动程序接口函数就可以访问PL-2301。主要的几个驱动程序接口函数是CreateFile()、WriteFile()、ReadFile()、DeviceIOControl()。