• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
vitalityboy
级别: 略有小成
精华主题: 0
发帖数量: 67 个
工控威望: 225 点
下载积分: 5510 分
在线时间: 72(小时)
注册时间: 2013-09-23
最后登录: 2025-12-22
查看vitalityboy的 主题 / 回贴
楼主  发表于: 7天前
图片:
用ST写的那段,第一次M0 On后M100能On,在5秒后M100自动为Off,而M0再次On时M100却不会为On;用梯形图写的这段,M0为On时M100就On,在5秒后M100自动为Off,而且M0再次On后M100也能为On。以上两段程序运行原理一样,梯形图写的执行效果符合预期,而用ST写的却差强人意,同样都是FX3U的程序为什么执行效果却不一样???
guafa58
级别: 略有小成
精华主题: 0
发帖数量: 170 个
工控威望: 391 点
下载积分: 2920 分
在线时间: 313(小时)
注册时间: 2010-10-28
最后登录: 2025-12-19
查看guafa58的 主题 / 回贴
1楼  发表于: 7天前
很不理解,你为什么 要写成 常开与上升沿 一起 ;   M0 常开就常开,上升沿就上升沿,串一起 ,如何扫描
工控小c
级别: 工控侠客
精华主题: 0
发帖数量: 604 个
工控威望: 2415 点
下载积分: 12101 分
在线时间: 570(小时)
注册时间: 2022-10-14
最后登录: 2025-12-25
查看工控小c的 主题 / 回贴
2楼  发表于: 7天前
搞不懂。不过可以优化一下第一个IF判断M100,再IF判断M0上升沿。
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 6 篇
发帖数量: 5188 个
工控威望: 7549 点
下载积分: 163439 分
在线时间: 3266(小时)
注册时间: 2007-11-21
最后登录: 2025-12-25
查看sjm213的 主题 / 回贴
3楼  发表于: 7天前
IF M0 THEN
    IF NOT M100 THEN
        IF M0 AND NOT M1 THEN
            M100:=TRUE;
            MOV(TRUE,0,D0);
        END_IF;
    ELSE
        IF D0>=5 THEN
            M100:=FALSE;
        END_IF;
    END_IF;
END_IF;

INCP(SM413,D0);

M1:=M0;

======================
估计是M0为OFF时 LDP(TRUE,M0)这句一直未执行,导致M0再ON时它的上升沿状态无变化,这样M100:=TRUE就不执行了。
uthman
QQ:3749615
级别: 家园常客
精华主题: 1 篇
发帖数量: 397 个
工控威望: 826 点
下载积分: 2721 分
在线时间: 798(小时)
注册时间: 2007-10-25
最后登录: 2025-12-25
查看uthman的 主题 / 回贴
4楼  发表于: 7天前
编译出的程序不一样,IF,CASE等编译后都是CJ跳转
uthman
QQ:3749615
级别: 家园常客
精华主题: 1 篇
发帖数量: 397 个
工控威望: 826 点
下载积分: 2721 分
在线时间: 798(小时)
注册时间: 2007-10-25
最后登录: 2025-12-25
查看uthman的 主题 / 回贴
5楼  发表于: 7天前
IF M0 AND NOT M1 THEN
    D0 := 0;
    M100 := TRUE;
END_IF;
M1 := M0;

IF M8013 AND NOT M2 THEN
    D0 := D0 + 1;
END_IF;

M2 := M8013;

IF D0 >= 5 THEN
    M100 := FALSE;
END_IF;
麦克朱
级别: 家园常客
精华主题: 0
发帖数量: 642 个
工控威望: 871 点
下载积分: 380 分
在线时间: 269(小时)
注册时间: 2022-07-11
最后登录: 2025-12-25
查看麦克朱的 主题 / 回贴
6楼  发表于: 7天前
if 以内的东西不执行,里面有LDP这个指令,优先用R_TRIG,且独立放在外面是最好的,真要一样的话要写应当是m0 and not m100 and ldp(m0)
本帖最近评分记录:
  • 下载积分:+1(vitalityboy) 真诚感谢!
    linzhenfu
    级别: 略有小成
    精华主题: 0
    发帖数量: 195 个
    工控威望: 320 点
    下载积分: 658 分
    在线时间: 285(小时)
    注册时间: 2007-07-15
    最后登录: 2025-12-25
    查看linzhenfu的 主题 / 回贴
    7楼  发表于: 7天前
    你认为原理一样的两个程序,实则是不一样的,IF这个东西不是等同于梯形图上那个条件触点。
    乌喽牛
    级别: 家园常客
    精华主题: 0
    发帖数量: 799 个
    工控威望: 936 点
    下载积分: 2203 分
    在线时间: 261(小时)
    注册时间: 2020-06-10
    最后登录: 2025-12-25
    查看乌喽牛的 主题 / 回贴
    8楼  发表于: 7天前
    什么情况,像是什么启动,不过这写法,
    hlq_0815
    人生的成功不在于拿到一副好牌,而是怎样将坏牌打好。
    级别: 论坛版主

    精华主题: 2 篇
    发帖数量: 1900 个
    工控威望: 4583 点
    下载积分: 7795 分
    在线时间: 1512(小时)
    注册时间: 2008-07-03
    最后登录: 2025-12-25
    查看hlq_0815的 主题 / 回贴
    9楼  发表于: 6天前
    INCP(M8013,D0);
    IF NOT M100 AND LDP(TRUE,M0) THEN
        M100 := TRUE;
        D0 := K1;
    END_IF;
    IF M0 AND M100 AND D0 >= K5 THEN
        M100 := FALSE;
    END_IF;
    楼主留言:
    经这么一改,M0再次导通M100也能再次为On,而且生成的程序比我原来的小一点
    本帖最近评分记录:
  • 下载积分:+1(vitalityboy) 真诚感谢!
  • 人生的成功不在于拿到一副好牌,而是怎样将坏牌打好。
    congrikunge
    级别: 家园常客
    精华主题: 0
    发帖数量: 248 个
    工控威望: 567 点
    下载积分: 706 分
    在线时间: 807(小时)
    注册时间: 2016-04-22
    最后登录: 2025-12-25
    查看congrikunge的 主题 / 回贴
    10楼  发表于: 6天前
    上升沿和计时器之类的 不要嵌套在IF里
    那时年少
    级别: 工控侠客
    精华主题: 0
    发帖数量: 634 个
    工控威望: 2296 点
    下载积分: 33484 分
    在线时间: 1410(小时)
    注册时间: 2021-03-24
    最后登录: 2025-12-25
    查看那时年少的 主题 / 回贴
    11楼  发表于: 6天前
    对!
    引用
    引用第10楼congrikunge于2025-12-20 11:04发表的  :
    上升沿和计时器之类的 不要嵌套在IF里
    • «
    • 1
    • 2
    • »
    • Pages: 1/2     Go