华中数控世纪星PLC编程说明书.doc

上传人:wux****ua 文档编号:9085879 上传时间:2020-04-03 格式:DOC 页数:83 大小:364.50KB
返回 下载 相关 举报
华中数控世纪星PLC编程说明书.doc_第1页
第1页 / 共83页
华中数控世纪星PLC编程说明书.doc_第2页
第2页 / 共83页
华中数控世纪星PLC编程说明书.doc_第3页
第3页 / 共83页
点击查看更多>>
资源描述
华中数控 PLC 编程说明书 武汉华中数控股份有限公司 二零零一年七月 前言 华中数控内置式 PLC 已集成在数控装置内 具有 48 路输入 输出点 华 中数控 PLC 采用 C 语言编程 具有灵活 高效 使用方便等特点 本说明详细介绍了内置式 PLC 的基本原理 寄存器操作接口 PLC 程序 的编写与安装等内容 并给出了大量 C 语言程序示例代码 关于 PLC 硬件接线请参阅 华中数控世纪星硬件联接说明书 阅读本文之前 必须具有 C 语言编程的基本知识 目录 前言 2 目录 3 第一章 华中数控内置式 PLC 基本原理 7 1 1 华中数控内置式 PLC 的结构及相关寄存器的访问 7 1 2 华中数控内置式 PLC 的软件结构及其运行原理 8 第二章 华中数控内置式 PLC 的编程与安装 9 2 1 华中数控 PLC 程序的编写及其编译 9 2 2 华中数控 PLC 程序的安装 12 第三章 华中数控 PLC 寄存器定义与接口函数说明 12 3 1 访问 PLC 寄存器的系统变量 13 3 2 寄存器 F 系统约定 14 3 3 1 轴状态字 14 3 3 2 轴移动的指令位置 单位 内部脉冲当量 14 3 3 3 轴当前的实际位置 单位 内部脉冲当量 15 3 3 4 轴当前移动速度 单位 脉冲当量 插补周期 15 3 3 5 轴的负载电流 只对本公司生产的华中 11 型伺服有效 15 3 3 6 轴的最大速度 可在参数中设置 15 3 3 7 通道用户自定义输出字 32 位 16 3 3 8 通道状态 16 3 3 9 通道 MSTB 指令状态 17 3 3 10 通道当前的 M 代码 17 3 3 11 通道当前的 T 代码 17 3 3 12 通道当前的 B 代码 17 3 3 13 通道当前的 S 代码 17 3 3 14 通道变量 通道内部参数 17 3 3 15 系统状态字 17 3 3 16 系统插补周期 单位 毫秒 18 3 3 17 系统移动轴内部脉冲当量 18 3 3 18 系统旋转轴内部脉冲当量 18 3 3 19 系统变量组 1 系统保留 18 3 4 G 寄存器系统约定 18 3 4 1 轴控制字 18 3 4 2 设置轴移动增量值 单位 内部脉冲当量 19 3 4 3 设置轴增量移动速度 单位 内部脉冲当量 插补周期 19 3 4 4 轴点动速度 单位 内部脉冲当量 插补周期 19 3 4 5 设置轴补偿值 19 3 4 6 通道用户自定义输入 19 3 4 7 通道控制字 19 3 4 8 通道 MST 应答 20 3 4 9 通道进给速度修调分子 分母为 100 20 3 4 10 通道快移速度修调分子 分母为 100 20 3 4 11 通道正在使用的刀具号 20 3 4 12 通道主轴转速 21 3 4 13 通道跳选段控制及其实现说明 21 3 4 14 通道 MST 指令模态值 22 3 4 14 1 通道当前的 M 代码模态值 22 3 4 14 2 通道当前的 S 代码模态值 22 3 4 14 3 通道当前的 T 代码模态值 22 3 4 14 4 通道当前的 B 代码模态值 22 3 4 14 5 通道是否正在执行 MST 指令 22 3 4 14 6 PLC 正在执行 MST 指令 不允许系统停止运行 22 3 4 14 7 通道程序停止 M00 程序选择停止 M01 23 3 4 15 系统控制字 23 3 4 16 系统外部报警 24 3 17 系统变量组 2 系统保留 24 3 5 寄存器 B 系统约定 24 3 5 1 刀座数 24 3 5 2 某一刀座中的刀号 刀库表 24 3 6 可被 PLC 程序调用的系统函数 24 3 6 1 设置轴回零 24 3 6 2 设置轴点动速度 25 3 6 3 设置轴步进指定距离 25 3 6 4 设置轴移动距离及速率 26 3 6 5 设置轴移动的目的地及速率 26 3 6 6 设置指定轴停止运动 26 3 6 7 取指定轴当前位置 27 3 6 8 指定轴当是否停止 27 3 6 9 设置轴手摇移动 27 3 6 10 取手摇状态对应的位移量 27 3 6 11 设置 MST 指令的响应函数 28 第四章 编写 PLC 程序的常用技巧与示例 28 4 1 常用运算操作符 28 4 1 1 置 1 操作符 和 置 0 操作符 以无符号字符型存取 R 寄存器 注 对于 C 语言 数组即相当于指向相应存储区的地址指针 同时 为了方便对 R 寄存器内存区域进行操作 系统定义了如下类型指 针 无符号字符型 字符型 无符号整型 整型 无符号长整型 长整型 对该 内存区进行访问 即这些地址指针在系统初始化时被初始化为指向同一地址 extern unsigned char R uc 以无符号字符型存取 R 寄存器 extern char R c 以字符型存取 R 寄存器 extern unsigned R ui 以无符号整型存取 R 寄存器 extern int R i 以整型存取 R 寄存器 extern unsigned long R ul 以无符号长整型存取 R 寄存器 extern long R l 以长整型存取 R 寄存器 同理 和 R 寄存器一样 系统提供如下类似数组指针变量供用户灵活操 作各类寄存器 extern unsigned char X uc Y uc F uc G uc P uc B uc extern char X c Y c F c G c P c B c extern unsigned X ui Y ui F ui G ui P ui B ui extern int X i Y i F i G i P i B i extern unsigned long X ul Y ul F ul G ul P ul B ul extern long X l Y l F l G l P l B l extern unsigned char X Y extern unsigned F G P B 1 2 华中数控内置式 PLC 的软件结构及其运行原理 和一般 C 语言程序都必须提供 main 函数一样 用户编写内置式 PLC 的 C 语言程序必须提供如下系统函数定义及系统变量值 extern void init void 初始化 PLC extern unsigned plc1 time 函数 plc1 的运行周期 单位 毫秒 extern void plc1 void PLC 程序入口 1 extern unsigned plc2 time 函数 plc2 的运行周期 单位 毫秒 extern void plc2 void PLC 程序入口 2 其中 1 函数 init 是用户 PLC 程序的初始化函数 系统将只在初始化时调用 该函数一次 该函数一般设置系统 M S B T 等辅助功能的响应函 数及系统复位的初始化工作 2 变量 plc1 time 及 plc2 time 的值分别表示 plc1 plc2 函数被系统周 期调用的周期时间 单位 毫秒 系统推荐值分别为 16 毫秒及 32 毫 秒 即 plc1 time 16 plc2 time 32 3 函数 plc1 及 plc2 分别表示数控系统调用 PLC 程序的入口 其调用 周期分别由变量 plc1 time 及 plc2 time 指定 系统初始化 PLC 时 将调用 PLC 提供的 init 函数 该函数只被调用一次 在系统初始化完成后 数控系统将周期性地运行如下过程 1 从硬件端口及数控系统成批读入所有 X F P 寄存器的内容 2 如果 plc1 time 所指定的周期时间已到 调用函数 plc1 3 如果 plc2 time 所指定的周期时间已到 调用函数 plc2 4 系统成批输出 G Y B 寄存器 一般地 plc1 time 总是小于 plc2 time 即函数 plc1 较 plc2 调用的频率 要高 因此 华中数控称函数 plc1 为 PLC 高速扫描进程 plc2 为低速扫描 进程 因此 用户提供的 plc1 函数及 plc2 函数必须根据 X 及 F 寄存器的内容 正确计算出 G 及 Y 寄存器的值 第二章 华中数控内置式 PLC 的编程与安装 本章介绍 PLC 程序的编写 编译及运行安装过程 2 1 华中数控 PLC 程序的编写及其编译 华中数控 PLC 程序的编译环境为 Borland C 3 1 MSDOS6 22 因此 要编写 PLC 程序您必须在您计算机上安装 Borland C 3 1 软件及 MSDOS6 22 或 MS Windows 9X 操作系统 华中数控系统约定 PLC 源程序后辍为 CLD 即 CLD 文件为 PLC 源程序 最简单的 PLC 程序只要包含系统必须的几个函数和变量定义 请参见 1 2 节 即可编译运行 当然它什么事也不能做 在 DOS 环境下 进入数控软件 PLC 所安装的目录 如 C HCNC2000 PLC 在 DOS 提示符下敲入如下命令 c hcnc2000 plc edit plc null cld 建立一个文本文件并命名为 plc null cld 其文件内容为 plc null cld PLC 程序空框架 保证可以编译运行 但什么功能也不提供 版权所有 2000 武汉华中数控系统有限公司 保留所有权利 email market tel 86 27 87545256 87542713 fax 86 27 87545256 87542713 最后更改日期 2000 10 31 作者 阳道善 email yang HuazhongCNC com include plc h PLC 系统头文件 void init PLC 初始化函数 void plc1 void PLC 程序入口 1 plc1 time 16 系统将在 16 毫秒后再次调用 plc1 函数 void plc2 void PLC 程序入口 2 plc2 time 32 系统将在 32 毫秒后再次调用 plc1 函数 如果您安装了 MSDOS6 22 及 Borland C 3 1 软件 在铣床数控系统的 PLC 目录下 输入如下命令 c hcnc2000 plc makeplc plc null cld 系统会响应 1 file s copied MAKE Version 3 6 Copyright c 1992 Borland International Available memory 64299008 bytes bcc plc CFG S plc cld Borland C Version 3 1 Copyright c 1992 Borland International plc cld Available memory 4199568 TASM MX O plc ASM plc OBJ Turbo Assembler Version 3 1 Copyright c 1988 1992 Borland International Assembling file plc ASM Error messages None Warning messages None Passes 1 Remaining memory 421k tlink t v m c Lc BC31 LIB MAKE0000 Turbo Link Version 5 1 Copyright c 1992 Borland International Warning Debug info switch ignored for COM files 1 file s copied 并且又回到 DOS 提示符下 c hcnc2000 plc 这时表示我们的第一个 PLC 程序编译成功 编译结果为文件 plc 然后 我们可以更改数控软件系统配置文件 NCBIOS CFG 并 加上如下一行文本让系统启动时加载我们新近编写的 PLC 程序 device c hcnc2000 plc plc 以上就是在华中数控系统平台上编写并编译 C 语言 PLC 程序的全过程 非常简单 下面 让我们多做一点工作 假设我们在用户按下操作面板的 循环起动 键时 点亮 X 点动 灯 假定 循环起动 键的输入点为 X0 1 X 点动 灯的输出点位置为 Y2 7 更改 plc null cld 文件的 plc1 函数如下 void plc1 void PLC 程序入口 1 plc1 time 16 系统将在 16 毫秒后再次调用 plc1 函数 if X 0 点亮 X 点动 灯 else 循环起动键没有被按下 Y 2 灭掉 X 点动 灯 重新输入命令 makeplc plc null 并将编译所得的文件 plc 放入 NCBIOS CFG 所指定的位置 重新起动铣床数控系统后 当我们按下 循环 起动 键时 X 点动 灯应该被点亮 更复杂的 PLC 程序 可参考您所在数控系统 PLC 目录下的 CLD 文件 其中应该有一个是您数控系统的 PLC 源程序 另外 本说明书的最后一章详 细讲解了步进电机三坐标铣床的 PLC 源程序 请参考 2 2 华中数控 PLC 程序的安装 从上节 我们已经知道 PLC 源程序编译后 将产生一个 DOS 可执行 COM 文件 要安装写好的 PLC 程序 我们必须更改华中数控系统的配置文件 NCBIOS CFG 在 DOS 环境下 进入数控软件所安装的目录 如 C HCNC2000 在 DOS 提示符下敲入如下命令 c hcnc2000 edit ncbios cfg 可编辑数控系统配置文件 一般情况下 配置文件的内容如下 具体内容因机 床的不同而异 分号后面是为说明方便添加的注释 DEVICE C HCNC2000 bin sv step drv 步进电机伺服驱动 DEVICE C HCNC2000 bin hc5904 drv 5904 驱动程序 DEVICE C HCNC2000 plc plc PLC 程序 PARMPATH C HCNC2000 PARM 系统参数所在目录 DATAPATH C HCNC2000 DATA 系统数据所在目录 PROGPATH C HCNC2000 PROG 数控 G 代码程序所在目录 DISKPATH A 软盘 BINPATH C HCNC2000 bin 系统 BIN 目录 用粗体突出的第三行即设置好了上文编写的 PLC 程序 plc 第三章 华中数控 PLC 寄存器定义与接口函数说明 第一章说明了 PLC 的逻辑结构及各寄存器的含义 已经知道 PLC 的 G 及 F 寄存器是数控系统与 PLC 约定好的 用户不可随便更改其寄存器各位 bit 的 含义 为方便用户编程及记忆 系统提供如下大量宏及函数供用户使用 本章 将详细给出这些宏及函数的接口说明 建议您阅读本书提供的 PLC 例子程序 时 再至本章查阅相关函数细节 3 1 访问 PLC 寄存器的系统变量 第一章已经说明 以下地址指针变量都指向同一块内存 即 PLC 中间寄 存器 R 共有 768 个字节 extern unsigned char R uc 以无符号字符型存取 R 寄存器 extern char R c 以字符型存取 R 寄存器 extern unsigned R ui 以无符号整型存取 R 寄存器 extern int R i 以整型存取 R 寄存器 extern unsigned long R ul 以无符号长整型存取 R 寄存器 extern long R l 以长整型存取 R 寄存器 extern unsigned char R 以无符号字符型存取 R 寄存器 同理 和 R 寄存器一样 系统提供如下变量定义供用户灵活使用 其中 1 uc 表示以无符号字符型存取 PLC 寄存器 2 c 代表以字符型存取 PLC 寄存器 3 ui 代表以无符号整型存取 PLC 寄存器 4 i 代表以整型存取 PLC 寄存器 5 ul 代表以无符号长整型存取 PLC 寄存器 6 l 代表以长整型存取 PLC 寄存器 extern unsigned char X uc Y uc F uc G uc P uc B uc extern char X c Y c F c G c P c B c extern unsigned X ui Y ui F ui G ui P ui B ui extern int X i Y i F i G i P i B i extern unsigned long X ul Y ul F ul G ul P ul B ul extern long X l Y l F l G l P l B l extern unsigned char X Y extern unsigned F G P B 对于输入信号寄存器 X 为了方便高低速扫描进程进行滤波处理及上升 下降沿信号的捕捉 系统复制了所有 X 0 N 信号到 X 100 100 N 其中 N 为系统 PLC 输入信号组数 一般约定高速扫描进程 plc1 函数使用 X 0 N 而低速扫描进程 plc2 函数则使用 X 100 100 N 关于输入信号滤波 上升 下降沿信号的捕捉 可参阅第四章 编写 PLC 程序的常用技巧与示例 3 2 寄存器 F 系统约定 对于 F 寄存器 请注意 F G 均为地址指针 系统提供如下宏定义 供用 户使用 3 3 1 轴状态字 define axis stat x F ui x 10 轴状态字 共 16 位 bit 其中宏参数 x 表示轴号 其值可为 0 1 2 15 即系统最大可有 16 个轴 其中各位的含义定义如下 define AX SLSP 0 x0001 轴正极限到 define AX SLSN 0 x0002 轴负极限到 define AX HOME LAMP 0 x0004 轴正在回零 define AX CMP LAMP 0 x0008 轴正在进行间隙或螺距补偿 define AX HOME FIN 0 x0010 回零结束 define AX FSTOP LAMP 0 x0020 轴已精确定位停止 define AX HOME GOING 0 x0040 轴正在回零 define AX MOVING LAMP 0 x0080 轴正在移动 define AX UNLINK LAMP 0 x0100 轴非连接状态指示 define AX FAIL LAMP 0 x0200 失败指示灯 define AX ALARM 0 x0400 警报 define AX COORD SETUP 0 x0800 轴已回零 坐标系已建立 define AX SV ENBL 0 x1000 轴伺服使能允许 define AX READY 0 x2000 轴就绪 define AX ONLINE 0 x4000 轴联机 define AX EXIST 0 x8000 轴存在 例 unsigned int u1 axis stat i 轴状态 if u1 asm cli l axis pout axis axis pic a axis asm sti return l 3 3 3 轴当前的实际位置 单位 内部脉冲当量 define axis pact x F l x 10 3 轴的实际位置 其中宏参数 x 表示轴号 其值可为 0 1 2 15 即系统最大可有 16 个轴 3 3 4 轴当前移动速度 单位 脉冲当量 插补周期 define axis speed x F i x 10 5 轴移动速度 其中宏参数 x 表示轴号 其值可为 0 1 2 15 即系统最大可有 16 个轴 3 3 5 轴的负载电流 只对本公司生产的华中 11 型伺服有效 define axis current x F i x 10 6 轴的负载电流 其中宏参数 x 表示轴号 其值可为 0 1 2 15 即系统最大可有 16 个轴 3 3 6 轴的最大速度 可在参数中设置 define axis vmax x F i x 10 7 轴的最大速度 其中宏参数 x 表示轴号 其值可为 0 1 2 15 即系统最大可有 16 个轴 例 设置某一个轴步进的函数可用 C 语言表达如下 void set axis step int axis long displacement long l l1 v v1 if displacement 0 return asm cli l axis pic a axis displacement l1 abs l v l1 200 sys iip time v1 axis vmax axis if v v1 v v1 if vv1 速度限制控制 v v1 if v0 if l l1 l l1 else if l l1 l l axis pic a axis l asm sti set axis jog axis 0 set axis home axis 0 3 6 7 取指定轴当前位置 long get axis pos int axis 所指定的轴号 0 15 本函数可以用 C 语言表达如下 long get axis pos int axis long l asm cli l axis pout axis axis pic a axis asm sti return l 3 6 8 指定轴当是否停止 int get axis den int axis 所指定的轴号 0 15 返回 1 已停 0 没有停 本函数可以用 C 语言表达如下 int get axis den int axis return axis pic a axis 0 axis pvcmd axis 0 0 1 3 6 9 设置轴手摇移动 void handwheel int h no 手摇号 int axis 轴号 int step mul 步进倍率 3 6 10 取手摇状态对应的位移量 int get handwheel int handwheel 手摇号 3 6 11 设置 MST 指令的响应函数 void set mst func int ch 通道 char name 代码类型 M S T void mst func int 响应函数入口地址 第四章 编写 PLC 程序的常用技巧与示例 本章将通过两个常用的 PLC 编程技巧与示例来加快您掌握如何用 C 语言 编写华中数控 PLC 程序的进度与质量 首先 我们复习一下 C 语言中有关操 作运算符的知识 4 1 常用运算操作符 对于基本的 是将 Y2 寄存器第七位的值置 1 Y 2 是将 Y2 寄存器第七位的值置 0 因此完全可以把 当作置 1 操作符 而把 这里 P 50 10 i e2 1 1 i e4 P 50 10 1 如已知 P 50 403 即 P 50 等于 403 那么 P 50 10 等于 3 上面 的表达式就等价于 i e1 1 3 1 即 0001 右移 3 位变成 0000 所以 i e1 等于 0 i e2 1 1 3 即 0011 右移 1 位变成 0001 所以 i e3 等于 1 i e4 3 1 3 即 0011 左移 1 位变成 0110 所以 i e4 等于 6 类似地 应该不难理解如下语句的意义 define x g b X g M06 返回上一步重新执行 return den ch stat ch 当前通道是否正在运动的标志 switch M06 STEP case 0 M06 初始状态 不做任何动作 return case 1 记录当前各轴位置 R l 500 4 get axis pos 0 R l 504 4 get axis pos 1 R l 508 4 get axis pos 2 R l 512 4 get axis pos 8 M06 STEP M06 可执行下一步动作 return case 2 首先移动 Z 轴到换刀位置 if den 0 系统正在运动 等待运动完成 return if axis stat 2 if P i 34 移动 Z 轴到指定位置 绝对坐标 set axis moveto 2 long P i 32 1000L P i 35 M06 STEP return case 3 等待 Z 轴运动完成后 再移动 W 轴 if den 0 return if axis stat 2 M06 STEP if P i 34 移动 W 轴到指定位置 绝对坐标 set axis moveto 8 long P i 33 1000L P i 35 return case 4 等待 W 轴运动完成后 再移动 X Y 轴 if den 0 return if axis stat 8 M06 STEP if P i 34 移动 XY 轴到指定位置 绝对坐标 set axis moveto 0 long P i 30 1000L P i 35 set axis moveto 1 long P i 31 1000L P i 35 return case 5 等待 XY 轴运动完成 if den 0 return if axis stat 1 if axis stat 0 M06 STEP return case 6 等待按一次循环起动键 即捕捉该键上升沿信号一次 if X 0 return case 7 再等待按一次循环起动键 即捕捉该键上升沿信号一次 if X 0 return case 8 将 XY 轴移回换刀前的位置 set axis moveto 0 R l 500 4 P i 35 set axis moveto 1 R l 504 4 P i 35 M06 STEP return case 9 等待 XY 轴运动完成 再将 Z 轴移回换刀前的位置 if den 0 return if axis stat 1 if axis stat 0 set axis moveto 2 R l 508 4 P i 35 M06 STEP return case 10 等待 Z 轴运动完成 再将 W 轴移回换刀前的位置 if den 0 return if axis stat 2 set axis moveto 8 R l 512 4 P i 35 M06 STEP return case 10 等待 W 轴运动完成 if den 0 return if axis stat 8 mod M code ch 1 M06 指令完成 ch ctrl ch CH FEEDHOLD SW 要求再次按循环起动键才能继续 M06 STEP 0 return 在 plc1 函数中调用 M06 的实现函数 void plc1 void plc1 time 16 间隔 16 毫秒后 再调用 plc1 函数 Exec M06 0 调用 M06 的实现函数 记住第 0 3 组信号的最近四次采样值 以实现软件滤波 R ui 30 2 R ui 20 2 记录上上次周期的采样值 R ui 32 2 R ui 22 2 R ui 20 2 R ui 10 2 记录上次周期的采样值 R ui 22 2 R ui 12 2 R ui 10 2 X ui 0 2 记录当前周期的采样值 R ui 12 2 X ui 2 2 下面我们看看华中数控教学车床换刀动作的实现 教学车床刀架有四个刀 位 PLC 通过 X3 0 至 X3 3 即 X 3 设置自动换刀响应函数 ToolPos 0 初始化换刀用的中间寄存器状态 ToolChangeState 0 ToolDesPos 0 自动换刀 T 指令的实现函数 数控系统在自动运行 T 指令时 会调用本函数 void exec T int ch 当前通道号 int T if mac lock mst lock 机床锁住或 MST 锁住 mod T code ch 1 向数控系统发送完成 T 指令的信号 return if ToolChangeState 0 正在换刀 立等待换刀完成 return T mod T code ch 100 计算目地刀位号 switch T case 1 刀位 1 case 2 刀位 2 case 3 刀位 3 case 4 刀位 4 ToolDesPos T 目地刀位号 ToolChangeState 1 启动换刀 break case 0 default 只有四个刀位 对其它刀位不作处理 mod T code ch 1 向数控系统发送完成 T 指令的信号 break 刀具手动换刀的相关信号输入检测 void ToolManualActionInput void if X 3 刀架启动 停止灯灭 Y 2 清刀架正反转位 return if mst lock mac lock 机床锁住 Y 0 刀架启动 停止灯灭 Y 2 清刀架正反转位 return if mode sel MODE JOG 当前不是手动状态 return switch X 1 break case 0 x01 刀号 2 ToolDesPos 2 break case 0 x02 刀号 3 ToolDesPos 3 break case 0 x00 刀号 4 ToolDesPos 4 break if X 1 换刀控制 void ToolAction void switch X 3 break case 0 x02 刀号 2 ToolPos 2 break case 0 x04 刀号 3 ToolPos 3 break case 0 x08 刀号 4 ToolPos 4 break 目的刀具已到 if ToolDesPos ToolPos if ToolChangeState 0 换刀已完成 Y 0 刀架启动 停止灯灭 Y 2 清刀架正反转位 return else if ToolChangeState 1 换刀到位后 要反转刀架一下 ToolChangeState 2 switch ToolChangeState case 0 刀具到位 Y 0 刀架启动 停止灯灭 Y 2 清刀架正反转位 break case 1 转动刀架 正向 start moving tool Y 0 0 x04 刀架启动 停止灯亮 Y 2 清刀架正反转位 Y 2 0 x04 置刀架正转 break case 2 反向转动刀架 然后延时 10 16 ms 以便锁住刀具 Y 0 0 x04 刀架启动 停止灯亮 Y 2 清刀架正反转位 Y 2 0 x08 置刀架反转 case 3 case 4 case 5 case 6 case 7 case 8 case 9 case 10 case 11 case 12 ToolChangeState break case 13 换刀完成 ToolChangeState 0 mod T code 0 1 向数控系统发送完成 T 指令的信号 break 手动方式处理 void manual void ToolManualActionInput 刀具手动换刀的相关信号输入检测 在 plc1 函数中调用换刀实现函数 ToolAction void plc1 void plc1 time 16 间隔 16 毫秒后 再调用 plc1 函数 if stat 调用手动处理 ToolAction 调用换刀动作的实现函数 记住第 0 3 组信号的最近四次采样值 以实现软件滤波 R ui 30 2 R ui 20 2 记录上上次周期的采样值 R ui 32 2 R ui 22 2 R ui 20 2 R ui 10 2 记录上次周期的采样值 R ui 22 2 R ui 12 2 R ui 10 2 X ui 0 2 记录当前周期的采样值 R ui 12 2 X ui 2 2 第五章 PLC 运动控制的实现 第三章介绍了 PLC 程序可调用的一些函数接口 利用其中一些函数便可 实现轴运动控制的实现 本章将示例说明各运动控制函数的使用 5 1 机床轴回零控制 在手动方式下需要控制机床轴回零时 调用函数 set axis home 即可起动 相关轴开始回零 该函数的原型为 void set axis home int axis 所指定的轴号 0 15 int start stop 为 0 取消回零 非 0 回零 当碰到回零开关时 PLC 程序必须通过轴控制字 axis ctrl x AX HOME SW 告诉伺服系统回零开关已到 当伺服轴找到机械零位后 系统 会通过轴状态字 axis stat x 禁止 X 轴点动 set axis jog 1 0 禁止 Y 轴点动 set axis jog 2 0 禁止 Z 轴点动 如果进给保持设定 进给保持键 X1 1 为常闭点 if X 1 取消 X 轴回零 set axis home 1 0 取消 Y 轴回零 set axis home 2 0 取消 Z 轴回零 else X Y Z 轴正点动的输入点分别为 X2 1 X2 3 X2 5 if X 2 起动 X 轴回零 if X 2 起动 Y 轴回零 if X 2 起动 Z 轴回零 return void plc1 PLC 扫描入口函数 1 plc1 time 16 间隔 16 毫秒后 再调用 plc1 函数 回零信号处理 X Y Z 轴回零的输入点分别为 X3 3 X3 4 X3 5 u1 X 3 u2 X 3 R 13 R 23 if u1 X 轴回零 else if u2 if u1 Y 轴回零 else if u2 if u1 Z 轴回零 else if u2 记住输入信号最后三次的采样值 R ui 30 2 R ui 20 2 R ui 32 2 R ui 22 2 R ui 20 2 R ui 10 2 R ui 22 2 R ui 12 2 R ui 10 2 X ui 0 2 R ui 12 2 X ui 2 2 void plc2 PLC 扫描入口函数 2 plc2 time 32 间隔 32 毫秒后 再调用 plc2 函数 回零灯 Y 2 熄灭 X Y Z 轴回零灯 if axis stat 0 点亮 X 轴回零灯 输出点为 Y1 4 else Y 1 灭掉 X 轴回零灯 输出点为 Y1 4 if axis stat 1 点亮 Y 轴回零灯 输出点为 Y1 5 else Y 1 灭掉 Y 轴回零灯 输出点为 Y1 5 if axis stat 2 点亮 Z 轴回零灯 输出点为 Y1 6 else Y 1 灭掉 Z 轴回零灯 输出点为 Y1 6 记住输入信号最后三次的采样值 R ui 130 2 R ui 120 2 R ui 132 2 R ui 122 2 R ui 120 2 R ui 110 2 R ui 122 2 R ui 112 2 R ui 110 2 X ui 100 2 R ui 112 2 X ui 102 2 5 2 机床轴点动 点动控制方式下 只要用户按下点动键 机床轴便不停止运动 在手动方 式下需要点动控制机床轴运动时 调用函数 set axis jog 即可点动相关轴运动 该函数的原型为 void set axis jog int axis 点动轴号 0 15 int speed 点动速度 单位 内部脉冲 插补周期 在 PLC 程序中 点动控制的主要流程为 1 在手动操作点动方式下 根据面板按键计算点动速度 2 检测点动按键状态 调用函数 set axis jog 点动 停止相关轴 例 define Speed MAX 420 坐标轴移动速度最大值 define mode sel R 0 模式选择 define jog speed R 4 点动速率 void manual 手动方式控制处理函数 switch mode sel 根据手动操作模式分别进行处理 case MODE JOG 点动模式 计算 X 轴点动速度 i long jog speed axis vmax 0 Speed MAX if X 2 switch X 2 break case 0 x04 X 输入点为 X2 2 i i break default i 0 set axis jog 0 i X 轴点动 计算 Y 轴点动速度 i long jog speed axis vmax 1 Speed MAX if X 2 switch X 2 break case 0 x10 Y 输入点为 X2 4 i i break default i 0 点动速度为零 即停止运动 set axis jog 1 i Y 轴点动 计算 Z 轴点动速度 i long jog speed axis vmax 2 Speed MAX if X 2 switch X 2 break case 0 x40 Z 输入点为 X2 6 i i break default i 0 点动速度为零 即停止运动 set axis jog 2 i Z 轴点动 return 5 3 机床轴步进 机床轴步进要求用户按一次步进轴 相关轴便步进指定的距离 因此 PLC 程序必须捕捉步进按钮的上升沿 或下降沿 脉冲信号 在手动方式下需要 步进控制机床轴运动时 调用函数 set axis step 即可步进相关轴运动 该函 数的原型为 void set axis step int axis 步进轴号 0 15 long displacement 步进增量 单位 内部脉冲当 量 在 PLC 程序中 步进控制的主要流程为 1 在手动操作步进方式下 根据面板按键计算步进轴及步进增量 2 检测步进按键上升沿脉冲后 调用一次函数 set axis step 步进 相关轴 例 define Speed MAX 420 坐标轴移动速度最大值 define mode sel R 0 模式选择 define axis sel R c 1 轴选择 define step mul R i 2 2 步进倍率 define jog speed R 4 点动速率 void manual 手动方式控制处理函数 switch mode sel 根据手动操作模式分别进行处理 case MODE STEP 步进模式 switch X 2 break case 0 x04 X 步进 set axis step 0 step mul break case 0 x08 Y 步进 set axis step 1 step mul break case 0 x10 Y 步进 set axis step 1 step mul break case 0 x20 Z 步进 set axis step 2 step mul break case 0 x40 Z 步进 set axis step 2 step mul break return void plc2 PLC 扫描入口函数 2 plc2 time 32 间隔 32 毫秒后 再调用 plc2 函数 if R ui 110 2 X ui 100 2 switch X ui 100 2 break case 0 x10 feedover 30 break case 0 x20 feedover 50 break case 0 x30 feedover 80 break case 0 x40 feedover 100 break case 0 x50 feedover 140 break default feedover 100 mode sel auto enable MODE AUTO 0 取工作方式 switch X 100 mode sel auto enable MODE AUTO 0 break case 1 单段方式 ch ctrl 0 CH SGL BLK mode sel auto enable MODE AUTO 0 break case 2 点动方式 mode sel MODE JOG break case 3 步进方式 mode sel MODE STEP break case 4 回零方式 mode sel MODE REF RETURN break case 5 手动攻丝 mode sel MODE JOG break default mode sel 0 if X 100 break case 0 x20 step mul 10 break case 0 x30 step mul 100 break case 0 x40 step mul 1000 break case 0 x50 step mul 1000 break default step mul 100 break 5 4 机床轴直线运动 除点动 步进等机床轴运动外 华中数控系统还为 PLC 提供了如下控制 轴运动的函数 以便用户灵活控制轴运动 5 4 1 设置轴移动距离及速率 void set axis move int axis 轴号 0 15 long displacement 移动距离增量 int speed 移动速率 单位 内部脉冲 插补周期 5 4 2 设置轴移动的目的地及速率 void set axis moveto int axis 轴号 0 15 long position 移动的目的地 绝对坐标 int speed 移动速率 单位 内部脉冲 插补周期 5 5 停止机床轴运动 要停止机床相关轴运动 在 PLC 程序中 调用 set axis stop 即可 该函 数的原型定义为 设置指定轴停止运动 void set axis stop int axis 轴号 0 15 5 5 机床轴运动状态获取 在 PLC 程序中 可能会需要判断某些轴是否正在运动 取轴的当前绝对 位置等 系统提供了如下函数供 PLC 使用 5 5 1 取指定轴当前位置 long get axis pos int axis 轴号 0 15 返回值为指定轴当前位置的绝对坐标 单位为内部脉冲当量 一般为 1 微 米 5 5 2 判断指定轴是否停止 int get axis den int axis 轴号 0 15 该函数返回 1 表示指定轴已停止运动 返回 0 表示轴正在移动 第六章 辅助指令 M S T B 的控制 在 PLC 程序中 对辅助指令进行控制涉及到辅助指令响应函数及其初始 化 PLC 与数控系统的通信等过程 本章将示例说明对辅助指令的控制方法 数控系统在自动运行过程中碰到辅助指令 MSTB 时 将向 PLC 发送 MSTB 指令信号 调用相应的响应函数并等待 PLC 给出动作完成的应答信号 MSTB 响应函数在执行完相关动作后 应向数控系统给出应答信号 否则数控 系统将一直等待 PLC 向数控系统给出应答信号有两种方式 1 PLC 在完成所有相应动作后再给出应答信号 2 PLC 记录下相应指令 马上给出应答信号 然后再执行相应动作 6 1 辅助指令响应函数及其初始化 数控系统在自动运行过程中碰到辅助指令 MSTB 时 将向 PLC 发送 MSTB 指令信号并调用相应的响应函数 这些响应函数必须在 PLC 初始化时 即在函数 init 中 调用函数 set mst func 来指定 如果不指定 系统将调用 缺省的响应函数 该函数将对 MSTB 指令不作实际处理 只是对数控系统给 出辅助指令执行完的信号 该函数的原型定义为 void set mst func int ch 通道 char name 代码类型 M S T B E void mst func int 响应函数地址 PLC 辅助指令的初始化可示例如下 E 指令稍后便会说明 void exec M int ch mod M code ch 1 void exec S int ch mod M code ch 1 void exec T int ch mod M code ch 1 void exec B int ch mod M code ch 1 void exec MST mod int ch void init void 系统初始化程序 set mst func 0 M exec M 辅助功能 M 指令响应函数设置 set mst func 0 T exec T 刀库功能 T 指令响应函数设置 set mst func 0 S exec S 主轴速度功能 S 指令响应函数设置 set mst func 0 B exec B 刀库功能 T 指令响应函数设置 set mst func 0 E exec MST mod MST 模态指令响应函数设置 6 2 访问辅助指令模态值 对于 MSTB 的当前命令值 即数控加工程序传递过来的辅助指令 PLC 程序可通过如下宏进行访问 6 2 1 通道当前的 M 代码 define ch M code x F i x 20 164 M 代码 其中宏参数 x 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 例 通道 0 当前的 M 代码为 ch M code 0 6 2 2 通道当前的 T 代码 define ch T code x F i x 20 165 T 代码 其中宏参数 x 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 6 2 3 通道当前的 B 代码 define ch B code x F i x 20 166 B 代码 其中宏参数 x 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 6 2 4 通道当前的 S 代码 define ch S code x F i x 20 167 S 代码 其中宏参数 x 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 6 3 在 PLC 程序中控制系统辅助指令模态值与系统应答 PLC 程序可以更改数控系统的 MSTB 模态值 即向数控系统发送辅助指 令或其运行情况 具体实现是对宏 ch mst mod ch x 进行赋值相关值 为便于 记忆方便 系统提供了如下宏对辅助指令进行控制 6 3 1 通道当前的 M 代码模态值 define mod M code ch ch mst mod ch 0 M 代码模式 其中宏参数 ch 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 6 3 2 通道当前的 S 代码模态值 define mod S code ch ch mst mod ch 1 S 代码模式 其中宏参数 ch 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 6 3 3 通道当前的 T 代码模态值 define mod T code ch ch mst mod ch 2 T 代码模式 其中宏参数 ch 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 6 3 4 通道当前的 B 代码模态值 define mod B code ch ch mst mod ch 3 B 代码模式 其中宏参数 ch 表示通道号 其值可为 0 1 2 3 即系统最大可有 4 个通道 当执行 ch mst mod ch x 1 后 数控系统将认为相关辅助指令执 行完毕 并自动继续执行下一条数控加工指令 如语句 mod M code 0 1 将表示当前 M 代码已执行完成 数控系统将自动运行下一条指令 但如果在这之前置标志 msthold dis ch CH M HDIS 也可让数控系统 继续等待 直到 PLC 清掉该标志 因此 PLC 一定要在相关辅助指令执行完后 才能将对应的模态变量值 赋值为 1 在有些场合 PLC 可以在不执行完相关辅助指令时 让系统继 续执行下一指令 这时 可对辅助指令的缓冲模态进行赋值 使得系统向 PLC 发送 E 指令 并执行相关辅助指令 例 PL
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!