许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  CODESYS变量类型有哪些?全局局部常量一次讲明白

CODESYS变量类型有哪些?全局局部常量一次讲明白

阅读数 7
点赞 0
article_banner


标准数据类型就那几个常用的,BOOL占8位存TRUE或FALSE,INT是16位有符号整数,DINT是32位,REAL是32位浮点,LREAL是64位,STRING是字符串,TIME是时间类型,BYTE、WORD、DWORD、LWORD按位宽分,这些在声明的时候直接写就行,不用记太多。


局部变量用VAR和END_VAR包起来,声明在POU的声明区,只能在当前POU里用,外面访问不到,这种变量没有任何外部关连,从外部写不进来也读不出去。全局变量用VAR_GLOBAL声明,放在GVL里或者程序对象的声明区,整个项目都能访问,I/O映射也是全局的。局部和全局同名的时候,POU内部局部优先,外面要用全局加个点前缀`.变量名`,或者带上GVL名字`globlist1.ivar`来区分。


输入输出变量是功能块和函数用的。VAR_INPUT声明输入,调用的时候传值进来,VAR_OUTPUT声明输出,值送到调用它的POU里。VAR_IN_OUT是输入加输出,按引用传递,相当于指针,传进来的值改了就改了,所以输入值不能是常量,调用的时候必须传变量不能传字面量。VAR_IN_OUT CONSTANT是只读引用,可以传STRING或WSTRING的常量或者变量,调用的时候字面量也能传,字符串长度不受参数声明的长度限制。功能块的VAR_IN_OUT不能从外面直接读或写,只能通过调用传进去。

CODESYS变量类型

VAR_TEMP是临时变量,每次调用POU都重新初始化,声明只能在程序PRG和功能块FB里用,函数FC里不能声明VAR_TEMP,只能在POU主体里访问。用VAR_TEMP代替VAR能减少POU需要的存储器空间,只是临时用一下的变量就声明成VAR_TEMP。VAR_STAT是静态变量,功能块和函数里都能用,值在多次调用之间保持,相当于加了存储记忆的VAR。VAR_INST是实例变量,只能声明在功能块的方法里,每个方法有自己独立的一份。VAR_EXTERNAL声明的是外部已经存在的全局变量,在POU里用全局变量之前必须先声明成VAR_EXTERNAL,IEC标准里禁止不声明就直接在POU里用全局变量。


常量用CONSTANT修饰符,接在VAR或VAR_GLOBAL后面。VAR CONSTANT声明局部常量,VAR_GLOBAL CONSTANT声明全局常量,必须赋初始值。全局常量要在POU里用,也得声明成VAR_EXTERNAL CONSTANT。RETAIN修饰符用于掉电保持的变量,PERSISTENT也是保持但跨应用程序下载也保留,两个修饰符加在VAR或VAR_GLOBAL后面。


声明语法是`<作用域> <修饰符> <变量名> AT <地址> : <数据类型> := <初始值>;`,作用域就是VAR、VAR_GLOBAL、VAR_INPUT这些,修饰符可选CONSTANT、RETAIN、PERSISTENT,地址可选。变量名不区分大小写,VAR1和var1是同一个,下划线连续两个不行,关键字不能当变量名用。带反引号的变量名可以用特殊字符,比如`´Variable+9´`,反引号本身算标识符的一部分。


GVL里可以加`{attribute 'qualified_only'}`,加了之后必须用`GVL名.变量名`来访问,不加的话直接写变量名就行。加了`{attribute 'linkalways'}`的变量每次编译都重新链接,改GVL里的常量不用重新编译整个项目。GVL之间同名变量不冲突,用GVL名字前缀区分就行。库里的GVL要用库命名空间前缀,比如`lib1.globlist1.ivar`,嵌套库的话命名空间要一层层写全。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空