【房车之家】知识、
您可以前往易维通平台
【汽车之家】专栏学习。
概括
本文拟通过与s7-200系列plc中的微型主电机驱动器通信来实现电机的启停和改变电机的频率,介绍其特点并给出相应的应用流程图或源程序。
1 简介
随着plc在工厂自动化中的广泛应用,plc制造商不断推出功能更加完善、性能更加优良的新产品。 以德国西门子为例,在20世纪90年代中期,继S5系列PLC之后,又相继推出了S7系列PLC。 该系列PLC不仅具有S5系列PLC的优点,而且更加注重功能的完善和集成。
对于目前应用广泛的闭环控制、模拟量处理、通讯组网、脉冲输出等都提供了相应的指令和使用方法。 编程软件step7提供了用户友好且功能强大的开发工具。 本文拟通过与s7-200系列plc中的微型主电机驱动器通信来实现电机的启停和改变电机的频率,介绍其特点并给出相应的应用流程图或源程序。
2 硬件要求
(一)硬件构成
带有输入仿真器的 s7-200、RS 485 电缆、微型主电机驱动器和电机。
(2) 参数设置
正确连接电机和微主电机驱动器,并且电机和微主电机驱动器的参数已经手动设置,且微主电机驱动器必须设置为远程控制模式(p910=1)、波特率:19.2 KB (p92=7),地址 1 (p91=1)。
(3) 接线方法
使用9针公插头的RS 485通信电缆连接到S7-的端子1、3、8,电缆的另一端是插孔,分别连接到端子13、14、15微主电机驱动器。
3 分析与说明
(1)s7-200自由通讯口模式
s7-与微型主电机驱动器之间的通信是通过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) 程序结构
整个控制程序由一个主程序(main)、8个子程序(sbr 0-7)和4个中断程序(int 0-3)组成。 各个程序完成的功能如下:
l main主程序:监视run/term开关是否有空闲通讯口/ppi通讯切换,寻找输入信号的上升沿作为电机运行命令。
·sbr0 设置自由通讯口通讯:设置第一次扫描时自由通讯口模式的参数。
·Sbr1运行子程序:设置电机恒速运行。
·Sbr2斜坡子程序:设置电机以变速运行。
·Sbr3增倍频子程序:增大微型主电机驱动器的输出频率。
·Sbr4 降频子程序:降低微主电机驱动器的输出频率。
· sbr5停止子程序:停止电机。
· sbr6计算输出信息的bcc。
· sbr7发送信息并初始化发送定时器。
· int0 send(xmt)中断处理程序,打开接收器。
·int1是发送超时中断处理程序,最多可以尝试发送3次。
·int2 接收字符的中断处理程序。
·int3 接收超时中断处理程序,最多尝试接收3次。
(2)程序流程图如图1所示
5 程序及注意事项
由于文章篇幅限制,这里仅给出通信相关部分的源程序。
sbr 7 //初始化xtm和xtm定时器
xmt vb99,0 //发送
atch 0, 9 // 捕获 xtm 发送中断,并且
//调用中断例程0
movb 255, smb34 //设置xtm定时器255ms
atch 1, 10 // 捕获xtm定时器中断,
// 并调用中断1
雷特
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
雷蒂
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 //启用运行和斜坡
creti //有条件返回
xmt vb99,0 //重试发送
atch 0, 9 // 捕获 xmt 中断,并调用
//中断程序0
movb 255, smb34 //设置xmt定时器避免
//空闲55ms
atch 1, 10 //捕获定时中断并调用
// 中断程序
雷蒂
int 2 //接受字符处理
movb smb2, ac0 // 获取接收到的字符
xorw ac0, vw215 // 累积密件抄送
movb ac0, *vd211 //发送接收到的字符
//进入缓冲区
incd vd211 //缓冲区指针加1
decw vw208 // 接收的字符总数减1
ldn sm1.0 // 检查是否结束
克雷蒂
不是
dtch 10 //退出接收定时器
dtch 8 //关闭接收
ab= 0, vb216 //检查计算出的bcc是否为0
不是
movb 2, vb210 // 错误的密件抄送操作码
movb 2, qb0
跳转0
ldb= vb114, 16#02 // 是stx的第一个字符
ab= vb115, 16#0c //长度=12?
ab= vb116, vb102 //向同一个从机发送信息
// 设备?
movb 0, vb210 // 正确操作
movb 0, qb0
跳转0
LD SM0.0
movb 1, vb210 //信息有问题
movb 1, qb0
磅 0
movw 3, vw206 //刷新重试接收次数
雷蒂
int 3 //定时器中断0处理-接收
dtch 8 //关闭接收中断
dtch 10 //退出接收定时器
decw vw206 //如果为0,则重试次数减1,并且
ld sm1.0 //sm1.0=1,则
movb 4、vb210
movb 4, qb0 //表示接收超时
movw 3, vw206 //刷新接收重试次数
s m0.0,1 //启用运行/斜坡
克雷特
不是
movd &vb114, vd211 //设置接收缓冲区指针
movw 0, vw215 //清除bcc累加器
xmt vb99, 0 //重发
atch vb0, 9 // 捕获 xmt 中断,并且
//调用中断例程0
movb 255, smb34 //设置xmt定时器中断
atch 1, 10 //捕获定时器中断并调用
//使用中断程序1
雷蒂
六,结论
虽然该程序仅与一个微型主电机驱动器通信,但可以扩展额外的输入点,在多点通信线上选择某一微型主电机驱动器的地址,并向其发送命令。 此外,该程序的基本通信结构还可以用于向微型主电机驱动器发送其他信息,例如监测电流、扭矩等。
- 结束 -
目前,埃夫顿正在积极打造虚拟团队,共享控制器、驱动器、执行器、智能制造、配电系统、职业发展、心理学、外语等核心技术的虚拟团队已经形成。 能力出众的你,不要再犹豫,加入我们吧!