ST编程语言

    分界符 应用场合 备注和示例
    空格 可以在PLC 程序中任何位置插入空格 不允许在关键字、文字、标识符和枚举值中直接插入空格。
    TAB 可以在PLC 程序中任何位置插入TAB 不允许在关键字、文字、标识符和枚举值中直接插入TAB。
    (* 注释开始 用户自定义注释,可以在程序允许空格的任何位置输入注
    *) 注释结束 释,且 CoDeSys 可以通过设置允许注释嵌套。
    + 十进制数的前缀符号(正数) +456;+1.23
    + 加操作符 23+11
    – 十进制数的前缀符号(负数) -789
    – 年-月-日的分隔符 D#1980-02-29
    – 减操作符 11月19日
    # 基底数的分隔符 2#1101;16#FF数据类型分隔符| SINT#123
    # 时间文字的分隔符 T#200ms;TOD#05:30:35:28;t#14m_12s
    . 正数和小数的分隔符 3.14;2.18
    . 分级寻址地址符 %IX0.3
    . 结构元素分隔符 Channel[0].type;abc.number
    . 功能块结构分隔符 TON1.Q;SR_3.S1
    E/e 指数分界符 1.0e+6;3.14E6
    ‘ 字符串开始/结束符 ‘Hello World!!’
    $ 串中特殊字符的开始 ‘$L’表示换行;’$R’表示回车
    : 时刻文字分隔符 TOD#12:41:21.11
    : 变量/类型分隔符 Test:INT
    := 初始化操作符 Var1:INT:=3
    := 输入变量链接操作符 INT_2(SINGLE:=z2,PRIORITY:=1)
    := 赋值操作符 Var2:=45
    ( ) 枚举表分界符 V:(B1_10V,UP_10V,IP_15V):= UP_10V
    ( ) 子范围分界符 DATA:INT(-32768..32767)
    ( ) 初始化重复因子 ARRAY(1..2,1..3) OFINT:=1,2,3(4),6
    ( ) 指令表修正符 (A>B)
    ( ) 函数自变量 Var2*LIMIT(Var1)
    ( ) 子表达式分级 (A*(B-C)+D)
    ( ) 功能块输入表分界符 TON_1(IN:=%IX5.1,PT:=T#500ms);
    [] 数组下标分界符 MOD_5_CFG.CH[5].Range:=BI_10V;
    , 枚举表分隔符 V:(BI_10V,Up_10V):=Up_1_5V;
    , 初始值分隔符 ARRAY(1..2,1..3) OF INT:=1,2,3(4),6;
    , 数组小标分隔符 ARRAY(1..2,1..3) OF INT:=1,2,3(4),6;
    , 被声明变量的分隔符 VAR_INPUT A,B,C:REAL; END_VAR
    , 功能块初始值分隔符 TON_1(IN:=%IX5.1,PT:=T#500ms);
    , 功能块输入表分隔符 SR_1(S1:=%IX1.1,RESET:=%IX2.2);
    , 操作数表分隔符 ARRAY(1..2,1..3) OF INT:=1,2,3(4),6;
    , 函数自变量表分隔符 LIMIT(MN:=4,IN:=%IW0,MX:=20);
    Case 至表分隔符 CASE STEP OF 1,5:DISPLAY:=FALSE;
    ; 类型分隔符 TYPE R:REAL;END_TYPE
    ; 语句分隔符 QU:=5(A+B);QD:=4(A-B);
    .. 子范围分隔符 ARRAY(1..2,1..3);
    Case 范围分隔符 CASE STEP OF (1..5):DISPLAY:=FALSE;
    % 直接表示变量的前缀 %IW0
    => 输出连接操作符 C10(CU:=bInput,Q=>Out);
    PROGRAM 程序段开始 EN ,ENO 使能输入/输出
    END_PROGRAM 程序结束 EN ,ENO 使能输入/输出
    FUNCTION 函数段开始 TRUE 逻辑真
    END_FUNCTION 函数段结束 FALSE 逻辑假
    FUNCTION_BLOCK 功能块段开始 TYPE 数据类型段开始
    END_FUNCTION_BLOCK 功能块段结束 END_TYPE 数据类型段结束
    VAR 内部变量段开始 STRUCT 结构体开始
    END_VAR 变量段结束 END_STRUCT 结构体结束
    VAR_INPUT 输入变量段开始 IF THEN EISIF IF 语句
    END_VAR 变量段结束 ELSE END_IF IF语句结束
    VAR_OUTPUT 输出变量段开始 CASE OF CASE 语句
    END_VAR 变量段结束 END_CASE CASE语句结束
    VAR_IN_OUT 输入输出变量段开始 FOR TO BY DO FOR 循环语句
    END_VAR 变量段结束 END_FOR
    VAR_GLOBAL 全局变量段开始 REPEAT UNTIL REPEAT 循环语句
    END_VAR 变量段结束 END_REPEAT
    CONSTANT 常数变量 WHILE DO WHILE 循环语句
    END_WHILE
    ARRAY OF 数组 RETURN 跳转返回符
    AT 直接地址 NOT,AND,OR,XOR 逻辑操作符
    POINTER TO 指针

    2.1.1标准数据类型
    数据大类 数据类型 关键字 位数 取值范围
    布尔 布尔 BOOL 1 FALSE(0)或TEUE(1)
    整型 字节 BYTE 8 0~255
    字 WORD 16 0~65535
    双字 DWORD 32 0~4294967295
    长字 LWORD 64 0~(2^64-1)
    短整型 SINT 8 -128~127
    无符号短整型 USINT 8 0~255
    整型 INT 16 -32768~32767
    无符号整型 UINT 16 0~65535
    双整型 DINT 32 -2147483648~2147483647
    无符号双整型 UDINT 32 0~4294967295
    长整型 LINT 64 -2^63~(2^63-1)
    实数 实数 REAL 32 1.175494351e-38~3.402823466e+38
    长实数 LREAL 64 2.2250738585072014e-308~1.7976931348623158e+308
    字符串 字符串 STRING 8*N
    时间数据 时间 TIME 32 T#0ms~T#71582m47s295ms
    32 TIME_OF_DAY TOD#0:0:0~TOD#1193:02:47.295
    32 DATE D#1970-1-1~D#2106-02-06
    32 DATE_AND_TIME DT#1970-1-1-0:0:0 ~DT#2106-02-06-06:28:15

    分界符 应用场合 备注和示例
    空格 可以在PLC 程序中任何位置插入空格 不允许在关键字、文字、标识符和枚举值中直接插入空格。
    TAB 可以在PLC 程序中任何位置插入TAB 不允许在关键字、文字、标识符和枚举值中直接插入TAB。
    (* 注释开始 用户自定义注释,可以在程序允许空格的任何位置输入注
    *) 注释结束 释,且 CoDeSys 可以通过设置允许注释嵌套。
    + 十进制数的前缀符号(正数) +456;+1.23
    + 加操作符 23+11
    - 十进制数的前缀符号(负数) -789
    - 年-月-日的分隔符 D#1980-02-29
    - 减操作符 11月19日
    # 基底数的分隔符 2#1101;16#FF数据类型分隔符 SINT#123
    # 时间文字的分隔符 T#200ms;TOD#05:30:35:28;t#14m_12s
    . 正数和小数的分隔符 3.14;2.18
    . 分级寻址地址符 %IX0.3
    . 结构元素分隔符 Channel[0].type;abc.number
    . 功能块结构分隔符 TON1.Q;SR_3.S1
    E/e 指数分界符 1.0e+6;3.14E6
    ' 字符串开始/结束符 'Hello World!!'
    $ 串中特殊字符的开始 '$L'表示换行;'$R'表示回车
    : 时刻文字分隔符 TOD#12:41:21.11
    : 变量/类型分隔符 Test:INT
    := 初始化操作符 Var1:INT:=3
    := 输入变量链接操作符 INT_2(SINGLE:=z2,PRIORITY:=1)
    := 赋值操作符 Var2:=45
    ( ) 枚举表分界符 V:(B1_10V,UP_10V,IP_15V):= UP_10V
    ( ) 子范围分界符 DATA:INT(-32768..32767)
    ( ) 初始化重复因子 ARRAY(1..2,1..3) OFINT:=1,2,3(4),6
    ( ) 指令表修正符 (A>B)
    ( ) 函数自变量 Var2*LIMIT(Var1)
    ( ) 子表达式分级 (A*(B-C)+D)
    ( ) 功能块输入表分界符 TON_1(IN:=%IX5.1,PT:=T#500ms);
    [] 数组下标分界符 MOD_5_CFG.CH[5].Range:=BI_10V;
    , 枚举表分隔符 V:(BI_10V,Up_10V):=Up_1_5V;
    , 初始值分隔符 ARRAY(1..2,1..3) OF INT:=1,2,3(4),6;
    , 数组小标分隔符 ARRAY(1..2,1..3) OF INT:=1,2,3(4),6;
    , 被声明变量的分隔符 VAR_INPUT A,B,C:REAL; END_VAR
    , 功能块初始值分隔符 TON_1(IN:=%IX5.1,PT:=T#500ms);
    , 功能块输入表分隔符 SR_1(S1:=%IX1.1,RESET:=%IX2.2);
    , 操作数表分隔符 ARRAY(1..2,1..3) OF INT:=1,2,3(4),6;
    , 函数自变量表分隔符 LIMIT(MN:=4,IN:=%IW0,MX:=20);
    Case 至表分隔符 CASE STEP OF 1,5:DISPLAY:=FALSE;
    ; 类型分隔符 TYPE R:REAL;END_TYPE
    ; 语句分隔符 QU:=5(A+B);QD:=4(A-B);
    .. 子范围分隔符 ARRAY(1..2,1..3);
    Case 范围分隔符 CASE STEP OF (1..5):DISPLAY:=FALSE;
    % 直接表示变量的前缀 %IW0
    => 输出连接操作符 C10(CU:=bInput,Q=>Out);

    前缀符号 定义 约定数据类型
    X 位(bit) BOOL
    B 字节(BYTE) BYTE
    W 字(WORD) WORD
    D 双字(DWORD) DWORD
    L 长字(LWORD) LWORD
    【例4.X】在程序中定义了变量双字型Var1,如需拿取该变量其中的一部分数据,将其转换成布尔/字节/字类型的变量,其首地址为多少,该如何换算: VAR Var1 AT%ID48:DWORD; END_VAR
        %I 说明了该变量属于输入单元,具体的地址为%ID48。该地址对应的内存映射详见表4-x 所示。字地址%IW96 和%IW97 两个字组合后对应%ID48,因为48 2(字节)后的字节首地址为96。同样的道理,字节地址%IB192、%IB 193、%IB 194 和%IB 195 这四个字节变量组合后对应%ID48,因为48 4(字节) 后对应的字节首地址正好为192。表4.x 列出了CoDeSys V3.x 在寻址时,根据数据类型的大小(X:bit,B:byte,W:word,D:dword)。
    %IX 96.0 - 96.7 96.8 - 192.15 97.0 - 97.7 97.8 - 97.15
    %IB 192 193 194 195
    %IW 96 96 97 97
    %ID 48 48 48 48
    映射关系: 1) %MX12.0:是%MB12 的第一位。 2) %IW4:表示输入字单元4(字节单元8 和9)。 3) %Q*:输出在一个为特定的位置。 4) %IX1.3:表述输入第1 字节单元的第三位。
    标准数据类型
    数据大类 数据类型 关键字 位数 取值范围
    布尔 布尔 BOOL 1 FALSE(0)或TEUE(1)
    整型 字节 BYTE 8 0~255
    字 WORD 16 0~65535
    双字 DWORD 32 0~4294967295
    长字 LWORD 64 0~(2^64-1)
    短整型 SINT 8 -128~127
    无符号短整型 USINT 8 0~255
    整型 INT 16 -32768~32767
    无符号整型 UINT 16 0~65535
    双整型 DINT 32 -2147483648~2147483647
    无符号双整型 UDINT 32 0~4294967295
    长整型 LINT 64 -2^63~(2^63-1)
    实数 实数 REAL 32 1.175494351e-38~3.402823466e+38
    长实数 LREAL 64 2.2250738585072014e-308~1.7976931348623158e+308
    字符串 字符串 STRING 8*N
    时间数据 时间 TIME 32 T#0ms~T#71582m47s295ms
    32 TIME_OF_DAY TOD#0:0:0~TOD#1193:02:47.295
    32 DATE D#1970-1-1~D#2106-02-06
    32 DATE_AND_TIME DT#1970-1-1-0:0:0 ~DT#2106-02-06-06:28:15

    继续阅读
    • 我的微信
    • 这是我的微信扫一扫
    • weinxin
    • 我的微信公众号
    • 我的微信公众号扫一扫
    • weinxin
    JY450筒膜包装机 包装机论坛

    JY450筒膜包装机

    JYZN-450筒膜包装机 1)技术特点 针对物料样品量身定制的振动盘精密的计数控制装置确保每袋准确无误, 采用pc上位机或组态软件控制系统。适用于单种物料包装。 制袋系统采用三菱伺服以太网通讯技术自...
    筒膜包装机与立式包装有什么区别及他的用途 包装机论坛

    筒膜包装机与立式包装有什么区别及他的用途

    筒膜包装用途:广泛应用于电工、电器、灯饰和五金建材制造,适用与机械手,检测机,理料盘,注塑机实现自动联动配线,可以实现高运定工作。 技术特点:针对不同产品实现不同理料方式如螺丝可以定做的振动盘,直线振...
    厦门三菱plc实践基地 包装机论坛

    厦门三菱plc实践基地

    国内自动化的前景及就业方向: 自动化行业一直以来是社会急需紧缺的人才。与本行业就业领域相关联的行业在近年来借助市场经济的扩张和对外技术开放程度的加深,也获得了飞速发展,民航、铁路、医疗、通信系统、海关...
    三菱PLC用st语言在大型热收缩包装机应用 包装机论坛

    三菱PLC用st语言在大型热收缩包装机应用

    主要硬件设备:三菱PLC与台达变频器VFD-M通讯仅供参考案例。 通信格式:MODBUS ASCII,9600,7,E,1,停止位2,变频器地址01。 IF( M0 )THEN  //*M0为触摸屏上...