gk-auto 发表于 2020-4-22 20:27:23

西门子PLC高级语言SCL编程中指针的使用方法

来源:PLC布道师翻了一下手头 1200 PLC的指针内容,发现没多少可讲,但是300,400 ,ET200里面的指针功能还是蛮强大的,但是手头只有1200,所以决定这次抛开PLC ,用高级语言写一段指针代码,让我们深入了解指针。无论是在PC环境还是PLC环境,指针的含义基本上一样。指针就是代表变量在内存中的位置,就如同你出差住宾馆,门牌房间号代表你在宾馆的位置,警察叔叔可以通过房间号找到你。何谓内存?普通人大概的印象就是电脑上面的内存条吧,比如有4GB,8GB,16GB,内存越大,电脑速度越快。那内存和硬盘的区别到底是什么呢?从WIKI上面抄了一段话,大家凑合看看。计算机存储器(英语:Computer memory)是一种利用半导体技术制成的存储数据的电子设备。其电子电路中的数据以二进制方式存储,存储器的每一个存储单元称做记忆元。计算机存储器可分为内部存储器(简称内存或主存)和外部存储器,其中内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是访问速率快。内存是计算机中的主要部件,它是相对于外存而言的。我们平常使用的程序,如Windows操作系统、打字软件、游戏软件等,一般都是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它们调入内存中运行,才能真正使用其功能,我们平时输入一段文字,或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里,存放书籍的书架和书柜相当于计算机的外存,而我们工作的办公桌就是内存。通常我们把要永久保存的、大量的数据存储在外存上,而把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会直接影响计算机的运行速度。指针程序讲解:http://p5.qhimg.com/t01686020d50a507d15.jpg?size=349x98图1 定义一个整型数组http://p2.qhimg.com/t01e9955839f5ef3d55.jpg?size=640x559图2 指针定义代码http://p9.qhimg.com/t0147eec4591cb75ba5.jpg?size=482x354图3 运行内存数组里面存储一系列同类型的连续变量,所以获取这些变量的地址,发现地址之间的差值为4 。为什么为4 呢?是因为我们声明的数组类型为Integer ,我们可以看到Integer类型占用的内存字节大小为4 。如果数组类型为Byte ,那么内存地址之间的差值是多少?请读者自行思考。程序中,我们可以通过APInt这个Integer指针类型,来逐一获取数组中每个索引的内容。可以直接获取数组名来获取地址,也可以通过对指针地址手动偏移进行获取。这就是指针的方便之处,可以在内存里面进行数据操作,可以对任何数据类型进行操作。在西门子的高级指令里面,很多功能块的输入参数是要求指针类型。为什么是这种类型要求呢?比如一个变量,你只要告诉他是指针就行,然后PLC内部会根据这个变量类型来解析这个内存地址代表的数据。结束语这一节主要讲解了指针概念,理解了上面的程序,基本上就理解了指针,透过指针可以很方便的操作数据。若有错误和不懂的地方欢迎留言。下一节主要讲解PLC通信概念。

yufusong89 发表于 2020-4-22 20:27:23

淡定,淡定,淡定……

国栋_BDv3z 发表于 2020-11-15 01:57:05

无私奉献,好工控人,32个赞送给你!!

老高 发表于 2025-11-15 05:12:50

这波分析到位,逻辑满分!

睡神 发表于 2025-11-15 05:18:39

学到干货了,感谢分享,已火速收藏

cc18601969 发表于 2025-11-15 05:19:23

不请自来,就想夸一句:太顶了!

夜问夜问 发表于 2025-11-15 05:21:29

水个经验,楼主加油,支持你~

天空晴朗 发表于 2025-11-15 05:25:55

谁懂啊!这内容我能循环看十遍

JasonCao 发表于 2025-11-15 10:56:59

蹲一波同款,有没有小伙伴推荐?

xxy0423 发表于 2025-11-15 11:17:56

画面感太强了,仿佛身临其境!
页: [1] 2
查看完整版本: 西门子PLC高级语言SCL编程中指针的使用方法