Codesys 数据结构:1.2.3 扩展数据类型之bit类型详解-CODESYS资源下载区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 2869|回复: 0

Codesys 数据结构:1.2.3 扩展数据类型之bit类型详解

[复制链接]

该用户从未签到

发表于 2023-4-12 22:17:58 | 显示全部楼层 |阅读模式
1 定义

bit是位数据类型,只能在结构体和功能块中使用,其值可以是TRUE(1)
和FALSE(0);
  1. bitValue1 : BIT := TRUE;
  2. bitValue2 : BIT :=1;
复制代码
2 特点

    BIT不能作为数组的基本类型BIT可以优化内存使用,但访问BIT类型变量比较耗时;BIT类型变量没有单独的内存地址,不能声明bit类型的指针
Codesys最小地址单元是byte
3 内存空间

    1.1 一个BIT只占一个BYTE内存大小中的一位;1.2 如果仅仅声明一个bit变量,会开辟一个byte大小内存空间;
  1. //声明只有一个bit变量的结构体
  2. TYPE DUT :
  3. STRUCT
  4.         bitVar1 : BIT;
  5. END_STRUCT
  6. END_TYPE
复制代码
用sizeof()查看此结构体的大小,返回值单位是byte,可以看出此结构体占1个byte内存空间

Codesys 数据结构:1.2.3 扩展数据类型之bit类型详解-1.png



    1.3 如果声明多个连续BIT变量,多个BIT会公用BYTE大小内存空间的不同位;
  1. //声明5个连续的bit变量,也只会开辟一个byte大小内存空间
  2. TYPE DUT :
  3. STRUCT
  4.         bitVar1 : BIT;
  5.         bitVar2 : BIT;
  6.         bitVar3 : BIT;
  7.         bitVar4 : BIT;
  8.         bitVar5 : BIT;
  9. END_STRUCT
  10. END_TYPE
复制代码
声明多个连续的BIT变量,多个bit会公用byte内存空间的不同位,如果BIT变量个数超过8,会另外开辟额外的byte大小内存空间




    1.3 如果声明的BIT变量不是连续的,每个BIT变量都会开辟一个BYTE大小内存空间
  1. //两个BIT类型变量之间有一个BYTE类型变量,使两个BIT变量不连续
  2. TYPE DUT :
  3. STRUCT
  4.         bitVar1 : BIT;
  5.         byVar   : BYTE;
  6.         bitVar2 : BIT;       
  7. END_STRUCT
  8. END_TYPE
复制代码
可以看见一共开辟3个byte大小空间,即每个BIT类型变量开辟一个byte大小内存空间

Codesys 数据结构:1.2.3 扩展数据类型之bit类型详解-3.png



    1.4 对比BOOL类型变量,每个BOO类型变量都会开辟一个BYTE大小内存空间,不管是否连续
  1. //声明5个连续的BOOL变量,也只会开辟五个byte空间大小
  2. TYPE DUT :
  3. STRUCT
  4.         bVar1 : BOOL;
  5.         bVar2 : BOOL;       
  6.         bVar3 : BOOL;       
  7.         bVar4 : BOOL;       
  8.         bVar5 : BOOL;       
  9. END_STRUCT
  10. END_TYPE
复制代码
可以看出开辟了5个byte大小内存空间

Codesys 数据结构:1.2.3 扩展数据类型之bit类型详解-4.png


4 应用举例

常用来映射外部输入输出的IO模块
    1 声明结构体
  1. TYPE DUT :
  2. STRUCT
  3.         bitVar1 : BIT;
  4.         bitVar2 : BIT;       
  5.         bitVar3 : BIT;       
  6.         bitVar4 : BIT;       
  7.         bitVar5 : BIT;       
  8. END_STRUCT
  9. END_TYPE
复制代码
    2 在program中实例化结构体变量并映射输入输出
  1. PROGRAM PGR
  2. VAR     
  3. struVar AT %QB0 : DUT;
  4. END_VAR
复制代码
映射后struVar中的bitVar1 – bitVar5 就分别对应 %QB0.0 – %QB0.4
+10
不赞一个?
打赏鼓励一下!

2人打赏

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则


顶部qrcode底部
关注酷德网订阅号,获取更多资讯!

QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

GMT+8, 2026-11-9 03:46 , Processed in 0.157614 second(s), 51 queries .

酷德网

© 2001-2013 Hicodesys. 技术支持 by 酷德网

快速回复 返回顶部 返回列表