技术文章

当前页面: 首页 >技术文章 >基于PCC的变频器的串行通信协议

基于PCC的变频器的串行通信协议

--基于PCC的变频器的串行通信协议

供稿:贝加莱工业自动化(中国)有限公司 2012/2/2 13:56:30

0 人气:1490

  • 关键词: PCC 变频器 串行通信协议
  • 摘要:文章以西门子Micro Mastomation 变频器的USS 通信协议为例,提出了PCC 对多台变频器进行网络控制的实现方案,并且给出了用B&R Automation Basic 开发的串行通信程序。利用该方法,可以方便地实现对多台变频器的协调控制和运行参数的在线监测。

1、开发背景
  随着自动化程度日益提高,对单台变频器的控制在许多场合已经不能满足生产的要求,必须对多台变频器进行协调控制,因此变频调速技术也逐渐朝着网络化的方向发展。为适应这一发展方向的需要,各大公司相继推出了带有标准通讯接口的通用变频器,为用户设计满足工业现场需求的控制系统带来了极大的方便。但是只有极少数公司的变频器支持标准的通信协议<例如:PROFIBUC、 CANBUS 等),实际控制系统有时会要求与不支持标准通信协议的变频器通信,普通的PLC 也不具备与第三方产品通信的能力,造成系统集成的巨大困难。让开发人员从底层开发通信协议是一项复杂且工作量相当大的工作,而且系统的可靠性也难以得到保证。基于上述问题,贝加莱2005系列 PCC(可编程计算机控制器)产品除了支持标准的通信协议之外, 还向用户提供了用于与第三方产品通信的协议开发工具———帧驱动器,用户只需要了解第三方产品的通信协议细节<包括信息帧格式的组成等>,并用帧驱动器写出与第三方产品通信协议一样的通信规约,就可方便地实现PCC与第三方产品之间的通信。
  本文利用PCC的帧驱动器,成功地实现了PCC 对多台变频器的网络控制,并且PCC 可以作为上层网络的一个节点,以实现全厂的网络化和自动化。Driveframe 是一个运行在PLC 里面的函数库,系统的串行通信程序是用B&R Automation StudioTM下的Automation Basic来开发的,作为完整的任务模块可以添加到任何其它复杂项目中,不仅能提高系统的可靠性,而且可以提高代码的可重用性,缩短项目的开发周期,使项目开发人员能够方便进行系统集成。为了扩大串行通信的有效传输距离,提高通信传输速率,增强抗干扰能力,采用RS—422/485 串行总线通信标准。

2、系统的总体设计
  变频器采用西门子的Micro Master变频器,PCC采用贝加莱的B&R2003。PCC 通过RS-485网络与多个变频器相连接,最多可达32 台,波特率为10Mb/s时,通信距离为15m;波特率为100Kb/s 时,通信距离可达1200m。每台变频器被赋予各自独立的地址码用以识别身份,这样,PCC 便能通过RS-485接口,对挂在总线的所有变频器进行控制操作。

3、利用PCC控制变频器
3.1变频器的串行通讯协议
  西门子Micromaster变频器在远程通讯时,遵循西门子的USS 通信协议。USS 通信协议由一个双向信息表组成;接受来自远程主机发送的控制信息,并反馈信息给主机作为已接收信息后的应答。其报文结构包含了参数数据和过程数据,前者用于改变变频器的参数,后者用于快速刷新变频器的过程数据,如启动停止、速度给定、力矩给定等。USS 协议的数据报文由14 个字节组成。每个字节采用2 位16 进制数的形式,遵循UART 格式:1 个起始位,8 个数据位,1 个偶校验位和1个停止位。变频器接收数据的通信协议如下:

  STX 为起始字符,02H;LGE为发送字节数, 对于Micro Master为0CH(12)个字节;ADR 为变频器的地址码,取值范围为0~31 (bit0-4位),bit5 为1 时为广播发送;PKE 为16 位的字,用来控制变频器的运行参数设置。各bit 的含义如下:

  对于Micromaster变频器,控制位为0001 时,读变频器的参数,控制位为0010 时,写参数到变频器的RAM和EEPROM,Bit11未用,置为0:IND为16 位的字,未用,置为0:VAL为16位的变频器参数值,与PKE 一起将运行参数写入到变频器中;STW 为16位的字,用来控制变频器的运行动作;HSW 为16 位的字, 用来控制变频器的输出频率, 满频时的值为16384(4000H)对应100%的输出频率,最大值为32767(8000H)对应200%的输出频率,当取值为:32768~65535 时,表示反向的输出频率从0~200%变化,电机反转;BCC 为校验字节,是前面所有字节的异或和。
  同时,变频器也向PCC 回送数据报文,其通信协议如下:

  与PCC向变频器发送的数据报文相比,变频器回送的数据报文只是以ZSW 代替了STW,HIW 代替了HSW,其余字节的含义是一样的。ZSW 是16 位的状态字,用来表示变频器的当前运行状态;HIW 也是16 位的字,代表变频器的输出频率,其意义与HSW 是一样的。
3.2 PCC 帧驱动器的配置
  PCC 是贝加莱公司于1994 年推出的新一代硬件平台,它是集计算机技术、通讯技术和控制技术(3C技术)于一体的新型控制装置。PCC 的一个显著特点是其具有强大的网络通信能力,除了标准的网络通信协议外,通过帧驱动器可以很容易地制作任意第三家的串行通信协议。利用帧驱动器编写串行通信程序比传统的通信编程方法要容易得多, 它的命令包括如下。FRM-xopen:初始化接口,为帧驱动器分配缓存,安装相关的中断处理程序。FRN-read:读数据并将其放在读缓存区。FRM-RBUF:释放读缓存区。FRM-GBUF:申请写缓存区。FRM-WRITE:将数据写入写缓存区。FRM-ROBUF:释放写缓存区。FRM-CLOSE:接口通信结束。FRM-ctrl:接口控制。串口在使用前必须初始化,设置串口操作所需要的参数, 这样在程序初始化部分需要使用
FRM-xopen(enable,adr(device),adr(mode),adr(config),status,ident)函数来初始化串口。参数mode, 是用来定义接口参数的字符串地址,其字符串格式为:
“[(TYPE)],[(BAUD)],[(PARITY)],[(DATABIT)],[(STOPBIT)],[(OPTION)]”TYPE为通信接口的类型,BAUD为波特率,PARITY 为校验类型,DATABIT为数据位个数,STOPBIT为停止位个数,OPTION 为可定义硬件握手。
3.3 程序实现
  PCC的软件可分为系统软件和应用软件两大类。PCC 的操作系统是系统软件的核心,是一个分时多任务的操作系统。一个完整的复杂项目可分成多个独立的任务来完成,每个任务都是独立的程序,有各自的循环时间,可以完成各种不同的功能,真正实现了软件的模块化设计。此外PCC 还提供了大量系统模块和应用函数,系统模块可以在需要的时候方便地加载至操作系统中,应用函数可以根据用户及应用程序的需要,模块式地添加到PCC 的软件系统中。应用软件是指用户的应用程序。PCC以PC机作为在线编程开发工具,其编程语言不仅可以采用常规PLC的梯形图(LAD)和指令表(STL),而且还可采用面向控制的结构化高级语言(例如B&R Automation Basic 、C语言)。
  本系统采用B&R Automation Basic 作为编程语言,系统采用2 个任务层来完成通信功能。负责通信的任务(任务1)工作在标准任务层TC#4,扫描周期为100ms;负责循环设置各变频器参数和频率的任务(任务2)工作在标准任务层TC#1,扫描周期为10ms,优先级高于任务1。在运行程序之前,须将模块“dvframe.br”下载到CC,以实现对帧驱动器的管理。
3.3.1 初始化接口
  串口初始化程序必须放在程序的初始化部分,即仅在首次扫描时运行初始化程序。本例设置串口参数为:RS-485 接口,波特率9600b/s,1 个偶校验位,8 个数据位,1 个停止位。设置
如下:(* initprogram*) myconfig.ldle=2;最大字节间隔时间;设置串口初始化参数FRM-xopen(1, “SS2.IF2”, “RS485,9600,E,8,1”,adr(my-config),status,ident)enable=1
3.3.2 向变频器写数据
  串口初始化成功后,就可以通过帧驱动器的写命令向串口写数据,以实现对变频器的控制和监测。程序如下:
If(status=0)and(enable=1)then:// 串口初始化成功
FRM-gbuf(enable,ident,g-stst,buffer,buflng)://获得写缓冲区
If(g-stat=0)then enable=0  write=1:// 允许写操作
endif endif outbufaccessbuffer://  获得指向写缓冲区的指针;向写缓冲区写数据,其中(ADR~HSW1)为全局变量
outbuf[0]=$02:// 起始字符
outbuf[1]=$0c://数据长度字符outbuf[2]=ADR://  变频器地址outbuf[3]=PKEh:// 变频器参数
outbuf[4]=PKElotbuf[5]=$00outbuf[6]= $00outbuf[7]=VALh]:// 变频器参数值outbuf[8] =VALloutbuf[9] =STWh:// 变频器运行参数
outbuf[10] =STWloutbuf[11] =HSWh:// 变频器输出频率
outbuf[12]=HSWl://计算效验和
bcc=02 loop j=1 12 do
bcc=bcc&times;oroutbuf[j]loopoutbuf[13] =bccoing=14:// 定义写缓冲区的长度
if(write=1)then FRM-write(1,ident,adr(outbul),olng,w-stat) ://向串口写数据
write=0
if(w-stat<>0)then  FRM-write(1,ident,adr(outbul),olng,rostat):// 释放写缓冲区
endif
endif
3.3.3从变频器读数据
  由于USS 通信协议由一个双向信息表组成,在向变频器写完数据后,须通过帧驱动器的读指令来读取变频器的返回报文。程序如下:
FRM-read(1,ident,r-stat,r-buf,rbuflng)://从串口读数据
If(r-stat=0)then memcpy(adr(mybuf),r-buf,rbuflng)://保存读缓冲区中的数据FRM-rbuf(1,ident,r-buf,rbuflng,rbstat)://释放读缓冲区

4  结束语
  本文利用PCC的帧驱动器和Micromaster变频器的串行通信功能,实现了PCC对多台变频器的网络控制,并能实时监测各变频器的运行状态,从根本上增强了系统可靠性,提高了生产效益。采用B&R Automation Basic 开发的串行通信程序,并在实践中取得良好的运行效果。该程序具有通用性,针对不同的通信协议,只需做简单的修改,就可以模块式地添加到其它复杂项目中,既可提高系统的可靠性,又可缩短项目的开发周期。将该方法与新型控制理论相结合,可实现高精度的同步传动和多电机协调控制。

更多内容请访问 贝加莱工业自动化(中国)有限公司(http://c.gongkong.com/?cid=1795)

手机扫描二维码分享本页

工控网APP下载安装

工控速派APP下载安装

 

我来评价

评价:
一般