标题 | S7—200smartPLC间接寻址的应用 |
范文 | 赵青 [摘 要] 对S7-200smartPLC来说,寻址分为直接寻址和间接寻址,其中间接寻址主要用于需要在程序中修改地址的场合,特别是处理数据内容比较多的情况,使用间接寻址编程灵活,节省程序空间。大多教材关于间接寻址的概念和应用介绍得不够通俗易懂,很多学生,甚至工程技术人员对间接寻址的使用存在概念不清,应用不明的情况。通过三个例子循序渐进地说明间接寻址的概念和应用,经过教学实践,学生反馈较好。 [关 键 词] 间接寻址;操作数;地址;指针 [中图分类号] TP273 [文献标志码] A [文章编号] 2096-0603(2018)24-0018-02 PLC将信息存于不同的存储器单元,每个单元都有唯一的地址。地址也是我们访问所有数据的依据,那么我们访问数据的过程就是寻址。在s7-200smartPLC中通过地址访问数据,地址是访问数据的依据,访问数据的过程称为“寻址”。几乎所有的指令和功能都与各种形式的寻址有关。直接寻址指定了存储器的长度和位置,例如VW90是V存储区中16位的字,其地址为90。而间接寻址在指令中给出的不是操作数的值或操作数的地址,而是给出一个被称为指针的双字存储单元的地址,指针里存放的是真正的操作数的地址。 一、如何进行间接寻址 使用间接寻址的方式存取数据主要分为以下三个步骤来实现: (一)建立指针 使用间接寻址之前,应创建一个指针。指针以双字的形式存储要访问的存储器的地址,只能用V存储器、L存储器或者累加器AC作为指针。建立指针时,用双字传送指令MOVD将需要间接寻址的存储器起始地址送到指针中。指针的输入数应该以“&”符号开头来表明存储区的地址,注意不是其内容将移动到指令的输出操作数中。 S7-200smartPLC中允许使用指针对下述存储区进行间接寻址:I、Q、V、M、S、AI、AQ、SM、T(仅当前值)和C(仅当前值)。但不能对单个的位地址、HC、L存储区和累加器进行间接寻址。 例1:针对存储区VB0为起始地址的一组数据和以T37为起始地址的一组定时器当前值进行间接寻址。VB0的地址作为指针送入VD100,“&VB0”是VB0的地址,而不是VB0中的内容;同理T37的地址作为指针送入VD200,“&T37”是T37的地址,而不是定时器T37的当前值。 (二)数据读取 用指针访问数据时,操作数前加“*”号,表示指令中的操作数是一个指针。当有M0.0的上升沿脉冲时,将指针VD100所指的存储单元的数据内容送到VB400中,针针VD200所指的存储单元的数据内容送到VW1000中。 将程序下载到s7-200smartPLC调试,打开状态图表,假设约定两组数据,第一组以VB0为首地址的数据,即VB0=-10,VB1=25,VB3=38,VB4=-99;第二组数据是以T37为首地址的数据,即T37当前值=10,T38当前值=20,T39当前值=30,T40当前值=40,(为了调试方便,数组组成个数为4个)点击“监控图标”后点击“写入图标”写入新值。指针VD100的当前值+134217728,指针VD200的当前值为+150995020,不影响间接寻址。 此例中,当读取数据条件,M0.0由0变成1时,即执行了第一次读取数据,读取的数据相应送入VB400和VW1000,此时VB400的值即为VB0的数据,等于“-10”,VD1000的值即为T37的数据,等于“10”;若将VD100偏移量加1,即当前值由134217728加1变为134217729,VD200偏移量为2,即当前值由150995020加2变为150995022,再次将M0.0的状态由0变为1,读取的数据相应送入VB400和V1000,此时VB400的值即为VB1,等于“25”,VD1000的值即为T38的数据,等于“20”。读者可以在状态图表中进行监控调试,这里不再给出寻址其他数据的说明。 (三)修改指针 用指针访问相邻的一个数据时,可以在状态图表中在监控条件下通过将M0.0的位状态的改变来修改指针,也可在程序里使用双字加法(ADDD)或双字递增(INCD)指令(指针是32位的数据)。修改时记住需要调整的存储器地址的字节数,访问字节时,指针值加1,访问字时,指针值加2,访问双字时,指针值加4。可参考如下程序:其中,M0.0为指针偏移的条件,读取数据则用SM0.0,读者可以自行下载,用状态图表监控。 LD SM0.1 MOVD &VB0, VD100 //建立指针 MOVD &T37, VD200 //建立指针 LD M0.0 EU +D 1, VD100 //访问字节,指针值加1 +D 2, VD200 //访问字,指针值加2 LD SM0.0 MOVB *VD100 VB400 //读取数据 MOVW *VD200 VW1000 //读取数据 以上三个步骤就可以完成间接寻址,读者可以通过上面的例子进行试验,理解清楚间接寻址的概念。 二、間接寻址的应用 间接寻址常用于循环程序,处理连续地址的数据。以下通过例子来介绍间接寻址的应用。 (一)用于循环程序 用循环程序来累加一片连续的存储区中的数值时,每次循环累加一个数值。应在累加后修改指针中存储单元的地址值,使指针指向下一个存储单元,为下一次循环的累加运算做好准备。没有间接寻址,就不能编写循环程序。间接寻址的优点是可以在程序运行期间,通过改变指针的值,动态地修改指令中的操作数的地址。举例说明: 例2:在M0.5的上升沿求VB0~VB3中4个字节的异或值,运算结果用VB4保存。 第一次循环将指针AC1所指定的VB0与VB4异或,运算结果存入VB4中,然后将指针AC1的值加1,指针指向VB1,为下一次循环的异或运算做好准备。参考程序如下: LD M0.5 EU MOVB 0,VB4 //将保存运算结果的存储单元清零 MOVD &VB0, AC1 //将存储区起始地址送指针AC1 FOR VW100,1,4 //循环开始 LD SM0.0 XORB *AC1,VB4 //字节异或 INCD AC1 //指针AC1的值加1,指向下一个字节 NEXT //循环结束 此例是间接寻址方式在循环程序中的典型应用。 (二)工程应用 例3:在葡萄汁生产中,根据产品成分:水、鲜榨果汁、糖、香料、温度和速度的不同,可以生产出葡萄果汁、葡萄蜜露、葡萄饮品这三种饮料。要求编写一个配方程序,使操作人员可以选择生产不同的葡萄汁产品:(1)在触摸屏画面,选择某一个配方,按下“调用配方”按钮,则调用出相应的配方;(2)若任意一个果汁产品的配方不合适,可以通过“修改配方”按钮修改配方并保存;(3)按下“删除配方”按钮,可以删除配方数据。 此例配合HMI应用,因画面制作比较简单,这里不赘述。按照要求,每种饮料都与六个变量有关,分别是水、鲜榨果汁、糖、香料以及调配时的速度和温度。下图是在触摸屏SMART LINE中制作的画面。 “配方选择”框内可以填“1”或“2”或“3”,即选择某一配方,存在VD200中。按下“调用配方”按钮,即可调用所选择的一种配方时,在画面的右侧应显示该配方对应数组。配方1的六个变量对应VW0、VW2、VW4、VW6、VW8、VW10,首地址为VW0;配方2和配方3按顺序以此类推,首地址分别是VW12和VW24。利用间接寻址,可以非常方便地处理这种数据内容比较多的情况,使用间接寻址编程灵活,节省程序空间。 将VB0的地址送入指针VD300中。2号配方的首地址是1号配方的首地址增加12,3号配方的首地址是2号配方的首地址增加12,编写程序時可以用数学运算指令来计算指针的偏移量。选择第n(1或2或3)号配方,则该配方指针VD300偏移量为:(n-1)*12+指针VD300。 调用配方实际就是读取配方的内容,可以直接读取指针对应的数据到目标存储区VW100-VW110中;修改配方是将目标存储区中配方的内容存到指针对应的配方数据区;删除配方是清零。 读者可以自行验证以上程序,通过触摸屏画面或者状态图表观察配方的变化情况。 使用间接寻址处理连续地址中的数据非常方便,而且可以减少编程工作量,使编程变得灵活。通过这几个实例,间接寻址这个难点迎刃而解,学生不仅在概念上更清晰了,而且在工程应用方面更进一步。 参考文献: [1]廖常初.S7-200SMARTPLC编程及应用[M].北京:机械工业出版社,2015. [2]吴浩.变频器与PLC的通讯控制原理及应用分析[J].科技创新与应用,2016(35). |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。