作者 | 主题 |
---|---|
谦 总坛主 经验值:23706 发帖数:3792 精华帖:8 |
楼主 2011-11-29 10:05:34
主题:应用探讨——西门子指针编程使用探讨
在对“Step7 各种编程语言对比及使用”进行一番深入探讨后,可能有的网友对指针编程还不太了解,下面我们就与大家再探讨一下“西门子指针编程使用”。
一个功能强大,自由性高的程序,很大部分体现在其灵活的指针运用上,通过西门子STL的指针编程可以实现很多复杂的任务,但是指针在使用上还是需要注意一些事情的,比如地址寄存器的内容被接口参数覆盖,多重背景FB的地址指针偏移,指针的指针(P##input_any)如何使用等,如何读懂指针程序,如何用好指针,如何避免指针程序出错需要工程师去注意。关于具体指针的介绍,大家可以参照下载中心的编程手册: 1、编号:F0215,S7?300和S7?400寻址 2、手册 "SIMATIC Programming with STEP 7 V5.5" 05/2010 第27.3.4章 参数类型 3、编号:1008,用于S7-300 和S7-400 的语句表(STL)编程 开设此话题,欢迎大家可以就以下几个点畅所欲言,发表自己的看法,共同提高。 1、阐述自己使用的指针的感受、分享经验及心得; 2、如何使用指针,以缩短程序开发周期,提高编程效率; 3、如何避免指针编程出错; 4、通用的指针编程的思路等等内容; 此次集中交流将持续至12月22日,其中所有精华帖作者将获得加倍精华奖励积分;最终所有有效留帖的网友将获得加倍发帖积分。更多积分带给您更多奖品兑换的自由。 对于有突出发言贡献的网友,还可以在当前的可兑换奖品中免费挑选200分(含)以下任一款奖品。 交流结束后也将专门整理重要内容,供广大网友分享参考。 预祝大家交流愉快,收获丰富! |
Automann 至圣 经验值:18405 发帖数:6291 精华帖:137 |
9楼 2011-11-29 20:49:07
主题:回复:应用探讨——西门子指针编程使用探讨
戏说存储器间接寻址
在指令中直接给出操作数(常数),称为立即寻址。在指令中给出操作数的地址(例如M5.2),称为直接寻址。 间接寻址在指令中给出的不是操作数的值或操作数的地址,而是给出一个被称为地址指针的存储单元的地址,地址指针里存放的是真正的操作数的地址。 地址指针就像收音机调台的指针,改变指针的位置,指针指向不同的电台。改变地址指针中的地址值,地址指针“指向”不同的地址。 再打一个比喻,邮递员的摩托车就好像一个地址指针。邮递员根据信封上的地址,将摩托车开到用户A的家门口,这个时候指针(摩托车)指向了这个地址,把信送给用户A,就好像将数据写入这个地址。送下一封信的时候,相当于修改了地址指针中的值,摩托车开到下一个用户的门口,地址指针指向了另外一个地址。 我们入住酒店的时候,在前台办完入住手续,酒店就会给我们一个房卡,房卡上面有房号,旅客根据房号使用宾馆的房间,每天每间房间可能住不同的旅客。在这里房卡就是指针,房间就是存储单元,旅客就是存储单元中存放的数据。 为什么需要间接寻址?间接寻址用来在程序运行期间,通过改变指针中地址的值,动态地修改指令中的地址。间接寻址常用于循环程序和查表程序。例如循环程序用来累加一片连续的存储区中的数值,每次循环累加一个数值。累加后修改地址指针的值,使它指向下一个存储单元,为下一次循环的累加运算做好准备。没有间接寻址,就不能编写循环程序。
追求完美
|
n次看你的背影 奇侠 经验值:7973 发帖数:2355 精华帖:73 |
60楼 2011-12-02 10:30:07
主题:回复:应用探讨——西门子指针编程使用探讨
关于:“如何避免指针编程出错?”我也想说说我的感受和体会
1、需清楚指针的数据结构和特点,清楚位寻址、字节、字、双字寻址时指针增量的数值; 2、在使用指针时:一般多是先赋值(初始化地址寄存器),后使用; 3、在某些特定的指针寻址程序中,需要先装载上一次此程序执行的指针,离开这段程序时保存当前指针。也就是说在某些场合需要做好指针的保护!“跑马灯”程序就是一个很好的例子; 4、尽量使用常数指针加地址区域标示符来进行间接寻址,这样更容易理解; 5、用两个指针访问背景数据块、多重背景数据块时,最好将它们拷贝至L区,对此操作完成后,再将此拷贝至背景数据块、多重背景数据块,这样能避免接口参数发生错误; 个人观点,仅供参考!
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”
|