Lab 3. RSLogix5000软件编程实例
实验主题:
创建项目(具体步骤参见实验一和实验二)
z创建RSLogix5000工程
z配置模块
z建立任务
z建立程序和例程
z建立TAG
指令应用
z位指令— XIC、XIO、OTE、OTL、OTU、ONS等
z计时器和计数器— TO N、TOF、CTU、CTD、RES等
z输入输出指令-MSG等
z比较指令— CMP、LIM、EQU、LES、GRT等
z数据传送指令— MOV、MVM、COP等
z函数计算指令— CPT、ADD、SUB、MUL、DIV、CLR等(注意溢出等问题)
z程序控制指令— JMP、JSR、RET等
z PID指令——张力控制(手动自动调节、KP、KI的设定、跟踪)
Tag名的定义及程序设计方法:怎样优化程序,提高程序的可读性
z Tag命名的规范和标准
z程序命名的规范
z压缩程序,同一功能用统一程序
z减少跳转
如何编写大规模、复杂的程序
z做好编程准备工作,了解程序的需求性
z理清思路,做好功能分块
z从单个设备开始,从最基本的逻辑开始
z保证单动正确,然后加上连锁
z安全第一,模拟运行
如何保证安全
z MCC测试位置运行
z软件I/O强制
z停止第一
z必须有手动功能
程序的修改
z尽量避免下载程序,大规模在线修改技巧
RSLogix5000指令应用实例:
一、位指令
XIC(检查是否闭合)和XIO(检查是否断开)是输入指令,OTE(输出激励)、OTL(输出锁存)和OTU(输出解锁)是输出指令。位指令要求操作数的数据类型都必须是BOOL。
应用程序如下图所示(编程方法参见实验二):
当控制器处于运行或者远程运行状态时,可以在标记数据库的Monitor(监视)页面中或者通过右键菜单改变某一个中间变量(非I/O点,指由用户自己定义的标签)的值。
点击这里
当输入条件发生变化时,测试输出结果如下所示:
①
如果Limit_switch_1=1 并且Limit_switch_2=0,则Light_1灯亮;如果Limit_switch_3=1,则Light_2灯亮,并且锁存该状态,即使下一轮程序扫描到Limit_switch_3=0,Light_2灯依然点亮,如测试结果②中的梯级1的输出状态所示。
②
如果Limit_switch_1=1 并且Limit_switch_2=1,则回路中的常闭触点被打开,Light_1=0,灯灭。
③
如果Limit_switch_4=1,则Light_2灯的输出锁存被解除,灯灭。
注意:程序的一行梯级中,可以只有输出指令,但不能只有输入指令,否则将产生逻辑错误。
二、计时器和计数器指令
TON(延时导通计时器)、CTU(加计数器)、RES(复位指令)等指令都是输出指令。
计时器指令要求操作数的数据类型必须是计时器结构体TIMER,该结构体中包含的元素如下表:
元素数据类型说明
.EN BOOL 使能位-标识计时器指令被使能
.TT BOOL 计时位-标识计时操作正在进行
.DN BOOL 完成位-标识计时操作已完成
.PRE DINT 预置值-用户预设的计时要求值
.ACC DINT 累加值-标识指令被使能后经过的时间
RSLogix5000中计时器的时间基为1ms,例如,如果用户需要一个2s的计时器,应当将预置值设置为2000。
计数器指令要求操作数的数据类型必须是计数器结构体COUNTER,该结构体中包含的元素如下表:
元素数据类型说明
.CU BOOL 加计数使能位-标识加计数器指令被使能
.OV BOOL 溢出位-标识计数值超过上限值2147483647
.DN BOOL 完成位-标识计数值已等于或大于预设值
.PRE DINT 预置值-用户预设的计数要求值
.ACC DINT 累加值-标识指令被使能已经计过的次数
TON和CTU指令的应用程序如下所示:
当输入条件发生变化时,测试输出结果如下所示:
①
如果Limit_switch_1=1,计时器Timer_1开始计时,Timer_1.TT位被置1,Light_1灯亮。
②
当计时器计时完成,Timer_1.DN位被置1,Light_2灯亮,计数器Counter_1计数一次。
③
当计数器计数达到5次后,计数工作完成,Counter_1.DN位被置1,Light_3
灯亮。
④
如果Limit_switch_2=1,计数器Counter_1被复位。
三、比较指令
CMP(比较表达式指令)、EQU(等于指令)、GRT(大于指令)、LES(小于指令)、LIM(极限比较指令)等指令都是输入指令。
比较指令的应用程序如下图所示:
测试输出结果如下所示:
①
②
对于极限比较指令LIM,如果Low Limit < High Lim it,则当测试值等于或在Low Limit和High Limit之间时,Light_4灯亮;如果Low Limit > High Limit,则当测试值等于或在Low Limit和High Limit之外时,Light_5灯亮。
四、计算指令
ADD(加法指令)、SUB(减法指令)、MUL(乘法指令)、DIV(除法指令)、CPT(表达式计算指令)等指令是输出指令。
计算指令的应用程序及测试结果如下图所示:
在使用计算指令的时候,要特别注意溢出问题,如测试程序的梯级2的输出结果所示,Value3×1000所得的结果超出了RSLogix5000中整形数据的数值范围(最大值为2147483647),因此发生了溢出,得到了不正确的计算结果。
计算指令支持混合数据类型变量的使用,但是这样会损失精度,也可能发生取整误差,而且指令执行时间长。最优的数据类型是DINT或REAL。
五、数据传送指令
MOV(传动指令)、COP(文件复制指令)等指令是输出指令。
MOV、COP等指令支持混合数据类型变量的使用,但是这样会损失精度,也可能发生取整误差,而且指令执行时间长。最优的数据类型是DINT或REAL。
数据传送指令的应用程序如下图所示:
当输入条件发生变化时,测试输出结果如下所示:
①
如果Limit_switch_1=1,则Timer_1结构体被复制到Array_1数组中,覆盖的目标地址为Array_1的前三个元素。
②
如果Limit_switch_2=1,则Timer_1结构体的元素0、元素1和元素2分别被复制到Value0、Value1和Value2中。
RSLogix5000的软件编程实例:
简单的题目,经典的道理
题目1:编写程序产生一个方波
用于重复性控制条件
题目2:编写程序产生一个脉宽可变的方波
用于可变可调的比例控制
题目3:无需手动控制,0~3号灯循环点亮,每个灯亮1S
题目4:0~4号灯循环亮,每个灯亮1S,循环5次结束。规定地址start:循环开始;stop:循环停止;OUT0~4表示灯
如果有开关量输出模块输出到实际输出地址中,观察模块的状态灯。
适用于周期性工作的设备,如果某些排渣阀
题目5:写出传动程序中的爬行运行切换的程序。
考察指令的灵活运用,是否实现功能,程序是否简单易读
题目6:编写一阀门控制,完成自动循环动作,(有多个逻辑,手动控制,液位连锁,电机连锁,计时连锁,可选)。考察学员如何编写程序实现多个条件的逻辑控制。
Tag自己定义,要求简单易懂。程序逻辑明了
例:除砂器冲洗程序:
通过现场控制面板“本控/DCS”按钮控制中浓除砂器,当打到DCS时,起动按以下程序:
1、检查顶部排渣阀门是否关闭,如果关闭,请到下一步;
2、打开底部排渣阀;
3、打开冲洗水阀;
4、延时15秒;
5、关闭底部排渣阀;
6、延时45秒;
7、关闭冲洗水阀;
8、检查底部排渣阀是否关闭,如果关闭,请到下一步;
9、打开顶部排渣阀;
10、600秒后;
11、关闭顶部排渣阀;
回到步骤1
编写程序应掌握一个原则,就是直接输出地址只能出现一次。即使逻辑正确也要避免同一直接输出地址出现多次。
题目7:编写MCC电动机启动程序。
地址:IN0:ready
IN1:fault
IN2:running
OUT0:start_command
本题有简单----复杂的编辑方法,由简单到复杂体现到编程人员的考虑问题的全面性
考察:程序的完整性,安全性(延时自动停止),全面的故障分类。
题目8:有A,B两台电机,现在客户要求:A停止时B要停止;B停止时A要停止。
地址:IN0:A电机ready信号
IN1:A电机running信号
IN2:A电机fault信号
IN3:B电机ready信号
IN4:B电机running信号
IN5:B电机fault信号
OUT0:A电机输出
OUT1:B电机输出
可行性分析!
题目9:有一油泵站,有两台电动机A,B互为备用,只有一组启动/停止按钮,要求和油压信号连锁,实现手动和自动启停,两台要循环启动,增加使用寿命。
地址:IN0:A电机ready信号
IN1:A电机running信号
IN2:A电机fault信号
IN3:B电机ready信号
IN4:B电机running信号
IN5:B电机fault信号
IN6:油压连锁信号,1=自动启动,0=自动停止
OUT0:A电机输出,OUT1:B电机输出
题目10:编写一浓度PID控制指令。
完成PID调节---手自动切换----正反向调节-----输出限幅
考察:有没有手动/自动切换,切换有没有做到无扰动,有没有考虑连锁等
题目11:编写流量的累积值
考察:时间基准的应用,学会正确应用中间值,清零是否合理,有无防止溢出。
题目12:有0~9号电机,由外部信号控制组启动和停止,按顺序间隔5S启动。
编写程序
考察:对比较大的程序的编写,启动/停止是否为脉冲,运行状态信号是否
作为连锁条件,是否考虑到长时间启动不成功自动停止,外部连锁信号是否滤波
等
例:底浆粗选工段
本工段设备包括:2#碎后池、2#碎后池搅拌器M20、粗筛供浆泵M21、一段
粗筛M53、浮选筛浆机M24、稳位箱、排渣分离机M25、二段粗筛M26, 浮选筛进
料池搅拌器M22, 浮选筛浆机供浆泵M23。
DCS总开机程序:
1、联锁投入,总起动;
2、设定二段粗筛良浆出口阀门FV3204 0%开度,排渣阀50%开度;
3、设定浮选筛浆机良浆出口阀门FV3205 0%开度,轻渣排渣阀FV3203
100%开度;
4、设定一段粗筛良浆出口阀门FV3202 0%开度,排渣阀FV3201 50%开度;
5、HC3201阀开,HC3205a阀开;
6、起动排渣分离机电机M3207;
7、延时5秒,起动二段粗筛电机M3208;
8、延时5秒,二段粗筛排渣阀回复动流量自动控制位置上,二段粗筛良浆出
口阀在15秒内打到预设的25%的开度,然后打动流量自动控制位置上。
9、延时5秒,起动浮选筛浆机电机M3205;
10、延时5秒,起动一段粗筛电机M3201;
11、浮选筛进料池液位等于或大于30%;
12、浮选筛进料池搅拌器起动;
延时5秒,起动浮选筛浆机供浆泵电机M3204;
13、浮选筛浆机良浆出口阀门15秒内打到预设的25%的开度上,然后打到流
量自动控制位置上,浮选筛浆机排渣阀回复到流量自动控制位置上;
14、延时3秒,起动2#碎后池搅拌器电机M3110;
15、延时5秒,起动一段粗筛供浆泵电机M3111;
延时5秒,一段粗筛排渣阀回复动流量自动控制位置上,一段粗筛良浆出口阀在
15秒内打到预设的25%的开度,然后打动流量自动控制位置上。
联锁:
1、如果一段粗筛供浆泵电机M3111停止,一段粗筛良浆阀将马上关闭,且一
段粗筛主电机只能运行2min;
2、如果一段粗筛主电机M3201停止,一段粗筛供浆泵电机M3111将不能起动;
3、如果二段粗筛电机M3208或浮选筛浆机电机M3205停止,浮选筛供浆泵电
机M3204将停止;
4、如果浮选筛浆机供浆泵电机M3204停止,浮选筛浆机电机M3205及二段粗
筛电机M3208只能运行2min;
5、如果以下任何电机停止超过15秒,所有其后的电机也将停止:
a:分级筛供浆泵电机M3211;
b:一段粗筛供浆泵电机M3111;
6、如果以下任何电机停止超过15秒,所有其后的电机也将停止:
a:浮选筛供浆泵电机M3204;
b:一段粗筛供浆泵电机M3111。
Note: