以 艾默生PLC和多台变频器组网通信(以MODBUS协议方式)为例,说明PLC和多台变频器网络控制通信方法。
艾默生EC20系列PLC通信口COM 1集成了MODBUS主站协议, 编程时先编程软件系统块里进行设置具体如下:系统块—>“通信口”菜单—>“通信口1参数设置”菜单—> 选“MODBUS协议”—> 进行“MODBUS设置”—> 进行通信参数和(主模式)站号等设置即可。
主设备对从设备消息查询命令主要分为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 利用MODBUS 实现控制多台变频器系统的设计
一、系统介绍
本文以污水处理控制系统为例,介绍利用modbus通讯协议实现永宏plc控制3台变频器运行系统,使得电机转速、方向、转矩以及变频器运行参数等控制变得十分容易和精确。先前的控制是采用3台变频器分别控制3台牵引电机,其转速给定是由操作面板上的操作电位器的旋转给变频器一个0~10v的电流信号,这种方式缺点是:
(1)各变频器运行参数无法准确在运行中获得;
(2)控制电位器由于经常旋转操作频繁,使得故障率增高;
(3)由于变频器一般安装在控制柜中,较难得到其面板上的频率信息;
(4)改变其运行参数,需手动多次调试;
(5)自动化程度不高。因此,必需在控制方式上加以改进,采用plc控制,利用modbus通讯实现用plc控制和监控变频器的运行。
二、相关系统构成及配置
系统采用台湾永宏股份电机有限公司的fbs-60mct型plc作为主控制器;
tvf2000系列变频器用于传动控制;hitech pws3261触摸屏用于人-机信息交换。相关系统构成框图如图1所示。在该系统中,plc的port 2和变频器构成modbus总线,通过plc控制3台变频器完成系统控制需要,实现对变频器的速度设定、运行状态监控及参数交换等。
三、modbus通讯协议
modbus通讯协议,是一种串行的、非同步的主从通讯协议,网络中只有一个设备能够建立协议,其它的设备只能通过提供数据响应主机的查询,或根据查询做出相应的动作。modbus协议定义了主机查询的格式,其包括:主从机的编址方法(或广播),要求动作的功能代码,传输数据和错误校验等,或不能完成主机要求的动作,它将组织一个故障作为响应。modbus协议不需要特别的接口,典型的物理接口是rs-485。在modbus通讯网络中,一般提供中ascii和rtu两种通讯模式。
图1:系统构成框图
本控制系统中,永宏plc支持modbus协议,可以灵活运用ascii和rtu两种通讯模式,tvf2000变频器支持modbus中的rtu通讯模式。
四、系统实现
本控制系统主要以modbus通讯控制实现。因此,主控设备和受控设备必须都支持modbus协议,永宏plc提供了方便快捷的 modbus master表格,直观易懂,如下图所示。其中,第0,2,4项资料为分别写入1#2#3#变频器控制字和给定值1;第1,3,5项资料为读取1#2#3#变频器的状态字。
图2:PLC的modbus命令表格
时代tvf2000系列变频器可通过串行rs-485总线与外部plc控制系统进行通讯,通讯协议为modbus的rtu形式,其控制命令和给定频率全部来自modbus通讯,其rs-485总线结构如图3所示。tvf2000变频器的寄存器40001为控制字,寄存器40002为给定值1,寄存器40004为状态字,寄存器40005为实际值。
其相关参数设置如下:
5005=2—modbus通讯;
5201=1,2,3—变频器站号;
5202=5—波特率为9600bps;
5203=0—无校验;
5003=1.0—通讯超时时间;
1001=10—外部命令1为通讯控制;
1003=3—电机正反转控制;
1104=0.1—频率给定最小单位0.1hz;
1105=50—最大给定频率为50hz;
1601=7—为通讯允许运行;
1604=7—为故障通讯复位.
tvf2000的菜单参数被一一映射为modbus协议的寄存器,modbus通讯对各寄存器的操作,即实现了对tvf2000中与寄存器对应的菜单参数的操作。对应的命令寄存器为40001,其中每一位控制的具体内容如下表所示。
图4:命令字40001各位址描述
对每一台变频器进行控制时,通过hitech触摸屏给定起停信息,变频器的位置信息如下:
第一步,40001=0000 0000 0000 0110b变频器进入通讯控制就绪状态;
第二,40001=0000 0000 0000 0111b变频器进入准备状态;
第三,40001=0000 0000 0000 1111b发上升沿脉冲进入运行允许状态;
第四,40001=0000 0000 0010 1111b启动变频器;
第五,40001=0000 0000 0110 1111b按给定频率值运行。
同时,通过对存储寄存器40004读取,可获得变频器的运行状态等信息,然后通过触摸屏显示界面,操作人员
可以直观地了解变频器运行信息。40004的位址内容见下表。
图5:状态字40004位址功能描述
五、程序设计
org m1924
fun 08 7,r1000
fun 08 7,r1100
fun 08 7,r1200
/*变频器就绪*/
org m1962
fun 150p 2,r5800,r5900
/*modbus通讯工作命令设定*/
org m10
fun 08p 47,r1000
fun t10 100
and t10
fun 08p 111,r1000
/*启动1#变频器*/
org m11
fun 08p 7,r1000
/*停止1#变频器*/
org m12
fun 08p 47,r1100
fun t11 100
and t11
fun 08p 111,r1100
/*启动2#变频器*/
org m13
fun 08p 7,r1100
/*停止2#变频器*/
org m14
fun 08p 47,r1200
fun t12 100
and t12
fun 08p 111,r1200
/*启动3#变频器*/
org m15
fun 08p 15,r1200
/*停止3#变频器*/
六、总结
利用modbus通过plc来控制多台tvf2000变频器的运行,从满足生产设备各种不同场合和要求的需要。与原系统相比,在极大程度上提高了自动化程度,使控制变得简单和精确;而与plc+d/a模块这一传统的控制模式相比,虽然同样可以达到控制要求,但从经济上考虑,我们一般无法接受昂贵的d/a模块,在同时控制多台变频器时,将使变得系统十分庞大,不利于系统的维护;因而,采用modbus等总线结构来实现生产设备控制要求,是工业控制的一种趋势。同时,随着变频技术与计算机通讯技术相结合,plc和变频器的通讯控制将更加广泛应用于工业控制中。本文笔者多次设计相关系统运用于污水处理系统,食品、药品和化妆品等包装系统中,自动化程度大大提高,系统运行故障率则大大减少,是值得推广和应用的传动控制系统。
以Haiwell PLC与富士变频器G11/P11通讯程序为例,说明PLC通过广播指令和多台变频器网络控制通信方法。
富士变频器采用富士专用的通讯协议FGI-Bus,在下例中,根据富士变频器说明书设定与通讯有关的主要参数如下:
H30:链接功能(通信功能);默认为0,现设置为2——RS485频率设定无效,运行命令有效;
H31:RS485地址;默认为1;
H32:故障处理;默认为0,现设为3—继续运行;
H33:定时时间——通信故障后,在定时时间内继续运行;默认为2.0秒,采用默认值;
H34:通讯传送速度(波特率);默认为1——9600 bit/s,现设置为0——19200 bit/s;
H35:数据长度;默认为0——8位数据,采用默认值;
H36:奇偶校验;默认为0——无奇偶校验,采用默认值;
H37:停止位;默认为0——2个停止位,采用默认值;
U49:RS485协议;默认为0——富士专用通讯协议FGI-Bus,采用默认值;
F01:频率设定1;当该参数采用默认的0——键盘面板上下键设定(也就是数字设定)时,按变频器面板上的上下键更改设定频率显示“<数字设定Hz>LINK”,设定频率可以更改;当该参数设为1时,可通过外设电位器从端子12进行电压(0-+10V)输入来设定运行频率;当该参数设为11——数字输入或脉冲列输入设定(要用选件卡,详细请参阅选件卡使用说明书)时,按变频器面板上的上下键更改设定频率无效,显示“<远方设定有效>LINK”。
U01~U61:老版本变频器(例如序列号为FEA032G00370-1-072的变频器)没有U参数。
富士专用的通讯协议中广播运行操作命令格式如下图,详细通讯协议请参考富士变频器通讯协议手册。
其中:SOH=01,ENQ=05,P=20,ETX=03