Codesys基础笔记-CODESYS软件讨论区-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

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

Codesys基础笔记

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-13 14:13
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2023-9-22 23:14:45 | 显示全部楼层 |阅读模式
    前言:该笔记主要记录的事作者在学习codesys中所遇到的一些常见的问题和一些需要经常翻阅的基础知识内容,并非教程。
    一、 组件说明
    • (*)CODESYS Control Win V3-x64 SysTray
    控制模拟PLC运行暂停状态的组件


    v2-11b54aef7587e2e3e1e14a41c1cca115_720w.jpg

    v2-2e99fad9800d7042d6851ac22dc787d2_720w.jpg

    2. (*)CODESYS Gateway V3
    网关控制中心
    以上两个应用程序和主程序是Codesys模拟运行时必备的两个程序。
    ==注意==:如果同时安装了Codesys 和 Eplan 两款软件可能会出现Control程序无法Start运行的情况,参照
    解决Codesys在电脑中软PLC启动不了问题​blog.csdn.net/weixin_44327767/article/details/122734326

    二、通信连接
    连接PLC控制器需先注册用户,在线=>安全=>添加设备用户


    v2-1b048e2e467219bf0109969f72df0e2b_720w.jpg

    此处连接PLC控制器时需要输入刚刚添加设备用户中设置的密码,显示激活则连接成功。
    三、在线修改 / 下载
    在线更改其实是将不一样的代码传输到控制器的ram(运行内存)中,当断电之后ram中的内容会清空。
    下载是将全部代码覆盖控制器rom(持久储存器)中,断电不影响。
    RAM-RamdomAccessMemory易挥发性随机存取存储器,高速存取,读写时间相等,且与地址无关,如计算机内存等。
    ROM-Read Only Memory只读存储器。断电后信息不丢失,如计算机启动用的BOS芯片。存取速度很低(较RAM而言)且不能改写。
    四、启动应用

    v2-2f70c7431b71696ee161e36eb03c1681_720w.jpg


    五、任务配置
    任务执行类型执行特点任务举例
    循环在设定的每个时间间隔内执行对应的POU一次EtherCAT总线任务
    CANopen总线任务
    ModbusTCP通讯任务
    普通任务循环
    惯性滑行一旦开始执行,即反复循环执行,没有停歇间隔普通任务循环
    事件在设定的Bool型变量状态由0变1的情况下触发执行一次软中断处理POU
    状态在设定的Bool型变量的状态为1的情况下,反复循环执行,状态变为0则停止执行条件执行任务POU
    六、数据类型
    1. 整值数据类型


    v2-bad67889f247e982fc90114aae1fa8c6_720w.jpg



    v2-7ac712fda4eb06ceb8925c10576dc85f_720w.jpg

    实数的小数部分的是二进制表示的,用的是不断乘以的方式判断是否大于1来进行取值的操作(如下图),所以一般不要实数做等于比较

    v2-f384285a5f78b689f713a79a726b124f_720w.jpg

    2. 时间类型
    数据类型下限上限位数申明方式prefix 前缀
    TIME0ms1193h 2m 47s 295ms32bitT#1m30st
    LTIME0ns213503d 23h 34m 33s 709ms 551us 615ns64bitLTIME#50d20h10mlt
    TIME_OF_DAY00:00:0023:59:5932bitTOD#10:38:54tod
    DATE01.01.1970toapprox.06.02.210632bitD#2011-04-20date
    DATE_AND_TIME64bitDT#2011-02-20-10:38:54dt
    定义语法如下:   

    [C] 纯文本查看 复制代码
    定义语法如下:
        TIME_test1 : TIME := T#1M30S;
        TIME_test2 : DATE := D#2022-11-20;
    时间常数的语法:#<时间声明>

    3.字符串STRING和WSTRING
    变量类型STRING用于字符串,CODESYS默认为80个字节。STRING以ASCII(8位)解释,WSTRING以UNICODE(16位即UTF-16编码)解释。
    STRING 变量需要的内存一直是:
    ​ STRING: 1字节/字符 + 额外1字节用于零终止
    ​ WSTRING: 2字节/字符 + 额外2字节用于零终止
    一个STRING 或 WSTRING 最多可包含255个字节。[ASCII码 8位二进制占1个字节 而UNICODE编码是16位编码一个就占2字节]
    区分两种类型字符串的书写方式:(不按照此方法书写可能会报错:无法强制转换)
    ​ STRING类型用单引号:'string'
    ​ WSTRING类型用双引号:"WSTRING字符串“”


    v2-a1d2391344209ce934727949af14c91a_720w.jpg

    注意:字符串的长度默认为80,但可以在声明中限制。这是通过类型的长度来实现
    4.扩展类型(指针操作)
    • 指针POINTER:变量地址
    • 地址操作符ADR:获取变量地址
    • 内容操作符^:传递指针指向的内容
    [C] 纯文本查看 复制代码
    iVar1 : INT;//变量1
    iVar2 : INT;//变量2
    piVar:POINTER TO INT;//指针
    
    //将变量1的地证交给指指针
    piVar := ADR(iVar1);
    //通过内容操作符把指针内容交给变量2
    iVar2 := piVar^;

    七、CodeSys DUT
    • 结构体 STRUCT
    结构体使用需要先申明,再实例化,再进行使用
    申明
    [C] 纯文本查看 复制代码
    //结构体使用方法
    TYPE STRUCT_VAR://结构体名称
    STRUCT//申明该样式为结构体,后面几种类型主要决定样式的地方就在此处
        VAR1:BOOL;
        VAR2:INT;
        VAR3:ARRAY[0..9] OF INT;
    END_STRUCT
    END_TYPE

    注意:当我们定义了结构体还不能进行使用,它相当于一个数据类型,需要使用还需要进行实例化如下。
    实例化
    [C] 纯文本查看 复制代码
    PROGRAM PLC_PRG//POU的函数体
    VAR
        STRUCT1:STRUCT_VAR;//默认实例化,STRUCT1为该结构体的名字
        STRUCT1:STRUCT_VAR:=(VAR1:=TRUE,VAR2:=2,VAR3:=[10,7,3,6]);//初始化值实例化
    END_VAR

    继承 EXTENDS
    [C] 纯文本查看 复制代码
    TYPE DUT EXTENDS STRUCT_VAR://STRUCT_VAR被DUT继承或者说 DUT继承了STRUCT_VAR
    STRUCT//申明该样式为结构体
        xVar1:BOOL;
        tTime1:TIME;
    END_STRUCT
    END_TYPE

    虽然DUT中只有两个属性,但是因为DUT继承了STRUCT_VAR,所以实际上DUT一共有5个属性。
    2. 枚举体()
    枚举体在定义了之后就可以直接进行使用,定义方法和使用方法如下[当我们将枚举体第一个值设定为之后,那么我们后面的值会一次递增1,比如代码中wed的值就为3]
    [C] 纯文本查看 复制代码
    TYPE DUT_ENUMER:
    (
        Mon:=1,//设置第一位值  
      Tues,//2
      Wed,//3
      Fri//fri的值为4
    )BYTE;//定义上述4个变量类型为BYTE,可以不填写默认为INT
    END_TYPE
    
    //枚举体的使用
    iNumber1:=DUT_ENUMER.Mon;

    3. 联合体 UNION
    定义
    [C] 纯文本查看 复制代码
    TYPE ://联合体名字
    UNION//联合体关键词
        VAR1:BOOL:
        VAR2:ARRA 【0..8】OF BOOL;
        VAR3:INT;
    END_UNION
    END_TYPE

    实例化
    [C] 纯文本查看 复制代码
    PROGRAM POU_UNION
    VAR
      UNION1:OUT_UNION;
    END_VAR
    
    //使用方法
    UNION1.VAR1:=TRUL;

    八、功能块和函数的区别

    [C] 纯文本查看 复制代码
    //功能块实现:将学号为3的学生年龄加25岁。
    editStu(stStudent:=stStudents[2] , iAge:=25 , age=>stStudents[2].iAge);
    //age=>stStudents[2].iAge的意思是将功能块输出的age值传送给stStudents[2].iAge
    
    //函数实现:将学号为4的学生年龄加25岁。
    stStudents[3].iAge:=POU_edit_studentage_1(stStudent:=stStudents[3],age:=25);
    //POU_edit_studentage_1函数是将计算结果以返回值的形式返回给stStudents[3].iAge
    区别:
    • 功能块的使用需要实例化,且实例化之后会独立存在于内存之中,下次调用时内部的变量不会初始化。而函数在每一次调用时都会初始化内部的值。(什么叫函数:代数式中,凡相关的两数X与Y,对于每个X值,都只有一个Y的对应值。这种对应关系就表示Y是X的函数。说白了就是相同的输入对应相同的输出)。
    • 功能块只有输出(意味着可以同时输出多个值)。函数只有返回值,只有一个返回值。

    九、数据操作
    算术操作
    • ADD 加法
    • DIV 减法
    • MUL 乘法
    • SUB 除法
    • MOD 取余
    逻辑操作
    • AND 与操作A AND B 只有A和B都为真,最终结果才是真。
    • OR 或操作A OR B A和B任意一个为真,结果即为真。
    • XOR 异或操作A XOR B A和B不同为真,相同为假。
    • NOT 取反操作NOT A A为真侧结果为假,A为假则结果为真。
    数据类型转换
    [C] 纯文本查看 复制代码
    //隐式转换
    //小的向大的转换,SINT→INT
    
    //显示转换
    //不同大小或不同类型,STRING→DINT
    SINT:=TO_SINT(STRING);
    SINT:=STRING_TO_REAL(STRING)

    十、变量类型申明
    变量类型关键字变量属性外部读写(Read 读)内部读写(write写)
    VAR局部变量--R/W
    VAR_INPUT输入变量,由外部提供RIWR
    VAR_OUTPUT输出变量,有内部变量提供给外部RR/W
    VAR_IN_OUT输入-输出变量R/WR/W
    VAR_GLOBAL全局变量,能在所有POU内使用。R/WR/W
    VAR_TEMP临时变量,程序和功能块内部存储使用的变量--R/W
    VAR_STAT静态变量R/WR/W
    变量附加属性
    变量附加属性关键字变量附加属性
    RETAIN(保持变量)保持型变量,用于掉电保持
    RETAIN PERSISTENT (持续保持变量)持续保持型变量,用于掉电保持
    (两个单词的顺序不重要)
    CONSTANT常量
    RETAIN变量 和 PERSISTENT变量 被称为保持性变量。主要是在执行不同操作之后不同程度的变量保留其值的程度不同。如下图:


    v2-c5ec811487d7969c49206675d8324932_720w.jpg
    image-20221120231018726
    Reset warm OR Reboot PLC :表示热复位或则重启PLC
    Reset cold OR Download:表示冷复位或者下载
    Reset origin:表示初始复位
    定义方法:
    [C] 纯文本查看 复制代码
    VAR RETAIN
        RET_NUM_1 : INT := 15;
    END_VAR
    
    VAR RETAIN PERSISTENT
        PER_NUM_2 : INT := 15;
    END_VAR

    十一、为变量分配地址
    用AT为变量分配地址:
    在变量声明中,代码AT将变量分配给特定输入或输出地址。 语法:<变量名> AT <地址>:<变量类型>;
    举例:
    [C] 纯文本查看 复制代码
    VAR
        xBeispiel AT %IX1.1 : BOOL;
        wBeispiel AT %QW3: INT;
        xBeispiel AT %QX7.5: BOOL;
    END_VAR

    其中:
    • %lX1.1:Input bit 1.1
    • %QW2:Output word 2
    • %QX7.5:Output bit 7.5
    RangeprefixSize prefix
    IInputXSingle bit
    QOutputBByte(8bits)
    WWord(16bits)
    DDoubleword(32bits)








    +10
    打赏鼓励一下!
    回复

    使用道具 举报

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

    本版积分规则

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

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

    GMT+8, 2023-12-12 00:44 , Processed in 0.251973 second(s), 60 queries .

    酷德网

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

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