设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
西门子 200smart全局变量和局部变量
返回列表
发新帖
[西门子]
西门子 200smart全局变量和局部变量
[复制链接]
317
|
0
|
2024-7-10 19:46:02
|
显示全部楼层
|
阅读模式
>
01
全局变量
符号表中定义的变量是全局变量,在所有的程序中都有效。在程序中用符号寻址变量时,全局变量的符号直接显示。
“
变量
”,指在程序的运行时,变量的值可以根据某些条件而发生改变。变量的名字叫做“变量名称”。与“变量”相对的是“
常量(Constant)
”,常量的值在整个程序的运行中保持不变。
全局变量的生命周期是整个程序的运行周期。只要PLC还运行用户程序,全局变量就一直有效。
在西门子S7系列PLC编程中,存放在公共存储区的变量都属于全局变量。公共存储区包括输入缓存区I、输出缓存区Q、位存储区M、全局数据块DB、定时器T、计数器C等。
02
局部变量
局部变量(Local variables)是相对于全局变量而言的。局部变量分配给每个子程序临时存储区,当子程序被调用时,系统分配局部变量区给子程序。子程序执行完成后,该局部变量区被释放。释放时其中存贮的值也同时丢失,不能在下一扫描周期再被子程序使用。只有在执行程序时,才使用定义的局部变量。
1、IN类型,将指定位置的参数传入子程序。
2、OUT类型:从子程序来的结果值(数据)传到指定的参数位置。
3、IN/OUT 类型:将指定位置的参数传到子程序,从子程序修改后的结果值被返回到同样的地址。
4、TEMP类型:临时变量只用作子程序内部的暂时存储器,不能用来传递参数,一旦程序完成执行,临时变量数值则无法再用。在两次POU执行之间,临时变量不保持其数值。也可以不定义临时变量符号直接使用L存储器绝对地址。
IN、OUT、IN_OUT变量会与外部进行数据交换,不需要与外部数据交换时应使用TEMP变量。
在局部变量表中赋值时,只需指定声明的局部变量的类型(TEMP、IN、IN_OUT或OUT)和数据类型,不需要指定内存地址。程序编辑器自动为L存储区中的所有局部变量指定存储位置。起始地址为L0,字节、字和双字在本地内存中按字节顺序分配,如LBx、LWx或LDx。局部变量区的大小为64个字节,其中最后4个字节被系统所占用,实际可供子程序使用的为60个字节。
由于局部变量区的数据不能带到下一扫描周期,因此只能用于存储程序运算中的中间值,可以减少对全局变量区的占用。局部变量区在子程序被调用时才被分配,且分配时并不对数据区进行初始化,所以其初始值是不确定的。因此在程序中用到这些存储区的值前,必须要对该存储区地址赋值操作,否则可能会出现错误的执行结果。尤其在子程序中存在大量的跳转指令时,很容易出现漏掉对局部变量赋值的情况。
每个子程序最多可以调用16个输入/输出参数。如果超过16个,将返回一个错误。
局部变量可以用来传递到子程序的参数,增加子程序的通用性和可移植性。局部变量的前面带有#号以示区别。在编程过程中需要再添加变量,一定要把显示方式切换成:“仅符号”否则插入变量后地址全部变化,程序中原本使用的地址将报错。
03
利用局部变量编程案例
利用子程序局部变量编程实现2台电动机的起保停控制。
通过对局部变量和子程序形式参数的指定,可以避免对相同逻辑的工作进行重复编程,大大提高了程序的编写效率。
责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
电气小知识
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』