1 引言
变频器由于其应用简便和性能可靠,已成为工业传动装置中首选的电机控制器,现代变频器采用微计算机数字控制技术构成,并提供了标准的工业通讯接口和内置协议(如profibus、cclink等),为变频器的远程监控提供了必要的基础。
profibus-dp做为现场总线profibus标准中一种,是一种高速(数据传输率为9.6kb/s~12mb/s)、经济、可靠的现场级网络,已经在工业控制得到了广泛的应用。
本文以三菱公司的fr-a740变频器为基础,研究了simenz s7-300 plc与fr-a740在profibus-dp网络中通讯的实现,它在笔者所参与的胎面挤出生产线中得到了实践论证。为后续建立变频器的集中监控打下了基础。
2 基于profibus-dp控制系统结构的构建
fr-a740与profibus-dp网络的连接是通过安装a7np通讯卡来实现的,其典型配置如图1所示,我们可以把系统分为三层结构,分别为监控层、控制层、执行层。ipc作为监控层,采用mcgs组态软件,用于对系统进行监控,plc做为控制层,它作为工控机与变频器之间的桥梁,一方面,它对变频器进行控制,另一方面将生产线上信息(如变频器的速度、报警等)传达给工控机,其中ipc与plc采用mpi(multipoint interface)。变频器作为执行层,将plc下达的指令执行,实现对电机的控制。
图1 基于profibus-dp控制系统结构图
3 变频器数据通讯的实现
3.1 参数设置
在进行设备通讯之前,必须对变频器的相关参数进行设置,首先在a7np卡上设置网络节点地址,必须要与step 7硬件组态中设置的地址完全一致,这个设置主要通过a7np上sw3,sw1两个旋钮开关来调节的,另外其他主要参数设置如表1所示,它们是在fr-a740的操作面板设置的。
3.2 profibus通讯协议
对于调速驱动装置,根据变速驱动行规,在周期型通道中传输的数据结构被定义为参数过程数据对象pp0(parameter process object)。这个通道经常被称为标准通道,其中包含有用的用户数据。可用的数据结构分为两个部分且能用报文分别传送:过程通道pzd部分、参数通道pkw部分,具体的协议报文结构如图2所示。
图2 profibus-dp报文中有效的数据结构
变速驱动行规对ppo的结构、长度作了更具体的规定,常用的参数过程数据对象ppo一共有5种类型,按照可用数据有无参数通道及过程通道的数据字的多少来划分:
(1)可用数据有数据区而无参数区,有两字或六个字的过程数据,如ppo3和pp04。
(2)可用数据有参数区和数据区,且有两个字、六个字或是个字的过程数据,如ppo1、ppo2、ppo5。常用的ppo类型如表2所示。选用那种类型的pp0,取决于在硬件组态中的设置。过程数据在传动系统中总是以最高优先级进行传送和处理,它主要传送传动装置的状态信息和控制信息。参数数据运行存取传动系统的所有参数。因而,它能够在不影响过程数据传输性能的情况下,从上一级系统调用参数值、诊断值、故障信号等。
pkw区说明参数数值(pkw)的数据接口处理方式。pkw接口并非物理意义的接口,而是一种通讯机理。这一机理确定了参数在两个通讯伙伴之间(如plc和变频器之间)的传输方式。pkw参数区一般包含4个字。前两个字(pke和ind)的信息是关于主站请求任务(任务识别标记id)和从站应答响应(应答识别标记id)的报文。pkw的后两个字(pwe1和pwe2)用来读写具体的参数数值。
pkw参数通道的第一个字是参数标识符pke。位0到10(pnu)包括所请求的参数号,它决定所要执行的参数读写任务访问的是数组参数中的哪一个元素。位11(spm)是用来参数变更报告的触发位。位12到位15(ak)包括任务标识id和应答标识id.pkw参数通道的第二个字变址ind的位12到15位是参数号pnu的扩展页号,它和参数标识符基本参数号pnu共同产生完整的传动装置参数号。变址ind的0到7位为带数组的参数寻址提供数组下标,决定访问数组参数的哪一个元素。
第三和第四字为参数数值(pwe)。参数值总是以双字来传送,在ppo报文中,一次只能传送一个参数值,由pwe1(高位字)和pwe2(低位字)共同组成一个32位参数数值。当用pwe2传送一个16位参数值,必须在dp主站中设置高位字pwe1为零。
利用pkw参数通道修改驱动装置参数必须遵守以下规则:
(1)一个任务或一个应答仅能涉及一个参数。
(2)主站必须重复地发送任务报文直到从从站那里得到相应的应答报文。主站通过对应答识别id、参数号、变址下标和参数值的处理识别任务的应答。
(3)完成的任务必须送出一个报文,对于应答也一样。
(4)在应答报文中重复的实际值总是当前的最新值。
(5)如果在周期工作中不需要pkw参数通道的信息而只需要pzd过程通道的信息,则任务id被发布为“无任务(用0表示)”。
过程通道pzd区是为监测和控制调速驱动装置而设计的,在dp主站和从站中收到的pzd报文总是以最高的优先级处理,即处理pzd过程通道的优先级高于处理参数通道pkw的优先级,而且pzd过程通道总是传送调速驱动装置上当前最新的有效数据。通常dp主站给传动装置的任务报文中,第一个pzd字为控制字,第二个字为主设定值;传动装置给dp主站的响应报文中,第一个pzd字为状态字,第二个字为主实际值。
本文中fr-a740采用pp03的数据传输结构,即使用过程通道(pzd)控制和监测变频器的工作,而没有使用参数通道(pkw)修改变频器的内部参数。pp03的数据结构如表3所示。
主站给fr-a740的pzd任务报文的第一个字pzd1是变频器的控制字(stw),其每一位的含义如表4所示。
对于变频器收到的控制字,其中位10必须设置为1。如果位10是0,变频器将以从前的控制方式继续工作。主站给变频器的pzd任务报文的第二个字pzd2字是变频器的主设定值(hsw),即主频率设定值,以十六进制发送,最小单位是0.01hz。
变频器给主站的pzd应答报文的第一个pzd字是变频器的状态字(zsw),其每一位的含义如表5所示。pzd应答报文的第二个字是主要的运行参数实际值(hiw)。通常,把它定义为变频器的实际输出频率。
4 plc程序的编写
在编写变频器通讯程序时,首先应该读取变频器的状态字,判断变频器是否准备就绪,如果没有就绪则判断是否存在故障,若有故障要判断故障的类型,给出相关的故障提示信息。然后根据操作指令组装控制字,设定主频率值,同时实时读取从站的应答报文,完成运行状态的在线显示。其程序结构框图如图3所示。
图3 变频器通讯程序流程图
plc作为总线主站读pzd应答报文是通过调用s7系统功能sfc14(dprd_dat)来实现,sfc14用于从一个标准的profibus-dp从站读取一串连续的数值,读取数值的长度取决于cpu的类型,它有三个形式参数:dp从站的读数据区的首地址、存放数据变量的首地址、存放错误代码的地址。若能正确读取数据,错误代码返回0000(hex);若读取出错,错误代码为非零值。同理,写pzd报文是通过调用系统功能sfc15(dpwr_dat)来实现的,它也有三个入口参数:dp从站写数据区的首地址、存放待写入数据变量的首地址、存放错误代码的地址。若正确写人,错误代码返回0000(hex);若写入出错,错误代码为非零值。以下是部分程序代码。
call "dprd_dat" //调用sfc14 读取pzd应答报文
laddr :=#addres_iw //dp从站读数据区的首地址
ret_val:=#error_code_i
-n//存储错误代码的返回变量
record :=#bpq_in //存放应答报文的首地址
l w#16#f
l #bpq_in.state_pzd[1] //pzd1字
aw //判断变频器是否就绪
jn nr //没有准备就绪
clr
= #fault //清内部故障标志位
l #control_word1
t bpq_out.control_pzd[1] //写从站固定控制字
spee: l #speed_iw
t bpq_out.control_pzd[2] //写主频率给给定数值
call "dpwr_dat" //调用sfc15写pzd任务报文
laddr :=#addres_qw //dp从站写数据区的首地址
record :=#bpq_out //存放任务报文的首地址
ret_val:=#error_code_
-out //存储错误代码的返回变量
nop
call "dprd_dat" //调用sfc14读取pzd应答报文
laddr :=#addres_iw
ret_val :=#error_code
_in
record :=#bpq_in
l #bpq_in.state_pzd[2]
t #actual_speed //读取主频率实际运行值
ju end
nr: l w#16#8
l #bpq_in.state_pzd[1] //pzd1字
aw //判断变频器是否有故障
jz end
set
= #fault
//添加判断错误和故障的代码,并将相应的错误类型写入存储区
end: be
5 结束语
本文讨论了fr-a740在profibus-dp网络中通讯的实现方法,该方法已经在作者的项目中通过调试,实际运行表明设备通讯控制良好、可靠。