PLC在变频器网络控制中的通信程序设计
发布时间:2012-4-18 15:44
发布者:1770309616
引言 随着PLC技术的不断发展,越来越显示其强大的核心控制功能,PLC和其他设备之间的连接已经从比较烦琐的传统I/O方式向越来越受欢迎的简洁先进的通信方式过渡,不仅为设计者节省了大量的硬件成本,更能为远程控制,组网提供了可能,使控制系统更加无缝地融为一体。 本文主要通过艾默生PLC和多台变频器组网通信(以MODBUS协议方式)为例,说明PLC和多台变频器网络控制的通信程序的设计方法。 一、 MODBUS协议简要介绍 Modbus协议由美国著名的MODICON公司提出,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信,不同厂商生产的控制设备可以连成工业网络,进行集中监控,它已经成为一通用工业标准。控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:IPC,HMI,PLC等;典型的从设备:各种仪表,PLC,变频器等。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询和从设备回应的格式:设备(或广播)地址、功能代码、所有要发送的数据、错误检测域。Modbus协议同时支持RTU模式和ASCII模式,RTU模式对应的帧格式如下:(ASCII模式介绍省略) ![]() 更详细的说明请查阅MODBUS协议的有关资料(或登陆网站 www.modbus.org)。 二、 艾默生PLC集成的MODBUS协议功能 艾默生EC20系列PLC的通信口COM 1集成了MODBUS主站协议, 在编程时先在编程软件的系统块里进行设置具体如下:系统块—》“通信口”菜单—》“通信口1参数设置”菜单—》 选“MODBUS协议”—》 进行“MODBUS设置”—》 进行通信参数和(主模式)站号等设置即可。 然后利用MODBUS指令进行编程-----------MODBUS (S1) (S2)(S3)各参数含义如下: S1 指定的通讯通道; S2 发送数据起始地址; S3 接收数据起始地址; MODBUS指令发送过程中,自动加上所需的起始字符,结束字符和校验和;发送的数据,不需设定发送的数据长度,系统会根据功能码自动按系统内部设定长度进行发送。 2个重要的通信标志:SM135-- MODBUS的通讯成功标志位,通讯成功时置位,不会自动复位,所以在发送数据的时候要进行一次复位;SM136—MODBUS的通信错误标志位,通信错误(包括从设备没有回应)时置位,不会自动复位,所以在接收数据的时候要进行一次复位; 三、 艾默生变频器通信协议 艾默生公司生产的EV系列变频器都集成MODBUS协议,且提供RS232C和RS485通信口供用户选择,所以通过PLC和变频器通信的方式完成控制比较简单经济,而且显得系统比较高档,下面简单介绍其协议: 1. 支持MODBUS RTU和ASCII格式; 2. 参数的MODBUS协议地址影射规则:变频器的功能码参数、控制参数和状态参数都映射为Modbus的读写寄存器。变频器功能码的组号映射为寄存器地址的高字节,组内索引映射为寄存器地址的低字节。变频器的控制参数和状态参数均虚拟为变频器功能码组。功能码组号与其映射的寄存器地址高字节的对应关系如下:F0组:0x00;F1组:0x01;F2组:0x02;F3组:0x03;F4组:0x04;F5组:0x05;F6组:0x06;F7组:0x07;F8组:0x08;F9组:0x09;FA组:0x0A;Fb组:0x0B;FC组:0x0C;Fd组:0x0D;FE组:0x0E;FF组:0x0F;FH组:0x10;FL组:0x11;Fn组:0x12;FP组:0x13;FU组:0x14;变频器控制参数组:0x32;变频器状态参数组:0x33。例如变频器功能码参数F3.02的寄存器地址为0x302,变频器功能码参数FF.01的寄存器地址为0xF01。 3. 支持的功能码如下: ![]() 4. 具体的协议介绍请参考艾默生变频器用户手册; 四、 程序流程图 主设备对从设备的消息查询命令主要分为2大类,连续命令序列和随机命令序列。 连续命令序列: 主设备需要定时或连续向从设备发送的命令序列。特点是周期性,连续性。如PLC对变频器读取运行频率命令,运行状态命令等。 随机命令序列: 主设备不定时或随机向从设备发送的命令序列。特点是不定时性,随机性。如PLC对变频器的启停控制,改写频率或其他参数等。 五、程序清单:( 子程序和主程序 ) 本程序主要介绍1台EC20PLC(作为主站)按照MODBUS协议网络对3台变频器(从站号分别是2,3,4)进行通信控制的简单范例,本例中: 连续命令序列 包括对2,3,4号变频器的运行频率的读取; 随机命令序列 包括对2,3,4号变频器进行启动,停止,更改频率的命令操作; 1) “变频器正转”子程序清单如下: //主程序中用M1993作为各发送辅助使能,主要用于 MODBUS指令的上升沿触发无其他用 LD LM0 //位输入参数型—发送辅助使能 RST SM135 //复位成功标志 RST SM136 //复位失败标志 LD SM0 //运行标志 MOV Z0 V9 //保存Z0值到V9 LD SM0 //运行标志 MOV V0 V10 //从机地址 MOV 16#6 V11 //功能码 MOV 16#32 V12 //寄存器地址高字节 MOV 16#0 V13 //寄存器地址低字节 MOV 1 V14 //写入数据高字节 MOV 16#C7 V15 //写入数据低字节 //以下把发送数据转移到D7940-D7945里 LD SM0 MOV 0 Z0 LD SM0 FOR 6 LD SM0 MOV V10Z0 D7940Z0 LD SM0 INC Z0 NEXT //发送接收数据,数据放在D7970开始区域 LD LM0 MODBUS 1 D7940 D7970 RST LM0 //马上复位发送辅助使能 //无论成功失败都还原Z0值 //当然这里省略了错误报告的处理 LD SM135 OR SM136 EU //上升沿 MOV V9 Z0 2) “停机”子程序(省略) 3) “设定频率”子程序(省略) 4) “读取运行频率”子程序(省略) 5) 主程序清单: //******以下为通信逻辑处理部分****** LD SM1 //运行第一周期脉冲 //***这里省略了检查从机准备好否的环节*** //***程序里设计了3个连续命令序列*** RST M6 //复位连续命令序列1使能标志 RST M7 //复位连续命令序列2使能标志 RST M8 //复位连续命令序列3使能标志 ED //下降沿 //置位连续命令序列1使能标志,以开始第1条连续命令执行 SET M6 //***程序里设计了共9个随机命令序列*** //只要有至少1个随机命令, // M1000=ON,表示有随机命令等待,这样在连续命令切换时优先执行随机命令系列。 LD M0 //随机命令序列1使能标志 OR M1 //随机命令序列2使能标志 OR M2 //随机命令序列3使能标志 OR M3 //随机命令序列4使能标志 OR M4 //随机命令序列5使能标志 OR M5 //随机命令序列6使能标志 OR M9 //随机命令序列7使能标志 OR M10 //随机命令序列8使能标志 OR M11 //随机命令序列9使能标志 SET M1000 //所有随机命令都处理完成后, M1000=OFF,表示随机命令完成,则连续命令可以正常切换。 LDI M0 ANI M1 ANI M2 ANI M3 ANI M4 ANI M5 ANI M9 ANI M10 ANI M11 RST M1000 //任何1个连续命令未完成时,M1001=ON,标志连续命令在进行,如果有随机命令必须等待。 LD M6 OR M7 OR M8 SET M1001 //连续命令处于切换状态时,M1001=OFF,标志连续命令完成,如果有随机命令可以进行。 LDI M6 ANI M7 ANI M8 RST M1001 //每1个连续命令完成且无随机命令等待时,启动延时T0 100MS,以便切换下1个连续命令执行 LD M100 //连续命令1完成标志 OR M101 //连续命令2完成标志 OR M102 //连续命令3完成标志 ANI M1000 TON T0 1 //启动延时T0 100MS //****************************************** //**********以下为3个连续命令序列********** //调用“读取运行频率”子程序-2#站,频率存在D1000里; //通信成功或失败都复位连续命令序列1使能标志M6,同时置位完成标志M100,以便进行切换。当然这里省略了失败的处理子程序; //延时T0时间后,执行连续命令2序列,置位连续命令2序列使能标志M7; LD M6 //连续命令序列1使能 MPS EU SET M1993 //发送前置位发送辅助标志 MRD CALL 读取运行频率 2 M1993 D1000 //参数注释:站地址,发送辅助位,频率存放地址 MPP LD SM135 OR SM136 ANB RST M6 SET M100 LD T0 AND M100 EU RST M100 //复位连续命令1完成标志 SET M7 //调用“读取运行频率”子程序-3#站,频率存在D1001里; //通信成功或失败都复位连续命令序列2使能标志M7,同时置位完成标志M101,以便进行切换。当然这里省略了失败的处理子程序; //延时T0时间后,执行连续命令3序列,置位连续命令3序列使能标志M8; LD M7 //连续命令2序列使能 MPS EU SET M1993 //发送前置位发送辅助标志 MRD CALL 读取运行频率 3 M1993 D1001 //参数注释:站地址,发送辅助位,频率存放地址 MPP LD SM135 OR SM136 ANB RST M7 //复位使能标志 SET M101 //置位完成标志 LD T0 AND M101 EU RST M101 //复位连续命令2完成标志 SET M8 //置位连续命令3使能标志 //调用“读取运行频率”子程序-4#站,频率存在D1002里 //通信成功或失败都复位连续命令序列3使能标志M8,同时置位完成标志M102,以便进行切换。当然这里省略了失败的处理子程序; //延时T0时间后,重新执行连续命令1序列,置位连续命令1序列使能标志M6; LD M8 //连续命令3序列使能 MPS EU SET M1993 MRD CALL 读取运行频率 4 M1993 D1002 //参数注释:站地址,发送辅助位,频率存放地址 MPP LD SM135 OR SM136 ANB RST M8 SET M102 LD T0 AND M102 EU RST M102 SET M6 //****************************************** //**********以下是9个随机命令序列*********** //9个随机命令思路都一样; //随机命令使能标志置位后,若连续命令处于切换状态,则可进入发送状态,否则只有等待; //发送时先置位发送辅助位M1993,调用子程序进行发送和接收; //无论通信成功或失败都复位各自的随机命令使能标志,当然这里仍然省略了通信错误处理程序; //如果所有的随机命令都完成,则随机命令等待标志M1000=OFF; //调用“频率设定”子程序-2#站 LD M9 //随机命令序列7使能标志 ANI M1001 //判断连续命令处于切换状态时 MPS EU SET M1993 //置位发送辅助位 MRD CALL 运频设定 2 D1100 M1993 //参数注释:站地址,设定频率,发送辅助位 MPP LD SM135 OR SM136 ANB RST M9 //复位随机命令序列7使能标志 //调用“频率设定”子程序-3#站 LD M10 //随机命令序列8使能标志 ANI M1001 //判断连续命令处于切换状态时; MPS EU SET M1993 //置位发送辅助位 MRD CALL 运频设定 3 D1101 M1993 //参数注释:站地址,设定频率,发送辅助位 MPP LD SM135 OR SM136 ANB RST M10 //调用“频率设定”子程序-4#站 LD M11 /随机命令序列9使能标志 ANI M1001 MPS EU SET M1993 MRD CALL 运频设定 4 D1102 M1993 //参数注释:站地址,设定频率,发送辅助位 MPP LD SM135 OR SM136 ANB RST M10 //调用“正转开机”子程序-2#站 LD X11 //开机按扭 EU SET M0 //随机命令序列1使能标志 LD M0 ANI M1001 MPS EU SET M1993 MRD CALL 正转开机 2 M1993 //参数注释:站地址,发送辅助位 MPP LD SM135 OR SM136 ANB RST M0 //调用“正转开机”子程序-3#站 LD X12 //开机按扭 EU SET M1 //随机命令序列2使能标志 LD M1 ANI M1001 MPS EU SET M1993 MRD CALL 正转开机 3 M1993 //参数注释:站地址,发送辅助位 MPP LD SM135 OR SM136 ANB RST M1 //调用“正转开机”子程序-4#站 LD X13 //开机按扭 EU SET M2 //随机命令序列3使能标志 LD M2 ANI M1001 MPS EU SET M1993 MRD CALL 正转开机 4 M1993 //参数注释:站地址,发送辅助位 MPP LD SM135 OR SM136 ANB RST M2 //调用“停机”子程序-2#站 LD X14 //停机按扭 EU SET M3 //随机命令序列4使能标志 LD M3 ANI M1001 MPS EU SET M1993 MRD CALL 停机 2 M1993 //参数注释:站地址,发送辅助位 MPP LD SM135 OR SM136 ANB RST M3 //调用“停机”子程序-3#站 LD X15 //停机按扭 EU SET M4 //随机命令序列5使能标志 LD M4 ANI M1001 MPS EU SET M1993 MRD CALL 停机 3 M1993 //参数注释:站地址,发送辅助位 MPP LD SM135 OR SM136 ANB RST M4 //调用“停机”子程序-4#站 LD X16 //停机按扭 EU SET M5 //随机命令序列6使能标志 LD M5 ANI M1001 MPS EU SET M1993 MRD CALL 停机 4 M1993 //参数注释:站地址,发送辅助位 MPP LD SM135 OR SM136 ANB RST M5 六、 程序说明: 例程设计时实际在连续命令序列切换的间隙停留了100MS的时间,这就是说程序中的连续序列是间歇性的;如果要采用非间歇性的连续序列,把中间的延时部分去掉就可以了。 七、 结论 本例程所阐述的通信序列逻辑处理的方法在笔者的一些项目中得到实际应用,效果也达到预期设想,运行比较稳定,这种PLC通过通信的方式对多台变频器通信的方法在实际应用中有很大的参考价值,不仅能够充分利用EMERSON PLC和变频器的硬件资源达到节省成本的目的,而且更易于进行整个系统的整合。 来源: 电子工程网 |
网友评论