本章节主要介绍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~1BOOL:布尔数据类型,数据大小为一个bit,数据只能是TRUE或FALSEBYTE:字节数据类型,数据大小为一个字节大小(8个位),数据范围0~255DATE:日期数据类型,及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个字节,无符号类型意味着数据最小为0ULINT:无符号长整形数据,数据大小与PLC系统有关,CPU为32位的则为32位,无符号类型意味着数据最小为0USINT:无符号短整形数据,数据大小为2个字节,无符号类型意味着数据最小为0WORD:字类型数据,数据大小为2个字节
二、CODESYS关于的数据类型的相关规则:
1、在CODESYSIDE中,数据类型与实例化不区分大小写,意味着在同个POU中,应该注意避免出现冲突的实例化数据;
2、在CODESYS中,不同数据类型的变量不能直接赋值或运算;
3、CODESYS中定义一个变量的基本格式是:
方式1:文本格式
PROGRAM PLC_PRGVAR //这里可以指定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的重载实现框架:
本章节主要介绍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~1BOOL:布尔数据类型,数据大小为一个bit,数据只能是TRUE或FALSEBYTE:字节数据类型,数据大小为一个字节大小(8个位),数据范围0~255DATE:日期数据类型,及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个字节,无符号类型意味着数据最小为0ULINT:无符号长整形数据,数据大小与PLC系统有关,CPU为32位的则为32位,无符号类型意味着数据最小为0USINT:无符号短整形数据,数据大小为2个字节,无符号类型意味着数据最小为0WORD:字类型数据,数据大小为2个字节
二、CODESYS关于的数据类型的相关规则:
1、在CODESYSIDE中,数据类型与实例化不区分大小写,意味着在同个POU中,应该注意避免出现冲突的实例化数据;
2、在CODESYS中,不同数据类型的变量不能直接赋值或运算;
3、CODESYS中定义一个变量的基本格式是:
方式1:文本格式
PROGRAM PLC_PRGVAR //这里可以指定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的重载实现框架:
举报