定义一个共享数据块DB1 在DB1中定义一个数组 用程序 访问数据里面的某一个成员或者地址连续的成员

提纲 : 定义一个共享数据块 DB1 在DB1 中定义数组

用SFC21 实现 实现全部数组元素的赋一样的值

实现 给数组中的某一个元素赋值

实现 对数组中的全部元素赋值

实现将数组中的某个 或者 某一串 元素读取出来,放在程序中的某一个变量 或者 某些连续数组的元素中

训练前 需要掌握的知识点

在书本72 实训十六 中

L P#10.0 //表示将32位内部 指针值转载到累加器。

扫描二维码关注公众号,回复: 9040866 查看本文章

P#10.0 表示 10.0 是一个指针常量 。

P# "#"号后面紧跟的是 指针变量里面的值。

P#DB1.DBX0.0 INT 1 INT 表示 X 是 字 Word (字)

例如 在数据块DB1 中定义了 数组变量

P# DB1.DBX0.0 INT 1

DB1.DBX0.0 INT 1 实际就是 DB1数据块里面定义的数组Press[1]

在上图1 中的输入以后 就变为 P# DB1.DBX0.0 INT 1

知识点2

P#DB1.DBX0.0 INT 4

表示的是 DBW0~DBW6

实际上就 DBW0 DBW2 DBW4 DBW 6

知识点3

BLKMOV 的输入参数 SRCBLK 和输出参数 DSTBLK 的数据类型必须 一致。

输入是字节类型, 输出也必须是字节类型

输入是字类型, 输出也必须是字类型

练习1

将MW2 里面的值 写入数组 DB1.Press 里面的全部数组元素

例如MW2 是1 执行以后 DB1.Press[1]=1

DB1.Press[2]=1

DB1.Press[3]=1

……

DB1.Press[100]=1

练习 2 写入数组中的某一个元素 (重要)

写入第1个元素

注意:此时的 P#DB1.DBX7.0 INT 1

表示的是 DB1.DBW7 INT 表示寻址的是字 WORD 1 表示 只寻址一个字

DBW7=DB1.Byte[7]+DB1.Byte[8]

假设我把 MW2设为30 对应于十六进制的0X001E

也就是说 byte[7]是 0X00 BYTE[8]对应的是0X1E

仿真

可以知道 地址为8.0 的高字节 写入的是0X1E 所以Press[5]是0X1E00=十进制7680

地址为6.0的低字节 写入的是0X00

假设MW2写入十进制 对应16进制012C

则Prress [4] 为 0X0001 对应十进制 1

Press[5]对应OX2C00 对应十进制 11264

如果刚好P#DB1.DBX4.0 int 1

DBW4=BYTE4 +BYTE 5 与 DB1.DBW4 重合 等于 Press[3 ]

仿真 MW2 写入520

注意:程序在修好了以后 必须先保存 再下载 才生效。

练习3

写入数组中的某几个连续的元素

例如 连续写进press[6 press[7 press[8 press[9 ess[10

5个整形

执行完以后 只有preSS [6] 被成功赋值。

如果需要赋予 5个值日 。 则输入必须是统一类型的5个数据 改正程序为

输入的参数 改正为 P#2.0 INT 4 表示的是 MW2 MW4 MW6 MW 8

执行结果

在共享数据块DB1 查询值的变化

练习 4 将DB1数据块中的DBW4 DB1.DBW4 复制到MW10 中去

百度网盘 

猜你喜欢

转载自www.cnblogs.com/bailongwei654321/p/12288067.html