基于PLC与变频器通信方式闭环调速系统——USS通讯在交流调速控制系统中的应用董小丹摘要:当今自动化控制产品日新月异,相同功能的实现有各种各样不同的方式。比如很多设备上都要使用的定位控制的实现就有很多种方法。有的利用单片机结合伺服系统实现定位控制;有的使用PLC高速脉冲输出功能或配定位单元结合伺服系统实现;还有的利用变频器的多段速控制来实现定位控制。但不同的定位控制系统有不同的特点,成本也有很大的差异,于是针对不同的设备对精度和响应速度的要求,选用合适的定位控制系统以实现最优的性价比就非常必要。本文主要介绍了西门子公司的PLC与变频器之间的USS串口通讯协议,并以S7-200和MM440变频器之间的USS通讯为例,介绍了USS串口通讯在中、小型控制系统中的应用。引言传统的PLC与变频器之间的接口大多采用的是依靠PLC的数字量输出来控制变频器的启停,依靠PLC的模拟输出来控制变频器的速度给定,这样做存在以下问题:1、需要控制系统在设计时采用很多硬件,价格昂贵2、现场的布线多容易引起躁声和干扰3、PLC和变频器之间传输的信息受硬件的限制,交换的信息量很少。4、在变频器的启停控制中由于继电器接触器等硬件的动作时间有延时,影响控制精度。5、通常变频器的故障状态由一个接点输出,PLC能得到变频器的故障状态,但不能准确的判断当故障发生时,变频器是何种故障。如果PLC通过与变频器进行通讯来进行信息交换,可以有效地解决上述问题,通讯方式使用的硬件少,传送的信息量大,速度快,等特点可以有效地解决上述问题,另外,通过网络,可以连续地对多台变频器进行监视和控制,实现多台变频器之间的联动控制和同步控制,通过网络还可以实时的调整变频器的参数。目前各个厂家的变频器都相继的开发出了支持连网的功能,比如,很多变频器都有了支持现场总线(如:DEVICENET、PROFIBUS、AS_I)等的接口协议,可以很方便的与PLC进行数据通信。本文主要介绍西门子S7-200和MicroMaster变频器之间的通讯协议USS,使用USS通讯协议,用户可以通过程序调用的方式实现S7-200和MicroMaster变频器之间的通信,编程的工作量小,通讯网络由PLC和变频器内置的RS485通讯口和双绞线组成,一台S7-200最多可以和31台变频器进行通讯,这是一种费用低、使用方便的通讯方式。一、S7-200与MM440变频器的连接将MM440的通信端子为P+(29)和N-(30)分别接至S7-200通信口的3号与8号针即可。二、USS通讯协议介绍USS通讯协议的功能,所有的西门子变频器都带有一个RS485通讯口,PLC作为主站,最多允许31个变频器作为通讯连路中的从站,根据各变频器的地址或者采用广播方式,可以访问需要通讯的变频器,只有主站才能发出通讯请求报文,报文中的地址字符指定要传输数据的从站,从站只有在接到主站的请求报文后才可以向从站发送数据,从站之间不能直接进行数据交换。在使用USS协议之前,需要先安装西门子的指令库。USS协议指令在STEP7—MICRO/WIN32指令树的库文件夹中,STEP7—MICRO/WIN32指令库提供14个子程序、3个中断程序和8条指令来支持USS协议。调用一条指令时,将会自动地增加一个或几个子程序。USS协议使用CPU的下列资源,1.USS协议占用PLC的通讯端口0或1,使用USS——INIT指令可以选择PLC的端口是使用USS协议还是PPI协议,选择USS协议后PLC的相应端口不能在做其它用途,包括与STEP7-WICRO/WIN32的通讯,只有通过执行另外一条USS指令或将PLC——CPU的模式开关拨到RUN或STOP状态,才能钟新在进行PPI通讯,当PLC和与变频器通讯中断时,变频器将停止运行,所以在本例中选择CPU226因为它有两个通讯端口,当第一个口用于USS通讯时,第二个端口可以用于程序监控,USS指令要占用2300~3600字节的程序存储空间和400个字节的变量存储区间2.变频器的通讯与CPU的扫描时异步的,完成一次变频器的通讯通常需要几个CPU的扫描周期,通讯时间和链路上变频器的台数、波特率和扫描周期有关,本例中通讯的波特率设定为19200,变频器的台数为3台,经实际调试检测通讯时间大约为50ms.三、使用USS协议的优点1.USS协议对硬件设备要求低,减少了设备之间布线的数量。2.无需重新布线就可以改变控制功能。3.可通过串行接口设置来修改变频器的参数。4.可连续对变频器的特性进行监测和控制。5.利用S7-200CPU组成USS通信的控制网络具有较高的性价比。四、通信注意事项1.条件许可的情况下,USS主站尽量选用直流型的CPU。当使用交流型的CPU22X和单相变频器进行USS通信时,CPU22X和变频器的电源必须接成同相位的。2.一般情况下,USS通信电缆采用双绞线即可,如果干扰比较大,可采用屏蔽双绞线。3.在采用屏蔽双绞线作为通信电缆时,把具有不同电位参考点的设备互联后在连接电缆中形成不应有的电流,这些电流导致通信错误或设备损坏。要确保通信电缆连接的所有设备公用一个公共电路参考点,或是相互隔离以防止干扰电流产生。屏蔽层必须接到外壳地或9针连接器的1脚上。4.尽量采用较高的波特率,通信速率只与通信距离有关,与干扰没有直接关系。5.终端电阻的作用是用来防止信号反射的,并不用来抗干扰。如果通信距离很近,波特率较低或点对点的通信情况下,可不用终端电阻。6.不要带电插拔通信电缆,尤其是正在通信过程中,这样极易损坏传动装置和PLC的通信端口。五、使用USS协议的步骤:1.安装指令库后在STEP7-Micro/win32指令树的/指令/库/USSPROTOOL文件夹中将出现8条指令,用它门来控制变频器的运行和变频器参数的读写操作,这些子程序是西门子公司开发的用户不需要关注这些指令的内部结构,只需要在程序中调用即可。2.调用USS—INIT初始化改变USS的通讯参数,只需要调用一次即可,在用户程序中每一个被激活的变频器只能用一条USS-DRIVE-CTRL指令,可以任意使用USS-RPM-X或USS-WPM-X指令,但是每次只能激活其中的一条指令。3.为USS指令库分配V存储区。在用户程序中调用USS指令后,用鼠标点击指令书中的程序块图标,在探出的菜单中执行库内存命令,为USS指令库使用的397个字节的V存储区指定起始地址,4.用变频器的操作面板设置变频器的通讯参数,使之与用户程序中所用的波特率和从站地址相一致。5.连接CPU和变频器之间的通讯电缆,为了提高看干扰能力最好采用屏蔽电缆。六、USS指令说明用于变频器控制的编程软件需要安装STEP7-Micro/WIN指令库(Libraries),库中的USSProtocol提供变频器控制指令。如图所示。USS指令使用S7-200中的下列资源(1)初始化USS协议将端口0指定用于USS通讯。使用USS_INIT指令为端口0选择USS。选择USS协议与变频器通讯后,不能将端口0再用于其他用途,也不能再用端口0与STEP7--Micro/WIN通讯。(2)在使用USS协议控制变频器时,可以选用CPU226、CPU226XM或EM277PROFIBUS-与计算机中PROFIBUSCP连接的DP模块,这样端口0用于与变频器的通信,端口2用于连接STEP7--Micro/WIN,以便于运行时监控程序的运行。(3)与端口0自由端口通讯相关的所有特殊内部标志位存储器SM位,被用于变频器的控制。(4)USS指令使用14个子程序和3个中断程序对变频器进行控制。(5)USS指令的变量要求一个400个字节V内存块。该内存块的起始地址由用户指定,保留用于USS变量。(6)某些USS指令也要求有一个16个字节的通讯缓冲器。(7)执行计算时,USS指令使用累加器AC0至AC3。USS指令介绍USS_INIT变频器初始化指令用于启用和初始化与变频器的通讯。在使用任何其他USS指令之前,必须执行USS_INIT指令,且无错。该指令完成才能继续执行下一条指令。指令格式如图所示。EN:“使能”输入端,应使用边沿脉冲信号调用指令。输入数据类型为“BOOL”型数据。Mode:输入值为“1”时,端口0启用USS协议;输入值为“0”,端口0用作PPI通信,并禁用USS协议。数据类型为字节型数据。Baud(波特率):PLC与变频器通信波特率的设定。将波特率设为1200、2400、4800、9600、19200、38400、57600或115200。双字型的数据。Active:现用变频器的地址(站点号)。双字型的数据,双字的每一位控制一台变频器,位为“1”时,该位对应的变频器为现用。bit0为第1台,bit31为第32台。例如输入0008H,则bit3位的对应的变频器D3为现用。D31D30D29D28……D19D18D17D16……D3D2D1D00000……0000……1000Done:当USS_INIT指令完成时,Done输出为“1”。BOOL型数据。Error:指令执行错误代码输出,字节型数据。1.初始化指令USS-INITUSS_INIT变频器初始化子程序是一个加密的带参数的子程序,如图9-9所示。程序中使用的都是局部变量,在使用该子程序时,需要根据图所示的局部变量表L,按照指示的数据类型对输入(IN)/输出(OUT)变量进行赋值。2.USS_CTRL变频器控制指令USS_CTRL指令用于控制现用的变频器。指令格式如图所示。已在USS_INIT指令的Acive(现用)参数中选择变频器可以使用USS_CTRL指令。每台变频器只能用一条USS_CTRL指令。指令格式如图所示。变频器控制指令需要用调用已经加密的子程序的形式进行编程,如图9-11所示,子程序中全部使用局部变量,需要用变频器控制指令USS_CTRL对其进行赋值,各变量的作用和数据类型参看下图。EN:指令“使能”输入端,EN=1时,启用USS_CTRL指令。USS_CTRL指令应当一直启用,所以EN端应一直为“1”。RUN(运行):变频器运行/停止控制端。当RUN(运行)位=1时,变频器按指定的速度和方向开始运行。为了使变频器运行,该变频器在USS_INIT中必须被选为Active(现用)。OFF2和OFF3必须被设为0。Fault(故障)和Inhibit(禁止)必须为0。当RUN(运行)=0时,会变频器减速直至停止。OFF2:用于变频器自由停车。OFF3:用于变频器迅速(带电气制动)停止。F_ACK(故障确认):用于确认变频器中的故障。当变频器已经清除故障,F_ACK从0转为1时,通过该信号清除变频器报警。DIR(方向):电机转向控制信号,通过控制该信号为“1”或“0”来改变电机的转向。Drive:输入变频器的地址。向该地址发送USS_CTRL命令。有效地址:0至31。Type:输入变频器的类型。将MM3(或更早版本)变频器的类型设为0。将MM4变频器类型设为1。Speed_SP(速度定点):以百分比形式给出速度(频率)的给定输入。Speed_SP的负值会使变频器逆转旋转方向。范围:-200.0%至200.0%。Resp_R(收到应答):确认从变频器收到应答。每次S7-200从变频器收到应答时,Resp_R位接通后,进行一次扫描,USS_CTRL的输出状态被更新。Error(错误):指令执行错误代码输出。Stion(状态):是变频器工作状态输出。Speed(速度):以百分比形式给出变频器的实际输出速度(频率)。范围:-200.0%至200.0%。Run_EN(运行启用):变频器运行、停止指示。“1”表示运行、“0”停止。D_Dir:表示变频器的实际转向输出。Inhibit(禁止):变频器禁止状态输出(0-不禁止,1-禁止)。欲清除禁止位,“故障”位必须为0,RUN(运行)、OFF2和OFF3输入也必须为0。Fault(故障):变频器故障输出,“0”变频器无故障,“1”变频器故障。3.USS_RPM_x变频器参数阅读指令变频器参数阅读指令共有三条:US