首页 理论教育 数据处理指令:优化程序效率的秘密

数据处理指令:优化程序效率的秘密

时间:2023-06-29 理论教育 版权反馈
【摘要】:数据处理指令包含批复位,编、译码指令及平均值计算指令等。相对于FNC10~FNC39的基本应用指令,FNC40~FNC49指令则能够进行更加复杂的处理或作为满足特殊用途的指令。图8-63 示例指令执行情况表8-5 指令中操作数说明注:操作数n的取值范围为1~8,n=0时指令不处理。图8-64 八位选择开关3.编码ENCO FNC42编码指令是求出数据中ON位的位置指令。图8-72 报警指令使用示例

数据处理指令:优化程序效率的秘密

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

1.成批复位ZRST(FNC40)

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

978-7-111-38174-7-Chapter08-68.jpg

图8-60 区间复位指令应用例

使用ZRST指令注意事项:

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

2)虽然ZRST是16bit指令处理,[D1·]、[D2·]也可同时指定32bit计数器。但[D1·][D2·]中一个指定16bit计数器、另一个指定32bit计数器是不允许的。如图8-61所示。

978-7-111-38174-7-Chapter08-69.jpg

图8-61 使用注意例

978-7-111-38174-7-Chapter08-70.jpg

图8-62 解码指令示例

2.译码DECO FNC41

译码指令是将数字数据中数值转换成1点ON的指令,根据ON位的位置可以将位编号读成数值。译码指令示例如图8-62所示,指令执行情况如图8-63所示。指令中操作数说明见表8-5。

978-7-111-38174-7-Chapter08-71.jpg

图8-63 示例指令执行情况

表8-5 指令中操作数说明

978-7-111-38174-7-Chapter08-72.jpg

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

图8-63中,因为源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点。

4)当执行条件OFF时,指令不执行。译码输出会保持之前的ON/OFF状态。

【例8-7】用功能指令组成1个八位选择开关。如图8-64所示。

978-7-111-38174-7-Chapter08-73.jpg

图8-64 八位选择开关

3.编码ENCO FNC42

编码指令是求出数据中ON位的位置指令。编码指令应用示例如图8-65所示。指令中操作数说明见表8-6。

表8-6 指令中操作数说明

978-7-111-38174-7-Chapter08-74.jpg

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

978-7-111-38174-7-Chapter08-75.jpg

图8-65 编码指令应用示例

指令使用技巧:

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

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

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

4)如果源中最低位为1,则目标全部为0。(www.xing528.com)

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

【例8-8】大数优先动作程序设计:当输入继电器X7~X0中有n个同时动作时,编号较大的优先。如图8-66所示,当X5、X3、X0同时动作时,则最大编码的输入继电器X5的有效,对应的M5=1。

978-7-111-38174-7-Chapter08-76.jpg

图8-66 大数优先动作程序

4.ON总数SUM(FNC43)

SUM指令是计算指定源软元件的数据中有多少个为“1”(ON),并将结果送到目标中。ON总数指令应用如图8-67所示,指令中操作数对象软元件见表8-7。

图8-67中D10=K21847按二进制位分配后其中“1”的总数为9个,存入D20中(D20中的b0和b3位为1,所以D20=8+1=9)。

表8-7 操作数对象软元件

978-7-111-38174-7-Chapter08-77.jpg

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

978-7-111-38174-7-Chapter08-78.jpg

图8-67 ON总数指令应用

【例8-9】用4个开关分别在4个不同的地点控制一盏灯。如图8-68所示。

978-7-111-38174-7-Chapter08-79.jpg

图8-68 4个开关分别在4个不同的地点控制一只灯

5.ON位判别BON(FNC44)

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

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

978-7-111-38174-7-Chapter08-80.jpg

图8-69 ON位判别指令应用

6.平均值MEAN FNC45

MEAN指令是求数据的平均值指令。n个源数据的平均值送到指定目标中。平均值是指n个源数据的代数和n除所得的商,余数略去。若元件超出范围,n的值会自动缩小以取允许范围内元件的平均值。平均值指令如图8-70所示。

978-7-111-38174-7-Chapter08-81.jpg

图8-70 求平均值指令

若指定的n值超出1~64的范围,则出错。

7.报警器置位ANS FNC46/报警器复位ANR FNC47(略)

ANS是对信号报警器用的状态(S900~S999)进行置位用的指令。ANR是对信号报警器(S900~S999)中已经ON的最小编号进行复位。指令表现形式如图8-71所示。

图8-71中,如果X10接通时间超过15s(判定时间m=150×ms),S900就会置位,如果X10接通时间不到15s时,X10断开,定时器会自动复位。

978-7-111-38174-7-Chapter08-82.jpg

图8-71 ANS/ANR指令表形式

如果X12接通,把置位的报警状态S900复位,如果有多个状态动作,复位编号最新的状态。

ANR指令要求用脉冲执行!

ANS指令在使用的时候还会用到以下相关软元件,见表8-8。

表8-8 ANS指令使用相关软元件

978-7-111-38174-7-Chapter08-83.jpg

【例8-10】综合使用编程示例,如图8-72所示。

978-7-111-38174-7-Chapter08-84.jpg

图8-72 报警指令使用示例

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

我要反馈