4 控制软件编制
在本控制系统的软件中,主要是通讯程序的编制。其他一些如定位控制、位置速度控制方式的切换、模拟量速度控制等程序比较普通,在此不予介绍,我们着重介绍plc主机如何通过485通讯卡来读取伺服驱动器中伺服电机的当前绝对位置的控制软件。
4.1 三菱mr-j2s-a伺服系统通讯协议
该伺服系统具有rs422串行通讯功能,伺服系统作为从站,控制器作为主站。主控制器通过该通讯功能可实现对伺服驱动器的运行控制、参数的修改读取、伺服驱动器当前运动状态的读取等。我们在这里只需要读取伺服电机的当前绝对位置值。
(1)通讯格式:
(2)通讯协议:三菱j2s系列伺服系统的通讯协议大致分为四种格式:从控制器向伺服驱动器发送数据、控制器从伺服驱动器接送数据、通讯超时处理、通讯重试。在这里我们主要使用第二种格式的通讯协议,即控制器从伺服驱动器接送数据的通讯协议。该种格式的通讯协议:
在上述协议中,所有报文均以ascii码表示。在主站控制器发出的报文中,soh(通讯开始)、stx(报文开始)和etx(报文结束)的ascii码分别为01h、02h和03h。读绝对位置的指令为02,则对应的ascii码为30h、31h,绝对位置值(指令脉冲单位)对应的数据号为91,对应的ascii码为39h、31h。站号是在伺服驱动器中设置的站号,假如设置为0时,则对应的ascii码为30h。其校验和的计算范围为站号到etx,将其每一位数据的ascii码进行求和,得到结果的低二位即为校验和数据。在主站控制器收到的报文中,stx、站号、etx与前面一样,不再重复了。当通讯正常时,错误代码为a(伺服不报警时)或a(伺服报警时),当通讯不正常时,则错误代码不等于a或a,而是其他字符。数据即为绝对位置数据,长度为8帧。其校验和的计算范围也是为站号到etx,也是取每位ascii码计算和的低二位。
(3)相关的驱动器参数:p#16参数用于设置波特率、rs232/rs422通讯选择、通讯等待时间。我们选用波特率为19200pbs,rs422通讯口,通讯等待时间有效,则p#16=1101。
p#15参数用于设置站号,在本案中设为0。
4.2 fx2n系列plc无协议通讯指令(rs指令)
fx2n系列plc内置串行数据传送指令,可以通过rs-232或rs-422通讯口与其它设备进行串行通讯。其通讯协议可根据所要与其进行通讯的设备的通讯协议进行编制。
(1)通讯格式:串行数据传送rs指令的通讯格式通过plc的特殊数据寄存器d8120来设置。在最新的fx3u系列plc中可通过设置plc参数来设置,而在fx2n中只能通过plc程序来设置。本案中d8120的b15-b8只能设置为00001100,在此不作介绍。b7-b0用于设置传输的波特率、数据长度等,这些参数必须与j2s伺服驱动器的通讯参数相一致。当b7-b4=1001时,对应的传输波特率为19200
bps;当b3=0时,对应停止位为1位;当b2b1=11时,对应奇偶校验为偶校验;当b0=1时,对应的数据长度为8位。所以d8120=0000110010000111,即h0c97。
(2)串行数据传送rs指令:rs指令的指令格式为 rs d10 k10 d20 k14;其中d10为发送数据首地址,k10为
#p#分页标题#e#
发送数据的个数(在本案中为10),d20为接收数据存放的首地址,k14为接收数据的个数(在本案中为14)。
4.3 plc和伺服驱动器的通讯程序
在了解了伺服驱动器的通讯协议和plc的通讯指令后,编制相应的通讯程序,目标是实时读取伺服驱动器的绝对位置。该通讯程序大致可分为通讯实现和通讯错误判断两个部分。
(1)报文构成:据前述的通讯协议,我们知道,读电机绝对位置时的协议格式为:
转换成ascii码,则为:
校验和的计算范围为站号到etx的7个帧,计算方法是将其转化成ascii码的数加起来取其低二位。具体计算如下:
30h+30h+32h+02h+39h+31h+03h=101h,取其低二位,则位01。再取其对应的ascii码,得30h、31h。该值即位发送报文中的校验和值。所以,读绝对位置要发送的报文即为01h 30h 30h 32h 02h 39h 31h 03h 30h 31h
(2)主通讯程序:图4是通讯主程序,通过这段程序可得到储存在d50中伺服电机绝对位置值。程序段a是在plc开始运行时,将根据伺服系统的通讯协议编制的报文写入发送数据块。程序段b选择8位数据模式。程序段c激活通讯指令。程序段d每100毫秒对发送标志m8122置位,发送完成后自动复位。在程序段e,当接收完成时,接收完成标志m8123置1,将接收到的数据送到d30—d43中,并同时将m8123复位。程序段f,将14帧接收数据中的位置数据(从第4帧到第11帧)通过转换指令hex转换成16进制数据,最后将位置数据送入d50。
图4 通讯程序
(3)通讯出错检测程序:为了保证读入的位置数据的正确性,必须对整个通讯过程进行出错检测。在这里我们主要核对读入数据的校验和的方法来进行通讯错误校验。前面我们介绍过,计算接收报文数据校验和的计算范围为stx之后的11帧数据。所以具体做法是,根据读入的数据计算stx之后的11帧的校验和,再与接收到报文中校验和(最后两帧)进行比较。在图5的通讯出错检测程序段中,指令h用于计算从伺服驱动器接收到数据的校验和。指令i用于取计算得到的校验的低二位,指令j用于将接收到的校验和转换成16进制。指令k用于比较实际计算得到的校验和与接收到的校验和进行比较,若不相等,则通讯出错。通讯出错后处理,限于篇幅,在此不作介绍。#p#分页标题#e#
图5 检测程序
5 结束语
通过上述硬件和软件两方面的结合,整个控制系统就能满足本文开始时所描述的控制任务要求。plc控制伺服系统进行定位控制是一种典型的控制模式,而应用通讯技术实现伺服系统的绝对位置检测和控制更是一种实用的技术。本文所讨论的三菱fx2n系列plc实时读取三菱mr-j2s-a系列伺服系统当前位置的实现方式,不仅对类似的控制场合具有借鉴意义,而且对plc与其他设备的通讯程序编制也有启发意义。
转载请注明出处。