01 CODESYS应用基础知识之数据类型

      本章节主要介绍CODESYS的基本知识,包括以下内容:CODESYS支持的数据类型及简单介绍、CODESYS关于数据类型的相关规则、CODESYS数据类型之间的转换。这里必须说明,毕竟我也是学习者,这篇资料难免会有错漏,还请大家积极指正,共同进步。谢谢!

一、CODESYS支持的数据类型与介绍:

       目前CODESYS提供的IDE所支持的数据类型有:__UXINT、__VECTOR、__XINT、__XWORD、BIT、BOOL、BYTE、DATE、DATE_AND_TIME、DINT、DT、DWORD、INT、LINT、LREAL、LTIME、LWORD、REAL、SINT、STRING、TIME、TIME_OF_DAY、TOD、UDINT、ULINT、USINT、WORD、WSTRING

常用的数据类型介绍:

BIT:位数据类型,数据大小为一个bit,数据范围0~1

BOOL:布尔数据类型,数据大小为一个bit,数据只能是TRUE或FALSE

BYTE:字节数据类型,数据大小为一个字节大小(8个位),数据范围0~255

DATE:日期数据类型,及PLC系统当前的时间,格式:D#年-月-日

DATE_AND_TIME:日期时间数据类型,详细显示到时、分、秒,格式:DT#年-月-日-时-分-秒

DINT:有符号双倍整形数据,数据大小为4个字节(32位),有符号就是最高位代表符号位。

DT:与DATE_AND_TIME相同

DWORD:有符号双字类型数据,这里的数据大小为4个字节(32位),有符号就是最高位代表符号位。

INT:有符号整形数据类型,数据大小为2个字节,有符号就是最高位代表符号位。

LINT:有符号长整形数据类型,数据大小为跟PLC系统有关,CPU位数是32位则为32位,有符号就是最高位代表符号位。

LREAL:长实数类型,数据大小为8个字节

LTIME:长整数时间设置,数据大小为8个字节,主要用来设置定时器的延时时间,格式为LTIME#xxx时间单位

LWORD:长字类型数据,数据大小与CPU的位长度有关(32位的系统则为32位,64位的系统为64位)

REAL:实数类型数据,数据大小为4个字节

SINT:有符号短整形数据类型,数据大小为2个字节,有符号就是最高位代表符号位。

TIME:整数时间数据类型,数据大小为4个字节,主要用来设置定时器的延时时间,格式为TIME#xxx时间单位。

TIME_OF_DAY:年-月-日设置数据类型,该数据类型用来设置系统的年月日,数据格式:年-月-日

UDINT:无符号双整形数据类型,数据长度为8个字节,无符号类型意味着数据最小为0

ULINT:无符号长整形数据,数据大小与PLC系统有关,CPU为32位的则为32位,无符号类型意味着数据最小为0

USINT:无符号短整形数据,数据大小为2个字节,无符号类型意味着数据最小为0

WORD:字类型数据,数据大小为2个字节

二、CODESYS关于的数据类型的相关规则:

1、在CODESYSIDE中,数据类型与实例化不区分大小写,意味着在同个POU中,应该注意避免出现冲突的实例化数据;

2、在CODESYS中,不同数据类型的变量不能直接赋值或运算;

3、CODESYS中定义一个变量的基本格式是:

方式1:文本格式

PROGRAM PLC_PRG
VAR                      //这里可以指定VAR到END_VAR之间的数据读写方向,默认是VAR,可读可写。还有INPUT_VAR和OUTPUT_VAR等//
	
        TEST:DATE;     //冒号(:)左边是变量名,右边对应为数据类型//
	TEST_0:DATE_AND_TIME;
	TEST_DT:DT;
	TEST_REAL:LREAL;
	TEST_LTIME:LTIME;
        TEST_DAY:TIME_OF_DAY;

END_VAR

方式2:表格模式

(欢迎继续补充)

/

三、CODESYS中变量数据类型的强制转换方法:

       在第二节我们讲到,CODESYS中不同数据类型的变量无法直接赋值或运算,但是在实际的编程中,往往需要进行不同类型数据的复制与运算。CODESYS为我们提供了许多数据类型强制转换函数来满足我们的需求

1、这些函数的基本格式为:原数据类型_to_目标类型(原类型对应的变量)

2、这个是CODESYS提供的内置转换函数,目前支持任何数据类型之间的转换!

3、举个例子:
   VAR_0:BOOL;
   VAR_1:LTIME;

   VAR_0 := LTIME_TO_BOOL(VAR_1);   //将LTIME数据类型变量转换为BOOL型//
   VAR_1 := BOOL_TO_LTIME(VAR_0);   //将BOOL数据类型变量转换为LTIME型//


4、对于梯形图或顺序功能图格式的程序:看图哈

/

四、CODESYS中实现泛型变量及功能函数的重载

      CODESYS为我们提供了通用数据类型ANY。任何类型的数据都可以赋值给any类型的变量,ANY是一个结构体类型,包含成员diSize,pValue和Typeclass。ANY类型变量在函数或功能块中只能作为输入变量!!

      ANY.diSize:通过此成员变量可以知道赋值给ANY的变量的字节大小;

      ANY.pValue:这是一个动态数组,数组元素为赋值给ANY的变量的每个字节的数据;如pValue[0]为第0个字节的数据;

      ANY.Typeclass: 该成员变量类型为num TYPE_CLASS,记录变量的实际数据类型。

      利用ANY变量实现功能函数重载的实例

      第一步,创建工程时,工程的库管理器中应添加IBaseLibrary库:

   

 这个库的位置:

进入高级选项中,查找路径:Intern->IoDriverBase->IBase。

    第二步,这里分两种情况讲解,创建自定义FB的重载和创建自定义FUN函数的重载

 这个是FB的重载实现框架

 

这里是FUN的重载实现框架:

/

附加说明:本人承接Linux系统的嵌入式软件开发项目,CODESYS的runntime组件开发。欢迎加微:wxk101633(备注:委托开发)

 

 

  • 13
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值