您现在所在的是:

三菱Mitsubishi

回帖:6个,阅读:825 [上一页] [1] [下一页]
479
2184263820
文章数:126
年度积分:479
历史总积分:479
注册时间:2023/11/16
发站内信
发表于:2023/11/16 20:14:13
#0楼
IF 条件判断
if单词翻译过来是“如果”,在程序中用于判断是否满足某种条件,当满足其中一个条件时在这个条件下面进行一些操作,在所有条件都不满足时不操作,举个例子:

假设现在有3个按钮控制电机正反转。按下按钮1(X1)电机正转(Y1),按下按钮2(X2)电机反转(Y2),按下X3停止。使用梯形图编程如下:
附件 ef75322562a2893fc39aa8f370b67af.jpg
可以看到的是,由于输入为按钮,是一个脉冲信号,所以需要线圈并上输入形成自锁保持电机启动。同样的功能我们用ST来编程:
附件 63aae6690ecc0bc2d4b072fab831678.jpg

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

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

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

37231
cvlsam 版主
文章数:12401
年度积分:1583
历史总积分:37231
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2023/11/17 11:27:04
#1楼
以下是引用21842638202023/11/16 20:14:13的发言:
IF 条件判断
if单词翻译过来是“如果”,在程序中用于判断是否满足某种条件,当满足其中一个条件时在这个条件下面进行一些操作,在所有条件都不满足时不操作,举个例子:

假设现在有3个按钮控制电机正反转。按下按钮1(X1)电机正转(Y1),按下按钮2(X2)电机反转(Y2),按下X3停止。使用梯形图编程如下:
附件 ef75322562a2893fc39aa8f370b67af.jpg
可以看到的是,由于输入为按钮,是一个脉冲信号,所以需要线圈并上输入形成自锁保持电机启动。同样的功能我们用ST来编程:
附件 63aae6690ecc0bc2d4b072fab831678.jpg

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

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

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


X1和X3同时按会发生什么情况呢? 所以,谨慎使用ELSIF。

Good Luck~
19249
pqsh 版主
文章数:7422
年度积分:1079
历史总积分:19249
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2023/11/17 11:59:58
#2楼
作者应该还要给行加缩进. 这将是良好的编程习惯和给人理解的方便.
实际上, 这个st不太对.按普通理解, if后面发生了, else if是不会执行的.
x1,x2同时的时候, 按这个是会有至少一个周期输出的, 也许是x1时间的输出. 这可能是个很糟糕的问题, 因为你实际看不到问题, 但是它确实发生了, 会产生不好预想的后果.
甚至这不是else if的问题, 这是编程的错误.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
8867
qdppo
文章数:1195
年度积分:905
历史总积分:8867
注册时间:2016/2/13
发站内信
发表于:2023/11/20 10:34:35
#3楼





        “Y1” := (“X1” OR “Y1”) AND NOT “X2” AND NOT “X3”
        “Y2” := (“X2” OR “Y2”) AND NOT “X1” AND NOT “X3”
479
2184263820
文章数:126
年度积分:479
历史总积分:479
注册时间:2023/11/16
发站内信
发表于:2023/11/20 14:42:13
#4楼
标签(变量)
上面的程序我们都是用PLC自带的软元件(X,Y,M,D等)进行编程的,而想要发挥ST语言真正的实力还需要学会使用标签进行编程。

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

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

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

声明标签
附件 f321a78d4a619535bbc7817d8940f62.jpg

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

程序编辑如下:

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


附件 b04ab4295d47743b1fb3ad16d80b78f.jpg
20901
bnnyygy
文章数:5988
年度积分:1567
历史总积分:20901
注册时间:2012/3/15
发站内信
2018论坛分享达人
发表于:2023/11/20 17:29:28
#5楼
if 打天下,一个不够就套10个if,没有什么逻辑解释不清的表情

话说。FX3U试过

CASE下载进去,

CASE vi_step OF
10:
...
20:

上载上来就是



LD= vi_step k10

LD= vi_step k20

这样的。。表情,说好的效率高呢
9240
chi1225
文章数:2466
年度积分:636
历史总积分:9240
注册时间:2014/7/31
发站内信
发表于:2023/11/21 8:36:16
#6楼
这种简单的逻辑控制,比如一个触点驱动一个线圈,直接用梯形图多方便;用ST语言还要作两个判断,输入等于1时输出,等于0时断开。。不是自己找罪受吗?发明梯形图的意义就是为了方便直接拖拽过来使用,替代这些繁锁的文本语句。。 以前电脑还没普及的时候,玩PLC的还得使编程器输入语句指令。。多落后。
搞野心事业总是有风险的,当无路可退时,最明智的选择是想办法前进~~

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004