可编程控制器在微电机控制中的应用和流程
品慧电子讯本文拟就s7-200系列plc中cpu214通过与一台simovert微型主电机驱动器通信来起动、停止电机,以及改变电机的频率,介绍其特点并给出相应的应用程序流程图或源程序。
1引言
随着plc在工厂自动化中的广泛应用,各plc生产商不断推承出新,功能更加完善,性能更加优异的plc不断涌现。以德国西门子公司为例,90年代中期,继s5系列plc之后,就相继推出了s7系列的plc。该系列plc不仅具有s5系列plc的优点,而且更加注重功能的改进和集成。
对于现在应用广泛的闭环控制、模拟量处理、通信联网、脉冲输出等均提供了相应的指令及使用途径。编程软件step7为用户提供了界面友好且功能强大的开发工具。本文拟就s7-200系列plc中cpu214通过与一台simovert微型主电机驱动器通信来起动、停止电机,以及改变电机的频率,介绍其特点并给出相应的应用程序流程图或源程序。
2硬件要求
(1) 硬件组成
一台带输入仿真器的s7-200 cpu214,一根rs 485电缆,一台微型主电机驱动器和电机。
(2) 参数设置
正确地将电机和微型主电机驱动器接好线,并且所用电机和微型主电机驱动器的参数已通过人工设定,且微型主电机驱动器必须设置在遥控方式(p910=1),波特率:19.2kb(p92=7),地址1(p91=1)。
(3) 接线方式
用一根带9针阳性插头的rs 485通信电缆接在s7-200cpu214的1、3、8端上,电缆另一端是插孔,分别接到微型主电机驱动器的13、14、15端子上。
3分析及说明
(1) s7-200自由通信口模式
s7-200cpu214与simovert微型主电机驱动器通信是通过s7-200自由通信口模式进行的,使用uss5字协议。输入仿真器用来初始化发给电机驱动器的命令。用程序监视run/term开关,并选择相应的协议来设置自由通信口模式的控制字节(smb30)。
(2) 输入点分配
i0.0 上升沿有效 使电机以上次命令的恒定频率运转;
i0.2 上升沿有效 使电机以上次命令的频率开始变频运转;
i0.4 上升沿有效 停止电机;
i0.5 电平有效 以1或2倍率改变频率:
i0.5=“0”:1倍,i0.5=“1”:2倍;
i0.6 上升沿有效 以1或2倍频率增量增加电机频率;
i0.7 上升沿有效 以1或2倍频率增量降低电机频率;
i1.0 电平有效 控制电机旋转方向,i1.0=0:电机正转,i1.0=1:电机反转。
(3) 程序检测
首先对微型主电机驱动器的发送要计时,如果失败,允许再试发送,最多可试发送3次。然后,对来自微型主电机驱动器的接收也要计时,在退出发送接收操作之前可重试多达3次。对来自微型主电机驱动器的响应信息要进行有效性校验(stx,len,adr及bcc),任何被检测到的错误都要进行显示。
(4) 输出点分配
qb0用来显示检测到的错误信息,具体显示含义如下:
“0”表示无错误;“1”表示非法的响应(除去坏的bbc);“2”表示坏的bbc;“3”表示发送超时;“4”表示接收超时。
4程序结构
(1) 程序结构
整个控制程序由1个主程序(main)、8个子程序(sbr 0-7)及4个中断程序(int 0-3)组成。各程序所完成的功能如下:
l main 主程序:监视用于自由通信口/ppi通信切换的run/term开关,寻找输入信号上升沿作为电机运行命令。
·sbr0 设置自由通信口通信:首次扫描时设置自由通信口模式的参数。
·sbr1 run子程序:设定电机恒速运转。
·sbr2 ramp子程序:设定电机变速运转。
·sbr3 增加频率倍率的子程序:增加微型主电机驱动器的输出频率。
·sbr4 降低频率倍率的子程序:降低微型主电机驱动器的输出频率。
·sbr5 stop子程序:停止电机。
·sbr6 计算输出信息的bcc。
·sbr7 发送信息,初始化发送定时器。
·int0 发送(xmt)中断处理程序,打开接收器。
·int1 发送超时的中断处理程序,最多试发3次。
·int2 接收字符的中断处理程序。
·int3 接收超时的中断处理程序,最多试收3次。
(2) 程序流程图如图1所示
图1:程序流程图
5程序及注释
由于文章篇幅的限制,在此仅给出与通信有关部分的源程序。
sbr 7 //初始化xtm及xtm定时器
xmt vb99,0 //发送
atch 0,9 //捕捉xtm发送中断,并
//调用中断程序0
movb 255,smb34 //设置xtm定时器255ms
atch 1,10 //捕捉xtm定时器中断,
//并调用中断1
ret
int 0 //中断程序0,xmt发送中断处理,
//关xmt定时器
dtch 10 //退出xmt定时器
dtch 9 //中止xmt事件
movw 3,vw204 //刷新xmt重试次数
movw 14,vw208 //响应信息中接收的字符数
movw 0,vw215 //清bcc累加器
movd &vb114,vd211 //设置接收缓冲区指针
atch 2,8 //捕捉rcv(接收)中断,并
//调用中断程序2
atch 3,10 //捕捉接收定时器中断,并调
//用中断程序3
reti
int 1 //定时器中断0处理--发送
dtch 9 //停止xmt(发送)
dtch 10 //退出定时器
decw vw204 //重试次数减1,若为0,且
ld sm1.0 //sm1.0=1,则
movb 3,vb210
movb 3,qb0 //用qb0指示发送超时
movw 3,vw204 //刷新发送重试计数
s m0.0,1 //使run、ramp有效
creti //条件返回
xmt vb99,0 //重试发送
atch 0,9 //捕捉xmt中断,并调用
//中断程序0
movb 255,smb34 //设置xmt定时器为避
//免55ms
atch 1,10 //捕捉定时中断,并调用
//中断程序
reti
int 2 //接受字符处理
movb smb2,ac0 //得到接收字符
xorw ac0,vw215 //累积bcc
movb ac0,*vd211 //把接收到的字符送
//入缓冲区
incd vd211 //缓冲区指针加1
decw vw208 // 有待接收的字符总数减1
ldn sm1.0 //检验是否结束
creti
not
dtch 10 //退出接收定时器
dtch 8 //关接收
ab= 0,vb216 //检验已算好的bcc是否为0
not
movb 2,vb210 //坏的bcc操作码
movb 2,qb0
jmp 0
ldb= vb114,16#02 // stx第一个字符吗
ab= vb115,16#0c //长度=12吗?
ab= vb116,vb102 //将信息发往同一从
//设备吗?
movb 0,vb210 //操作正确
movb 0,qb0
jmp 0
ld sm0.0
movb 1,vb210 //信息中有不对的地方
movb 1,qb0
lbl 0
movw 3,vw206 //刷新接收可重试次数
reti
int 3 //定时器中断0处理—接收
dtch 8 //关接收中断
dtch 10 //退出接收定时器
decw vw206 //重试次数减1,若为0,且
ld sm1.0 //sm1.0=1,则
movb 4,vb210
movb 4,qb0 //指示接收超时
movw 3,vw206 //刷新接收重试次数
s m0。0,1 //使run/ramp有效
cret
not
movd &vb114,vd211 //设置接收缓冲区指针
movw 0,vw215 //清bcc累加器
xmt vb99,0 //重发送
atch vb0,9 //捕捉xmt中断,并
//调用中断程序0
movb 255,smb34 //设置xmt定时器中断
atch 1,10 //捕捉定时器中断,并调
//用中断程序1
reti
6结束语
虽然此程序只与一台微型主电机驱动器通信,但可将它扩展用于另外的输入点,选择多站通信线路上的某一台微型主电机驱动器的地址,向它发送命令。另外,这个程序的基本通信结构还可用来发送别的信息给微型主电机驱动器,如监视电流、转矩等。