1、S7300 寻址应用实例内容摘要:在 plc 编程过程中,凡涉及到大量数据处理时,都会用到寻址,这样数据处理起来很简便,让编程更加得心应手。关键字:寻址 S7-300 S7-400 西门子 plc 编程编程是通过计算机来解决现实问题,任何程序都有数据结构和算法两方面内容,其中数据是基础,如何处理数据,在编程过程中都是很重要的工作。在 S7-300 和 S7-400 plc 编程的过程中,出于处理大量数据的需要,寻址是编程中的一项重要的工作,用于数据的存储,传送和转移。下面一段程序就是把一个数据块 DB9 中的 50 个数据循环下移一位,即第 49 个数据移到第 50 个数据字节中,第 48 个
2、移到第 49 个,依次类推,第 1 个移到第 2 个,第 50 个在开始被保存的存储器中,最后再移到第一个数据字节中,思路是这样,具体实现方法如下:首先建一个数据块,在本例中建的是 DB9,在数据中可以多建几个,这样便于观察数据在程序运行过程中是否溢出规定的范围。本例中共建了 56 个字节的变量,参与循环的数据为DB0 到 DB49。首先在初始化主程序 OB100 中写入赋初值的程序OPN DB 9L P#0.0T MD 96 /将间接寻址的地址 MD96 赋初值 P#0.0L 1T MB 92 /将 MB92 设定为初始传送到 DB9 中的数据L P#48.0T MD 100 / MD100
3、 为被移位的数据,所以初值为 P#48.0,移位时移/入 P#49.0然后写循环子程序,这里用 FC9,然后在 OB1 中调用 FC9,FC9 中程序 Network 1 的思路是把 DB9 中的从 DBB0 到 DBB49 依次装入从 1 到 50 的数。Network 1:OPN DB 9 /打开 DB9A( L MD 96L P#49.0=D ) /若 MD100 大于 p#0.0 则执行移位JCN ac /若 MD100 等于 p#0.0-p#1.0 后则跳走LAR1 MD 100 /MD100 存入地址寄存器L DBB AR1,P#0.0 T DBB AR1,P#1.0 /把上一位移
4、入下一位L MD 100L P#1.0-D /存入一个后,地址减 P#1.0T MD 100ac: NOP 0aB: NOP 0若 MD100 等于 p#0.0-p#1.0,说明前面 49 个数都已经下移了,最后把预存到 MB90 中的 DBB49 存到 DBB0 中Network 4:A( L P#0.0 L P#1.0-D L MD 100=D ) /若 MD100 等于 p#0.0-p#1.0,执行移位JCN af /否则跳走L MB 90T DBB 0af: NOP 0程序写好后,编译保存,打开仿真器,将仿真器设为 PLCSIM(MPI)模式,并执行运行run,如下图所示:DB9 中的数据依次为 16 进制 1 到 32,即为 10 进制的 1 到 50。当点击把 m10.4 置 1,m10.5 上升沿同时置 1,循环移位开始,整体下移一位,最后一个数据循环到第一位数据字节上。效果如下图:通过这个实验,可以了解 S7300 和 S7400plc 在处理数据时的强大功能,并为进行大型项目的开发打下一点基础。参考文献:1、西门子公司 S7300 400 寻址2、 西门子 S7-300400 PLC 编程语句表和结构化控制语言描述(第 3 版)