登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:用间接寻址减少S7-200和200SMART子程序输入输出的参数

点击:5119 回复:3


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

图片
查看大图

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

图片
查看大图

实际上该子程序的输入、输出参数还可以进一步地简化:将保存运算结果的字节放在地址指针所指的地址区的第一个字节,需要异或运算的字节数放在第2个字节,需要运算的数据从第3个字节存放。这样就只需要一个输入参数了,当然程序要做相应的改动。但是程序的输入、输出接口没有第一个方案直观。
15-01-30 08:24
这样做的副作用是程序员需要保持清晰的思路,否则一个指针越界,后续差错几乎无从着手。
在子程序中使用指针异常危险。
15-01-30 08:44

引用 fujifa 在 2015/1/30 8:44:35 发言【内容省略】

有这个问题。但是即使不用指针,在存储器使用时的地址分配引起的冲突一样地会产生灾难性的后果。
15-01-30 18:53
廖老师:
现在的情况是,被测转速物体本身是转速是700多转,
物体本身有齿轮数,
一圈大概有300多个齿轮,
现在用接近开关测齿轮是来得出转速,PLC是smart200,可以使用高速计数器模式配合接近开关来测转速吗?
如何设置?
15-03-15 23:08

工控新闻

更多新闻资讯