前言
注:不同语言部分类型定义和取值范围有所不同。编程语言如C#、C++等数据类型丰富多样,而PLC中的数据类型一般比较简单,这里汇总一下常用的数据类型,以便以后查阅。自己一个个手敲学习总结,如果有错望留言指正,如觉得还有用,请点赞收藏。
目录
1、C#中常用的值类型 :可以直接赋值
类型 | 长度+描述 | 描述 | 范围 | 默认 |
布尔型 | ||||
bool | 1 位 | 布尔值 | True 或False | False |
整数型 | ||||
byte | 8 位 | 无符号整数 | 0~255 | 0 |
sbyte | 8 位 | 有符号整数 | -128~127 | 0 |
ushort | 16 位 | 无符号整数 | 0~65535 | 0 |
short | 16 位 | 有符号整数 | -32768~32767 | 0 |
uint | 32 位 | 无符号整数 | 0~4,294,967,295 | 0 |
int | 32 位 | 有符号整数 | -2147483648~2147483647 | 0 |
ulong | 64 位 | 无符号整数 | 0~2^64 | 0 |
long | 64 位 | 有符号整数 | 2^63~2^63-1 | 0L |
浮点型 | ||||
float | 32 位 | 单精度浮点数 | ±1.5*10^−45 至 ±3.4*10^38 6~9位有效数字 | 0.0L |
double | 64 位 | 双精度浮点数 | ±5.0*10^−324 至 ±1.7*10^308 15~17位有效数字 | 0.0D |
字符型 | ||||
char | 16 位 | Unicode字符 | U +0000 到 U +ffff | '\0' |
精确10进制类型(货币型) | ||||
decimal | 128 位 | 精确十进制值 | ±1.0*10^-28 至 ±7.9228 *0^28 28~29位有效数字 | 0.0M |
2、C#中常用的引用类型:它们指向一个内存位置
内置类型 | ||
类型名 | 说明 | 注意点 |
Object | 对象类型 | 类型检查是在编译时发生 在分配值之前,先进行类型转换 可以将任何类型的值赋给 |
Dynamic | 动态类型 | 类型检查是在运行时发生 编译器不会对包含类型 任何非 Null 表达式都可以转换为 |
String | 字符串类型 | string 为引用类型,但是定义相等运算符 == 和 != 是为了比较 string 对象(而不是引用)的值。 字符串是不可变的,即:字符串对象在创建后,其内容不可更改。 例如,编写此代码时,编译器实际上会创建一个新的字符串对象来保存新的字符序列,且该新对象将赋给 |
自定义型 | ||
Class | 类 | |
Interface | 接口 | 指定一组函数成员而不实现成员的引用类型,其它类型和接口可以继承接口。 通常接口命令以 I 字母开头 如果一个接口继承其他接口,那么实现类或结构就需要实现所有接口的成员。 接口成员有修饰符限定 接口中只包含成员的签名,接口没有构造函数 |
Delegate | 委托 |
委托可指向一个与其具有相同标签的方法 委托多播:相同类型的委托对象可使用 "+" 运算符进行合并。 |
值类型和引用类型的本质区别:值类型存储在栈(Stack)中,引用类型对象存储在堆(Heap)中,而其对应的地址存储在栈中。多个引用类型的变量可以指向同一个对象,他们共享同一块内存空间。注:两个变量引用同一个对象,修改其中一个变量会影响到另一个变量。 |
3、西门子PLC中常用的变量类型:十进制
类型 | 格式 | 长度 | 范围 | 注 |
BOOL | 布尔型 | 1 | FALSE 或 TRUE | |
位字符串 | ||||
BYTE | 整数 | 8 | 有符号:-128~ 127 无符号:0到255 | 无法比较大小:处理SINT 和USINT数据 |
WORD | 整数 | 16 | 有符号:±32768之间 无符号:0~65535 | 无法比较大小:处理 int和uint数据 |
DWORD | 整数 | 32 | 有符号:±32768之间 无符号:0~65535 | 无法比较大小:处理Dint和udint数据 |
LWORD | 整数 | 64 | - | 无法比较大小:处理Lint和ulint数据 |
整数 | ||||
SINT | 有符号整数 | 8 | -128~ 127 | |
USINT | 无符号整数 | 8 | 0~255 | |
INT | 有符号整数 | 16 | ±32768之间 | |
UINT | 无符号整数 | 16 | 0~65535 | |
DINT | 有符号整数 | 32 | -2^31~2^31-1 | |
UDINT | 无符号整数 | 32 | 0~2^32-1 | |
LINT | 有符号整数 | 64 | -2^63~2^63-1 | |
ULINT | 无符号整数 | 64 | 0~2^64-1 | |
浮点数 | ||||
REAL | 浮点数 | 32 | -3.402823e+38 ~-1.175495e-38 ± 0.0 1.175495e-38 ~3.402823e+38 | C# float 数 |
LREAL | 浮点数 | 64 | - |
注意:西门子PLC中数据类型丰富如涉及到定时器、日期和时间、字符串、数组、自定义结构、指针、系统数据类型、硬件类型等,用到时学习即可。
4、汇川PLC中常用的变量类型:有区别与C#
汇川PLC中数据类型少,基本上分为布尔型、整数和浮点数,需要注意的是,使用过程中注意浮点数和整数的位数,位数不对容易导致计算错误。下表列出汇川PLC变量类型。注意对变量分配地址时注意数据长度。汇川PLC关于数据使用规范这一点做的很不明确,不人性化,稍不注意很容易出错。另外汇川PLC涉及到数据计算的指令也是区分数据类型的。
类型 | 格式 | 长度 | 注 |
Bool | 布尔型 | 1 | 只允许绑定位原件 |
INT | 单字整数类型 | 16 | 绑定单字、一般按照双字对齐使用,避免出错 |
DINT | 双子整数类型 | 32 | 连续占用两个字元件 |
REAL | 实数类型 | 32 | 连续占用两个字元件 |
BYTE | 字节类型 | 8 | 单个绑定只占用字的低8位 |
IP | IP类型 | 32 | 连续占用两个字元件 |
STRING | 字符串类型 | 自定义 | 使用时地址两字节对齐 |
ARRAY | 数组类型 | - | 按数组类型实际分配 |
5、概念补充:数学上数的分类
概念:实数,是有理数和无理数的总称。数学上,实数直观地定义为和数轴上的点一一对应的数。无理数就是无限不循环小数;有理数包括整数和分数、是整数和分数的集合;整数包括正整数、0、负整数。
虚数:在数学中,虚数就是形如a+b×i的数,其中a,b是实数,且b≠0,i² = - 1。虚数这个名词是17世纪著名数学家笛卡尔创立,因为当时的观念认为这是真实不存在的数字。后来发现虚数a+b×i的实部a可对应平面上的横轴,虚部b可对应平面上的纵轴,这样虚数a+b×i可与平面内的点(a,b)对应。可以将虚数bi添加到实数a以形成形式a + b×i的复数,其中实数a和b分别被称为复数的实部和虚部。一些作者使用术语纯虚数来表示所谓的虚数,虚数表示具有非零虚部的任何复数。
C#和PLC中涉及的数一般都只涉及到有理数。