最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能生产

通过人机界面实现伺服压装深度的在线修改

发布时间:2015-03-31 作者:贺云飞 付茂  来源:数控机床市场
采用西门子611U单轴数控与S7-300 PLC进行PROFIBUS通讯,编写PLC通讯程序,并在西门子操作面板上开发人机界面,实现对压装深度值的实时显示和在线修改,解决压装深度调整修改困难、时间长和质量风险问题。

5、PLC读写数控压装深度参数的功能块设计

  考虑到程序应用的通用性,采用模块化编程,设计出参数读写用的功能块FC块,通过功能块接口变量进行参数传递,将数控系统地址、需要读写的参数号、参数索引地址等信息作为功能块的接口变量,这样通过调用同一个功能块,写入不同的接口变量就可以很方便的读写不同数控轴的不同参数。

  首先确定参数读写FC的接口变量,IN输入接口变量需要4个:PKW区域的起始地址;待读写的参数号;待读写参数的索引下标;读或写标志位。定义前三个接口变量的数据类型为INT整数型,第四个接口变量数据类型为BOOL位型,定义1为写标志,表示PLC向611U数控系统写数据, 0为读标志,表示PLC从611U读数据。

  压装深度参数数值需要定义到IN-OUT输入输出接口变量中,因在FC块调用过程中,需要对该参数进行读或写。

  为了判断读写功能的完成情况,FC块执行参数读写任务完成以后,还需要反馈一个完成信号,因此在OUT输出接口变量中定义一个读写完成信号。

  FC程序块的接口变量中还需要定义一些临时变量,用于存放程序执行过程中临时用到的一些变量。参数读写需要用到系统功能块SFC14、15,这两个系统功能块的接口变量里有ANY类型的参数,需要一次对应8个字节的PKW区域所有,因此需要在临时变量中定义:PKE两个字节、IND两个字节、PWE四个字节。另外还要定义两个临时变量来存放参数读写时的返回ID值,用来判断参数读写完成后是否出错:TypeRep一个字节; SFC14、15执行后的返回值:RET_V两个字节。以上定义的接口变量如表8。

表8接口变量定义
接口变量定义

  通讯程序编写时,先将需要读写参数的参数号及索引地址写入PKW区域里的PKE和IND:
 
  L #PAR_NO
  T #PKE  //写入参数号
  L #PAR_IND
  T #IND  //写入参数下标

  程序需要根据接口输入变量PAR_W的状态来判断当前是读参数还是写参数,然后跳转到相应的程序段执行:

  A #PAR_W
  JC _W          //若为1则跳转到写参数程序段

  从数控系统中读出带索引的参数值,作业ID号应该为6,需要将此ID号写入PKE的高4位,用字或运算保留其他的位并且将高4位改为6;作业ID号6对应的返回ID应该为4号:

  L W#16#6000    //读参数作业ID号为6
  L #PKE
  OW             //字或运算保留低12位
  T #PKE         //将作业ID号加入PKE中
  L 4
  T #TypeRep     //读参数返回ID应该为4
  JU _C          //直接跳转到总线数据发送程序段

往系统中写参数值的作业ID为8,返回ID为5,同时需要将写入参数的数值写到PWE中:

  _W:  NOP 0     //写参数程序段标号
  L W#16#8000    //写参数作业ID号为8
  L #PKE
  OW             //字或运算保留低12位
  T #PKE         //将作业ID号加入PKE中
  L #PAR_V
  T #PWE         //将写入参数的数值写到PWE
  L 5
  T #TypeRep      //写参数返回ID应该为5

  相关读写参数填写完成后,调用系统功能块SFC15来向总线发送数据,并对应写入发送数据的总线地址、PKW区域的起始地址及长度:

  _C:   NOP   0
  CALL  SFC15                //往总线上传送数据
  LADDR  :=#PKW_ADD          //总线地址
  RECORD :=P#L 0.0 BYTE 8    //PKW区域的起始地址及长度
  RET_VAL:=#RET_V            //SFC15执行的返回值
  读写命令发送到总线上由系统执行,接着用系统功能块SFC14从总线上读出执行的结果来判断执行情况、取回读出的参数值等:
  CALL  SFC14                //从总线上读入数据
  LADDR  :=#PKW_ADD          //总线地址
  RET_VAL:=#RET_V            // SFC14执行的返回值
  RECORD :=P#L 0.0 BYTE 8    // PKW区域的起始地址及长度
  数据读出来后要进行处理分析,检查返回的ID号是否与之前写入#TypeRep的值相等,如果相等说明读写任务成功完成,读出来的参数值有效可用,同时将读写任务完成信号接通:
  L #PKE                  //取PKE区的数据
  L 2#1111000000000000    //高4位数据保留其余清零
  AW                      //字与运算
  SRW 12                  //右移12位分离出返回ID号(高4位)
  L #TypeRep              //前面赋值的返回值
  ==I                     //比较
  JCN _AL                 //如果不相等,出错跳转
  L #PWE                  //取出读出来的参数值
  T #PAR_V
  SET  
  = #ACT_OK               //读写任务完成信号
  _AL: NOP 0

  读写参数的功能块编写完成后,在主程序中调用功能块就可以实现不同参数的读写功能,调用功能块如下。