kidien
级别: 略有小成
精华主题: 0
发帖数量: 104 个
工控威望: 204 点
下载积分: 758 分
在线时间: 28(小时)
注册时间: 2010-01-08
最后登录: 2024-11-13
查看kidien的 主题 / 回贴
108楼  发表于: 2019-07-17 21:11
感谢楼主,最近在学功能块,向结构化转型,多谢分享!
chenyuuuu
Raymond
级别: 探索解密
精华主题: 0
发帖数量: 37 个
工控威望: 135 点
下载积分: 34526 分
在线时间: 154(小时)
注册时间: 2019-05-06
最后登录: 2024-11-25
查看chenyuuuu的 主题 / 回贴
109楼  发表于: 2019-07-19 09:09
谢谢楼主,学习学习。
huxiang2030
山本无忧,因雪白头;水本无愁,因风起皱...
级别: 探索解密
精华主题: 0
发帖数量: 85 个
工控威望: 129 点
下载积分: 1380 分
在线时间: 22(小时)
注册时间: 2019-06-19
最后登录: 2024-03-18
查看huxiang2030的 主题 / 回贴
110楼  发表于: 2019-07-19 09:45
。。怎么打不开
山本无忧,因雪白头;水本无愁,因风起皱...
nos001
级别: 探索解密
精华主题: 0
发帖数量: 54 个
工控威望: 110 点
下载积分: 814 分
在线时间: 42(小时)
注册时间: 2018-03-31
最后登录: 2022-10-06
查看nos001的 主题 / 回贴
111楼  发表于: 2019-07-19 21:40
结构化,程序大,有条理,值得借鉴。
就是定义在一页的全局变量太多,感觉应该分页。
其实不知道硬件,不知道用途,还是挺难看懂。
还是更喜欢st编程,自定义定时器感觉比gx works 内建的好用。
复制代码
  1. (******************************************************************************
  2. * 从自动包装切换到手动操作
  3. * 如果前面进行过“自动包装”,切换到“手动操作”时进行一次初始化
  4. *****************************************************************************)
  5. IF HmiKey_ManualOP THEN
  6.     
  7.     IF( bMode_Manual = FALSE ) THEN
  8.         
  9.         bMode_Manual := TRUE;
  10.         bMode_Auto   := FALSE;
  11.         HmiKey_AutoPack := FALSE;
  12.         HmiKey_FillPack := FALSE;
  13.         HmiKey_EmptyBagTest := FALSE;
  14.         HmiKey_FillBagOne := FALSE;
  15.         
  16.         ZRST( TRUE, Y001, Y004 );
  17.         ZRST( TRUE, Y006, Y007 );
  18.         ZRST( TRUE, Y010, Y011 );
  19.         ZRST( TRUE, Y013, Y017 );        
  20.         ZRST( TRUE, Y020, Y027 );
  21.         
  22.         Tcnt_10[ IDX_DOWN_FILL_DLY ].reset := TRUE;    
  23.         Tcnt_10[ IDX_DOWN_FILL ].reset := TRUE;    
  24.         Tcnt_10[ IDX_PULL_FILM_DLY ].reset := TRUE;    
  25.         Tcnt_10[ IDX_VERT_SEAL_DLY ].reset := TRUE;    
  26.         Tcnt_10[ IDX_VERT_SEAL ].reset := TRUE;
  27.             
  28.         Tcnt_10[ IDX_KNURL_DLY ].reset := TRUE;    
  29.         Tcnt_10[ IDX_KNURL ].reset := TRUE;    
  30.         Tcnt_10[ IDX_VACUUM_BOX_CLOSE_DLY ].reset := TRUE;    
  31.         Tcnt_10[ IDX_BAG_FOLD_DLY ].reset := TRUE;    
  32.         Tcnt_10[ IDX_BAG_FOLD ].reset := TRUE;
  33.                                     
  34.         Tcnt_10[ IDX_BAG_CUT_DLY ].reset := TRUE;                    
  35.         Tcnt_10[ IDX_BAG_CUT ].reset := TRUE;                        
  36.         Tcnt_10[ IDX_VACUUMIZE ].reset := TRUE;                    
  37.         Tcnt_10[ IDX_HEAT_SEAL ].reset := TRUE;                
  38.         Tcnt_10[ IDX_SEAL_KEEP ].reset := TRUE;                    
  39.         Tcnt_10[ IDX_SEAL_COOL ].reset := TRUE;            
  40.             
  41.     END_IF;
  42.     
  43. ELSE
  44.     RST( TRUE, bMode_Manual );
  45.     
  46. END_IF;
  47. (******************************************************************************
  48. * 从手动操作切换到自动包装
  49. * 如果前面进行过“手动操作”,切换到“自动包装”时进行一次初始化
  50. *****************************************************************************)
  51. IF HmiKey_AutoPack THEN
  52.     
  53.     IF( bMode_Auto = FALSE ) THEN      (* 初始化 *)
  54.         
  55.         bMode_Auto   := TRUE;
  56.         bMode_Manual := FALSE;    
  57.         HmiKey_ManualOP := FALSE;
  58.         HmiKey_Knurling := FALSE;
  59.         
  60.         ZRST( TRUE, Y001, Y004 );
  61.         ZRST( TRUE, Y006, Y007 );
  62.         ZRST( TRUE, Y010, Y011 );
  63.         ZRST( TRUE, Y013, Y017 );        
  64.         ZRST( TRUE, Y020, Y027 );    
  65.             
  66.         Tcnt_10[ IDX_DOWN_FILL_DLY ].reset := TRUE;    
  67.         Tcnt_10[ IDX_DOWN_FILL ].reset := TRUE;    
  68.         Tcnt_10[ IDX_PULL_FILM_DLY ].reset := TRUE;    
  69.         Tcnt_10[ IDX_VERT_SEAL_DLY ].reset := TRUE;    
  70.         Tcnt_10[ IDX_VERT_SEAL ].reset := TRUE;
  71.             
  72.         Tcnt_10[ IDX_KNURL_DLY ].reset := TRUE;    
  73.         Tcnt_10[ IDX_KNURL ].reset := TRUE;    
  74.         Tcnt_10[ IDX_VACUUM_BOX_CLOSE_DLY ].reset := TRUE;    
  75.         Tcnt_10[ IDX_BAG_FOLD_DLY ].reset := TRUE;    
  76.         Tcnt_10[ IDX_BAG_FOLD ].reset := TRUE;
  77.                                     
  78.         Tcnt_10[ IDX_BAG_CUT_DLY ].reset := TRUE;                    
  79.         Tcnt_10[ IDX_BAG_CUT ].reset := TRUE;                        
  80.         Tcnt_10[ IDX_VACUUMIZE ].reset := TRUE;                    
  81.         Tcnt_10[ IDX_HEAT_SEAL ].reset := TRUE;                
  82.         Tcnt_10[ IDX_SEAL_KEEP ].reset := TRUE;                    
  83.         Tcnt_10[ IDX_SEAL_COOL ].reset := TRUE;
  84.         
  85.     END_IF;
  86.     
  87. ELSE
  88.     bMode_Auto := FALSE;               (* 如果切换到“手动操作”,这条语句必然被执行 *)
  89.     
  90. END_IF;
  91. (******************************************************************************
  92. * brief  按键扫描与互锁
  93. * note  
  94. *****************************************************************************)
  95. HmiKey_Scan_InterLock();    
  96. (******************************************************************************
  97. * brief  自动包装(填充包装)按键事件处理
  98. * note
  99. *****************************************************************************)
  100. (* 按键生效,下降沿 *)
  101. IF( LDP( TRUE, KeyID_FillPack ) AND ( bY0_out_watch = FALSE ) ) THEN            
  102.      PackingFlow := FLOW_STANDBY;          
  103. END_IF;
  104. (* 按键生效,下降沿 *)    
  105. IF( LDF( TRUE, KeyID_FillPack ) ) THEN            
  106.      PackingFlow := FLOW_END;                          
  107. END_IF;
  108. (******************************************************************************
  109. * brief  空袋调试 按键事件处理
  110. * note
  111. *****************************************************************************)
  112. (* 按键生效,上升沿 *)
  113. IF( LDP( TRUE, KeyID_EmptyBagTest ) AND ( bY0_out_watch = FALSE ) ) THEN            
  114.      PackingFlow := FLOW_STANDBY;          
  115. END_IF;
  116. (* 按键生效,下降沿 *)    
  117. IF( LDF( TRUE, KeyID_EmptyBagTest ) ) THEN            
  118.      PackingFlow := FLOW_END;                          
  119. END_IF;
  120. (******************************************************************************
  121. * brief 制袋一个 按键事件处理
  122. * note
  123. *****************************************************************************)
  124.         
  125. (* 按键生效,下降沿 *)
  126. IF( LDP( TRUE, KeyID_FillBagOne ) AND ( bY0_out_watch = FALSE ) ) THEN            
  127.      PackingFlow := FLOW_STANDBY;          
  128. END_IF;
  129. (* 按键生效,下降沿 *)    
  130. IF( LDF( TRUE, KeyID_FillBagOne ) ) THEN            
  131.      PackingFlow := FLOW_END;                          
  132. END_IF;
  133. (******************************************************************************
  134. * 拉膜皮带
  135. *
  136. * 伺服电机通过传动杆驱动拉膜皮带,拉膜气缸控制拉膜皮带:
  137. * 抱紧下料筒的包装膜
  138. * 松开下料筒的包装膜
  139. *****************************************************************************)
  140. IF( bMode_Auto )  THEN
  141.     
  142.      IF( HmiKey_BeltFlimPull ) THEN
  143.                   
  144.          SET( TRUE, Y_BeltPullFilm_cylinder );        
  145.      ELSE        
  146.          RST( TRUE, Y_BeltPullFilm_cylinder );        
  147.      END_IF;
  148.     
  149. END_IF;
  150. (******************************************************************************
  151. * 真空泵
  152. *
  153. *****************************************************************************)
  154. IF( bMode_Auto ) THEN
  155.     
  156.     IF( HmiKey_VacuumPump ) THEN
  157.         
  158.         SET( TRUE, Y_VacuumPump_SSR );        
  159.     ELSE        
  160.         RST( TRUE,Y_VacuumPump_SSR );        
  161.     END_IF;
  162.     
  163. END_IF;  
  164. (******************************************************************************
  165. * 跑遍纠正
  166. *
  167. * HmiPB_MoveLeft     HMI“自动包装”界面“跑偏纠正”左移按钮
  168. * HmiPB_MoveRight    HMI“自动包装”界面“跑偏纠正”右移按钮
  169. * Limit_Left         左移限位开关
  170. * Limit_Right        右移限位开关
  171. *****************************************************************************)
  172. IF( HmiKey_MoveLeft AND ( NOT ix_PackFilm_Limit_L ) ) THEN
  173.     
  174.     SET( TRUE, Y_MoveLeft_SSR );    
  175. ELSE    
  176.     RST( TRUE, Y_MoveLeft_SSR );    
  177. END_IF;
  178. IF( HmiKey_MoveRight  AND ( NOT ix_PackFilm_Limit_R ) )THEN
  179.     
  180.     SET( TRUE, Y_MoveRight_SSR );    
  181. ELSE    
  182.     RST( TRUE, Y_MoveRight_SSR );    
  183. END_IF;
[ 此帖被nos001在2019-07-19 21:47重新编辑 ]
wangli1268
级别: 正式会员
精华主题: 0
发帖数量: 34 个
工控威望: 82 点
下载积分: 7479 分
在线时间: 14(小时)
注册时间: 2019-06-14
最后登录: 2022-06-01
查看wangli1268的 主题 / 回贴
112楼  发表于: 2019-07-19 22:15
感谢您的分享,学习中!
denghong
我是一只草泥马.!
级别: 略有小成
精华主题: 0
发帖数量: 171 个
工控威望: 349 点
下载积分: 1173 分
在线时间: 185(小时)
注册时间: 2007-10-12
最后登录: 2024-11-22
查看denghong的 主题 / 回贴
113楼  发表于: 2019-08-08 09:00
楼主,轴的机构体写的不是很好,我有几个简单的。
林李56
级别: 正式会员
精华主题: 0
发帖数量: 26 个
工控威望: 94 点
下载积分: 5583 分
在线时间: 53(小时)
注册时间: 2019-01-25
最后登录: 2024-10-26
查看林李56的 主题 / 回贴
114楼  发表于: 2019-08-08 09:58
楼上的高手能分享下吗?
小嘿嘿
级别: 略有小成
精华主题: 0
发帖数量: 243 个
工控威望: 356 点
下载积分: 15314 分
在线时间: 168(小时)
注册时间: 2012-09-24
最后登录: 2024-11-10
查看小嘿嘿的 主题 / 回贴
115楼  发表于: 2019-08-08 12:08
         感谢楼主
451665150
学海无涯,勤作舟
级别: 探索解密
精华主题: 0
发帖数量: 59 个
工控威望: 123 点
下载积分: 1877 分
在线时间: 57(小时)
注册时间: 2019-04-27
最后登录: 2022-04-05
查看451665150的 主题 / 回贴
116楼  发表于: 2019-08-08 20:37
下载了,感谢楼主分享
工控老毛
未来发展趋势,自动机械化。
级别: 家园常客
精华主题: 0
发帖数量: 39 个
工控威望: 833 点
下载积分: 4558 分
在线时间: 71(小时)
注册时间: 2017-12-14
最后登录: 2021-01-22
查看工控老毛的 主题 / 回贴
117楼  发表于: 2019-08-09 08:05
学习学习,谢谢分享
早安你好
级别: 家园常客
精华主题: 0
发帖数量: 33 个
工控威望: 528 点
下载积分: 2924 分
在线时间: 52(小时)
注册时间: 2019-03-04
最后登录: 2022-06-07
查看早安你好的 主题 / 回贴
118楼  发表于: 2019-08-09 15:31
感谢,楼主
752759616
签名个鬼
级别: 略有小成
精华主题: 0
发帖数量: 216 个
工控威望: 374 点
下载积分: 2410 分
在线时间: 160(小时)
注册时间: 2013-07-08
最后登录: 2024-11-19
查看752759616的 主题 / 回贴
119楼  发表于: 2019-08-10 09:56
学习下一下