[西门子] 一起学习使用S7-200 smart子程序

[复制链接]
查看39424 | 回复0 | 2024-5-20 14:11:55 | 显示全部楼层 |阅读模式
一、S7-200 Smart子程序的基本设计原则

1.1 1个子例程最多可以传递16个参数,最多占用60个字节。

1.2 参数类型包括IN、OUT、IN OUT、TEMP。

1.3 IN为只读参数,IN OUT、OUT、TEMP 参数可读可写。

1.4 OUT、TEMP参数需要遵循“先赋值再使用。

1.5 子程序开始,将IN、IN OUT引脚的变量读入对应局部变量。

在运行过程中只对局部变量进行计算;子程序结束,将OUT、IN OUT对应的局部变量写入外部引脚。

二、主要遇到的问题

2.1 为什么重复调用的子程序执行结果会互相影响?

    临时保存在局部致据堆栈中的临时变量。一旦POU完全执行,临时变量值不再可用。在两次 POU执行之间,临时变量不保持其值,所以使用前要初始化临时变量。

  另外可以把out变量修改为in_out类型。

我们设计一个子程序如下:



测试结果,两个调用互相不影响



我们在设计一个程序



测试结果发现已经收到干扰了,后面一个调用程序同样执行。



2.2子程序中的定时器不工作或者工作不正常?



测试结果,定时器不执行



我们可以用子程序中使用自累加功能来计时或者利用时间间隔定时器。



测试,上升沿工作不正常。

我们将秒脉冲放在外面测试,计时正常。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则