也谈用间接寻址减少子程序输入输出的参数

已锁定

Automann

  • 帖子

    6168
  • 精华

    138
  • 被关注

    308

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

也谈用间接寻址减少子程序输入输出的参数

763

3

2015-01-28 11:03:02

S7-200和200SMART的子程序最多16个输入、输出参数。使用间接寻址可以显著减少输入、输出参数的个数,不再受上述的限制。
下面举一个简单的例子。
子程序“异或运算”对V存储器中连续的若干个字节作异或运算,下面给出了子程序的局部变量和STL程序。
子程序中的BTI指令用于将数据类型为字节的输入参数“字节数B”转换为数据类型为整数的临时变量“字节数I”,用来做FOR指令的当前循环计数器。
输入参数“地址指针”是需要异或运算的数据区的起始地址。子程序中的“*#地址指针”是输入参数“地址指针”指定的地址中变量的值。在循环程序执行的过程中,该指针中的地址值是动态变化的。



下图是主程序中调用“异或运算”子程序的程序。调用时指定的“地址指针”的值&VB10是源地址的初始值,即数据字节从VB10开始存放;需要异或运算的数据的字节数为4,异或运算的结果存放在VB14中。



实际上该子程序的输入、输出参数还可以进一步地简化:将保存运算结果的字节放在地址指针所指的地址区的第一个字节,需要异或运算的字节数放第2个字节,需要运算数据从第3个字节存放。这样就只需要一个输入参数了。当然程序要做相应的改动。但是程序的输入、输出接口没有第一个方案直观。
也谈用间接寻址减少子程序输入输出的参数 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。