第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,用于断开后的单一间隔定时。
定时器类型 时间分辩率/ms 1 接通延时定时器TON 断开延时定时器TOF 10 100 1 有记忆接通延时定时器 TONR 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
每当增计数输入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所示梯形图的语句表程序。(原题程序不分网络,应该按右图所示修改)