首页 > 其他分享 >利用PLC扫描周期实现一些小技巧

利用PLC扫描周期实现一些小技巧

时间:2024-04-30 22:46:14浏览次数:14  
标签:END 技巧 扫描 Collection NextStep CurrentStep PLC Mode InOut

  1. 上升沿
//pulse generate

IF #my_singal AND NOT #pulse_bool THEN
    ;
END_IF;
#pulse_bool := #my_singal;
  1. 数值记忆,记录当数值变化时事件
 //memory,my_order由外部主动触发

IF #my_order <> #memory_order THEN
    ;
END_IF;
#memory_order := #my_order;
  1. 清数据之前先转存
//transfer data before clear
IF #my_singal AND NOT #pulse_bool THEN
    #Tmp_data_set := #my_data_set;
    #my_data_set := #null_data_set;
END_IF;
#pulse_bool := #my_singal;

  1. 手动做一个GRAPH顺控管理器
//初始化
IF #H_Collection.Button_StepMode THEN
    #H_Collection.Button_ContinuousMode := FALSE;
END_IF;
IF NOT #In_home THEN
    #H_Collection.StationByPass := FALSE;
END_IF;

//连续模式
IF #H_Collection.Button_ContinuousMode AND (NOT #H_Collection.Button_StepMode) AND
    (NOT #H_Collection.StationByPass) THEN
    
    IF #In_Mode.AutoMode AND #In_home AND 0 = #InOut_NextStep THEN
        #InOut_NextStep := 10;
    END_IF;
    
    IF (NOT #In_Mode.AlarmMode) AND (NOT #In_Mode.StopMode) AND #In_Mode.AutoMode THEN
        #InOut_CurrentStep := #InOut_NextStep;
    ELSE
        #InOut_CurrentStep := #InOut_CurrentStep;
    END_IF;
    
    IF #In_Mode.ManualMode THEN
        #InOut_CurrentStep := 0;
        #InOut_NextStep := 0;
    END_IF;
    
END_IF;

//单步模式
IF #H_Collection.Button_StepMode AND (NOT #H_Collection.StationByPass) THEN
    
    IF #In_Mode.AutoMode AND #In_home AND 0 = #InOut_NextStep THEN
        #InOut_NextStep := 10;
    END_IF;
    
    IF (NOT #In_Mode.AlarmMode) AND (NOT #In_Mode.StopMode) AND #In_Mode.AutoMode AND NOT #st_Pluse[0] AND #H_Collection.Button_NextStep THEN
        #InOut_CurrentStep := #InOut_NextStep;
    ELSIF #In_Mode.AlarmMode OR  #In_Mode.StopMode THEN
        #InOut_CurrentStep := #InOut_CurrentStep;
    END_IF;
    #st_Pluse[0] := #H_Collection.Button_NextStep;
    
    IF #In_Mode.ManualMode THEN
        #InOut_CurrentStep := 0;
        #InOut_NextStep := 0;
    END_IF;
    
END_IF;

//工位屏蔽
IF #H_Collection.StationByPass AND #In_home THEN
    #InOut_CurrentStep := 0;
    #InOut_NextStep := 0;
END_IF;

使用顺控器方法:

Call Graph_Manager;//如上代码,填好接口
CASE #currentstep OF

10:
;
#nextstep:=20;

20:
;
#nextstep:=30;

30:
...
#nextstep:=0;

END_CASE;
  1. 利用定时器做一个脉冲发生器(这个和扫描周期特性没啥关系)
//此处周期为2S,可以用time变量把定时器时间接口化
REGION 脉冲发生器
    IF (NOT #statVoh) AND (NOT #statVol) THEN
        #statVoh := true;
    END_IF;
    #on_time(IN := #statVoh,
             PT := t#1s);
    IF #on_time.Q THEN
        #statVoh := false;
        #statVol := true;
    END_IF;
    #off_time(IN := #statVol,
              PT := t#1s);
    IF #off_time.Q THEN
        #statVoh := true;
        #statVol := FALSE;
    END_IF;
END_REGION

标签:END,技巧,扫描,Collection,NextStep,CurrentStep,PLC,Mode,InOut
From: https://www.cnblogs.com/xiacuncun/p/18168819

相关文章

  • 赏猎技巧之burp
    高并发Raceconditions竞态条件理论https://portswigger.net/web-security/race-conditions操作https://portswigger.net/burp/documentation/desktop/tools/repeater/send-group#sending-requests-in-parallelHTTP/1keep-alive不能开......
  • 深入浅出Spring源码,终于把学Spring源码的技巧吃透了!
    前言本人从事Java架构十余年,也曾经在几家一线大厂任职多年,一直认为最难啃的当属Spring源码,为此我自己录制了一套Spring由浅入深的源码教程,根据自己多年来对于Spring源码整理的课纲一步步带你深入学习Spring源码,教程课件都打包好提供给你mian费学习!由于官方限制,对Spring源码感兴......
  • Profinet转Modbus网关接称重设备与1200PLC通讯
     Profinet转Modbus网关(XD-MDPN100)是一种能够实现Modbus协议和Profinet协议之间转换的设备。Profinet转Modbus网关可提供单个或多个RS485接口,使用Profinet转Modbus网关将称重设备与西门子1200PLC进行通讯,可以避免繁琐的编程和配置过程,节省了工程师的时间和精力。其次,它提供了灵......
  • Modbus转Profinet网关连接打印设备与PLC通讯
      Modbus转Profinet网关(XD-MDPN100)是一种能够实现Modbus协议和Profinet协议之间转换的设备。Modbus转Profinet网关可提供单个或多个RS485接口,使得不同设备之间可以顺利进行通信。当我们需要连接打印设备与PLC进行通讯时,Modbus转Profinet网关可以将打印设备与PLC之间建立起稳定......
  • Modbus转Profinet网关连接传感器与PLC通讯
    Modbus转Profinet网关(XD-MDPN100/300)是用于将Modbus协议和Profinet协议进行转换并进行通讯的设备。Modbus转Profinet网关可以实现Modbus和Profinet协议之间的相互转换,并自带网口和串口,既可实现协议的相互转换,也可实现接口的相互转换。当使用Modbus转Profinet网关连接传感器与PLC......
  • C++ 异常处理机制详解:轻松掌握异常处理技巧
    C++异常处理C++异常处理机制允许程序在运行时处理错误或意外情况。它提供了捕获和处理错误的一种结构化方式,使程序更加健壮和可靠。异常处理的基本概念:异常:程序在运行时发生的错误或意外情况。抛出异常:使用throw关键字将异常传递给调用堆栈。捕获异常:使用try-cat......
  • SecureCRT常用技巧
    鼠标复制:(常用)options ->globaloptions-> Terminal 钩上Copyonselect,并钩上pasteon【right】button这样在SecureCRT中用鼠标选中一段字符,就可以直接复制到剪切板,按鼠标右键完成粘贴。双击复制并打开新session:(常用)options->globaloptions->Terminal->Tabs......
  • 一些运维技巧-抖音
    批量删除500万个文件rsync-av--deleteempty/demo/--exclude-from=exclude.txt#rsync快速通用的远程和本地文件复制工具#empty/源目录空目录,需要带/#demo/目标目录500万个文件目录,需要带/#--delete从目标目录中删除不在源目录的文件#--exclude-fr......
  • 11个Python循环技巧
    本文分享自华为云社区《Python中的循环技巧指南》,作者:柠檬味拥抱。当我们处理数据时,有时候需要创建多个列表以存储不同类型或不同条件下的数据。在Python中,我们可以利用循环来快速、高效地创建这些列表。本文将介绍如何使用循环在Python中创建多个列表,并提供代码实例。python用......
  • 加速博客体验:静态资源优化技巧大揭秘!
    如今有许多人涉足博客写作,其中大多数正处于博客创作的旅程中。每位程序员都梦想拥有自己的服务器,理想情况下,服务器配置越高越好,价格越实惠越好。购买一台基础款服务器用于建立博客是一个不错的选择,因为并不需要处理大流量。这完全是出于个人兴趣和坚持写作的良好习惯。当然了写博......