840D系统NC加工程序向PLC存储器传送数据
2014-06-20杨伟光
杨伟光
摘 要:840D系统中,NC和PLC有高速数据交换区。数据交换的内容可自由配置,能够实现特定的功能:NC程序获取PLC一侧的机床传感器状态,使NC程序更加灵活的运行;也可以使用NC程序收集PLC所需的一些配置数据。数据交换区在NC一侧是系统变量$A_DBB[],$A_DBW[],$A_DBD[],$A_DBR[],在PLC一侧需通过FC21进行访问,本次试验将测试各基本数据类型和某些复杂数据类型的传送,为具体的应用提供依据。
关键词:NC加工程序;PLC数据块
使用NC加工程序在NC和PLC数据交换区上构造S7300PLC的ANY数据类型的变量并传送给PLC,然后PLC在数据交换区上读取并传输数据到ANY变量指定的地址。
840D和840Dsl系统中,NC和PLC有高速数据交换区。数据交换的内容可自由配置,利用这一特性可以在NC程序中配置地址信息,使数据传输到PLC存储器任一位置。
1 NC与PLC数据的传输
1.1 高速数据交换区原理
高速数据交换区是一块NC和PLC共享的内存区域,因此:数据从NC到PLC即为NC把数据写入数据交换区,然后PLC从数据交换区读取这个数据。数据从PLC到NC即为PLC把数据写入数据交换区,然后NC从数据交换区读取这个数据。
1.2 高速数据交换区的访问方式
NC使用系统变量$A_DBB[n],$A_DBW[n],$A_DBD[n],$A_DBR[n]访问高速数据交换区。PLC使用FC21访问高速数据交换区。
1.3 注意事项
机床数据28150 $MC_MM_NUM_VDIVAR_ELEMENTS配置可写的数量。系统在赋值时对变量的取值范围进行检测,如果超出范围则报警。
2 NC对高速数据交换区的访问
默认情况下NC对高速数据交换区进行读操作,向数据区写数据需要要通道机床数据28150 $MC_MM_NUM_VDIVAR_ELEMENTS 配置可写的数量。否则会出现报警。
⑴各系统变量:$A_DBB[n]用来访问1字节数据,包括BYTE,CHAR;n为字节地址;$A_DBW[n]用来访问2字节整数;n为字节地址,应为2的整数倍;$A_DBD[n]用来访问4字节整数;n为字节地址,应为4的整数倍;$A_DBR[n]用来访问浮点数;n为字节地址,应为4的整数倍。
高速数据交换区以字节地址访问,以整数为例第一个整数$A_DBW[0],第二个整数$A_DBW[2]。如果下标错误,例如$A_DBW[1]则报警。
⑵$A_DBB[n],$A_DBW[n],$A_DBD[n]的賦值数据格式
整数格式:例如$A_DBW[0]=1;$A_DBW[0]=-1
字符格式:例如$A_DBB[0]=”a”
二进制格式:例如$A_DBB[0]=B10000010
十六进制格式:例如$A_DBW[0]=H2E0F
⑶$A_DBR[n] 的赋值数据格式
$A_DBR[n]应为浮点格式,例如$A_DBR[4]=123.456
⑷数据类型转换
NC程序在使用高速数据交换区时可能进行数据类型转换,例如:对$A_DBB[n],$A_DBW[n],$A_DBD[n]赋值浮点类型,系统不认为这是编程错误,而是转换为整数后赋值。$A_DBB[0]=1.23,则结果是$A_DBB[0]=1。向浮点变量赋值整数也有相应过程。如果对数据类型转换没有充分了解,则要尽量避免,否则与预期可能存在偏差。例如:$A_DBB[0]=-1 R10=$A_DBB[0] 结果是R10=255.0,而不是R10=-1。
⑸系统在赋值时对变量的取值范围进行检测,如果超出范围则报警。例如:Byte变量取值范围0到255,则$A_DBB[0]=256会引发报警。
3 NC程序中向PLC任意位置传送数据的步骤
⑴NC程序把要传送的数据存储在数据交换区的指定位置;⑵NC程序在数据交换区构造S7300PLC的ANY数据类型的变量,ny类型中分别指定 起始地址,数据类型,重复次数;⑶在数据交换区写入所要传送的数据在数据交换区上的位置;⑷PLC调用FC21读取步骤2和3在数据交换区上的信息;⑸PLC再次调用FC21读取步骤3所指的数据,并传送到步骤2所指定的PLC存储器。
4 NC程序示例:传送数据到PLC的数据块
PROC XDBX(INT Source=0,INT Destination=0,INT Format=0,INT Length=0,INT DB=0)
IF (DB>0)and(Length>0)and(Destination<8192)
IF (Format==1)or(Format==2)or(Format==4)
$A_DBW[1002]=Source
$A_DBW[1004]=Format*2 B_AND 'H1000'
$A_DBW[1006]=Length
$A_DBW[1008]=DB
$A_DBW[1010]='H8400'
$A_DBW[1012]=Destination*8
$A_DBB[1000]=1
WHENEVER $A_DBB[1000]==1 DO RDISABLE
ENDIF
ENDIF
M17
这个程序在把所需传送数据的地址存在1002,在数据交换区1004到1013处建立一个ANY结构,1000设为信号量。
5 PLC程序
6 试验结果分析
按照事先设定的试验方法,试验了PLC到NC变量,NC变量和PLC的1字节,2字节,4字节基本数据类型的数据交换,以及BOOL变量的传输及检取,最后试验了数组和结构体的传输。其中需要注意NC/PLC之间字节顺序的不同,以保证数据传送到预想的位置。
[参考文献]
[1]SINUMERIK 840Dsl Basic Functions SIMENS.