第4章 运动控制器与QPLC多CPU数据通信的实用方法
三菱运动控制器Q173是功能强大、指令丰富的数控系统,能够控制运动轴数为16轴(由多台运动控制器可以构成96轴的系统),能够实现原点返回、手轮运行、JOG运行,以及自动模式下的直线插补、圆弧插补、螺旋线插补、4轴插补等复杂功能。而且该运动控制器还能够实现高达32轴的同步运行。但是运动控制器Q173不能独立运行,只能作为三菱QPLC的一个运动CPU模块,在QPLC平台上运行。运动控制器Q173的运动程序需要用专用软件开发。但整个系统的I/O信号处理,对运动控制器Q173的控制和状态显示需要“顺序控制CPU”处理,所以在“顺序控制CPU”和“运动控制器CPU”之间必须有通信处理。
4.1 运动控制器CPU的信息及传递
图4-1所示是基于QPLC的运动控制系统。在该系统中,运动控制器Q173作为一个CPU模块安装在基板上。运动控制器内部有诸多接收指令的软元件和表示工作状态的软元件,如“JOG起动”“自动起动”“手轮倍率”是指令型信号,“各轴的当前位置”“定位完成”“虚模式切换完成”“诊断”“报警原因”等是状态信号。
在构建一套完整实用的控制程序时,通过触摸屏向运动控制器发出指令和显示其工作状态是必需的,而要获取运动控制器的信息必须使用多CPU通信方法。
图4-1 基于QPLC的运动控制器系统
4.2 多CPU通信方法
在以三菱QPLC构成的运动控制多CPU系统中,顺序控制CPU(以下简称1#CPU)负责处理外围的各种输入输出信号,而运动控制器CPU(以下简称2#CPU)负责对各运动轴的控制。
1#CPU与2#CPU之间的通信是通过基板构成的总线来执行的。其信息交换如图4-2所示。
1)在1#CPU指定要进行通信的数据区域(图4-2中为B0~B1F),当1#CPU进行END处理时,这部分区域的数据被写入1#CPU的自动刷新区。同时,2#CPU在做主循环处理时将“1#CPU的自动刷新区数据”读取到2#CPU被指定的软元件区域(软元件区域用参数设定,图4-2中为B0~B1F)。
2)在2#CPU指定要进行通信的数据区域(图4-2中为B20~B3F),当2#CPU进行END处理时,这部分区域的数据被写入2#CPU的自动刷新区。同时,1#CPU在做主循环处理时将“2#CPU的自动刷新区数据”读取到1#CPU被指定的软元件区域(软元件区域用参数设定,图4-2中为B20~B3F)。
图4-2 1#CPU与2#CPU之间的信息交换
3)1#CPU要发送到2#CPU的数据区域和要存放2#CPU发送过来数据的区域由对1#CPU编程的软件GX works2设定。
在GX works2软件的“PLC参数-多CPU”中进行图4-3和图4-4所示的设置。
4)2#CPU要发送到1#CPU的数据区域和要存放1#CPU发送过来数据的区域由对2#CPU编程的软件MT-developer2设定。
在MT-developer2软件的“System Setting→Basic Setting→Multiple CPU Setting”中进行图4-5和图4-6所示的设置。
图4-3 在GX works2软件的“PLC参数-多CPU”中进行的设置1
图4-4 在GX works2软件的“PLC参数-多CPU”中进行的设置2
图4-5 在MT-developer2软件的“System Setting→Basic Setting→Multiple CPU Setting”中进行的设置1
图4-6 在MT-developer2软件的“System Setting→Basic Setting→ Multiple CPU Setting”中进行的设置2
为了编程的方便,将1#CPU发送的数据区域与2#CPU接受的数据区域处理为“同一名称”是可以的,但是必须明确:这是各自CPU中的软元件。
4.3 运动控制器中的指令型元件和状态型元件
运动控制器和数控系统一样,也分为“表示工作状态”的元件和作为“指令信号”的元件。
运动控制器全部由M元件来作为“表示工作状态”的元件和作为“指令信号”的元件。因此,对一部分M元件规定了用途,另外一部分M元件(M5600~M8191)可以作为用户自用(称为“用户自用软元件”)。
运动控制器内部有诸多接收指令软元件和表示工作状态的软元件,如JOG起动、自动起动、手轮倍率是“指令型信号”,而各轴的当前位置、定位完成、虚模式切换完成、诊断、报警原因等是“状态”信号。在构建一套完整实用的控制程序时,通过触摸屏向运动控制器发出指令和显示其工作状态是必需的。
4.3.1 指令型元件
指令型元件:驱动该元件就可以使某项指令、功能生效。运动控制器中的指令型元件有位元件和字元件。
1.位元件
M3072~M3080表示“指令”的公共软元件。
M3136~M3139表示“指令”的特殊继电器。
M3200~M3839表示对各轴的指令信号。
M4800~M5439表示对各虚轴的指令信号。
M5440~M5487表示对各同步编码器的指令信号。
2.字元件
字元件指令类型为数据形式,以数据寄存器表示,如设置点动速度等。
D640~D703表示JOG速度设定值。
D706~D757表示系统公共指令元件(如手轮倍率等)。
4.3.2 状态型元件
状态型元件:本类型软元件表示了“运动控制器”和各伺服轴的工作状态。运动控制器中的状态型元件有位元件和字元件。
1.位元件
M2000~M2271表示系统的公共工作状态。
M2320~M2399表示“工作状态”的特殊继电器。
M2400~M3039表示各轴的工作状态。
M4000~M4639表示各虚电动机轴的工作状态。
M4640~M4687表示各同步编码器轴的工作状态。
2.字元件
字元件是表示运动控制器状态的“数据型”软元件。
D0~D639表示1~32轴的工作状态。
D800~D1119表示虚拟电动机轴1~32轴的工作状态。
D1120~D1239表示同步编码器轴的工作状态。
D1240~D1559表示1~32凸轮轴的工作状态。
D9000~D201表示报警及工作状态的特殊寄存器。
4.4 对运动CPU中常用软元件的解释
1.表示“指令”和“状态”的位元件
M0~M1999表示可以给用户使用的软元件。
M2000~M2319表示系统公共的软元件。
M2320~M2399表示“工作状态”的特殊继电器。
M2400~M3039表示各轴的工作状态。
M3072~M3135表示“指令”的公共软元件(实际编程时应该使用这部分元件,这部分元件与M2000~M2319有部分功能重复)。
M3136~M3199表示“指令”的特殊继电器。
M3200~M3839表示对各轴的指令信号。
2.系统公共软元件的用途
M2000~M2319是系统公共的软元件,最常用的有:
M2000表示PLC就绪标志(指令)。
M2042表示所有轴伺服ON指令(指令)。
M2043表示从实模式切换到虚模式请求(指令)。
M2044表示实、虚模式的切换状态(是否进入虚模式)(状态)。
M2045表示实、虚模式的切换故障检测(是否有切换故障发生)(状态)。
M2046表示同步偏差警告(状态)。
M2048表示JOG同时起动(指令)。
M2049表示所有轴伺服ON的(状态)。
M2051表示手轮1使能(指令)。
对于上述“指令”不能从QPLC一侧直接驱动。处理方法是驱动对应的数据寄存器D的bit0位,但要用专用的读写指令。对于这部分公共软元件,要分清是状态元件还是指令元件。
3.表示“工作状态”的软元件
M2320~M2399是表示“工作状态”的特殊继电器,这部分全部是“工作状态”信号,只有在做比较完善的诊断界面时才会用到。
M2400~M3039表示各轴工作状态,每一轴有20种工作状态(如定位完成等),可根据需要选用。
4.表示“指令”的软元件
M3072~M3135是表示“指令”的公共软元件,这部分专门作为指令使用,与M2000部分相同。
M3200~M3839表示对各轴的指令信号,如JOG正转等,每一轴有20个信号。
M4000~M4639表示各虚电动机轴的工作状态。要特别注意虚轴和实轴没有任何对应关系。虚轴轴号只由“机械构建图”确定。而实轴由“站号”设定。虚轴的工作状态有5种(如定位完成),可根据需要选定。
M4800~M5439表示对各虚轴的指令信号。如JOG正转等,每一轴有8个信号,可根据需要使用。
以上信号都是运动控制器内部的信号。为了要从“顺序控制CPU”对其控制。必须分以下两步进行处理:
1)建立“运动控制器”用户软元件与“顺序控制CPU”软元件的对应关系(通过设置多CPU参数刷新)。这是因为“运动控制器”用户软元件是用户可以自由使用的,因此可以设定某一连续区域专门对应于1#CPU传送过来的数据区域。
2)建立“运动控制器”用户软元件和“运动控制器”固定用途元件的关系。由于“固定用途元件”不是连续排列的,不便于传送刷新参数的设置,所以为了达到便于设置刷新参数的目的,就必须建立“运动控制器”用户软元件和“运动控制器”固定用途元件的关系,这需要在SFC的信息传递程序中完成,如图4-7所示。
图4-7 SFC的信息传递程序框图
4.5 运动控制器中信息程序的编制原则
4.5.1 处理“开关量信号”
1)选定运动控制器中必须使用到的“指令型”信号。
2)选定运动控制器中必须使用到的“状态型”信号。
3)建立运动控制器中“用户软元件”和“固定用途元件”的关系。
设定使用运动控制器中“用户软元件”从M6000开始刷新。图4-7中F0运算步的运算程序如下:
OUT M2000=M6000//PLC就绪指令
OUT M2040=M6001//速度切换指令
OUT M2042=M6002//所有轴伺服ON指令
OUT M2043=M6003//从实模式切换到虚模式请求指令
OUT M2048=M6004//JOG同时起动(指令)
OUT M2051=M6005//手轮1使能(指令)
OUT M2052=M6006//手轮2使能(指令)
OUT M2053=M6007//手轮3使能(指令)
OUT M3136=M6008//设置时钟指令
OUT M3137=M6009//读时钟数据指令
OUT M3138=M6010//故障复位指令
OUT M3139=M6011//读伺服参数指令
OUT M3200=M6200//1轴停止指令
OUT M3201=M6201//1轴快速停止指令
OUT M3202=M6202//1轴JOG正转起动
OUT M3203=M6203//1轴JOG反转起动
OUT M3204=M6204//1轴完成信号OFF指令
OUT M3205=M6205//1轴速度位置切换使能指令
OUT M3207=M6207//1轴故障复位指令
OUT M3208=M6208//1轴伺服故障复位指令
OUT M3209=M6209//1轴起动时外部输入停止信号无效指令
OUT M3212=M6212//1轴进给当前值更新请求指令
OUT M3213=M6213//1轴地址离合器参考设置指令
OUT M3214=M6214//1轴凸轮参考定位设置指令
OUT M3215=M6215//1轴伺服OFF指令
OUT M3216=M6216//1轴M代码FIN指令
//以上是对1轴的指令,其余各轴可对应设定
//(分配给实轴M6200~M6399,8轴)
OUT M4800=M6400//虚1轴停止指令
OUT M4801=M6401//虚1轴快速停止指令
OUT M4802=M6402//虚1轴JOG正转起动
OUT M4803=M6403/虚1轴JOG反转起动
OUT M4804=M6404//虚1轴完成信号OFF指令
OUT M4807=M6407//虚1轴故障复位指令
OUT M4809=M6409//虚1轴起动时外部停止输入无效指令
OUT M4819=M6410//虚1轴FIN完成指令
//(分配给虚轴M6400~M6499,8轴)
//表示指令的信号从M6000~M6499(刷新参数设置从OUT M6000~M6639,共40点)
//以下表示系统公共状态信号
OUT M6801=M2001//1轴起动成功标志
OUT M6802=M2002//2轴起动成功标志
OUT M6803=M2003//3轴起动成功标志
OUT M6804=M2004//4轴起动成功标志
OUT M6805=M2005//5轴起动成功标志
OUT M6806=M2006//6轴起动成功标志
OUT M6839=M2039//检测到SFC图出错
OUT M6841=M2041//检测到系统设置出错
OUT M6844=M2044//虚模式切换完成
OUT M6845=M2045//虚模式切换过程出现故障
OUT M6846=M2046//同步偏差报警
OUT M6847=M2047//检测到运动槽出错
OUT M6849=M2049//所有伺服轴=ON(状态)
OUT M6850=M2332//外部急停输入标志
//(以下是各轴状态信号)
OUT M6900=M2400//1轴定位起动完成信号
OUT M6901=M2401//1轴定位完成信号
OUT M6902=M2402//1轴到位信号
OUT M6903=M2403//1轴指令到位信号
OUT M6904=M2404//1轴速度控制信号
OUT M6905=M2405//1轴速度/位置切换信号
OUT M6906=M2406//1轴零点通过信号
OUT M6907=M2407//1轴故障检测信号
OUT M6908=M2408//1轴检测到伺服故障信号
OUT M6909=M2409//1轴原点回归请求信号
OUT M6910=M2410//1轴原点回归完成信号
OUT M6911=M2411//1轴正限位信号
OUT M6912=M2412//1轴负限位信号
OUT M6913=M2413//1轴STOP信号
OUT M6914=M2414//1轴DOG信号
OUT M6915=M2415//1轴伺服就绪信号
OUT M6916=M2416//1轴转矩限制中信号
OUT M6918=M2418//1轴虚模式不可继续运行信号
OUT M6919=M2419/1轴M功能FIN信号
//其余各轴照此分配
//(M6900~M7099分配给各轴表示状态)
//以下表示虚轴状态
OUT M7100=M4000//虚1轴定位起动完成信号
OUT M7101=M4001//虚1轴定位完成信号
OUT M7103=M4003//虚1轴指令到位信号
OUT M7104=M4004//虚1轴速度控制信号
OUT M7107=M4007//虚1轴故障检测信号
OUT M7109=M4019//虚1轴M代码完成信号
//其余各轴照此分配
//(M7100~M7299分配给各轴表示状态)
//刷新参数设置M6800~M7439(40点)
OUT指令功能如下:
OUT M2042=M6002;当M6002=ON,则M2042=ON;当M6002=OFF,则M2042=OFF。
4.5.2 处理“数据量信号”
1)选定运动控制器中必须使用到的“指令型数据量信号”。
2)选定运动控制器中必须使用到的“状态型数据量信号”。
3)建立运动控制器中“用户软元件”和“固定用途元件”的关系。
对指令型信号的处理——指令寄存器(用户软元件从D6640开始启用)。图4-7中F1运算步的运算程序如下:
D640L=D6640L//1轴JOG速度设定
D642L=D6642L//2轴JOG速度设定
D644L=D6644L//3轴JOG速度设定
D646L=D6646L//4轴JOG速度设定
D704=D6704//PLC就绪标志
D705=D6705//速度切换
D706=D6706//所有轴伺服ON
D707=D6707//实、虚模式切换请求
D708=D6708//JOG操作同时起动指令
D710=D6710//JOG操作同时起动轴设定寄存器
D714L=D6714L//手轮操作选轴设定寄存器
D720=D6720//1轴手轮倍率设置寄存器
D721=D6720//2轴手轮倍率设置寄存器
D722=D6720//3轴手轮倍率设置寄存器
D755=D6755//第1手轮使能请求寄存器
//从D6640~D6755被占用
//刷新参数设置2:D6640~D6799(共160点)
//对状态监视型信号的处理:状态监视寄存器(用户软元件从D7000开始启用)
D7000L=D0L//1轴进给当前值
D7002L=D2L//1轴实际当前值
D7004L=D4L//1轴偏差计数器值
D7006=D6//1轴轻微错误代码
D7007=D7//1轴严重错误代码
D7008=D8//1轴伺服错误代码
D7009=D9//1轴原点回归再移动量
D7010L=D10L//1轴DOG ON后移动量
D7012=D12//1轴执行程序号
D7013=D13//1轴执行M代码号
D7014=D14//1轴转矩限制值
D7015=D15//1轴恒速控制的数据设置点
D7016L=D16L//1轴移动量变更寄存器
D7018L=D18L//1轴停止输入时的当前值
//其余各轴照此分配,占用D7000~D7399
//以下是虚轴的状态
D7400L=D800L//虚1轴当前值
D7402=D802//虚1轴轻微错误代码
D7403=D803//虚1轴严重错误代码
D7404=D804//虚1轴执行程序号
D7405=D805//虚1轴执行M代码
D7406L=D806L//虚1轴差速齿轮后的当前值
D7408=D808//虚1轴故障检测出的轴号
//占用点从D7000~D7499,500点
在图4-7中,编制信息传递程序的目的就是要建立“运动控制器”中一个连续的数据区域。这个区域包含了整机控制程序所必需的对运动控制器的指令信号和运动控制器及伺服系统的状态信号。然后通过多CPU的数据通信,将从“顺序控制CPU”发出的指令传送到“运动CPU”,同时将运动控制器及伺服系统的工作状态信号传送到“顺序控制CPU”,“顺序控制CPU”据此进行判断处理和显示。
以上就是运动控制器CPU的信息及其传递过程。