王晓峰
(兰州职业技术学院,甘肃 兰州 730070)
工业机器人的普及是实现自动化生产,提高社会生产效率,推动企业和社会生产力发展的有效手段[1]。在工农业生产中,系统可以通过PLC连接,需要确定相关的接口并进行定义,同时需要通过示教器完成编程,最后再通过调试测试是否通过。在这个过程中需要明确PLC的I/O变量,RFID的接口以及使用的方法,PLC的I/O变量可以在前期进行确定,填充到对应的表格里方便查阅。
要确定程序数据类型,类似于clock、rotate等数据类型,RFID的程序数据类型就是rfid,一个数据类型对应了两个变量,分别是rfidcon和rfidstate。下面就这两个变量进行讨论。rfidcon在其中起到的作用是控制命令,负责将机器人的命令传送到PLC里面,在PLC里面要写入对应的子程序来处理机器人传送的信号;rfidstate负责进行状态操作,也就是将处理的结果由PLC反馈给机器人。通过以上描述可以发现,通过rfidcon和rfidstate两个变量可以将RFID操作形成一个完整的闭环控制。所以这两个变量在需要进行RFID控制时要出现在对应的控制程序里。每一个变量也有其对应的数据结构,通过检索每一个数据结构,可以更清晰的了解到内部的构件。在机器人应用过程中,如果已有一个程序模版,则可以直接将该模块加载至机器人系统中[2]。
每一个变量由6个部分构成。RFID拥有自己的接口,每个接口拥有Command、stepno、state、name、date、time这6个变量。其中Command可以实现命令与响应的功能;stepno可以实现工序;state实现工件的状态,即工件的类型;name是操作者标识;date是系统生成的日期,不需要操作者再进行定义;time是系统生成的时间,也不需要额外的操作。
对于Command控制字,有三种对应的指令和与之相匹配的功能,在控制字中出现的指令代号分别是10、20、30,与之对应的功能是完成数据的写操作、完成数据的读操作,最后是可以实现复位,这是控制字所实现的功能;除了控制字来定义Command,还有状态字来完成定义,状态字的指令集较多,可以丰富它的接口功能;在指令集中11实现写这个功能的完成,10为数据在写入中,12为数据写入错误,21为数据读取完成,20为数据读取中,22为数据读取错误,31为复位状态完成,30为数据正在复位中,32显示为复位错误,100显示为正在待机,101显示有芯片正在工作区。接口、控制字、状态字分别完成对应的功能。
开始先要进行复位操作,前一次的操作会在存储区留下信号,需要进行复位,以防对下一次使用造成误操作。既然要使用复位操作,就要使用对应的程序数据类型,程序数据类型中要使用能完成RFID操作的代码。其中已声明程序数据有CON和STATE两种。接口代码要选Command状态字来实现写入的功能,Command状态字里找到可以完成相关复位的功能指令,其中指令30、31、32都和复位功能有关,系统要实现的是复位功能,所以32指令代表的复位错误不在使用之列。
通过以上的分析,得出程序,RFIDCON.Command:=30,此条命令就是实现复位操作,下一步要得到复位是否在进行,复位操作的结果是什么,是否完成了任务,所以要等待复位完成。这里要使用已声明程序数据里的STATE,同时在Command状态字里调用刚才提到的复位功能指令,30表示复位中,下一个是要确定复位的结果,要用31表达复位完成,实现复位的功能。所以表示完成要这样写,waituntil.RFIDSTATE.Command:=31,输入这条指令,等待复位完成。复位工作结束后,需要将指令清空,方便后面写入其他的指令代码。此时需要写一条将之前进行复位操作的状态字清空的指令状态字,这里使用的Command状态字为0,其他的写的方法和第一条一致,清除即可,RFIDCON.Command:=0。以上过程即为复位程序的相关实例,可以在复位操作时使用。
通过以上操作,大致发现RFID设置的方法,结合以上的状态字、命令字、字符指令来设置需要的功能,以其特有的格式完成字符的排列,RFID数据复位后就可以进行数据的准备阶段。
开始先编辑一个文件的名称,在进行文件命名时以本次要实现功能的拼音来命名这个文件,即通俗易懂又方便日后查找,通过将本次任务的名字功能拼音化,对于以后看见文件名字就知道本条程序的功能内容有很大帮助。在本次要实现RFID的射频识别功能,所以命名时就让名字里出现RFID,这里可以设定姓名的拼音或者是一段编号,控制在8个字符。在这里name这个接口用到的数据类型是string,也就是字符串类型。
在数据准备阶段需要用到stepno和state两个接口,其中stepno完成步骤/工序,state实现状态/工件类型。同时要用到程序数据类型为RFID,使用前面已声明的数据RFIDCON,其后面有6个间隔开的数据,这六个就是前面提到的数据结构中的六个接口,在进行数据准备时可以将前三个值设置为0,数据类型为自己定义的变量、数值数据,后两个都为字节。后三个中第一个为name,字符串类型控制在8个字符以内,后两个日期和时间可以不用设置,采用系统默认,但是数据类型还是字符串。这样就把RFID的六个接口设置完毕了。下面还是使用RFIDCON,这一次使用stepno,设置为1,同时另起一行还有RFIDCON,后面用state,设置数值为1。
数据准备完成后可以正式写入程序。首先是控制字的设置,即Command控制字的取值大小,通过前面的案例可以发现在Command控制字数值不同的时候可以表达不同的含义,其控制字有3个不同的值表达不同的功能。程序中要使用Command状态字,在接口中,状态字有11个不同的指令来完成与之相匹配的功能,要将数据写入程序,就要使用状态字里的指令10,表示写入中,也就是RFIDCON.Command:=10,此条程序就是将数据正在写入寄存器里,从这里可以发现程序在书写时的相关规则,RFIDCON在程序里会固定出现,同时Command状态字在其后面表达不同的功能。作为已声明的数据结构类型,RFIDCON和rfidstate会交替出现,作为两个关键的数据结构再和不同数值的Command状态字组合,可以完成多种的任务程序。下一步是完成写入程序,根据上面的操作方法,关键是确定状态字的指令功能代码,同时使用rfidstate表达写入完成。在rfidstate的前面还要使用waituntil,写出来也就是waituntil.RFIDSTATE.Command:=11,在Command状态字中11表示写入功能完成。后面的程序就是RFIDCON.Command:=0,可以看出来和之前的程序是一样的,不管执行什么样的操作,都需要书写指令清除。
通过以上可以将RFID的信号反馈给PLC,其实RFID的信号可以理解为PLC的模拟量信号,通过前端RFID变相的作为传感器来传输信号,通过PLC的程序执行控制机械轴运动。比如RFID在经过复位后开始写入程序,相当于传输进来了一个开关量,这个开关量可以设置成与以下几个量相关,也就是激活相应的功能,当然作为这个开关量本体可以设置为字节输入,也可以是一位输入。要满足以下几个量,有对应的输出反馈到关节轴,带动机器人运动,在运动中出现的几个点要用示教器进行定位作为创建点命名存储在程序中,同时要做好另一个程序,也就是如果没有RFID,没有相关的输入或者是识别失败,要在示教器中确定几个点,将无法识别的物品放回原处,同时抓取下一个物品进行下一轮的识别。将数字输入信号与系统的控制信号关联起来,就可以对系统进行控制[3]。如果本次运动已实现,但未识别到物体,也就是输入1信号没有给到PLC,可以设置一个定时器,在一定时间内如果没有开关量的1信号传入PLC的输入端,定时器就触发另一输出点来让机械手完成返回动作,即前面示教的几个返回点,将无法识别的物体放回原处,等待将物品的识别故障处理后,再进行下一次的抓取和确认。在处理重物的场合,用机器人支撑重量,由人进行仔细定位[4]。以上只是简单的反馈了一下信号有效和信号无法识别的处理方法,输入用I的相应位或字节即可完成,输出用Q的两个位就可以完成对物体的识别,下一步将可识别物品放入前一个工件内,如不能识别,物体会停顿一段时间后按原来的路径返回原处。两种结果两个位就可以完成相应的功能。
通过以上的描述,系统实现了RFID的几个常见程序设置,其他的功能也可以通过以上的操作方法类推,同时就PLC在运动过程中如何设置输入输出以及一些其他附带的功能也有相应的解决办法。同时结合示教器完成最后的收尾及几个固定点的设置也在里面进行了说明。RFID在后续的使用中会开发出更多的功能,在除了机器人领域之外也可以有更多的使用空间。大家也可以在基础之上进行新的算法探索。