查看: 4497|回复: 5
收起左侧

[教程经验] 在程序中通过变量执行复位操作

邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x
本帖最后由 工控小生 于 2020-6-17 23:42 编辑

在调试程序的时候,我们经常会使用热复位或者冷复位,让程序重新开始运行。我们一般都是在IDE里面执行复位的,当然也可以在程序中通过变量来进行复位操作,在触摸屏上加上这个复位按钮也是极好的,可以规避一些逻辑上的问题,毕竟只要能复位掉的bug都不是bug。下面开始展示实现的步骤:
1,创建一个标准工程,必须连接到实际的控制器,仿真是不能实现的;
2,打开库管理器,在高级里面添加CmpApp、SysTypes2interfaces库;
3,添加一个掉电保持型变量列表;
  1. {attribute 'qualified_only'}
  2. VAR_GLOBAL PERSISTENT RETAIN
  3.         xAutoRestart     : BOOL;
  4.         udiCnt           : UDINT;
  5. END_VAR
复制代码

4,在PLC_PRG中编写以下程序;
  1. PROGRAM PLC_PRG
  2. VAR
  3.         sAppName      : STRING := 'Application';
  4.         result        : RTS_IEC_RESULT;
  5.      
  6.         pApp          : POINTER TO CmpApp.APPLICATION;
  7.         xInit         : BOOL := TRUE;
  8.         xReset        : BOOL;
  9.         
  10.         CountTest          : DINT;
  11. END_VAR
复制代码
  1. IF xInit THEN
  2.     pApp := CmpApp.AppFindApplicationByName(pszString := sAppName, pResult := ADR(result));   
  3.     PersistentVars.xAutoRestart := FALSE;
  4.         xInit := FALSE;
  5. END_IF

  6. IF xReset THEN
  7.     CmpApp.AppReset(pApp := pApp, usResetOption := CmpApp.RTS_RESET);
  8.     PersistentVars.xAutoRestart := TRUE;      
  9.         xReset := FALSE;
  10. END_IF

  11. CountTest := CountTest + 1;
复制代码

5,创建一个函数命名为taskev_StopDone,返回值为DWORD;
图片.png

6,在函数中编写以下程序;
  1. FUNCTION taskev_StopDone : DWORD
  2. VAR_INPUT
  3.     EventPrm: CmpApp.EVTPARAM_CmpAppStop;
  4. END_VAR
  5. VAR
  6. END_VAR
复制代码
  1. IF PersistentVars.xAutoRestart THEN
  2.     PersistentVars.udiCnt := PersistentVars.udiCnt + 1;
  3.     CmpApp.AppStartApplication(PLC_PRG.pApp);
  4. END_IF
复制代码

7,打开任务配置页面;
图片.png

8,创建一个StopDone的事件然后把taskev_StopDone这个函数分配给它;
图片.png

图片.png

9,下载程序,把PLC_PRG中的xReset设置为TRUE就可以愉快地实现复位操作了。






上一篇:关于凸轮主轴一些设想,还请各位大佬不吝赐教
下一篇:求助 AM600如何修改网关

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

Inovance版主 2020-6-18 15:25:43 | 显示全部楼层
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部