【摘要】 从NUM数控系统PLC梯形图程序变址操作和C语言函数操作两种特殊的变量操作方式,通过三个变量的分析查找,详细介绍NUM数控系统PLC程序变量写输出的查找方法。
在NUM数控机床故障维修中,有许多变量往往没有直接的输出线圈,维修人员经常碰到这种情况无从深入查找,给维修人员故障查找带来很大的困难,为了广大维修人员快速排出故障,掌握NUM特殊变量写输出的查找方法,下面以XF0235数控磨床和ETFA机械手PLC程序为例,详细介绍查找方法。
1、变址操作
NUM数控系统通过变址增量很容易地扫描大量连续变量的值。除了变量.&(地址)之外所有的变量都可以变址,变址必须是一个 %Mxxx.W 变量,同时变址增量只能是字节。
变量变址操作原理如下,如果%M100.W = 8,则%M5.B [%M100.W] 寻址变量为%MD.B,其中%M5.B是基地址,%M100.W是变址(偏移),5 + %M100.W = 5 + 8 = 13,十六进制为D,即对应变量地址为%MD.B。
1.1 以故障位%M8d.0为例进行分析查找
首先查找交互参照表,要查找变量的局部交互参照表如下:
从上表可知,该变量在交叉表中没有线圈,所以应考虑变址赋值。根据规律往回查找变量交互参照表,查找同类型功能(故障位)的第一个变量的写地址,即基地址。
从上交叉表可以看出,第一个故障位对应%M0.0,在%SP29第0步中有写输出,查看%SP29第0步,程序如下:
从程序中可知要查找的变量%M8d.0应包含在%M0.0[%M11d0.W]变址中,
%M0.0[%M11d0.W] %M8d.0
根据变址规则:0 + %M11d0.W = 8d 即:%M11d0.W = 8d
由上述程序可知%M11d0.W = %Y2.W,则即:%Y2.W = 8d
由于NUM数控PLC程序的地址是按16进制编址的,所以在程序中查找0x8d,在%SP141中找到3处,如下:
%SP141
通过分析上面程序三处0x8d的程序,后面的网络中刚好有要查找的%M8d.0触点,可判断是该程序块执行了spy(0x1d,0x8d,0x44,0x15,0x1)函数,而执行spy函数时刚好其四个参数进入局部变量%Y,即%Y0.L=0x8d, 屏幕上显示的第一行故障报警号
%Y4.L=0x44, 屏幕上显示的第二行故障报警号
%Y8.L=0x15, 故障类型
%YC.L=0x1,动作类型
从%Y0.L=0x8d得出%Y2.W=0x8d,也就说明执行spy(0x1d,0x8d,0x44,0x15,0x1)函数时把%M8d.0置位,而spy(0x1d,0x8d,0x44,0x15,0x1)函数即为故障信息显示程序,0x8d=141为故障号。继续向前翻页查找%Wf.0和%Wf.1,故障的原因为%I606.2和%I606.3,见如下程序块。
%SP141
从上面可推知,M变量的地址转换为10进制刚好等于故障号,也就是说故障报警时对应报警号的v变量置位。
1.2 以M功能变量%v1e6.0为例进行分析查找
要查找变量的交互参照表如下:
从上表可知,该变量在交叉表中没有线圈,应考虑变址赋值。看符号象是M功能码,根据规律往回查找变量交互参照表,查找同类型功能的第一个变量的写地址,即基地址。
从交叉表可以看出,第一个M功能码对应% V100.0,在%SP0第0步中有写输出,查看%SP0第0步,程序如下:
从中可知要查找的变量%v1e6.0应包含在上述%v100.0[var]变址中,
%v100.0[var] %v1e6.0
根据变址规则:100 + var = 1e6 即:var = 1e6-100=e6,因0xe6=230,也即var=230,从程序已知这个值来自于M功能码,并且M230是一个不带应答的M功能码,由上可知var=%Mff0.W 或 %Mff2.W ,已知%v1e6.0为侧头前进命令,与轴组1有关,同时在零件加工程序中查找M230,M230在%508中,而%508又由%1.1调用,显然该M功能码来自轴组1,所以只能是%R104.W = 230,从而可知当1号轴组执行不带应答的M230功能码时置位%v1e6.0。
总结:变量%v100.0~%v1ff.0对应M0~M255功能码的执行,当这些M功能码执行时置位相对应的v变量,要查找的变量的地址减去100的十进制数为M功能码号。
2、函数操作
函数操作一般是对字节、字和长字进行操作,对位是一种间接的赋值方式,所以函数操作对位来说只能通过间接查找方法,下面以ETFA机械手PLC程序M.F13变量为例进行分析查找。
通过交互参照表查找M.F13没有直接写输出的地址,分析为间接写输出,找相近的M.F10,在%SP22的第6步有写输出,局部交互参照表如下。
打开%SP22梯形图第6步,M.F13包含在M.F10中,通过oct(字节转化为位)函数把B.400-B.407八个位传给B.408-B.40F,再通过bit(位转化为字节)函数把B.408-B.40F八个位传给M.F10-M.F17,由此可知M.F13的值来自于B.403。查B.403有多个输出,它是一个中间变量,要找离M.F10之前临近的B.403,见下面%SP22第4-5步程序。
%SP22第6步程序:
在线查看B.403的状态,发现机械手与机床联机时B.49a被置1,导致B.403闪断,从而导致M.F13为0。
查找B.49a输出,见下面%SP1第4步程序。
%SP1第4步程序:
分析B.49a置位的原因,发现E.35一直为0,查看E.35原理图为Z轴原位开关(AXE Z DEGAGE),调整该开关,使E.35=1,故障解决。
间接位操作函数
间接位操作函数是以字节、字、长字进行操作,它间接地改变了位的值,除了bit、oct外还有以下函数。
setb(&dest, b, n)函数从目标地址(dest)开始,连续给n个字节赋值,值为b。
setw(&dest, b, n) 函数从目标地址(dest)开始,连续给n个字赋值,值为b。
setl(&dest, b, n) 函数从目标地址(dest)开始,连续给n个长字赋值,值为b。
spy(moduleno {, argn}6 ...) 函数第一个变量为调用子程序的号,后为6个可选参数,函数执行时可选参数的值进入局部变量%Y,%Y为 32位的长字,局部变量的分配如下:
%Y0.L包含第一个参数的值
%Y4.L包含第二个参数的值
%Y8.L包含第三个参数的值
%Yc.L包含第四个参数的值
%Y10.L包含第五个参数的值
%Y14.L包含第六个参数的值
3、结束语
通过上述三个变量的详细分析和查找,对于NUM数控PLC梯形图变量的查找和故障维修,必将为广大NUM数控维修人员起到极其重要的指导作用。
如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com