1  该语言不区分大小写:

2 私有软元件区:硬件寄存器地址

%I        输入区    %id0  //32bit长度,从0bit开始截取
%Q        输出区
%M        存储区SM        特殊标志
SD        特殊寄存器%ix0.0    //  1bit长度,从0bit开始截取1bit

3值类型长度:用于二进制截取  bit长度

X:    1位   (bit)//bool
B:    8位   (byte) //  8bit
W:   16位   (word) // 16bit
D:   32位 (double) // 32bit
L:   64位   (long) // 64bit

语法:%< 存储器区前缀iqm>< bit长度前缀xbwdl>< 首地索引>|.< 子索引>
变量名1  at    绑定地址%mw10    : 类型word    :=    赋值1234;
变量名2  at    %qd0 :  dint :=  16#0f;    //32bit类型,Q区输出:00001111

4硬件寄存器地址:%软元件+长度  (组合)

%ix0.0  // 输入区 0bit位置
%qx0.7  // 输出区 7bit位置%qb0 := 16#0f  // 输出区 0bit位置开始(截取 8bit)  00001111指示灯
%qw0 := 16#0f  // 输出区 0bit位置开始(截取16bit)  00001111指示灯
区别在于截取的bit长度不一样。

5右值类型输入:  选中变量  shift + F2

a: BOOL := FALSE;   // 变量 a 是布尔类型,值是0wo的进制: BYTE := 255; //  byte类型 默认值255a:=TRUE;
wo的进制 := 123;     // 十进制表示
wo的进制 := 16#0F;   // 十六进制表示
wo的进制 := 10#255;  // 十进制表示
wo的进制 := 8#255;  //  八进制表示
wo的进制 := 2#00001111;   // 二进制表示

           := 是赋值的意思 ,    16# 是十六进制

左值类型总表:

    整数
byte     8bit        0~255         // BYTE#204
usint    8bit        0~255         // byte
uint     16bit       0~65535
word     16bit       0~65535       //WORD#1234;
udint    32bit       0~4294967295
dword    32bit       0~4294967295  //DWORD#1234;
ulint    64bit       0~2e64-1
lword    64bit       0~2e64-1      //LWORD#1234;负整数
sint    -8bit         -128~127(存:1元手续费,去高位,按位取反)
int     -16bit        -32768~32767(取:1元利息,去高位,按位取反)
dint    -32bit        -2147483648~2147483647
lint    -64bit        -2e63  ~  2e63-1小数
real     -32bit        -1.401e45   ~   3.403e38
lreal    -64bit时间
time     32bit        毫秒      T#12345MS;      //  t#12h34m15s;
ltime    64bit        L毫秒     LTIME#12.789D;  //  D天 H时  M分  S秒  MS毫秒
date                32bit        年-月-日           D#2022-10-24;
date_and_time       32bit        年-月-日L          DT#1970-1-1-0:0:0
time_of_day         32bit        时-分-秒           TOD#15:36:30.123;//   4    TOD#其他
bool                 8bit        数据只能是TRUE或FALSE,0,1
bit                  1bit        只能在模块中文字图片
string              81字节    'ABCDEF'            //ASCii        1字节  $转义  $30
wstring            162字节    "汇川PLC-AM600"     //unicode      2字节

数组:

语法:<Array_Name>:ARRAY [<ll1>..<ul1>,<ll2>..<ul2>,<ll3>..<ul3>] OF <elem. Type>

数组2号  :ARRAY [1..3,5..7,8..9] OF <elem. Type>

结构体:

TYPE    学生        //  | EXTENDS DUTTYPE:   继承访问
STRUCTp1:int;p2:int;p3:dword;
END_STRUCT
END_TYPEarr1:ARRAY[1..3] OF STRUCT1:= [(p1:=1,p2:=10,p3:=4723),(p1:=2,p2:=0,p3:=299),(p1:=14,p2:=5,p3:=112)];章同学 : 学生 := ( Start:=[3,3], Point1:=[5,2], Point2:=[7,3], Point3:=[8,5], Point4:=                                [5,7], End:= [3,5]);

枚举:

TYPE      <identifier>:(<enum_0> ,<enum_1>, ...,<enum_n>) |<base data type>;
END_TYPEidentifier:自定义的枚举类型;enum_n:枚举类型对应的常量值,每个常量可以声明其对应值,如果不声明
使用默认值;base data type枚举常量对应数据类型,可以不用声明,默认为整数。

联合:

TYPE            <unionname>  :UNION<declaration of variables 1>...<declaration of variables n>
END_UNION
END_TYPE

别名:  类似 #define 新  旧

TYPE   <aliasname>:basetype END_TYPEaliasname为别名类型名,用作数据类型。basetype可以是标准数据类型,也可以是用户自定义数据类型。
示例
TYPE alias1 : ARRAY[0..200] of byte; END_TYPE

子集:

DUT对象语法:TYPE    <name> : <Inttype> (<ug>..<og>)
END_TYPE;name:有效的IEC标示符
Inttype:是数据类型SINT, USINT, INT, UINT, DINT, UDINT, BYTE, WORD, DWORD (LINT, ULINT, LWORD)
中的一种。
ug:是一个常数,必须符合基本类型对应的下边界范围。下边界本身包含在此范围内。
og:是一个常数,必须符合基本类型对应的上边界范围。上边界本身包含在此范围内。DUT对象声明示例
TYPE
SubInt : INT (-4095..4095);
END_TYPE
变量直接声明示例
VAR
i : INT (-4095..4095);
ui : UINT (0..10000);
END_VAR

引用:

引用是一个对象的别名,操作引用就如同操作对象。
语法:<identifier> : REFERENCE TO <data type>identifier:引用标示符。data type:引用对象的数据类型。
示例及初始化ref_int : REFERENCE TO INT;
a : INT;
b : INT;
ref_int REF= a; (* ref_int引用a *)
ref_int := 12; (* a值为12 *)
b := ref_int * 2; (* b值为24 *)
ref_int REF= b; (* ref_int引用b *)
ref_int := a / 2; (* b值为6 *)

指针:

指针保存的是一个对象的地址,指针可以指向任何数据类型(BIT类型除外)
语法:<identifier>: POINTER TO <data type>;identifier:指针标示符。data type:指针指向的数据类型。
通过地址操作符对指针进行操作。地址操作符包括ADR(获取变量地址)和^(变量地址对应的值)
示例及初始化
VAR
pt:POINTER TO INT; (* 声明指向INT类型的指针pt*)
var_int1:INT := 5;
var_int2:INT;
END_VAR
pt := ADR(var_int1); (* 变量varint1的地址分配给指针pt *)
var_int2:= pt^; (* 通过^地址操作符获取指针对应的值*)
pt^:=33; (*给指针对应的变量var_int1赋值*)

初始值:默认值

VARvar1:INT := 12; (* 整形变量初始值12*)x : INT := 13 + 8; (*常量表达式定义初始值*)y : INT := x + fun(4); (*初始值包含函数调用*)z : POINTER TO INT := ADR(y); (*指针通过地址函数ADR来初始化*)END_VAR

6变量区修饰:

本地变量     VAR            // 局部变量
输入         var_input
输出         var_output
输入输出     var_in_out
全局变量     VAR_GLOBAL
临时变量(VAR_TEMP)
静态变量(VAR_STAT)
配置变量(VAR_CONFIG)
常量         var_constant
全局变量 :  Application-右键添加GVL
掉电保持     PERSISTENT RETAIN<type_key> |atribute_keyvariable1;variable2;...
END_VARtype_key:类型关键字,包括VAR(本地变量),VAR_INPUT(输入变量),VAR_OUTPUT(输出变量)
atribute_key:属性关键字,包括RETAIN,PERSISTENT,CONSTANT,用于明确变量的范围。示例
VARiLoc1:INT; (* 本地变量*)
END_VAR

7ST语法:

:    类型指定
:=    赋值
<>    不等于
=      逻辑等于
EXPT     求幂
NOT       取反
*        乘法
/         除法
MOD     取余
and     逻辑与
xor      逻辑异或
or        逻辑或
s=        置位
r=        复位
not        逻辑非

函数调用:

CMD_TMR :TON(CMD_TMR.Q为定时器输出状态)
CMD_TMR(IN := %IX5, PT := 300); A:=CMD_TMR.Q

if

IF   value < 7 THENWHILE    value < 8 DO         // 假value := value +1;   // 假,继续END_WHILE;
END_IF;
IF guzhang故障 THEN%QX0.0 :=1; // Q0.0=1;  黄色灯;
ELSE%Qx0.0 :=0; // Q0.0=1;  黄色灯;
END_IF

for

FOR dangqianzhi当前值:=0 TO zuigaozhi最高值 BY 3 DO  //每次加3到最高值%QX0.2 := 0;;
END_FOR

while

WHILE  bool运行  DO%QX0.2 := 1; // 运行灯%QX0.2 := 1; // 运行灯%QX0.2 := 1; // 运行灯;
END_WHILE

case

CASE zhuanpan转盘值 OF0..4:         //0到4的情况%QX0.2 := 0;5,7,9:         // 5,7,9的情况%QX0.2 := 0;8:              // 等于8的时候%QX0.2 := 0;
//
//  label1 :;
ELSECASE zisuoyin子索引 OF0..300:      // 0到300%QX0.2 := 0;
//      label1 :;ELSE%QX0.2 := 1;;END_CASE;
END_CASE

repeat

//  REPEAT循环J:=-1;
REPEAT
J:=J+2;
UNTIL J= 101 OR ARR[J] = 70
END_REPEAT;

continue 下一轮

jmp

label:      i:=i+1;JMP label;

exit

return

8轴编程:

直接拖入左侧

其它功能块也是如此。

下面我来验证一下数据长度:

//  正整数_类型
lookbyte  := SIZEOF(BYTE);//  1 (0~255)
lookusint := SIZEOF(USINT);// 1
lookuint  := SIZEOF(UINT);//  2
lookudint := SIZEOF(UDINT);//  4
lookulint := SIZEOF(ULINT);//  8u8 := -127;// 129
byte2 := -99999;
usint2 := -99999999;
uint2  := -99999999;
udint2 := -99999999;
ulint2 := -99999999;

它只能表示正数,且bit长度不能超出。

下面验证 负整数

//  负整数
looksint := SIZEOF(SINT);// 1
lookint  := SIZEOF(INT);//  2
lookdint := SIZEOF(DINT);//  4
looklint := SIZEOF(LINT);//  8sint2 := -128;
int2 := -12345;
dint2 := -1234567;
lint2 := -9999999;

下面验证  小数

//  小数_浮点数
lookreal := SIZEOF(REAL);// 4
looklreal:= SIZEOF(LREAL);//  8real2 := -65535.1234567;
lreal2 := -2147483647.1234567;

验证一下时间

//   时间_类型
looktime  := SIZEOF(TIME);//  4            T#          毫秒
lookltime := SIZEOF(LTIME);// 8        LTIME#          L毫秒
lookdate := SIZEOF(DATE); //  4            D#          年-月-日        D#2022-10-24;
// dateandtime   //4                   DT#          年-月-日L       DT#1970-1-1-0:0:0
// timeofday     //4                  TOD#          时-分-秒        TOD#14:57:39;//   4    TOD#
time2 :=  T#12345.6789S;  //4    T#12345ms;
ltime2 := LTIME#12.789D;  //8    D天 H时  M分  S秒  MS毫秒date2 :=  D#2022-10-24;//4                        年-月-日
lookdateandtime := SIZEOF(dateandtime);//4
dateandtime2 :=DT#2022-1-1-0:0:0; //     4        年-月-日L          DT#
looktimeofday :=SIZEOF(timeofday);//     4
timeofday2   := TOD#14:57:39;//          4        时-分-秒           TOD#

其它类型:

//   其它
lookbool := SIZEOF(BOOL);// 1   false   true
bool2 :=  TRUE;  //  false  truelookword  := SIZEOF(WORD);     //  2
lookdword := SIZEOF(DWORD);    //  4
looklword := SIZEOF(LWORD);    //  8
lookstring := SIZEOF(STRING);  // 81
lookwstring := SIZEOF(WSTRING);//162word2 := WORD#1234;//2
dword2 :=DWORD#12345;//4
lword2 :=LWORD#123456789;//8
string2 := INT_TO_STRING(23);//
wstring2 := "汇川PLC";//
string3 := WSTRING_TO_STRING( wstring2);//

ST语言入门(维修电工1)相关推荐

  1. ab st语言编程手册_西门子PLC编程SCL和LAD谁才是王者?一起讨论一下

    现在很多大品牌的中高级 PLC 都支持国际电工委员会 IEC61131 标准中规范的五种编程语言的混合编程,即梯形图(LD).结构化文本(ST).流程图(SFC).指令表(IL)和功能块(FB).在这 ...

  2. c语言入门教程文库,C语言入门教程(全集)课件

    C语言入门教程(全集)课件 01123364105 Y N p AB X=0? YN P1 A A P2 a a b b Y Y N N y n A B P A A B X=0? 3 a97 3 U ...

  3. 零基础学C语言(C语言入门)

    C语言入门(初识C语言) 初识C语言 前言 什么是C语言 为什么要选择C语言作为学习的第一门语言 一.第一个C语言程序 1.1 #include 1.2 int main() 1.3 printf 1 ...

  4. Julia教程:Julia语言入门

    正如我在" 朱莉娅是什么? ", Julia是一种用于数值计算的免费开源高级,高性能动态编程语言,它将动态语言的开发便利性与已编译的静态类型语言的性能相结合. 它设计用于科学计算, ...

  5. C语言入门(初识C语言)

    C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...

  6. C#语言入门、xamarin基础、.NET MAUI全栈开发技术综合笔记

    文章目录 前言: 一.C#语言入门 1.类 类的三大成员 属性(Property) 方法(Method) 事件(Event) 2.静态成员与实例成员 3.类型.变量和方法 3.1类型(Type) 3. ...

  7. 10万字C语言入门手册,历时三个月,详细的C语言教程终于出炉了,给你全新C语言入门体验

    C语言是一种非常流行的编程语言,它是许多现代编程语言的基础. 什么是计算机? 计算机是一种用于存储.处理.和输出数据的电子设备.它通过程序控制和数学算法来实现数据处理.计算机通过输入设备(如键盘.鼠标 ...

  8. c语言短整型变量字符,C语言入门 — 整型 char,short,int,long

    一.c 语言变量,有整型变量,浮点型变量,字符变量,布尔型变量. 1.整型变量位数,以下基于32位的操作系统: (1个字节等于8bits)点击查看二进制 长整型(long),短整形(short),整型 ...

  9. 三菱FX3U与8和称重仪通信的程序。 主要功能是记录8个工位的重量 程序使用ST语言与梯形图的接合运用,使用三菱MODBUS 专用指令,8站轮询

    三菱FX3U与8和称重仪通信的程序. 主要功能是记录8个工位的重量,用威纶通FTP服务器下载到电脑里打印或修改. 程序使用ST语言与梯形图的接合运用,使用三菱MODBUS 专用指令,8站轮询,当有从站 ...

  10. c语言张鹏伟,改变第二天,目前学哔哩哔哩中张鹏伟老师的C语言入门课程===第四节...

    1.自我介绍: 目前理论上是维修为主,机械设计制造及其自动化方向.大学期间电子技术和C语言学的一塌糊涂,毕业后最多对PLC有一定的了解吧,但维修工作并不多,PLC目前也半桶水,平时就是一块砖,哪里需要 ...

最新文章

  1. ecside 列表排序问题
  2. python读取文件夹图片_读取文件夹里的图片,并且与标签对应
  3. Opencv 图片融合 addWeighted性能测试
  4. 知识点讲解五:处理js异步加载问题
  5. 0xBenchmark中垃圾回收测试模块的分析及改进
  6. 苹果忘记开机密码_苹果电脑忘记开机密码快速恢复的方法!
  7. 至强cpu型号列表_装机必看——CPU型号参数详解
  8. buntu12.10 64位 + android-ndk-r9 编译ffmpeg遇到的问题
  9. 离散数学期末复习总结
  10. Stata:产生唯一数据编码的三种方法
  11. IP协议号与传输层端口
  12. 面试经验 - 面试官让你问问题,你该问什么?
  13. 机器学习04:利用朴素贝叶斯分类器判别网络评论的情绪好坏(航空公司数据集)
  14. 游戏引擎 Unity 的入门易精通难体现在哪?为什么?
  15. 问题:必须使用记录或另一备份以恢复包含系统注册表
  16. AE 制作一个简单的动画
  17. 考研英语朱伟推荐的句子,写作文可以用(三)
  18. 2017年总结—颓废的一年
  19. linux mysql 超级用户_Linux下MySQL忘记超级用户口令的解决办法linux操作系统 -电脑资料...
  20. 那个时候我不小心建立了一个间谍应用

热门文章

  1. 计算机excel保留一位小数,excel表格数据取一位小数-excel保留一位小数
  2. ros文件服务器,ros设置_服务器应用_Linux公社-Linux系统门户网站
  3. python三菱fx3u通讯_【案例】三菱FX3UPLC的无线通讯讲解
  4. linux光盘属于什么设备,Linux系统中,光盘的设备文件为
  5. 豆瓣排名前500的电视剧
  6. EXCEL如何将平均值加减标准差设置为科学计数法显示
  7. HTML 和 CSS 重构网页 (Steam主页)
  8. 虚拟服务器密码遗忘怎么办,win7虚拟机忘记密码怎么办_win7虚拟机忘记密码的解决方法...
  9. 银河麒麟鸿蒙计划,银河麒麟Kydroid2.0发布,支持海量安卓APP,要抢鸿蒙的风头吗?...
  10. WPF控件模板和数据模板的区别