首页 理论教育 高效使用数据处理指令的技巧

高效使用数据处理指令的技巧

时间:2023-06-27 理论教育 版权反馈
【摘要】:数据处理指令包含批复位,编、译码指令及平均值计算指令等。相对于FNC10~FNC39的基本应用指令,FNC40~FNC49指令能够进行更加复杂的数据处理或作为满足特殊用途的指令。这一类指令除ANS指令外均可采用连续执行和脉冲执行两种方式。译码指令使用要点如下:1)如果源中的位全部为“0”时,则目标中的bit0为“1”。图5-34 ON总数指令的应用指令中操作数对象软元件说明见表5-10。

高效使用数据处理指令的技巧

数据处理指令包含批复位,编、译码指令及平均值计算指令等。相对于FNC10~FNC39的基本应用指令,FNC40~FNC49指令能够进行更加复杂的数据处理或作为满足特殊用途的指令。这一类指令除ANS指令外均可采用连续执行和脉冲执行两种方式。

1.成批复位指令ZRST(FNC40)

成批复位指令是在两个指定的软元件之间执行成批复位,两个软元件必须为同类型元件,如图5-29所示。指令可以复位的软元件有Y、M、S、T、C、D、R。

978-7-111-59091-0-Chapter05-46.jpg

图5-29 区间复位指令应用示例

使用ZRST指令应注意如下几点:

1)[D1•]和[D2•]指定的应为同类元件。[D1•]指定的元件号应小于等于[D2•]指定的元件号,否则只有[D1•]指定的1点元件被复位。

2)虽然ZRST可处理16位指定的软元件,但[D1•]、[D2•]也可同时指定32位计数器。[D1•]、[D2•]中一个指定16位计数器、另一个指定32位计数器是不允许的,如图5-30所示。

978-7-111-59091-0-Chapter05-47.jpg

图5-30 ZRST指令使用注意示例

2.译码指令DEC0(FNC41)

译码指令是将数字数据中数值转换成1点的ON指令,根据ON位的位置可以将位编号读成数值。译码指令示例如图5-31所示,指令执行情况示例如图5-32所示。

978-7-111-59091-0-Chapter05-48.jpg

图5-31 译码指令示例

图5-32中,源D10中的b1、b2、b3位为1,结果得到的数据为14(8+4+2),所以译码结果为M14位为1。

译码指令使用要点如下:

1)如果源中的位全部为“0”时,则目标中的bit0为“1”。

2)[D•]指定的目标是Y、M、S时,n的取值范围为1≤n≤8,[D•]的最大取值范围为28=256。

3)[D•]指定的目标是T、C或D时,n的取值范围为1≤n≤4。[D•]的最大取值范围为24=16点。

978-7-111-59091-0-Chapter05-49.jpg

图5-32 译码指令执行情况示例

4)当执行条件为OFF时,指令不执行。译码输出会保持之前的ON/OFF状态。指令中操作数的说明见表5-8。

5-8 译码指令中操作数的说明

978-7-111-59091-0-Chapter05-50.jpg

注:操作数n的取值范围为1~8,n=0时指令不处理。源操作数为n位时,目标操作数为2n位。

3.编码指令ENC0(FNC42)

编码指令的功能是求出数据中ON位的位置,应用示例如图5-33所示。指令中操作数说明见表5-9。

978-7-111-59091-0-Chapter05-51.jpg

图5-33 编码指令应用示例

5-9 编码指令中操作数说明(www.xing528.com)

978-7-111-59091-0-Chapter05-52.jpg

编码指令使用规定如下:

1)若[S•]指定的源是T、C、D、V或Z,应使n≤4,其数据源为2n位(最大16位数据)。

2)若[S•]指定的源是X、Y、M、S,应使1≤n≤8,其数据源为2n位(最大256位数据)。

3)若指定源中为“1”的位不止一处,则只有最高位的“1”有效。若指定源中的所有位均为0,则出错。

4)如果源中最低位为1,则目标全部为0。

5)当执行条件OFF时,指令不执行。编码输出中被置1的元件即使在执行条件变为OFF后仍保持其状态直到下一次执行该指令。

4.ON总数指令SUM(FNC43)

SUM是计算指定源软元件中的数据中有多少个为“1”(ON)的指令,并将结果送到目标中。ON总数指令的应用如图5-34所示,图中D10=K21847按二进制位分配后其“1”的总数为9个,存入D20中(D20中的b0位和b3位为1,所以D20=8+1=9)。

978-7-111-59091-0-Chapter05-53.jpg

图5-34 ON总数指令的应用

指令中操作数对象软元件说明见表5-10。

5-10 SUM指令操作数对象软元件说明

978-7-111-59091-0-Chapter05-54.jpg

若[S•]中没有为“1”的位,则零标志M8020置1。指令条件为OFF时不执行指令,但已动作的ON位数的输出会保持之前的ON/OFF状态。

5.ON位判别指令BON(FNC44)

BON指令是检查软元件指定位的位置为ON还是OFF的指令。

BON指令应用示例如图5-35所示,若D20中的第15位为ON,则M20变为ON。即使X0变为OFF,M20亦保持不变。

978-7-111-59091-0-Chapter05-55.jpg

图5-35 BON指令应用示例

6.七段码译码指令SEGD(FNC73)

SEGD指令是将数据译码后点亮七段数码管(1位数)的指令。

图5-36所示为七段译码示例,图中的[S•]指定元件的低4位所确定的十六进制数(0~F)经译码驱动七段显示器。解码信号存于[D•]指定元件,[D•]的高8位不变。译码表见表5-11,表中数码管为共阴极(注意使用时要区别数码管是共阴极还是共阳极)。

图5-36a所示实际上为一个八层电梯楼层显示程序(这也是常用程序),图5-36b为指令操作数使用说明,其外部接线如图5-36c所示,数码管为共阴极,X10~X17为电梯在各层的限位开关。

978-7-111-59091-0-Chapter05-56.jpg

图5-36 七段译码指令SEGD应用示例

a)楼层显示梯形图程序 b)指令操作数使用说明 c)外部接线

5-11 七段译码表

978-7-111-59091-0-Chapter05-57.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈