SIEMENS 840D NCU与PLC之间数据通讯实现方法
1.前言
在数控系统调试过程中,经常需要在NC、PLC之间进行数据交换,以使整个系统都在程序控制之中,作为当今世界优秀的高端数控产品代表SIEMENS 840D,它提供了先进的通道和技术支撑,使你可以轻松地实现数据的畅通交换。笔者根据工作过程中积累的设计与编程经验,在此就这个主题与同行探讨。
经常使用的数据交换包括M代码、T代码、H/F功能传输以及840D系统提供的功能强大的接口信号,不需叙述。在这里只是针对一些专用数控功能应用时需用到的数据交换方法进行较详细的说明。
2. PLC读/写NC参数/变量
在进行数控铣镗床滑枕低头补偿或刀库定位控制编程时,都需要用到PLC读/写NC参数或变量。
SIEMENS的8x0D toolbox中提供了FB2(GET)/FB3(PUT)功能块程序,结合使用配套的NC_var Selector软件就可实现此项功能。其中FB2用于读取NC变量(包括MD参数和NC内部变量),FB3用于写NC变量。
2.1 NC_var Selector的使用
对于读取的NC变量,应先使用NC_var Selector软件选择所需的变量,最终建立一个AWL源文件。
下面就以Ver6.4版为例说明其使用步骤:
首先建立一个新的Project,在库文件打开框中根据需要选择ncv_NcData.mdb(读取NC参数)或者ncv_611d.mdb(读取611D驱动参数)等。
根据需要选择相应的变量。为了提高效率,可以双击Unit或Compenent列,等出现Selections on NC-variables对话框时,点击option中selection框,然后在selection parameters方框中选择变量类型。
选完了变量后,必要时可对各变量名称进行修改,然后保存变量表,命名可以将要生成的DB块名称,如DB150.var等。
选择Code菜单下Generate功能,生成DB150.awl文件。(请注意文件目录)
2.2 Step 7下生成DB块
下面以Step 7 V5.1版为例说明其步骤:
在Project中Sources目录下,使用菜单Insert下External Source…功能导入DB150.awl文件。
双击DB150.awl打开文件,在S7 LAD/STL/FBD下进行编译(在File菜单下),生成DB150.stl。
在Project下选择DB150,将其Download到PLC CPU中。
在符号表中增加条目:Symbol——NCVAR,Address——DB150,DATA TYPE——DA150。
2.3 使用FB2功能块
在OB1中增加一个网络,调用FB2,调用时需要自动生成一个背景数据块,此时你可以定义一个当前系统中不存在的块名(如DB110)。下面说明其各参数的含义以及如何输入其数值。
CALL FB 2 , DB110
Req :=块操作请求,类型:BOOL。每激活一次读操作进行一次。1:激活。
NumVar :=变量数量。输入要读取变量的数量,如B#16#3等。
Addr1 :=变量1。如DB150中变量1,“NCVAR”.C1_M_AXCONF_MACHAX_1
Unit1 := Column1:= Line1 :=可输入0或实际位置值。
Addr2 :=变量2。如DB150中变量2,“NCVAR”.C1_M_AXCONF_MACHAX_2
……
RD1 :=变量存放地址1,注意其类型与Addr1对应的变量类型一致。如DB129.DB_VAR1等。
RD2 :=变量存放地址2,其类型应与Addr2变量类型一致。如P#M220.0 INT1等。
RD3 :=……
Error :=出错代码,类型:BOOL。若数据传输出错,则该位为1,正常为0。
NDR :=执行代码,类型:BOOL。若数据传输成功,则该位为1,否则为0。
State :=状态字,类型:WORD。若传输不成功,则通过状态字可判断原因。将状态字数值作比较,可以编程输出到自定义报警地址之中。
NOP 0
2.4 编程注意事项
1) FB2 /FB3生效的前提是在OB100初始化程序中调用FB1(RUN_UP)时须设置NCKomm=TRUE。
2) 为了防止因非正常中止(如断电、RESET等)造成通讯中断,致使通讯数据阻塞,应在非正常中止后的第一个OB1循环中屏蔽FB2/FB3的调用(需用到首次循环变量)。(同样的建议适用于FB4/FB5功能块)
3) 对于多通道数控系统而言,若需要读取通道参数,则在一次FB2/FB3调用任务中ADDR1~8中只能出现一个通道的通道参数。
4) 通常一次读/写过程要持续1~2个PLC循环,因此FB2/FB3只能在循环模式下调用。
2.5 前面主要对读取NC参数进行了阐述,如果需写NC参数,其方法基本一致,FB3的参数也基本相同。
3. NC程序读/写PLC数据
对于多附件头、自动存取刀具的平面刀库,由于其类型/位置检测信号都是进入PLC的,在用NC子程序编写对刀或专用动作应用程序时,经常需要读取PLC数据。
SIEMENS的8x0D toolbox中提供了FC21(Transfer)功能块程序,结合NC变量$A_DB*的使用就可实现此项功能。
3.1 FC21功能块的使用
FC21的使用相对比较简单,只需要在程序中调用它,填入相应的参数即可。下面说明其各参数的含义。
CALL FC 21
Enable :=使能,类型:BOOL。1——激活功能块。
Funct :=块功能,类型:BYTE。3——读NC变量,4——写NC变量
S7Var :=PLC数据地址,类型:任意(根据需传送的数据数量而定)。如:P#M220.0 BYTE 1,P#DB100.DBX8.0 BYTE 4等。注意:起始地址须是指针,后面表示数据长度。
IVAR1 :=类型:INT。对于Funct=3/4时,其含义是位置偏置,即相对起始地址偏置值。通常设为0。
IVAR2 := 类型:INT。对于Funct=3/4时,通常设为-1。
Error := 出错指示,类型:BOOL。若数据传输出错,则该位为1,正常为0。
ErrCode:=错误代码,类型:INT。
在PLC程序中对S7Var的数据值分别进行控制,在NC程序中就可得到相应的值。
3.2 NC编程中$A_DB*变量的使用
840D的NC系统变量中有四种用于读/写PLC变量,分别是$A_DBB、$A_DBW、$A_DBD、$A_DBR,分别用于操作8位字节、16位字、32位双字和32位实数。
变量使用格式:$DB*[n] n=0,1,2…
例如:其中$DBB[0]对应FC21传送的第一个字节,其中$DBB[1]对应FC21传送的第二个字节,依此类推。
编程实例1: IF ($A_DBB[0]<>4)AND($A_DBB[0]<>8)
GOTOF N3000
编程实例2: MSG(“XT_No:“<<$A_DBB[1]<<””)
本文所述的数据交换功能对于840D系统来说仅是凤毛麟角,其更多更简便实用的方法尚需进一步探讨。文中不恰当之处,敬请同行指正为感。
暂无评论内容