第5章 S7-200 PLC的指令系统
习题与思考题
1. S7-200指令参数所用的基本数据类型有哪些?
答:S7-200 PLC的指令参数所用的基本数据类型有1位布尔型(BOOL)、8位无符号字节型(BYTE)、8位有符号字节型(SIMATIC模式仅限用于SHRB指令)、16位无符号整数(WORD)、16位有符号整数(INT)、32位无符号双字整数(DWORD)、32位有符号双字整数(DINT)、32位实数型(REAL)。实数型(REAL)是按照ANSI/IEEE 754-1985标准(单精度)的表示格式规定。2~255字节的字符串型(STRING)
2. 立即I/O指令有何特点?它应用于什么场合?
答:立即指令允许对输入和输出点进行快速和直接存取。当用立即指令读取输入点的状态时,相应的输入映像寄存器中的值并未发生更新;用立即指令访问输出点时,访问的同时,相应的输出映像寄存器的内容也被刷新。由于立即操作指令针对的是I/O端口的数字输入和数字输出信号,所以它们的位操作数地址只能是物理输入端口地址Ix.x和物理输出端口地址Qx.x。
3. 逻辑堆栈指令有哪些?各用于什么场合?
答:复杂逻辑指令,西门子称为逻辑堆栈指令。主要用来描述对触点进行的复杂连接,并可以实现对逻辑堆栈复杂的操作。
复杂逻辑指令包括:ALD、OLD、LPS、LRD、LPP和LDS。这些指令中除LDS外,其余指令都无操作数。这些指令都是位逻辑指令。
栈装载与指令ALD用于将并联子网络串联起来。 栈装载或指令OLD用于将串联子网络并联起来。
逻辑推入栈指令LPS,在梯形图中的分支结构中,用于生成一条新的母线,左侧为主控逻辑块时,第一个完整的从逻辑行从此处开始。
逻辑读栈指令LRD,在梯形图中的分支结构中,当左侧为主控逻辑块时,该指令用于开始第二个和后边更多的从逻辑块。
逻辑栈弹出指令LPP,在梯形图中的分支结构中,用于恢复LPS指令生成的新母线。 装入堆栈指令LDS,复制堆栈中的第n级值,并将该值置于栈顶。原栈中各级栈值依次下移一级,栈底值被推出栈而丢失。
4. 定时器有几种类型?各有何特点?与定时器相关的变量有哪些?梯形图中如何表示这些变量?
答:S7-200系列PLC的主机有256个定时器T0~T255,分为三种类型,每种类型的时间分辨率(或称为时基/时间增量/时间单位)又分为三种,如下表所示。
(1)接通延时定时器指令TON,用于接通单一间隔定时。
(2)有记忆接通延时定时器指令TONR,用于累计若干个时间间隔。只能用复位指令进行复位操作,使当前值清零。
(3)断开延时定时器指令TOF,用于断开后的单一间隔定时。
1
定时器类型 时间分辩率/ms 1 接通延时定时器TON 断开延时定时器TOF 10 100 有记忆接通延时定时器 TONR 1 10 100 计时范围/s 0~32.767 0~327.67 0~3276.7 0~32.767 0~327.67 0~3276.7 定时器号 T32,T96 T33~T36,T97~T100 T37~T63,T101~T255 T0,T64 T1~T4,T65~T68 T5~T31,T69~T95 与定时器相关的变量有:
一个16位的当前值寄存器,用以存放计时累计的当前值(INT,最大计时值32767,单位ms或10ms或100ms,取决于时间分辨率);
一个16位的预设值寄存器,用以存放定时时间的预设值PT(INT); 一位状态位(BOOL),用以反映定时器的定时时间是否达到的状态,称为定时器位。 使能输入IN,用于控制定时器的工作状态。
5. 计数器有几种类型?各有何特点?与计数器相关的变量有哪些?梯形图中如何表示这些变量?
答:
类型:S7-200系列PLC的计数器指令有两大类:通用计数器指令和高速计数器指令。 通用计数器指令有3种:增计数器指令CTU、减计数器指令CTD和增减计数器指令CTUD。 特点:
(1)增计数器指令CTU
每当增计数输入CU发生一次从OFF到ON的转换(正跳变-上升沿)时,该计数器的当前值就增加1。
如果当前值Cxxx≥预设值PV,则计数器位=ON;否则,计数器位=OFF。
当前值达到预设值后继续计数,计数当前值到最大值(32,767)时,计数器停止。 当复位输入R接通或执行复位指令时,计数器被复位,计数器位=OFF,当前值=0。 (2)增减计数器指令CTUD
利用LD装载预设值。当装载输入LD接通时,计数器复位,计数器位=OFF,当前值=预设值PV。
每当减计数输入CD发生一次从OFF到ON的转换(正跳变-上升沿)时,该计数器的当前值就减1。
计数当前值到0时,计数器停止,计数器位=ON,当前值=0。
利用复位指令复位时,CTD计数器位变为OFF,当前值变为0(教材P131有误)。 (3)减计数器指令CTD
2
每当增计数输入CU发生一次从OFF到ON的转换时,该计数器的当前值就增1;每当减计数输入CD发生一次从OFF到ON的转换时,该计数器的当前值就减1。 如果当前值Cxxx≥预设值PV,则计数器位=ON;否则,计数器位=OFF。 当前值达到预设值后继续计数(增或减)。
当增计数达到最大值(32,767)时,在增计数输入端CU的下一个上升沿导致当前计数值绕回到最小值(-32,768)。同样,计数达到最小值(-32,768)时,减计数输入端CD的下一个上升沿会导致当前计数值绕回到最大值(32,767)。所以,CTUD是一个循环计数器,计数范围从-32768~+32767。
当复位输入R接通或执行复位指令时,该计数器被复位。复位时,计数器位=OFF,当前值=0。
与计数器有关的变量及在梯形图中的表示方法: 计数器地址:C0~C255,常数 计数器当前值:C0~C255,INT型 计数器的预设值(PV):INT型 计数器位:C0~C255,BOOL型
增/减计数信号输入:能流,BOOL型 复位输入:能流,BOOL型
装载信号输入:能流,BOOL型
6. 不同分辨率的定时器的当前值是如何刷新的?
答:不同分辨率的定时器,它们当前值的刷新时机是不同的,具体情况如下:
1ms分辨率定时器启动后,定时器对1ms的时间间隔(时基信号)进行计时。定时器位和当前值每隔1ms刷新一次,与扫描周期不同步。换句话说,如果扫描周期大于1ms,则在一个扫描周期中定时器位和当前值可能要刷新多次。
10ms分辨率定时器启动后,定时器对10ms的时间间隔进行计时。程序执行时,在每次扫描周期开始对10ms定时器刷新,其方法是以当前值加上累积的10毫秒间隔的数目(自上一次扫描开始算起),所以在一个扫描周期内定时器当前值和定时器位保持不变。
100ms分辨率定时器启动后,定时器对100ms的时间间隔进行计时。只有在执行到这些定时器指令时,这些定时器的当前值才被刷新(当前值加上积累的100毫秒间隔的数目(自前一次扫描开始算起))。
7. 写出图5-50所示梯形图的语句表程序。(原题程序不分网络,应该按右图所示修改)
3
图5-50 习题7梯形图
答:语句表程序如下 网络1 // 网络标题 LD I0.0 O I0.3 LD I0.1 O I0.4 ALD
AN I0.2 = Q0.1 网络2
LD Q0.1 TON T37, +30 网络3
LD T37 S Q0.2, 4 网络4
LD I0.1 S Q0.3, 1
8. 写出图5-51所示梯形图的语句表程序。
4
图5-51 习题8梯形图
答:语句表程序如下 网络1 // 网络标题 LD I0.4 EU
SHRB I0.5, V3.0, +4
网络2
LD I0.1 LPS
A V3.0 S Q3.0, 2 LRD
A V3.1 R Q3.1, 1 LRD
A V3.2 S Q3.2, 3 LPP
A V3.3 R Q3.3, 1
9. 用自复位式定时器设计一个周期为5s,脉冲为一个扫描周期的脉冲串信号。
答:如果使用100ms时基的定时器,梯形图程序和语句表程序分别如答案图14 a)、答案图14 b)所示。其中答案图14 b)所示要比答案图14 a)好一些。
5
网络 1 // 自复位定时器 // 网络注释 LDN T37
TON T37, +50
网络 2 // 输出脉冲串 LD T37 = Q1.0
答案图14 a)
网络 1 // 自复位定时器 // 网络注释 LDN Q1.0 TON T37, +50
网络 2 // 输出脉冲串 LD T37 = Q1.0
答案图14 b)
如果使用10ms时基的定时器,梯形图程序和语句表程序如答案图14 c)所示。
网络 1 // 自复位定时器 // 网络注释 LDN Q1.0
TON T33, +500
网络 2 // 输出脉冲串 LD T33 = Q1.0
答案图14 c)
6
如果使用1ms时基的定时器,梯形图程序和语句表程序如答案图14 d)所示。
网络 1 // 自复位定时器 // 网络注释 LDN Q1.0
TON T32, +5000
网络 2 // 输出脉冲串 LD T32 = Q1.0
答案图14 d)
10. 设计一个计数范围为50000的计数器。
答:梯形图程序和语句表程序分别如答案图15所示。
网络1
LD I0.0 LD M0.0 CTU C20, 50
网络2
LD C20 = M0.0
网络3 // 网络注释 LD M0.0 LD I0.1
CTU C30, 1000
答案图15
11. 用置位、复位(S、R)指令设计一台电动机的启、停控制程序。 答:梯形图程序和语句表程序分别如答案图16所示。
7
网络1
LD I0.0 S Q1.1, 1
网络2
LD I0.1 R Q1.1, 1
答案图16
12. 用顺序控制继电器(SCR)指令设计一个居室通风系统控制程序,使3个居室的通风机自动轮流地打开和关闭。轮换时间间隔为1h。
答:用PLC输出端点Q0.0~Q0.2分别控制三个通风机,I0.1接启动按钮开关,I0.2接停止按钮开关,梯形图程序和语句表程序分别如答案图17所示。
习题与思考题5-12: 居室通风系统控制程序 网络1 // 初始状态 //激活第一个SCR段 LD I0.1 AN Q0.0 AN Q0.1 AN Q0.2 S S0.1, 1
网络2 // SCR段1:
//起动通风机1,/并延时1h LSCR S0.1
网络3 // 起动通风机1 // 网络注释 LD SM0.0 S Q0.0, 1
网络 4 // 计时1h(3600s) LDN M0.0
TON T37, 18000 网络5
LD T37 = M0.0
答案图17
8
网络 6
LD M0.0 LD C20 CTD C20, 2
网络7 // 计时到后, //关闭通风机1, //激活SCR段2, //并停止本SCR段 LD C20 R Q0.0, 1 SCRT S0.2 网络8 SCRE
网络9 SCR段2:起动通风机2,并延时1h LSCR S0.2
Network 10 // 起动通风机2 // 网络注释 LD SM0.0 S Q0.1, 1
Network 11 // 计时1h(3600s) LDN M0.1
TON T38, 18000
Network 12 LD T38 = M0.1
答案图17(续)
9
网络 13 LD M0.1 LD C21 CTD C21, 2
网络14 // 计时到后,关闭通风机2, //激活SCR段3,并停止本SCR段 LD C21
R Q0.1, 1 SCRT S0.3
网络15 SCRE
网络16 // SCR段3:起动通风机3, ///并延时1h LSCR S0.3
网络17 // 起动通风机3 LD SM0.0 S Q0.2, 1
网络18 // 计时1h(3600s) LDN M0.2
TON T39, 18000
网络19 LD T39 = M0.2
答案图17(续)
10
网络20
LD M0.2 LD C22 CTD C22, 2
网络21 // 计时到后,关闭通风机3, //激活SCR段1,并停止本SCR段 LD C22 R Q0.2, 1 SCRT S0.1
网络22 SCRE
网络23 // 停机 LD I0.2 R S0.1, 3 R Q0.0, 3
13. 用寄存器移位指令(SHRB)设计一个路灯照明系统的控制程序,3路灯按H1→H2→ H3的顺序依次点亮。各路灯之间点亮的间隔时间为10h。
答:用PLC输出端点Q0.0~Q0.2分别控制路灯H1~H3。控制程序见答案图18。
答案图17(续)
11
答案图18
12
习题与思考题5-13: 路灯控制程序(循环点亮) 网络1 // 起动/停止 LD I0.0 O M0.0 AN I0.1 = M0.0 网络2 // 停止 LD I0.1 R Q0.0, 3
网络3 // 灯1亮 LD M0.0 EU
S Q0.0, 1 R Q0.1, 2
网络4 // 计时10h(36000s) LD M0.0 AN M0.1 TON T37, 50
网络5
LD T37 = M0.1 网络6
LD M0.1 LD C20 LD I0.0 EU OLD
CTD C20, 2
网络7 // 计时到后,移位,下一个灯亮LD C20
SHRB Q0.2, Q0.0, 3
14. 用循环移位指令设计一个彩灯控制程序,8路彩灯串按H1→H2→H3→„→H8的顺序依次点亮,且不断重复循环。各路彩灯之间的间隔时间为0.1s。
答:用PLC输出端点Q0.0~Q0.7分别控制彩灯H1~H8。I0.0接启动按钮开关常开触点,I0.1接停止按钮开关常开触点,控制程序见答案图19。
习题与思考题5-14: 彩灯控制程序(循环点亮) 网络1 // 起动/停止 LD I0.0 O M0.0 AN I0.1 = M0.0 网络2 // 停止 LD I0.1 R Q0.0, 8 网络3 // 灯1亮 LD M0.0 EU
S Q0.0, 1 网络4 // 计时0.1s LD M0.0
AN M0.1 TON T33, 10 网络5
LD T33 = M0.1
网络6 // 计时到后,循环左移 //,下一个灯亮 LD M0.1 RLB QB0, 1
答案图19
15. 用整数除法指令将VW100中的(240)除以8后存放到AC0中。 答:编程见答案图20。
13
习题与思考题5-15 网络1
LD M0.1
MOVW 240, VW100 MOVW VW100, AC0 /I +8, AC0
答案图20
16. 将AIW0中的有符号整数(3400)转换成(0.0~1.0)之间的实数,再将结果存人VD200。 答:S7-200 PLC的模拟量输入模块将模拟量转换成数字量后的典型量程范围为:
单极性:0~32000
双极性:-32000~32000
设模拟量输入量为双极性输入,则转换公式为
y1x0.5 64000式中,x为转换前的模拟量对应的数字量,y是转换后的实数值。
根据以上转换公式编制的程序如答案图21所示。
14
习题与思考题5-16 网络1
LD M0.1
ITD AIW0, AC0
DTR AC0, AC0
/R 64000.0, AC0
+R 0.5, AC0
MOVR AC0, VD200
答案图21
17. 将PID运算输出的标准化实数0.75先进行比例换算,然后再转换成一个有符号整数(INT),结果存入AQW2。
答:PID运算的输出结果为规格化的实数,范围在0~1.0之间。在将PID指令计算得到的PID回路的输出作为实际的模拟信号用于驱动实际负载之前,需要先将PID指令计算得到输出换算到实际需要的成比例的16位整数值,然后输出到模拟输出模块。转换公式如下
RScal(MnOffset)*Span 式中,RSca1是与PID环路输出成比例的实数值;Mn是规格化的环路输出的实数值;Offset是偏移量,对单极输出是0.0,对双极输出是0.5;Span是实际输出的最大可能的数值减去最小可能的数值,对单极输出,典型值为32000,对双极输出,典型值为64000。
设输出为双极性(输出的整数范围为-32000~+32000),程序如答案图22所示。
15
习题与思考题5-17 网络1
LD M0.1
MOVR 0.75, AC0 -R 0.5, AC0
*R 64000.0, AC0
ROUND AC0, AC0
DTI AC0, LW0
MOVW LW0, AQW2
答案图22
18. 用定时中断设置一个每0.1s采集一次模拟量输入值的控制程序。 答:编程见答案图23。
习题与思考题5-18:
定时(0.1s)中断采集模拟量 网络1 // 首次扫描调用子程序0 LD SM0.1 CALL SBR0
答案图23
16
子程序0
网络1 // 网络标题
LD SM0.0
MOVB 100, SMB34
//设置中断0的时间间隔.01秒
ATCH INT0, 10 //连接中断服务程序 ENI
//全局性允许中断
中断程序0 网络1 // INT_0
// 每100 ms读取AIW2的值 LD SM0.0
MOVW AIW2, VW100
答案图23续
19. 按模式6设计高速计数器HSC1初始化子程序,设控制字节SMB47=16#F8。
答:要对高速计数器编程,必须完成下列基本任务:定义计数器和模式;设置控制字节;设置当前值(起始值);设置预设值(目标数值);分配和启用中断例行程序;激活高速计数器。
编程见答案图24。
20. 以输出点Q0.1为例,简述PTO多段操作初始化及其操作过程。
21. 用TODR指令从实时时钟读取当前日期,并将“星期”的数字用段码指令(SEG)显示出来。
答:执行读实时时钟指令TODR后,得到连续8个字节中的最高字节是“星期几”的BCD码,其中“1”表示星期日,“7”表示星期六,“0”被禁用,所以得到的参数需要修正。编程见答案图26。
17
习题与思考题5-21 网络1 // 网络标题 // 网络注释 LD M0.1 TODR VB100
//读实时时钟
MOVB VB107, VB108 -I
1, VW108
//为减法做准备
//修正\"星期\"数值
SEG VB108, VB110 //转换成七段显示码
答案图26
22. 指出图5-52所示梯形图中的语法错误,并改正。
(a)
图5-52 习题22梯形图
(b)
答:图(a)的错误为计数器预设值PV=300000>32767,超出INT型数据的范围。应改成小于等于32767的数据。
18
图(b)中的错误在于操作数类型与指令不匹配。字逻辑与指令中的VD30应改为字型操作数,例如改成VW30;双字逻辑异或指令中的操作数VW10和VW100应改成双字操作数,例如改成VD20和VD100。
19
第8章 可编程控制器系统设计与应用
习题与思考题
1. 简述可编程控制器系统设计的一般原则和步骤。 答:可编程控制系统设计时应遵循以下原则: (1)最大限度地满足被控对象的要求;
(2)在满足控制要求的前提下,力求使控制系统简单、经济、适用及维护方便; (3)保证系统的安全可靠;
(4)考虑生产发展和工艺改进的要求,在选型时应留有适当的余量。 由于PLC的结构和工作方式与一般微机和继电器相比各有特点,所以其设计的步骤也不尽相同,具体设计步骤如下:
(1)详细了解被控对象的生产工艺过程,分析控制要求; (2)根据控制要求确定所需的用户输入/输出设备; (3)选择PLC类型;
(4)分配PLC的I/O点,设计I/O连接图;
(5) PLC软件设计,同时可进行控制台的设计和现场施工; (6)系统调试,固化程序,交付使用。
2. 可编程控制器的选型需要考虑哪些问题? 答:
(1) PLC容量的选择
①首先要对控制任务进行详细的分析,把所有的I/O点找出来,包括开关量I/O和模拟量I/O点。
②然后要对用户存储器容量进行估算。总存储器字数=(开关量输入点数+开关量输出点数) ×10+模拟量点数×150。然后按计算存储器字数的25%考虑余量。
(2) PLC机型的选择
由于生产PLC的厂家众多,实现的功能虽基本相同,性能、价格和编程语言却有较大差别,一般从以下几个方面考虑。
①功能方面:所有PLC一般都具有常规的功能,但对某些特殊要求,就要知道所选用的PLC是否有能力完成控制任务。
②价格方面:不同厂家的PLC产品价格相差很大,有些功能类似、质量相当、I/O点数相当的PLC的价格能相差40%以上。在使用PLC较多的情况下,性价比是一个重要的因素。
③售后服务:应考虑相关的技术支持,统一型号方便维护,系统改造、升级等因素。 5、已知彩灯共有8盏,设计一段彩灯控制程序,实现下述控制要求: ①程序开始时,灯1(Q0.0)亮;
①一次循环扫描旦定时时间到后,灯1(Q0.0)灭,灯2(Q0.1)亮;
③再次循环扫描且定时时间到后,灯2(Q0.1)灭,灯3(Q0.2)亮,……,直至灯8亮。灯8灭后循环重新开始。
20
答:控制彩灯的方式有很多种,一般用循环指令来实现比较常见。本例中,I0.0为设定按钮,I0.1为启动按钮。Q0.0-Q0.7控制8盏彩灯。参考程序如答案图34所示。
答案图34
21
习题与思考题8-5 网络1 // 网络标题 //按下设定按钮I0.0, //给QB0置初值 LD I0.0 EU
MOVB 16#1, QB0
网络2
// 按下启动按钮I0.l, //启动定时器, //定时时间2s LD I0.1 AN T37
TON T37, +20
网络3
// 定时时间到, //灯循环左移 LD T37 RLB QB0, 1
因篇幅问题不能全部显示,请点此查看更多更全内容