PLC实现三菱伺服绝对位置值读取
PLC实现三菱伺服绝对位置值读取
1 引⾔
1.1 三菱伺服绝对位置传输功能
三菱mr-j2s及mr-j3系列伺服系统内置绝对位置数据传输协议,通过驱动器三个输⼊和三个输出数字量端⼝与plc的三个输出三个输⼊⼝相配合,实现伺服电机绝对位置向plc的传输。plc读取伺服电机的绝对位置数据后,可⽅便地构成⼀个绝对位置系统。这在许多情况下,⾮常有实际应⽤价值。在这⾥要说明的是,以上所述的绝对位置传输协议并⾮是三菱伺服系统本⾝也具有的通讯协议。前者是通过伺服驱动器和plc的数字i/o⼝实现的,后者是通过在rs422通讯⼝实现的。
1.2 绝对位置读取
作为配合,三菱fx系列plc也内置了绝对位置读取指令(dabs指令),可⽅便地读取三菱伺服的绝对位置值。但是在三菱家族的a系列和q系列中并没有提供绝对位置读取指令,当然其它品牌的plc更没有与之配合的绝对位置读取指令了。尽管从三菱的产品线来说,其q系列plc提供了qd75m位置模块,使⽤b系列的伺服驱动器,通过sscnet总线来实现实时的绝对位置通讯。但是在⼀些低端应⽤场合及其它品牌plc作为
控制器的场合使⽤其伺服驱动器绝对位置传输协议来构建绝对位置系统还是⾮常有意义的。换⾔之说,有必要对于fx系列之外的plc,开发并提供⼀种对三菱伺服绝对位置值读取的的⽅法。下⾯我们以三菱q系列plc为例就这⼀问题展开讨论。
2 三菱伺服绝对位置传输协议
2.1 位置传输协议的信号定义
图1是伺服驱动器与plc的信号连接图。在本传输协议中,以plc为主机,伺服驱动器为从机,既plc发出
8-10万的车传输指令后启动传输过程。在plc输出的四个信号中,y0-y2参与了数据传输,y3并不参与传输。y3⽤于对所构建的绝对位置系统设置原点。在y0-y2中,y0⽤于给出伺服开启信号,y1⽤于对伺服发出abs传输模式指令,使伺服驱动器处于数据传输状态。这时伺服驱动器将改变某些输出端的定义(后述)。y2⽤于发出数据传输的请求,与“传输数据准备完毕”信号配合,完成伺服驱动器发送数据和plc 接收数据的同步。plc的三个输⼊信号x10-x12接收来⾃伺服驱动器的输出信号,x10、x11是两位位置数据信号(bit0、
bit1),x12为传输数据准备完毕信号,是⼀个同步信号。该三个信号原来在伺服驱动器内另有定义,伺服驱动器在接收y1给出的传输模式指令后⾃动切换成当前这种功能。
2.2 位置传输协议数据交换说明
在图2中,plc给伺服驱动器同时给出伺服开启信号sv-on和abs传输模式信号abs后,plc 和伺服驱动器将按照下列顺序进⾏进⾏数据传输:
(1)伺服驱动器接到absm信号后,检测和计算绝对位置数据,切换do1、zsp、tlc的功能为bit0、bit1、数据传输准备完毕(trd)功能;并将trd置1。
北京现代
(2)plc接到trd=1的信号后,将abs请求信号absr置1,送到伺服驱动器。
(3)伺服驱动器接到absr=1的信号后,在bit0、bit1上输出⼆位数据,并将trd置0,通知plc,⼆位数据已输出。plc可以读数据了。
(4)plc接到trd=0的信号后,读⼆位数据,然后将abs请求信号absr置0,送⾄伺服驱动器。
(5)伺服驱动器接到absr信号=0后,知道plc已将⼆位数据读取,于是⼜发出trd=1信号,准备下⼀次传输。然后重复
(2)-(5),直⾄将全部32位位置数据和6位校验和数据传输完毕。
(6)plc收到校验和数据后,将abs传输模式absm信号置0。
在上述传输过程中plc和伺服驱动器的信号配合看似⽐较复杂,其实我们可简单地⽤图3表⽰。
2.3 位置数据和校验和数据结构
在传输的38位数据中,前32位数据是伺服电机的绝对位置数据,后6位数据是校验和数据。在表⽰绝对位置的前32位数据中,按读⼊的顺序排列为最低⼆位到最⾼⼆位。在表⽰校验和的后6位数据中,其读⼊顺序也是从低⼆位到⾼⼆位。该6位校验数据是伺服驱动器根据其所传输的绝对位置值计算出的校验和。plc对读⼊的32位位置数据进⾏校验和计算,计算的结果与读⼊的6位校验和数据相⽐较,若相等则说明传输正确;否则,则说明传输不正确。
为了实现校验,必须要了解该传输协议所规定的计算⽅法,也即伺服驱动器内部对位置数据的计算⽅
法,这样才能在plc中按照同样的⽅法来计算读⼊位置数据的校验和。只有按同样的⽅法计算得校验和,其⽐较才有意义。
例如,伺服驱动器传输的位置数据是013acf76h,⼆进制
是“00,00,00,01,00,11,10,10,11,00,11,11,01,11,01,10”。该协议规定校验和计算⽅法如下:将每2位数据相加得,11000b=18h。所以该位置数据的校验和为18h。伺服驱动器传输的数据32位位置数据013acf76h和校验和数据18h。
3 软件编制
根据上述对绝对位置传输协议的分析,我们可以编制相应的程序。在编制该程序块时,为了使本程序对各种品牌plc具有参考价值并可进⾏移植,我们采⽤了各类plc常⽤的基本指令和各类plc都⽀持的功能指令来编制,如图5所⽰。
3.1 程序结构
整个位置读取程序从功能上说⼤致由数据读取、校验和计算、错误判别处理三个部分组成,其中校验和计算可穿插在数据读取程序中。
在数据读取程序段,根据传输协议规定的信号逻辑配合关系,读取全部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时只需作很少的修改即可。