登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:西门子scl编程请求指点。。

点击:354 回复:13

最近练习用SCL编写程序,现在写的是一个启保停(别的还不会)就是怎么才能让输出自锁,我编的这个不能自锁。。。
附件 02.jpg
附件 捕获.jpg
19-08-06 11:04
我改了一下还是不行。。。
附件 03.jpg
附件 03.jpg
19-08-06 11:06
附件 workpicture1.jpg
附件 workpicture2.jpg
Good Luck~
19-08-06 12:30
非常感谢,我再试试。现在有一个警告但是还是不能实现自锁,启动为1,输出也为1。启动为0,输出也为0。
附件 01.jpg
附件 02.jpg
实现不了这样的效果
附件 12.jpg
最后修改:2019/8/6 13:43:45
19-08-06 12:55

引用 346953791 在 2019/8/6 12:55:37 发言【内容省略】

Sir, Output变量对于功能块来说是只写变量,如果您要读取该变量的状态,您需要将其设定为IN_OUT变量。
Good Luck~
19-08-06 13:43
再次感谢你的指点。我在这个功能里这样定义MOTORRUN这个变量可以吗?仿真时是没有问题的。。
附件 3.jpg
19-08-07 11:05

引用 346953791 在 2019/8/7 11:05:24 发言【内容省略】

定义在INOut下,你连第一行都省去了,对Output变量赋值不符合编程规范,虽然有些厂家的软件只是提醒而非禁止,但是为了将来你不反复造轮子,建议你使用规范的编程方式。
Good Luck~
19-08-07 11:15
附件 1.jpg
附件 2.jpg
附件 3.jpg
附件 4.jpg
解释一:
这个in,out,in_out都是针对这个程序块来说的,in变量是外部输入的,只能被本程序块读,不能被本程序块写,out是本程序块输出的,他可以被本程序块读写,其他程序通过引脚只能读值不能写。in_out本程序块和其他程序都可以读写这个引脚的值。如果你把本程序块作为一个stat变量来调用就另说了!
回答者: zhangli0 - 顶级工程师  第12级  2011-3-1 21:38
在回答你的问题之前,有必要对变量声明表有一个基本了解。在STEP7中有两种用来定义符号地址的表格形式:符号表(共享符号)和变量声明表(局域符号),其本质都是为了建立绝对地址与符号地址之间的内在联系,但表格针对的对象不同。共享符号是整个程序所使用的共同符号(用于全局符号定义的表为符号表);而局域符号是某一特定逻辑快(OB、FB、FC等)所使用的临时性标记,只能在特定的逻辑块中进行临时性定义。用于临时性的、局域符号定义的表被称为变量声明表,又称局部变量声明表。
局部变量声明表分为参数(输入参数IN、输出参数OUT、输入/输出参数IN_OUT)和局部变量。局部变量又包括静态变量(STAT)和临时变量(TEMP)两种。参数可在调用块(逻辑块,块中的形参)和被调用块(功能FB有自己自动生成的背景数据块DI,而功能FC只能使用共享数据块,提供调用块的形参的实际参数值,与调用块形式参数一一对应,数据类型必需一致)。静态变量和临时变量是仅供逻辑块本身使用数据,不能用作不同程序块之间的数据接口。
通过以上分析,我们知道所谓局部变量(包括静态变量和暂态变量)都是指对特定的逻辑块而言的,局部变量只是在它所在的块中有效,离开具体的逻辑块谈上述变量是没有意义的,你不能在其他块中调用利用变量(包括静态变量和暂态变量),这是与共享符号不一致的,共享符号可以被任意块调用。在每个逻辑块的前上面部分就是变量声明表的区域,在变量声明表中,用户声明本块中专用的变量,即局部变量包括块的形参和参数的系统属性。你可以在不同的块中使用相同的局部变量符号不会产生冲突。
静态变量(STAT)在PLC运行期间始终被存储。S7 将静态变量定义在背景数据块(针对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中;
临时变量(TEMP)是一种在块执行时,用来暂时存储数据的变量,这些数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。临时变量可以在组织快OB、功能FC和功能块FB中使用,当块执行时它们被用来临时存储数据,一旦块执行介绍,堆栈重新分配,临时变量中的数据将丢失。
在程序块中,如果在块的变量声明表中有局部变量符号,编程是STEP7软化自动在局部变量名前加一个“#”号,如果要访问与局部变量重名的全局变量(在符号表中定义),则全局变量必须使用双引号(如“Symbol”)
解释二:
IN(输入变量):逻辑快(FC或FB)中需要的输入信号,必须由调用该逻辑快的其他逻辑快(一般为组织快OB)提供具体的信号来源(即实参);
OUT(输出信号):逻辑快(FC或FB)执行完成的结果输出,它可以返回给调用该逻辑快的其他逻辑快,结果输出的具体位置即实际参数由调用该逻辑快的其他逻辑快提供;
输入/输出参数IN_OUT:兼有输入变量与输出变量的特性,变量的初值由调用该逻辑快的其他逻辑快提供,但是在执行过程中,其状态将被逻辑快所修改,修改后的结果任然返回给调用该逻辑快的其他逻辑快;
临时变量TEMP:仅在程序执行过程中所需要的中间状态暂存单元(L堆栈),在程序执行完毕不需要保存;
静态变量STAT:仅用于FB快,它在逻辑快执行完到下一次调用它时,静态变量的状态保持不变。
IN(输入变量)
OUT(输出信号)
临时变量TEMP
静态变量STAT
19-08-07 13:05
楼上搞得这么详细 读了 分析到位。
19-08-08 15:33
插个楼,想学西门子SCL编程,请问哪里可以找到资料,书籍?视频?(博途里边显示帮助只有一点,不详细)
19-08-08 16:58

上一页下一页

工控新闻

更多新闻资讯