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