840D系统NC加工程序向PLC存储器传送数据

2014-06-20 21:19杨伟光
无线互联科技 2014年2期
关键词:数据类型赋值字节

杨伟光

摘 要: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.

猜你喜欢
数据类型赋值字节
L-代数上的赋值
No.8 字节跳动将推出独立出口电商APP
详谈Java中的基本数据类型与引用数据类型
如何理解数据结构中的抽象数据类型
No.10 “字节跳动手机”要来了?
强赋值幺半群上的加权Mealy机与加权Moore机的关系*
简谈MC7字节码
基于SeisBase模型的地震勘探成果数据管理系统设计
利用赋值法解决抽象函数相关问题オ
P2×Cn的友好标号集