为机床工具企业提供深度市场分析                     

用户名:   密码:         免费注册  |   申请VIP  |  

English  |   German  |   Japanese  |   添加收藏  |  
广州数控
数控系统

车床 铣床 钻床 数控系统 加工中心 锻压机床 刨插拉床 螺纹加工机床 齿轮加工机床
磨床 镗床 刀具 功能部件 配件附件 检验测量 机床电器 特种加工 机器人

数控系统

电工电力 工程机械 航空航天 汽车 模具
仪器仪表 通用机械 轨道交通 船舶

搜索
热门关键字:

数控机床

 | 数控车床 | 数控系统 | 滚齿机 | 数控铣床 | 铣刀 | 主轴 | 立式加工中心 | 机器人
您现在的位置:数控系统网> 技术前沿>NC程序与PLC数据交换功能应用
NC程序与PLC数据交换功能应用
Jul 15, 2021  来源:成都天翔环境股份有限公司  作者:安保钢
      西门子840D和840D s l系统中,NC和PLC有高速数据交换区。数据交换的内容可自由配置,能够实现特定的功能,NC程序获取PLC一侧的机床传感器状态,使NC程序更加灵活地运行;也可以使用NC程序收集PLC所需的一些配置数据。数据交换区在NC一侧是系统变量$A_DBB[]、$A_DBW[]、$A_DBD[]及$A_DBR[],在PLC一侧需通过FC21进行访问。

      1. NC与PLC数据传输原理
 
      (1)高速数据交换区是一块NC和PLC共享的内存区域,彼此进行写入和读取。
   
      (2)高速数据交换区的访问方式:NC使用系统变量$A_DBB[n],$A_DBW[n],$A_DBD[n]及$A_DBR[n]访问高速数据交换区;PLC使用FC21访问高速数据交换区。高速数据交换区的存储单位是字节。
   
      2. NC对高速数据交换区的访问
 
    默认情况下NC对高速数据交换区进行读操作,向数据区写数据需要使通道机床数据28150$MC_MM_NUM_VDIVAR_ELEMENTS配置可写的数量。否则会出现报警,如图1所示。
 
图 1 
    
      (1)各系统变量: $ 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]则报警,如图2所示。
 
图2 
   
      (2)$A_D B B [ 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'。
   
      (3)$A_DBR[n]的赋值数据格式:$A_DBR[n]应为浮点格式,例如$A_DBR[4]=123.456。
   
    (4)数据类型转换: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。
 
      (5)系统在赋值时对变量的取值范围进行检测,如果超出范围则报警。例如:Byte变量取值范围0到255,则$A_DBB[0]=256会引发报警,如图3所示。 
 
图3 
 

      3. PLC对高速数据交换区的访问

      PLC使用FC21 T r a n s f e r访问高速数据交换区。其中: E n a b l e —— 启动传送;Funct——WORD类型,等于3是读取操作,等于4是写入操作;S7Var——Any类型,指定PLC存储地址;IVAR1——INT类型,指定高速数据交换区的访问地址;IVAR2——INT 类型,指定信号量;Error——BOOL类型,等于1则程序出错;ErrCode——出错时存储错误代码。程序如下:

      CALLTransfer

      Enable :=TRUE

      Funct :=B#16#3

      S7Var :=P#L 0.0 INT 7

      IVAR1 :=1000

      IVAR2 :=1001

      Error :=#error

      ErrCode:=#errcode

 

      A n y类型中分别指定起始地址、数据类型和重复次数。P#L0.0 INT 7解释为起始地址L0.0,数据类型INT,重复次数7IVAR1=1000高速数据交换区的访问地址是$A_DBB[1000]

 

      上文程序从$A_DBB[1000]起始读取7个整数,存储到L0.0起始的7INTLW0LW7

   

      4. 字节顺序

 

      NCPLC的字节顺序是不同的。NC字节顺序:16位高8位在后,低8位在前;32位高16位在后,低16位在前。PLC字节顺序与之相反。FC21运行时会根据数据类型转换字节顺序,使传输的数值保持正确。在编程时要注意这一点。例如:LW0存储16进制数 270ELB0存储27LB1存储0E;传送到$A_DBW[0],则$A_DBB[0]存储0E$A_DBB[1]存储27

 

      5. 信号量

 

      信号量确保N CP L C之间如有一方对一段地址连续访问, 则禁止另一方访问这段地址。信号量在FC21IVAR2 中指定,VAR2=1001即指定$A_DBB[1001]为信号量。

 

      使用信号量时的读写过程:PLC——只有在信号量等于1时对数据区读写,读写完成后把信号量置0,由FC21执行。NC——只有在信号量等于0时对数据区读写, 读写完成后把信号量置1 。使用同步动作执行。例如WHENEVER $A_DBB[1001]==1DO RDISABLE ,当信号量等于1时读入禁止。

 

      6. PLCNC传送BOOL信号

 

      为了使BOOL信号传送到NC,可把多个BOOL信号保存在字节变量中,然后向NC传送这个字节变量。NC使用位指令检测相应的位。 

 

      例如:PLC把某开关信号赋值给L0.3,然后通过FC21LB0传送给$A_DBB[0]NC使用位指令检测第三位,即($A_DBB[0]B_AND'B00001000'),如果开关BOOL量等于1,($A_DBB[0]B_AND 'B00001000')不等于0;如果开关BOOL量等于0,( $A_DBB[0] B_AND'B00001000')等于0

 

      PLCNC传送数组或结构:传送数组在S7Var中把数组的起始地址、数据类型和数据长度指定即可。由于NCPLC字节顺序不同,对于结构则应对其内部各变量逐个按其类型传送。PLC编程时结构和数组可直接赋值给ANY类型的参数,但变量类型为BYTE,有可能在字节顺序上出错。

 

      7. NCPLC任意传送数据的试验

 

      NCPLC传送数据,首先NC把数据写入数据交换区,然后PLC从数据交换区读取数据。PLC要想取得数据首先要知道数据的起始位置、数据量,读到哪里,这些信息必须在编写PLC程序时在FC21参数S7VarIVAR1指定。

 

      使NCPLC任意位置传送数据的方法如下:首先NC把需要传送的数据写入数据交换区并写入数据的起始位置,然后在数据交换区指定位置建立一个ANY结构指定PLC地址数据、类型和数量;PLC调用1FC21读取数据的起始位置和ANYA结构;PLC调用第2FC21以第1FC21读取的起始位置和ANYA为参数读取。

 

      4所示为把所需传送数据的地址存在1002,在交换区10041013处建立一个ANY结构,1000设为信号量。图5所示为两次调用FC21。图6所示为临时变量表,第1次调用的FC21 P#L0.0 INT 7涵盖了变量c t rDepartureDestination。在第2次调用FC21时使用这些变量。

 

图4 

 

图5 

 

  

图6 

 

      8. 结语

 

      全文讲述了NC变量和PLC1字节、2字节及4字节基本数据类型的数据交换,以及BOOL变量的传输及检取、数组和结构体的传输,可以为具体的应用提供依据,这样原来需要频繁编写或选择程序的可以具体处理,提高设备的应用性。 
 
 
    投稿箱:
        如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com