s7-300寻址实例

S7300 寻址应用实例
内容摘要:在 plc 编程过程中,凡涉及到大量数据处理时,都会用到寻址,这样数据处理起来 很简便,让编程更加得心应手。 关键字:寻址 S7-300 S7-400 西门子 plc 编程 编程是通过计算机来解决现实问题, 任何程序都有数据结构和算法两方面内容, 其中数据是 基础,如何处理数据,在编程过程中都是很重要的工作。在 S7-300 和 S7-400 plc 编程的过 程中,出于处理大量数据的需要,寻址是编程中的一项重要的工作,用于数据的存储,传送 和转移。 下面一段程序就是把一个数据块 DB9 中的 50 个数据循环下移一位,即第 49 个数据移 到第 50 个数据字节中,第 48 个移到第 49 个,依次类推,第 1 个移到第 2 个,第 50 个在开 始被保存的存储器中,最后再移到第一个数据字节中,思路是这样,具体实现方法如下: 首先建一个数据块,在本例中建的是 DB9,在数据中可以多建几个,这样便于观察数据在 程序运行过程中是否溢出规定的范围。本例中共建了 56 个字节的变量,参与循环的数据为 DB0 到 DB49。

首先在初始化主程序 OB100 中写入赋初值的程序 OPN DB 9 L P#0.0 T MD 96 //将间接寻址的地址 MD96 赋初值 P#0.0 L 1 T MB 92 //将 MB92 设定为初始传送到 DB9 中的数据

L T

P#48.0 MD 100

// MD100 为被移位的数据,所以初值为 P#48.0,移位时移 //入 P#49.0

然后写循环子程序,这里用 FC9,然后在 OB1 中调用 FC9,FC9 中程序 Network 1 的 思路是把 DB9 中的从 DBB0 到 DBB49 依次装入从 1 到 50 的数。 Network 1: OPN DB 9 //打开 DB9 A( L MD 96 L P#49.0 <=D ) //做一个限定,当地址 MD96 小于等于 P#49.0 时,执行存储数据 JCN ae //若执行到 P#49.0 后, MD96 地址加 P#1.0 变成 P#50.0, 则跳转到 nop0 L MB 92 //依次把 1 到 50 T DBB [MD 96] //传到 DB0 到 DB49 中 L L +D T L L +D T NOP MD P#1.0 MD MB 1 MB 0 96

96 92

//装入一个数据后,地址加 P#1.0

92

//装入一个数据后,数据加 1

ae:

然后设定数据移位的地址 MD100,每次 m10.4 由 0 置 1 的时候,都把 MD100 恢复到 P#48.0,以便从倒数第二个数开始移位,并在移位开始时,将最先被覆盖的 DBB49 先存储 到 MB90 中,以便在其他数据完成传送后,把 MB90 中的 DBB49 传入 DBB0。 Network 2: A M 10.4 FP M 10.5 //m10.4 的上升沿脉冲 JCN ad // m10.4 未触发时,跳走 L P#48.0 T MD 100 //每次触发移位时,把 P#48.0 存入递减地址 MD100 L DBB 49 T MB 90 //每次触发移位时,把最先被覆盖的数先存入 MB90 中 ad: NOP 0 每次触发 m10.4 时,经过 50 次扫描,将 49 个数据下移一位,最后一个数据最后存入 DBB0 中。 Network 3:

OPN A JCN A( L L >=D )

DB M aB

9 10.4

//先打开数据块 DB9 //若 m10.4 未触发,直接跳走

MD 100 P#0.0 //若 MD100 大于 p#0.0 则执行移位 //若 MD100 等于 p#0.0-p#1.0 后则跳走 //MD100 存入地址寄存器

JCN ac LAR1 MD L T

100

DBB [AR1,P#0.0] DBB [AR1,P#1.0]

//把上一位移入下一位

L MD 100 L P#1.0 -D //存入一个后,地址减 P#1.0 T MD 100 ac: NOP 0 aB: NOP 0 若 MD100 等于 p#0.0-p#1.0,说明前面 49 个数都已经下移了,最后把预存到 MB90 中 的 DBB49 存到 DBB0 中 Network 4: A( L L -D L ==D ) JCN L T af: NOP

P#0.0 P#1.0 MD 100 //若 MD100 等于 p#0.0-p#1.0,执行移位 //否则跳走 90 0

af MB DBB 0

程序写好后,编译保存,打开仿真器,将仿真器设为 PLCSIM(MPI)模式,并执行运行 run,如下图所示:DB9 中的数据依次为 16 进制 1 到 32,即为 10 进制的 1 到 50。

当点击把 m10.4 置 1,m10.5 上升沿同时置 1,循环移位开始,整体下移一位,最后一 个数据循环到第一位数据字节上。效果如下图:

通过这个实验,可以了解 S7300 和 S7400plc 在处理数据时的强大功能,并为进行大型 项目的开发打下一点基础。 参考文献: 1、西门子公司 《S7300 400 寻址》 2、 《西门子 S7-300/400 PLC 编程语句表和结构化控制语言描述(第 3 版) 》


相关文档

S7-300寻址
S7-300和S7-400寻址 [1]
关于S7-300和400的指针寻址功能说明
06 S7-300的符号、寻址方式及应用
S7-300实例
关于s7-300和s7400的指针寻址功能说明
s7-300应用实例
西门子S7-300寻址方式
用S7-300与S7-200通过EM277 DP通讯实例
S7-300_程序设计实例1
电脑版