整个位置读取程序从功能上说大致由数据读取、校验和计算、错误判别处理三个部分组成,其中校验和计算可穿插在数据读取程序中。
在数据读取程序段,根据传输协议规定的信号逻辑配合关系,读取全部32位位置数据和6位校验和数据。
在读取传输数据的同时,计算32位位置数据的校验和。
全部数据读取完成后,对读取的校验和数据与计算得到的校验和数据进行比较。若不相同则重新进行传输,重复次数大于3次,则停止传输,并给出报警信号。
在图5中,σm、σd、σc表示所有的标志位、数据寄存器、计数器,c0、c1用于读取次数(即第几组bit0、bit1数据)计数。c0用于对位置数据的数据读入次数判断,故预置值为17(比应读次数16大1);c1用于对全部数据读入次数判断,故预置值为19(共19次)。c2用于对传输出错重新进行传输的次数判断,故预置值为3。每次读入的2位数据在存储时要进行处理,以恢复其原来定义的数据结构。详细的处理指令见后。
3.2 样板程序
上述程序是以三菱q系列plc为例编制的传输程序,由于篇幅所限,我们没有以梯形图形式给出程序,而是以语句表形式列出。在上述程序中,m99是传输启动信号,m214是传输出错标志。y0-y2是sv-on、absm、absr信号,x10-x12是bit0、bit1、trd信号。d10是计算校验和值,d12是绝对位置数据输出值。m120-m157是存储38位传输数据的中间标志位,其中m120-m151用于位置数据,m152-m157用于校验和数据。
在该程序中,大多数指令为简单的基本指令,仅在读入数据处理时,才使用了wand(逻辑与)、sf(移位)、add(加法)等功能指令。各类其它品牌的plc一般都支持这些指令,所以上述程序的可移植性是比较好的。
对于上述程序,我们着重介绍每次读入的二位数据的处理方法。为了方便说明,相关程序的梯形图和说明列出如图6所示。
4 应用案例
典型的方式如图7所示。主流plc一般都内置脉冲输出定位功能或者可配置带有脉冲输出的定位功能模块。为了使控制系统和机械运动位置之间建立同步,一般需要回原点。但是如果采用绝对位置系统,则仅需要在调试时确定一个原点,以后系统就无需回原点了。当系统开机时,plc执行该传输程序,通过伺服驱动器之间的传输信号线将伺服当前位置数据传输到plc中,然后plc将读到的当前机械位置写入定位控制系统的当前位置寄存器中。这样控制系统与机械系统之间就建立了同步关系。以后,机械系统的当前绝对位置由plc的位置控制系统根据发出的脉冲数来确定。
5 结束语
用普通plc指令实现伺服系统当前绝对位置读取,与用rs422口采用通讯方式读取伺服电机绝对位置的方式相比,该方式实时性较差一些。但是这种方式在构建低端绝对位置系统应用场合,仍具有较大的实际意义。在编制中,考虑到某些plc的低端cpu(如q系列q00cpu)不支持步进指令,所以整个传输程序使用普通指令、采用了类似于步进指令的编程方式,程序的可读性和可移植性都比较好,在使用其它品牌的plc时只需作很少的修改即可。