kidien
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 104 個
工控威望: 204 點
下載積分: 758 分
在線時間: 27(小時)
注冊時間: 2010-01-08
最后登錄: 2023-10-27
查看kidien的 主題 / 回貼
108樓  發(fā)表于: 2019-07-17 21:11
感謝樓主,最近在學功能塊,向結構化轉型,多謝分享!
chenyuuuu
Raymond
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 37 個
工控威望: 135 點
下載積分: 34116 分
在線時間: 154(小時)
注冊時間: 2019-05-06
最后登錄: 2024-09-20
查看chenyuuuu的 主題 / 回貼
109樓  發(fā)表于: 2019-07-19 09:09
謝謝樓主,學習學習。
huxiang2030
山本無憂,因雪白頭;水本無愁,因風起皺...
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 85 個
工控威望: 129 點
下載積分: 1380 分
在線時間: 22(小時)
注冊時間: 2019-06-19
最后登錄: 2024-03-18
查看huxiang2030的 主題 / 回貼
110樓  發(fā)表于: 2019-07-19 09:45
。。怎么打不開
山本無憂,因雪白頭;水本無愁,因風起皺...
nos001
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 54 個
工控威望: 110 點
下載積分: 814 分
在線時間: 42(小時)
注冊時間: 2018-03-31
最后登錄: 2022-10-06
查看nos001的 主題 / 回貼
111樓  發(fā)表于: 2019-07-19 21:40
結構化,程序大,有條理,值得借鑒。
就是定義在一頁的全局變量太多,感覺應該分頁。
其實不知道硬件,不知道用途,還是挺難看懂。
還是更喜歡st編程,自定義定時器感覺比gx works 內(nèi)建的好用。
復制代碼
  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;               (* 如果切換到“手動操作”,這條語句必然被執(zhí)行 *)
  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  空袋調(diào)試 按鍵事件處理
  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
發(fā)帖數(shù)量: 34 個
工控威望: 82 點
下載積分: 7479 分
在線時間: 14(小時)
注冊時間: 2019-06-14
最后登錄: 2022-06-01
查看wangli1268的 主題 / 回貼
112樓  發(fā)表于: 2019-07-19 22:15
感謝您的分享,學習中!
denghong
我是一只草泥馬.!
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 171 個
工控威望: 349 點
下載積分: 1173 分
在線時間: 183(小時)
注冊時間: 2007-10-12
最后登錄: 2024-09-18
查看denghong的 主題 / 回貼
113樓  發(fā)表于: 2019-08-08 09:00
樓主,軸的機構體寫的不是很好,我有幾個簡單的。
林李56
級別: 正式會員
精華主題: 0
發(fā)帖數(shù)量: 26 個
工控威望: 94 點
下載積分: 5583 分
在線時間: 51(小時)
注冊時間: 2019-01-25
最后登錄: 2024-08-15
查看林李56的 主題 / 回貼
114樓  發(fā)表于: 2019-08-08 09:58
樓上的高手能分享下嗎?
小嘿嘿
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 243 個
工控威望: 356 點
下載積分: 15304 分
在線時間: 168(小時)
注冊時間: 2012-09-24
最后登錄: 2024-09-11
查看小嘿嘿的 主題 / 回貼
115樓  發(fā)表于: 2019-08-08 12:08
         感謝樓主
451665150
學海無涯,勤作舟
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 59 個
工控威望: 123 點
下載積分: 1877 分
在線時間: 57(小時)
注冊時間: 2019-04-27
最后登錄: 2022-04-05
查看451665150的 主題 / 回貼
116樓  發(fā)表于: 2019-08-08 20:37
下載了,感謝樓主分享
工控老毛
未來發(fā)展趨勢,自動機械化。
級別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 39 個
工控威望: 833 點
下載積分: 4558 分
在線時間: 71(小時)
注冊時間: 2017-12-14
最后登錄: 2021-01-22
查看工控老毛的 主題 / 回貼
117樓  發(fā)表于: 2019-08-09 08:05
學習學習,謝謝分享
早安你好
級別: 家園?
精華主題: 0
發(fā)帖數(shù)量: 33 個
工控威望: 528 點
下載積分: 2924 分
在線時間: 52(小時)
注冊時間: 2019-03-04
最后登錄: 2022-06-07
查看早安你好的 主題 / 回貼
118樓  發(fā)表于: 2019-08-09 15:31
感謝,樓主
752759616
簽名個鬼
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 214 個
工控威望: 372 點
下載積分: 2396 分
在線時間: 156(小時)
注冊時間: 2013-07-08
最后登錄: 2024-09-13
查看752759616的 主題 / 回貼
119樓  發(fā)表于: 2019-08-10 09:56
學習下一下