线下实训
HOME
线下实训
正文内容
plc 编程true 三菱ST语言教学(1)——基本指令与标签
发布时间 : 2025-01-19
作者 : 小编
访问数量 : 23
扫码分享至微信

三菱ST语言教学(1)——基本指令与标签

IF 条件判断

if单词翻译过来是“如果”,在程序中用于判断是否满足某种条件,当满足其中一个条件时在这个条件下面进行一些操作,在所有条件都不满足时不操作,举个例子:

假设现在有3个按钮控制电机正反转。按下按钮1(X1)电机正转(Y1),按下按钮2(X2)电机反转(Y2),按下X3停止。 使用梯形图编程如下:

梯形图编程

可以看到的是,由于输入为按钮,是一个脉冲信号,所以需要线圈并上输入形成自锁保持电机启动。同样的功能我们用ST来编程:

ST编程

当按下按钮X1的期间,位软元件Y1的值为true(理解为on,高电平,导通),Y2的值为false(理解为off,低电平,断开),X2与X3同理。三个按钮都没有动作时,输出Y1,Y2也不会有任何操作。

这里的:=是ST语言的赋值符号,它即可以给开关量赋值,也可以给数字量赋值;即可以赋值常数,也可以赋值变量,类似于梯形图里面的mov指令。一定要记住每个赋值语句后面和结束指令后面要加分号结束符“;”,程序里所有的符号要用英文的符号。

程序写成这样已经可以初步实现功能,可以看到在ST语言下,软元件赋值后如果没有其他的赋值操作,直接就是保持的,类似于梯形图的SET/RST指令。

IF语句的常用格式如下:

IF不仅可以判断开关量,同时可以判断数字量,或者是一个公式,例如:

IF判断数字量

标签(变量)

上面的程序我们都是用PLC自带的软元件(X,Y,M,D等)进行编程的,而想要发挥ST语言真正的实力还需要学会使用标签进行编程。

从使用范围标签分为局部标签和全局标签,局部标签只能在相应的一个程序段内使用,不同的程序段可以建立同名标签不会互相影响;而全局标签可以在工程下所有程序段内使用。

在三菱的结构化工程中,每建立一个程序段就会生成相应的局部标签,建立标签需要声明标签的数据类型,可以是bit(位),word(字),float(浮点),string(字符串),time(时间)等基本数据类型,也可以是FB(功能块),struct(结构体),本文只介绍基本数据类型,其他的以后再讲。

上面电机正反转控制的例子我们可以修改如下:

声明标签

声明标签

标签栏共有3项,“类”包含VAR,VAR_CONSTANT,VAR_RETAIN,其中VAR为中间变量,可以在任意时刻进行判断和赋值;VAR_CONSTANT为常数变量,设定常数后不能被程序赋值;VAR_RETAIN为保持变量,相比VAR多个掉电数据保持功能。“标签名”可以任意写,三菱还支持写中文,但要注意不要写一些PLC保留字,比如bit,int,word等相关的,这里建议尽量写英文,这样程序看起来整齐而且通用,可以复制到其他品牌PLC也能直接运行,还有中文的变量在编程时不能双击选中,也很麻烦。

程序编辑如下:

标签编程

标签所表示的含义是编程人员定义的,想要控制实际的设备还需要将标签与设备对应的软元件相连接:

程序与设备相连

这里要注意赋值的方向,:=后面的值传递给前面的标签。

从这个程序来看好像标签没有起到任何便利的作用,反而多此一举,那是因为程序太简单还体现不出标签的便捷,下面我们讲其他的基本指令。

CASE 条件判断

与IF相比,CASE判断更清晰,它常用于判断数字量 ,我们举个例子来说明他的格式,仍然采用标签的方式:

声明标签

CASE判断

其含义为:

当标签Number=0时,输出开关量OutputBool为true,输出整形量OutputInt=1;

当Number=1时,输出开关量OutputBool为true,输出整形量OutputInt=2;

当Number=2到11任意一个数时,输出开关量OutputBool为true,输出整形量OutputInt=3;

当Number=15或者20时,输出开关量OutputBool为true,输出整形量OutputInt=4;

当Number不等于以上任何值时,输出开关量OutputBool为false,输出整形量OutputInt=0;

这段程序基本体现了case语句的所有格式,可以看到相比IF,条件要清晰很多。

CASE指令除了用于条件判断,也用于顺序流程控制 的编程,再举个例子:

假设一个机构有3个气缸,3个气缸按照一个固定顺序依次进行伸出动作,完成后统一缩回。 我们可以使用case来构建整个流程:

声明标签

每个气缸有4个变量,分别为气缸伸出,伸出反馈,气缸缩回,缩回反馈。

流程控制

iStep的每一个值相当于一个步骤,每完成一个步骤,通过气缸到位信号 将步骤iStep置为下一个步骤,这样整个程序可以按照我们想要顺序执行。xBegin相当于一个开始按钮,触发整个流程。

从这个程序我们可以看出,case下面可以添加if,实际上不仅如此,所有基本指令的下面都可以多层套嵌,可以实现更为复杂的逻辑。

FOR循环

FOR循环为有限次的循环,循环根据设定的增量讲一个数字变量进行递增,直到变量等于设定值。举例说明:

FOR循环

这里建立了两个字变量“ii”“iCount”,这里ii作为循环的依据变量,设定的增量为by后面的数字2,由0数到100,意思为ii初始值为0,每次+2,直到ii的值=100本次扫描周期内 停止。要明确的是循环是在一个PLC扫描周期内完成的,所以如果FOR语句上面没有条件进行限制,每个扫描周期都要进行这个循环任务,例如上图的程序如果直接执行,那么每个扫描周期要进行50次循环,占用PLC的资源还是很大的,所以一般我们要用上升沿或者判断条件限制FOR循环在需要的时候执行。例如:

增加限制条件

这里对FOR循环做了条件限制,每循环一次iCount的值增加1,每个周期for循环50次,20个周期后iCount的值=1000,不再满足iCount<1000的条件了, 循环停止。

WHILE循环

WHILE循环为条件循环,只要满足设定的条件就一直循环,直到条件不满足才停止,循环也是在一个PLC扫描周期内完成的。这里要特别注意如果条件一直满足,PLC会陷入死循环,造成PLC报错,所以如果不是迫不得已,尽量不要使用while循环,举例说明其用法:

WHILE循环

这个程序的意思为,在一个扫描周期内,当变量iCount<1000时,始终执行iCount自身+1的操作,直到不满足iCount<1000的条件才停止,上面这个程序分析可知循环1000次后循环停止,程序是没问题的,但是如果由于马虎+号写成了-号,如果不考虑变量自身的容量问题,循环没有停止的时候,变为死循环,那这个程序一运行就会报错。

其他的基本符号

ST语言逻辑运算和数学运算都很方便,例如:

“与或非”和“加减乘除”都很简单,复杂的运算可以直接调用现成的公式(指令)。下一篇讲解指令和功能块的调用。

施耐德PLC应用,在程序中定义变量和数据!

施耐德PLC中编辑变量和数据:

(一)基本知识

1、变量分类

变量是在程序执行时可以修改的内存区域。Unity Pro 软件编程可以使用两种类型的变量:

1) 定位变量:是与 I/O 硬件模块输入输出通道相关联的,或者与内存引用相关联的变量。例如:“启动电机”与输入模板通道 %I 0.5.0 相关联,“启动电机”就是定位变量。

2) 非定位变量:是既不与I/O 硬件模块输入输出通道相关联,也不与内存引用地址相关联的变量,即没有地址关联的变量成为非定位变量。非定位变量在内存中的位置不可知。这种变量定义类型可以使您在编写程序时抛开地址的束缚,完全专注于您的应用。

2、通用数据类型和范围

 BOOL/EBOOL : 布尔变量必须为 FALSE (0) 或 TRUE (1). EBOOL处理强制和边沿检测

 WORD : 代表 “位串16”, 意味着数据长度为 16 位

 INT : 代表整型数. 数值范围从 -32768 至 +32767

 UINT : 代表无符号整型数. 数值范围从 0 至 65535

 REAL : 代表浮点值. 数值范围从 -3.40e+38 至 3.40e+38

3、 通用数据类型的立即值语法

通常基本数据类型(EDT)的实例采用变量名或拓扑地址的方式引用,而在数据编辑器或程序段中也可以通过立即值的方式赋值和引用。如下图所示。

4、定义变量的三种方式

方式一,在项目浏览器中鼠标双击“变量和FB实例”,在弹出的‘数据编辑器窗口’定义,编辑、修改变量,如下图。

方式二,在项目浏览器中双击CPU或I/O模块,如下图查看相应模块的地址,在模块的I/O对象表格里定义,这种方式只能生成,不支持修改和删除。

方式三,在”程序编辑窗口”中定义,这种方式只能生成,不支持修改和删除。

(二)实际操作

1、在项目浏览器中点击“变量和FB实例”,在右侧“名称”下输入start,类型选 EBOOL,在下一行输入 stop,类型选 EBOOL,然后关闭窗口。如下图:

2、从硬件属性中书写:在项目浏览器中双击DDO3202k;左键点右侧“BMX DDO3202k”,选择I/O对象,再选择%Q,然后点击“更新网络”。在该界面右侧%Q0.2.0名称下,改写为cmd_motor,再用鼠标左键选中第2行,按着鼠标左键下拉,选择右侧Q0.2.1、Q0.2.2、Q0.2.3;然后在左侧“名称前缀”框中输入cmd_,点击“创建”。即可形成cmd_0、cmd_1、cmd_2;如下图:

3、关闭所有窗口,点击“变量和FB实例”,会显示刚才所有的定义变量名。

4、按保存按钮,保存项目。

相关问答

PLCtrue指令怎么用?

PLCtrue指令是PLC中的一种逻辑运算指令,表示“真”或“非零”。在三菱PLC中,PLCtrue指令的用法如下:-当输入信号为真时,输出为真。-当输入信号为假时,输...

【plcture是什么意思】作业帮

[回答]picture[5piktFE]n.画,图画,照片,像,美景,描述,相似物,化身vt.画,描绘

欧姆龙NJ系列st语言里如何表示上升沿?

在欧姆龙NJ系列st语言中,上升沿可以用"R"来表示。这是因为"R"代表的是rising,即上升的意思。在程序设计中,上升沿的表示方式通常是为了对电路信号进行监...

is,where,the,plcture造句句_作业帮

[回答]whereistheplcturr

[求助-西门子PLC200]s7200cpu中如何读取字变量中的位?

1、我现在要判断LW0.0是不是为true,该如何做?我在程序中直接输入LW0.0,显示红色报错?应输入为L0.0。2、请问我该如何选择局部变量LW0的位?与I,Q,V,M表示...1...

三菱PLC(LD=)是什么意思?

负载比较指令(LD=)根据指令的比较,对S1和S2的值进行测试。如果比较的结果是TRUE,那么触点LD有效。如果比较的结果是FALSE,那么触点LD无效。负载比较指令(LD=...

西门子PLC如何读取DB块里bool数据类型变量有多少个为1?

循环配合右移吧,初始化长整型变量a,一个字节右移8次,多少个字节右移n*8次,循环判断所有需查字节最边上那位的值,true则变量ainc或1加个变量a等于a,大致思...

plc置位域怎么用?

回答如下:PLC的置位域是一种用于控制和管理PLC程序中的状态和动作的功能。它可以用于控制输出信号的开关状态、启动和停止运行、计数和计时等操作。使用PLC的...

havealookforthepicture怎么改_作业帮

[回答]havealookatthepicture看一看这张图片望采纳~

用PLC如何设计一个四路抢答器,程序如何写?

以omronplc为例,首先是列io表,然后开始写抢答程序,用四个keep指令,因为复位优先,所以如果有一个抢到了,其他按钮信号无效。最后是控制对应的提示灯亮...CASE...

 super sunshine  北京798艺术中心 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部