西门子S7-200子程序出现问题的原因

来源:本站
导读:目前正在解读《西门子S7-200子程序出现问题的原因》的相关信息,《西门子S7-200子程序出现问题的原因》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《西门子S7-200子程序出现问题的原因》的详细说明。

在OB1中两次调用上一个日志中的子程序SBR_0,在运行程序时发现,接通I0.0外接的小开关,Q0.0和Q0.1同时变为ON。这是因为分配给SBR_0的输出参数“电动机”的地址为L0.2,第一次调用SBR_0之后,L0.2的值为ON。第二次调用SBR_0时,虽然起动按钮I0.2为OFF,但是因为两次调用SBR_0时局部变量区是公用的,此时输出参数“电动机”(L0.2)仍然为ON,所以第二次调用SBR_0之后,由于执行图4-40中的程序,输出参数“电动机”使Q0.1为ON。子程序的局部变量一定要遵循“先赋值后使用”的原则。

S7-200的子程序使用临时变量来传递参数,OUT类型的参数不会把实参读入形参,所以这里使用OUT形参的触点就出现了临时变量未赋值先使用的情况。将输出参数“电动机”的变量类型改为IN_OUT就可以解决上述问题。这是因为两次调用子程序,参数“电动机”返回的运算结果分别用Q0.0和Q0.1保存,在第二次调用子程序SBR_0,执行“O #电动机”指令时,因为“电动机”是IN_OUT参数,使用的是前一个扫描周期保存到Q0.1的值,与本扫描周期第一次调用子程序后参数“电动机”的值无关。

简单地说,对于有记忆功能的电路,需要用存储单元来保存要记忆的变量值。S7-300的FB可以用静态变量来保存,而S7-200的子程序没有静态变量,只有用IN_OUT变量的实参(本例中的Q0.1)来保存变量值。

提醒:《西门子S7-200子程序出现问题的原因》最后刷新时间 2024-03-14 00:56:09,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《西门子S7-200子程序出现问题的原因》该内容的真实性请自行鉴别。