数控车床软件部分设计
软件设计
系统控制软件根据数控机床的控制和功能要求, 采用模块化程序设计方法设计系统的控制软件系统控制软件包括: ①系统管理程序(见图1) , 其功能是接受命令、执行命令或从命令处理程序返回到管理程序接受命令的环节, 使系统处于新的等待操作状态; ②零件加工源程序的输入处理程序; ③插补程序, 即根据加工程序进行插补运算, 分配送给脉冲; ④伺服控制程序, 即根据插补运算的结果或操作者命令控制步进电动机的速度及方向; ⑤诊断程序, 包括移动部件超程、急停、系统故障诊断、查错等功能; ⑥机床自动加工及手动程序(见图1) , 自动加工包括准备功能(G)、辅助功能(M ) 、主轴转速功能(S) 和刀具功能(T ) 等; 手动程序多用于调整机床时用; ⑦键盘操作和显示处理程序.
软件采用模块化设计。主要包括主模块、子程序模块和中断处理模块等。
2. 4. 1 主模块
主模块即系统管理程序, 开机后即执行该程序。其功能是: 8155I/O 接口初始化, 单片机T0 ,T1 定时器/ 计数器初始化, 键盘数据区、显示缓冲区初始化, 各种软件标志初始化等。主模板中的监控主要是判别是否有功能键按下, 若有则转相对应的功能子程序模块。简化流程图如图3 所示。
图3 主模块流程框图 图4 + Z方向驱动输出模块流程框图
2. 4. 2 子程序模块
子程序模块根据功能键设计。如工作台移动, 在键盘上用↑( + Z) 、↓( - Z ) 、←( - X ) 、→( + X) 4 个不同方向的箭头分别表示四个不同的移动方向。在软件设计中, 设键值数据区中的2DH 单元为工作台移动标志单元。如图4 所示为+ Z 方向驱动输出模块流程图。利用8155 定时器作脉冲信号源, 模块中给出方向字, 由硬件环行分配器完成脉冲分配, 控制伺服功率步进电动机的运行。
2. 4. 3 中断处理模块
中断处理中包括3 个模块, 依据微机数控系统中不同事件的轻重缓急, 约定优先级排队序列如表1。
急停处理及报警中断处理模块的功能是停止一切正常工作, 并由复位键RESET 使系统返回到初始报警以发红光显示。其模块流程图如图5 所示。
图5 急停报警中断模块流程框图
键盘扫描子程序
该键盘工作方式为编程扫描工作方式。这是利用CPU 在完成其他工作的空余,调用键盘扫描子程序,来响应键输入的要求,在执行键功能程序时,CPU 不再响应键输入要求。在键盘扫描子程序中应完成下述几个功能:
(1)判断键盘上有无键按下。
(2)去键的机械抖动影响。
(3)求按下键的键号。按照行列式键盘工作原理,下图中32个键对应的键号如图4。这种顺序排列的键号按照行首键号与列号相加的办法处理,每行的行首键号依次为0,8,16,24,列号依列线顺序为0~7。
(4)判别闭合的键是否被释放。键闭合一次仅进行一次键功能操作。等键释放后去除键的抖动再将键值送入累加器A 中,然后执行键功能操作。
图11 键扫描子程序框图
设在主程序中已把8155初始化为PA 口作基本输出口,接键盘列线,Pc 口作基本输入口,接4根行线。键扫描程序如下(程序中KS 为查询有无按键按下子程序,DELAY 为延时子程序,延时时间为5—20ms) :
KEY:ACALL KS ;调用KS 判断有无键按下
JNZ K1 ;有键按下则转移
ACALL DELAY ;无键按下则调延时子程序
AJMP KEY ;无键按下返回
K1:ACALL DELAY;加长延时时间,消除键抖动
ACALL DELAY
ACALL KS;调用KS 子程序再次判断有无键闭合
JNZ K2;键按下,转逐列扫描
AJMP KEY;误读键,返回
K2:MOV R2,#OFEH;首列扫描字入R2
MOV R4,#00H;首列号入R4
K3:MOV DPTR,#PA;A 口地址送DPTR
MOVX @DPTR,A;列扫描字送至8155PA 口
INC DPTR;指向8155PC 口
INC DPTR
MOVX A,@DPTR;读取行扫描值
JB ACC .0,L1;第0行无键、按下,转查第一行
MOV A,#00H;第0行有键按下,该行首键号#0H→A
AJMP LK;转求键号
L1:JB ACC.1,L2;第一行无键按下,转查第2行
MOV A,#08H;第一行有键按下,该行行首键号#10H→A
AJMP LK;转求键号
L2:JB ACC.2,L3;第2行无键按下,转查第3行
MOV A,#10H;第2行有键按下,该行行首键号#10H→A
AJMP LK;转求键号
L3:JB ACC.3,NEXT;第3行无键按下,该查下一列
MOV A,#18H;第3行有键按下,该行首键号#18H→A
LK :ADD A,R4;形成键码送入A
PUSH ACC;键号进栈保护
K4:ACALL DELAY
ACALL KS;等待键释放
JNZ K4;未释放,等待
POP ACC;键释放,键号→ACC
RET ;键扫描结束,返回
NEXT :INC R4;修改列号
MOV A,R2
JNB ACC.7,KEY;第7位为0,已扫描完最高列转KEY
RL A;未扫描完,扫描字左移一位,转变为下一列扫描字
MOV R2,A ;扫描字暂存R2
AJMP K3
KS :MOV DPTR,#PA;A 口地址送DPTR MOV A,#00H
MOVX @DPTR,A ;全扫描字#00A入PA 口 INC DPTR;指向PC 口
INC DPTR
MOVX A,@DPTR;读入PC 口行状态
CPL A;边正逻辑,以高电平表示有键按下 ANL A,#0FH;屏蔽高4位
RET ;出口状态,(A )0≠0时有键按下