西门子的USS通讯,无需使用特殊硬件,plc与变频器都有继承的串口,简单,价廉。如果要使用总线的话,就需要额外使用通讯卡或适配器。PLC与驱动装置连接,主要实现的任务是:控制驱动装置的启动、停止等运行状态,控制驱动装置的转速等参数,获取驱动装置的状态和参数,S7-200和西门子传动装置主要可以通过以下几种方式连接在一起工作:S7-200通过数字量(DI/DO)信号控制驱动装置的运行状态和速度,S7-200通过数字量信号控制驱动装置的运行状态;通过模拟量(AI/AO)信号控制转速等参数,S7-200通过串行通信控制驱动装置的运行和各种参数。 由于题目的需要,那就使用“S7-200通过串行通信控制驱动装置的运行”,也就是控制启停。 S7-200CPU将在USS通信中作为主站。而变频器则为USS从站。当S7-200的编程软件为V4.0SP5以上的话,就包括USS协议指令库,以下介绍通过西门子提供的USS指令库与MM440之间的串行通信控制。 1、关于指令库 西门子的标准USS协议库以浅蓝色图标表示。如果未找到浅蓝色图标的指令库,说明系统中没有安装西门子标准指令库。必须先安装标准指令库。 2、USS初始化指令 西门子的S7-200USS标准指令库包括14个子程序和3个中断服务程序。但是只有8个指令可供用户使用。一些子程序和所有中断服务程序都在调用相关的指令后自动起作用。每个USS库应用都要先进行USS通信的初始化。使用USS_INIT指令初始化USS通信功能。 打开USS指令库分支,像调用子程序一样调用USS_INIT指令。 a.EN:初始化程序USS_INIT只需在程序中执行一个周期就能改变通信口的功能,以及进行其他一些必要的初始设置,因此可以使用SM0.1或者沿触发的接点调用USS_INIT指令; b.Mode:模式选择,执行USS_INIT时,Mode的状态决定是否在Port0上使用USS通信功能; =1设置Port0为USS通信协议并进行相关初始化 0恢复Port0为PPI从站模式 c.Baud:USS通信波特率。此参数要和变频器的参数设置一致; =24002400bit/s 48004800bit/s 96009600bit/s 1920019200bit/s 3840038400bit/s 5760057600bit/s 115200115200bit/s d.Active:此参数决定网络上的哪些USS从站在通信中有效。详见下面的说明; e.Done:初始化完成标志 f.Error:初始化错误代码 Active参数USS_INIT子程序的Active参数用来表示网络上哪些USS从站要被主站访问,即在主站的轮询表中激活。网络上作为USS从站的驱动装置每个都有不同的USS协议地址,主站要访问的驱动装置,其地址必须在主站的轮询表中激活。USS_INIT指令只用一个32位长的双字来映射USS从站有效地址表,Active的无符号整数值就是它在指令输入端的取值。 在上表中的这个32位的双字中,每一位的位号表示USS从站的地址号;要在网络中激活某地址号的驱动装置,则需要把相应位号的位置设为二进制“1",不需要激活USS从站,相应的位设置为”0"。最后对此双字取无符号整数就可以得出Active参数的取值。 将使用站地址为3的MM440变频器,则须在位号为03的位单元格中填入二进制“1"。其他不需要激活的地址对应的位设置为”0"。取整数,计算出的Active值为00000008h,即16#00000008,也等于十进制数8(如调用USS_INIT指令中的d) 我一般都是使用16进制数,这样可以每4位一组进行加权计算出16进制数,并组合成一个整数。如果一时难以计算出有多个USS从站配置情况下的Active值,可以使用Windows自带的计算器。将其设置为科学计算器模式,可以方便地转换数制。 3、分配库存储区地址 指令库或者向导都要求分配库存储区地址,这也是使用西门子200容易忽略的步骤。 USS指令库需要大概400个字节的V存储区用于支持其工作。调用USS_INIT指令后就可以为USS指令库分配库存储区。也可以在编程的稍后阶段分配存储区地址,但这一步是必不可少的,否则程序无法通过编译。注意:S7-200中的数据存储区分配原则,分配给库指令的数据区绝对不能与其他程序使用的数据区有任何重叠。否则会造成出错。在指令树的Project(项目)中,以鼠标右键单击ProgramBlock(程序块),在弹出的快捷菜单中选择LibraryMemory。如下图所示: 4、USS驱动装置控制功能块 USS_CTRL指令用于对单个驱动装置进行运行控制。这个功能块利用了USS协议中的PZD数据传输,控制和反馈信号更新较快。 网络上的每一个激活的USS驱动装置从站,都要在程序中调用一个独占的USS_CTRL指令,而且只能调用一次。需要控制的驱动装置必须在USS初始化指令运行时定义为“激活”。 在USS通信指令库分支中选择USS_CTRL指令 a.EN:使用SM0.0使能USS_CTRL指令 b.RUN:驱动装置的启动/停止控制 =0停止 1运行 此停车是按照驱动装置中设置的斜坡减速指电机停止 c.OFF2:停车信号2。此信号为“1"时,驱动装置将封锁主回路输出,电机自由停车 d.OFF3:停车信号3。此信号为”1"时,驱动装置将快速停车 e.F_ACK:故障确认。当驱动装置发生故障后,将通过状态字向USS主站报告;如果造成故障的原因排除,可以使用此输入端清除驱动装置的报警状态,即复位。注意这是针对驱动装置的操作。 f.DIR:电机运转方向控制。其“0/1”状态决定运行方向 g.Drive:驱动装置在USS网络上的站号。从站必须先在初始化时激活才能进行控制 h.Type:向USS_CTRL功能块指示驱动装置类型 =0MM3系列,或更早的产品 1MM4系列,SINAMICSG110 i.Speed_SP:速度设定值。速度设定值必须是一个实数,给出的数值是变频器的频率范围百分比还是绝对的频率值取决于变频器中的参数设置(如MM440的P2009) j.Resp_R:从站应答确认信号。主站从USS从站收到有效的数据后,此位将为“1"一个程序扫描周期,表明以下的所有数据都是最新的 k.Error:错误代码。0=无出错。其他错误代码请参考 l.Status:驱动装置的状态字。此状态字直接来自驱动装置的状态字,表示了当时的实际运行状态 详细的状态字信息意义请参考相应的驱动装置手册。 m.Speed:驱动装置返回的实际运转速度值,实数。是否频率值跟随设定值的规格化设定 n.Run_EN:运行模式反馈,表示驱动装置是运行(为1)还是停止(为0) o.D_Dir:指示驱动装置的运转方向,反馈信号 p.Inhibit:驱动装置禁止状态指示(0-未禁止,1-禁止状态)。禁止状态下驱动装置无法运行。要清除禁止状态,故障位必须复位,并且RUN,OFF2和OFF3都为0 q.Fault:故障指示位(0-无故障,1-有故障)。表示驱动装置处于故障状态,驱动装置上会显示故障代码(如果有显示装置)。要复位故障报警状态,必须先消除引起故障的原因,然后用F_ACK或者驱动装置的端子、或操作面板复位故障状态。 USS_CTRL已经能完成基本的驱动装置控制,如果需要有更多的参数控制选项,可以选用USS指令库中的参数读写指令实现。 5、MM440的参数设置 5.1控制源参数设置 控制命令控制驱动装置的启动、停止、正/反转等功能。控制源参数设置决定了驱动装置从何种途径接受控制信号。 控制源由参数P0700设置,选择5 5.2设定源控制参数 设定值控制驱动装置的转速/频率等功能。设定源参数决定了驱动装置从哪里接受设定值(即给定)。 设定源由参数P1000设置:同样选择5 5.3USS通信控制的参数设置 主要参数有: 1.P0700:设置P0700[0]=5,即控制源来自COMLink上的USS通信 2.P1000:设置P1000[0]=5,即设定源来自COMLink上的USS通信 3.P2009:决定是否对COMLink上的USS通信设定值规格化,即设定值将是运转频率的百分比形式,还是绝对频率值 =0不规格化USS通信设定值,即设定为变频器中的频率设定范围的百分比形式。 1对USS通信设定值进行规格化,即设定值为绝对的频率数值。 4.P2010:设置COMLink上的USS通信速率。根据S7-200通信口的限制,支持的通信波特率有: =42400bit/s 54800bit/s 69600bit/s 719200bit/s 838400bit/s 957600bit/s 12115200bit/s 5.P2011:设置P2011[0]=0至31,即驱动装置COMLink上的USS通信口在网络上的从站地址。 USS网络上不能有任何两个从站的地址相同。 6.P2012:设置P2012[0]=2,即USSPZD区长度为2个字长。 7.P2013:设置P2013[0]=127,即USSPKW区的长度可变。 8.P2014:设置P2014[0]=0至65535,即COMLink上的USS通信控制信号中断超时时间,单位为ms。如设置为0,则不进行此端口上的超时检查。此通信控制信号中断,指的是接收到的对本装置有效通信报文之间的最大间隔。如果设定了超时时间,报文间隔超过此设定时间还没有接收到,下一条信息,则会导致F0072错误,变频器将会停止运行。通信恢复后此故障才能被复位。根据USS网络通信速率和站数的不同,此超时值会不同。如果要设定超时值,请参考相关表格,并选取一个适当的数值。 9.P0971:设置P0971=1,上述参数将保存入MM440的EEPROM中。 USS通信是由S7-200和驱动装置配合,因此相关参数一定要配合设置。如通信速率设置不一样,当然无法通信。 我这有个西门子的PLC和变频器DP通讯 一、硬件组态 1.将MASTERDRIVESCBP/CBP2加入组态 2.Profibus地址 3.将MICR.master4加入组态 4.Profibus地址 二、选择数据格式 1.MASTERDRIVE中可供选择的PP0类型 2.I/Qaddress 3.MICR.master4中可供选择的数据格式 4.I/Qaddress Step7中的编程 创建数据块DB1 说明: 1.在Step7中对PKW(参数区)读写参数时调用SFC14和SFC15 2.SFC14(“DPRD_DAT”)用于读Profibus从站的数据 3.SFC15(“DPWR_DAT”)用于将数据写入Profibus从站 4.W#16#100(即256)是硬件组态时PKW的起始地址 举例;读参数r015 1.W#16#100(即256)是硬件组态时PKW的起始地址 2.将从站数据读入DB1.DBX0.0开始的8个字节(P#DB1.DBX0.0BYTE8) PKE->DB1.DBW0 IND->DB1.DBW2 PWE1->DB1.DBW4参数值的高字位 PWE2->DB1.DBW6参数值的低字位 3.将DB1.DBX28.0开始的8个字节写入从站(P#DB1.DBX28.0BYTE8) DB1.DBW28->PKE DB1.DBW30->IND 参数值的高字位DB1.DBW32->PWE1 参数值的低字位DB1.DBW34->PWE2 举例;读参数P401.2 1.W#16#100(即256)是硬件组态时PKW的起始地址 2.将从站数据读入DB1.DBX0.0开始的8个字节(P#DB1.DBX0.0BYTE8) PKE->DB1.DBW0 IND->DB1.DBW2 PWE1->DB1.DBW4参数值的高字位 PWE2->DB1.DBW6参数值的低字位 3.将DB1.DBX28.0开始的8个字节写入从站(P#DB1.DBX28.0BYTE8) DB1.DBW28->PKE DB1.DBW30->IND 参数值的高字位DB1.DBW32->PWE1 参数值的低字位DB1.DBW34->PWE2 举例;3.读参数U001.2 1.W#16#100(即256)是硬件组态时PKW的起始地址 2.将从站数据读入DB1.DBX0.0开始的8个字节(P#DB1.DBX0.0BYTE8) PKE->DB1.DBW0 IND->DB1.DBW2 PWE1->DB1.DBW4参数值的高字位 PWE2->DB1.DBW6参数值的低字位 3.将DB1.DBX28.0开始的8个字节写入从站(P#DB1.DBX28.0BYTE8) DB1.DBW28->PKE DB1.DBW30->IND 参数值的高字位DB1.DBW32->PWE1 参数值的低字位DB1.DBW34->PWE2 举例(写参数) 4.写参数P401.1(将W#16#1000写入P401.1中) 1.将W#16#8191写入DB1.DBW28(PWE) 1.W#16#100(即256)是硬件组态时PKW的起始地址 2.将从站数据读入DB1.DBX0.0开始的8个字节(P#DB1.DBX0.0BYTE8) PKE->DB1.DBW0 IND->DB1.DBW2 PWE1->DB1.DBW4参数值的高字位 PWE2->DB1.DBW6参数值的低字位 3.将DB1.DBX28.0开始的8个字节写入从站(P#DB1.DBX28.0BYTE8) DB1.DBW28->PKE DB1.DBW30->IND 参数值的高字位DB1.DBW32->PWE1 参数值的低字位DB1.DBW34->PWE2 对PZD(过程数据)的读写 说明:1.在Step7中对PZD(过程数据)读写参数时调用SFC14和SFC15 2.SFC14(“DPRD_DAT”)用于读Profibus从站的数据 3.SFC15(“DPWR_DAT”)用于将数据写入Profibus从站 4.W#16#108(即264)是硬件组态时PZD的起始地址 5.对特殊结构的PZD可用PQW,PIW进行读写 举例;5:对PPO5中10PZD的读写 DB1中与PZD相对应的数据字 1.在P918中设置Profibus地址,必须与Step7中设置相同.地址不能重复. 2.控制字第十位置“1”.PZD1=W#16#X4XX
|