采用多单片机实现多电机系统的控制
在工业控制领域,有时会遇到三个以上的电机运动系统,对于这种运动系统,下面几种情况完全存在:
? 几个电机同时运动
? 某几个电机在运动的过程中也需要启动其他电机运动
? 在电机运动的过程中还需要执行其它操作,比如:对I/O设备进行操作,进行串口
通讯等
对于上面这些情况,单一的单片机控制系统将无法胜任。为了实现上述目的,我们研制了一套总线型的多单片机控制系统。
1. 系统结构
原理框图见图1。在图1中,有一个主控制模块和若干驱动模块 、I/O模块组成。主控制模块通过总线来控制I/O模块和驱动模块。从单片机与双端口RAM的数量则视电机的数量而定,有几个电机就需几个从单片机与双端口RAM。主单片机通过总线及双端口RAM与从单片机进行通讯。总线上的信号有D0~D7、A0~A7、WR、RD、TRIG 及若干译码电路产生的片选信号。单片机采用89C52,其内部含有8K的EEPROM及256个字节的RAM;双端口RAM采用DALLAS公司生产的DS1609,它有256个字节的RAM单元,通过总线上的片选信号线可为每一片DS1609分配256个字节的地址。当需要某电机运动时,主单片机将每个电机的运动信息写入相应的
驱D0~D7 从双端电 动单电片口 机 路机A0~A7 地址 锁存器 主 单 总片 线机驱译码 A8~A15 动电路 从驱 RD 双端单电动片 电口 机 WR 机路 TRIG TRIG I/O接口 板 RS232
图1 总线型的多单片机控制器原理框
DS1609中,然后通过TRIG 信号线(可用89C52 P1口的某位,通过总线驱动后连接至每个从单片机的外部中断输入脚)发出一个负脉冲,通知每个从单片机读取各自的DS1609中的信息,至此,主单片机与从单片机的通讯结束,转而去执行其它任务,主单片机并没有参与电机的运动控制,它只需下达命令给从单片机。电机的运动控制由从单片机来完成。从单片机接收到TRIG 信号后,进入中断服务程序,读取DS1609中的信息。从单片机根据读取的信息来判断电机是否需要运动,以及作何种运动,运动的速度、加速度、距离、方向等;由于从单片机各自独立地控制电机运动,互不干涉,因此,每个电机的运动速度、加速度、距离、方向均可以不同;由于主单片机是通过TRIG 信号线下达任务的,如果在电机运动的时候将从单片机的外部中断屏蔽掉,而在电机不运动的时候再将从单片机的外部中断置为允许,这样,当主单片机的TRIG 信号发出后,如果某个电机正在运动,则其对应的从单片机不会响应TRIG 信号,而不运动的电机所对应的从单片机则会响应TRIG信号,此从单片机则会根据主单片机发来的信息作出相应的反应,从而实现了在某个(或几个)电机运动的过程中还可以启动其它电机运动的目的。
另外,主单片机与从单片机通过双端口RAM芯片DS1609进行通信,这比使用串行端口进行通信具有无可比拟的优越性。采用串行的方式进行通信,其信息交换速度受到串行通信特点的限制,例如:当波特率为9600时,其传送一个字节需要833微秒,而单片机与双端口RAM之间的信息交换是以并行方式进行的,当单片机的时钟频率为12MHz时,单片机向双端口RAM传送一个字节只需2微秒。根据需要也可采用其它类型的单片机,而且,主、从单片机可以采用不同类型的单片机,以便实现各种不同的控制功能。
由于主单片机与从单片机通过双端口RAM芯片DS1609进行通信,所需时间很短,具有实时效果,为实时插补提供了一种途径;而且,DS1609还提供了256个字节的RAM,这些存储单元可用来存放电机的运动数据,包括实时插补数据。可见,双端口RAM作为主单片机与从单片机的通讯纽带,不仅提高了通信效率,而且增强了控制系统功能。
2.1 主控制模块电路
主控制模块电路原理图见图2。图中的数据总线驱动电路采用74LS245,是因为数据 通道是双向的,当74LS245的1脚为高电平时,数据方向为从左向右;当74LS245的1脚为低电平时,数据方向为从右向左。因此,当主单片机读取8000H~FFFFH地址的数据时,74LS245的1脚为低电平,数据方向为从右向左,这时,主单片机从总线读取数据;当向地址8000H~FFFFH中写入数据时,74LS245的1脚为高电平,数据方向为从左向右,这时,主单片机向总线写入数据。
对于译码电路,本人在实际应用中只控制了五个电机,因此采用74LS138译码器已足够使用,读者也可采用4—16译码器或其它译码电路,以便能满足更多电机系统的应用,但是无论采用何种译码电路,译码电路产生的译码信号所包含的地址范围不能小于256个字节,因为双端口RAM DS1609有256个字节。
另外,如果需要,还可自己扩展程序存储器和数据存储器。
89C52 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 ALE RD WR P1.0 P2.4 P2.5 P2.6 P2.7 RXD TXD
3 4 7 8 13 14 17 18 11 1 2 5 6 9 12 15 16 19 2 4 6 8 11 13 15 17 1 19 2 3 4 5 6 7 8 9 1 19 2 4 6 1 19 18 16 14 12 9 7 3 5 A0 A1 A2 A3 A4 A5 A6 A7 74LS373 74LS244 74LS245 74LS244 15 14 13 12 11 10 9 7 18 17 16 15 14 13 12 11 D0 D1 D2 D3 D4 D5 D6 D7 总 线 18 16 14 RD WR TRIG A12 A13 A14 1 2 3 4 5 6 A15 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 串行接 口电路 图2 主控制模块电路原理图
74LS138 2.2 驱动模块电路
驱动模块电路原理图见图3。驱动模块电路由DS1609、89C52及驱动电路构成。
DS1609具有两个各自独立的控制、地址和输入/输出引脚的端口,它允许两个不同的计算机总线读/写存储器中的任意单元。双端口RAM芯片DS1609为单5V电源供电,输入、输出为TTL电平,其原理框图见图4。
由图4可知,DS1609有256个字节的RAM单元,两组读写端口可同时读取RAM单元,但需注意的是:为了确保数据的正确性,应避免两组端口对同一单元同时进行写操作,或者一个端口在写某单元的同时另一个端口读该单元。
DS1609
89C52 BD0~BD7 P0 D0~D7 AD0~AD7 总 P0、P2、P3 RD RD OEA OEB WR WR WEA WEB 线ALE Yn CEA CEB TRIG INT0
图3 驱动模块电路图
双端口RAM芯片DS1609与总线及从单片机的连接如图3所示。在图3中,DS1609的A边端口AD0~AD7、WEA、OEA、CEA分别与总线上的D0~D7、WR、RD、CE连接,B边端口的BD0~BD7、WEB、OEB、CEB分别与从单片机的P0.0~P0.7、WR、RD、ALE连接。由于DS1609 的数据线/地址线是多路复用的,即数据线与地址线使用相同的引脚,这正好与89C52的P0口的特性相吻合,当89C52进行读、写操作时,89C52先把低8位地址送上P0总线,这时ALE为高电平,当ALE变低时,ALE产生一个下降沿,此下降沿通过DS1609的CEB引脚触发DS1609的内部地址锁存器,将89C52的P0口上送出的地址信息锁存起来,随后OE/WE信号有效,DS1609将数据输出/输入。可见,DS1609的CEB与从单片机的ALE的连接,简化了DS1609与从单片机的连接,即省去了译码电路。
89C52的P0、P2、P3口可用于与驱动电路的接口或用于I/O接口。单片机与驱动电路的接口要视实际使用的电机类型及其驱动电路而定,这里不作叙述。
图4
DS1609原理框图
驱动电路
2. 软件
DS1609是本控制器能否正常工作的关键,而且主、从单片机也是通过DS1609实现对电机的控制,因此,这里只给出与DS1609有关的通信部分的软件流程。图9为主单片机与DS1609的通信,图10为从单片机与DS1609的通信。在DS1609中,有三个单元CHECK0,CHECK1,CHECK2,作为驱动模块的READY信息单元,当TRIG信号触发从单片机中断,从单片机将CHECK0,CHECK1,CHECK2三个单元清零,并且读取电机运动数据,然后,控制电机运动,电机运动结束后,再将CHECK0,CHECK1,CHECK2三个单元置入AAH,作为READY标记,当主控制板查询到此三单元中有两个单元为AAH时,则认为该驱动器已准备好,可以再次对该驱动器发出运动指令及数据。
开始
NO 图9 主单片机与DS1609的通信流程
驱动器READY? YES 将指令及数据 写入DS1609 查询 CHECK0 CHECK1 CHECK2 发出TRIG信号 YES 电机需要 运动吗? NO 有I/O操作吗? YES 进行I/O 操作 NO 初始化 TRIG
图10
从单片机与DS1609的通信流程
进入中断服务程序,关中断,将CHECK0、CHECK1、CHECK2单元清零,读取运动指令及数据 判断、运算,控制驱动电路驱动电机运动 开中断并等待 电机运动结束,将CHECK0、CHECK1、CHECK2单元 置入AAH,关中断 将CHECK0、CHECK1、CHECK2单元 置入AAH 初 始 化 开 始 3.
全自动浮动块点胶机控制系统
4. 结束语
本文只是论述了对电机进行并行控制的一种方法,我们采用此控制方法已经实现
了对步进电机、伺服电机的并行控制,并且已经在硬盘磁头浮动块装载机、硬盘头堆加载力测试系统、全自动浮动块点胶机、全自动弹性臂点胶机、全自动超声波焊机、全自动BFC折弯机等自动化设备上使用,其并行控制功能在提高设备的效率和动作的合理性方面发挥了巨大作用。
TRIG
图10
从单片机与DS1609的通信流程
进入中断服务程序,关中断,将CHECK0、CHECK1、CHECK2单元清零,读取运动指令及数据 判断、运算,控制驱动电路驱动电机运动 开中断并等待 电机运动结束,将CHECK0、CHECK1、CHECK2单元 置入AAH,关中断 将CHECK0、CHECK1、CHECK2单元 置入AAH 初 始 化 开 始 3.
全自动浮动块点胶机控制系统
4. 结束语
本文只是论述了对电机进行并行控制的一种方法,我们采用此控制方法已经实现
了对步进电机、伺服电机的并行控制,并且已经在硬盘磁头浮动块装载机、硬盘头堆加载力测试系统、全自动浮动块点胶机、全自动弹性臂点胶机、全自动超声波焊机、全自动BFC折弯机等自动化设备上使用,其并行控制功能在提高设备的效率和动作的合理性方面发挥了巨大作用。
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库采用多单片机实现多电机系统的并行控制在线全文阅读。
相关推荐: