時間:2021-07-13 10:47:38來æºï¼šæ·±åœ³å¸‚æ£é‹å‹•技術有é™å…¬å¸
  梯形圖(LAD, LadderLogic ProgrammingLanguage)是PLC使用得最多的圖形編程語言,被稱為PLC的第一編程語言。
  梯形圖語言沿襲了繼電器控制電路的形å¼ï¼Œæ¢¯å½¢åœ–是在常用的繼電器與接觸器é‚輯控制基礎上簡化了符號演變而來的,具有形象ã€ç›´è§€ã€å¯¦ç”¨ç‰ç‰¹é»žï¼Œé›»æ°£æŠ€è¡“人員容易接å—,是é‹ç”¨ä¸Šæœ€å¤šçš„一種PLC的編程語言。
  æ£é‹å‹•技術的ZMC006CE就是一款高性價比的,支æŒZBasicã€ZPlC編程語言,以åŠå¯ä»¥ä½¿ç”¨æ£é‹å‹•技術ZHMI界é¢ç·¨ç¨‹çš„EtherCATé‹å‹•控制器。在æ£å¼å¸ç¿’ç›´ç·šæ’補之å‰ï¼Œæˆ‘們先簡單了解一下這個產å“。
  教å¸è¦–é »
  一梯形圖介紹梯形圖介紹
  (一)梯形圖é‹è¡Œé‚輯
  PLC梯形圖執行從左å´çš„æ¯ç·šé–‹å§‹ï¼Œå¾žå·¦è‡³å³ï¼Œå¾žä¸Šè‡³ä¸‹ä¾æ¬¡æŽƒæï¼Œå¾žç¬¬ä¸€è¡Œç¨‹åºé–‹å§‹é †åºæŽƒæåˆ°END為一個掃æå‘¨æœŸï¼Œç„¶åŽåˆé–‹å§‹æ–°ä¸€è¼ªç¨‹åºæŽƒæï¼Œç›´åˆ°ç¨‹åºè¢«åœæ¢ã€‚
  PLCé‹è¡Œæ™‚,主è¦ç¶“éŽè‡ªæª¢æ¸¬ã€é€šè¨Šè™•ç†ã€è¼¸å…¥æª¢æ¸¬ã€ç¨‹åºåŸ·è¡Œã€è¼¸å‡ºåˆ·æ–°é€™äº”個階段。掃æç¨‹åºä¹‹å‰ï¼Œå…ˆåŸ·è¡Œæ•…éšœæª¢æ¸¬èˆ‡ç¨‹åºæª¢æŸ¥ï¼Œç™¼ç¾ç•°å¸¸åœæ©Ÿé¡¯ç¤ºå‡ºéŒ¯ä¿¡æ¯ï¼Œæ‰“å°ç¨‹åºç·¨å¯«å•題,å†åŸ·è¡Œèˆ‡å…¶ä»–è¨å‚™çš„通信響應。
  掃æå‘¨æœŸç¤ºæ„圖
  一個掃æå‘¨æœŸåŒ…括輸入檢測ã€ç¨‹åºåŸ·è¡Œã€è¼¸å‡ºåˆ·æ–°ä¸‰å€‹éšŽæ®µã€‚
  1.輸入檢測
  PLCä»¥æŽƒææ–¹å¼é †åºè®€å…¥å„輸入端å的通斷狀態,并寫入相應的輸入狀態寄å˜å™¨ï¼Œå³åˆ·æ–°è¼¸å…¥ï¼ŒæŽ¥è‘—轉入程åºåŸ·è¡ŒéšŽæ®µã€‚一般來說,輸入信號的寬度è¦å¤§äºŽä¸€å€‹æŽƒæå‘¨æœŸï¼Œå¦å‰‡å¯èƒ½å°Žè‡´ä¿¡è™Ÿä¸Ÿå¤±ã€‚
  2.程åºåŸ·è¡Œ
  PLC按從左至å³ï¼Œå¾žä¸Šè‡³ä¸‹çš„é †åºå°æ¯æ¢æ¢¯å½¢åœ–指令進行掃æï¼Œå¹¶å°‡ç›¸æ‡‰çš„é‹ç®—和處ç†çµæžœä¿å˜åœ¨è¼¸å‡ºç‹€æ…‹å¯„å˜å™¨ä¸ã€‚在程åºåŸ·è¡Œçš„éŽç¨‹ä¸ï¼Œè‹¥è¼¸å…¥ä¿¡è™Ÿç‹€æ…‹ç™¼ç”Ÿæ”¹è®Šï¼Œä½†æ¤æ™‚狀態寄å˜å™¨å…§çš„輸入狀態沒有改變,直到下一掃æé–‹å§‹æ™‚å†è®€å…¥è¼¸å…¥ä¿¡è™Ÿç‹€æ…‹ã€‚
  3.輸出刷新
  在所有指令執行完畢åŽï¼Œè¼¸å‡ºç‹€æ…‹å¯„å˜å™¨çš„通斷狀態寫入輸出端å,驅動相應的輸出è¨å‚™ã€‚
  掃æå‘¨æœŸä¸»è¦å–決于程åºçš„é•·çŸã€æŒ‡ä»¤çš„類型ã€CPU 執行指令的速度。掃æå‘¨æœŸçš„æ™‚é–“å¯ä»¥é€šéŽç‰¹æ®Šå¯„å˜å™¨ D8010(æŽƒææ™‚é–“)ã€D8011(æŽƒææœ€å°æ™‚é–“)ã€D8012(æŽƒææœ€å¤§æ™‚é–“)來查看。
  (二)梯形圖混åˆBasic
  1.PLC調用BASIC指令
  PLCå¯ä»¥é€šéŽEXE指令或EXEP指令調用Basic標準指令。EXEP指令是EXE指令的脈沖形å¼ï¼Œåƒ…在驅動輸入由OFF變為ONåŽï¼Œæ‰èª¿ç”¨Basic標準指令。
ã€€ã€€èªžæ³•æ ¼å¼å¦‚下:
  “EXE @BASIC指令â€ç‰åƒ¹äºŽâ€œBASIC指令â€ã€‚
  2.PLC調用BASICå’ŒPLC程åº
  PLC使用CALL指令調用å程åºã€‚ç¨‹åºæ–‡ä»¶å¿…é ˆåœ¨åŒä¸€é …目文件(.ZPJ)å…§æ‰å¯èª¿ç”¨ã€‚
  2.1 PLC調用PLCå程åº
  CALL調用å程åºåŽï¼Œè·³è½‰åˆ°å°æ‡‰LBL行執行,執行到SRET指令處返回。
  2.2 PLC調用Basicå程åº
  PLC調用Basicåç¨‹åºæ™‚,需è¦åœ¨SUB函數åå‰åŠ ä¸Š@ï¼Œèª¿ç”¨æ™‚å¯æ ¹æ“šå¯¦éš›æƒ…æ³é¸æ“‡æ˜¯å¦å‚³å…¥åƒæ•¸ï¼Œå¦‚å³åœ–çš„åƒæ•¸LV0。
PLC梯形圖程åº
被調用的Basicå程åº
  3.BASIC調用PLC文件
ã€€ã€€ç¨‹åºæ–‡ä»¶å¿…é ˆåœ¨åŒä¸€é …目文件(.ZPJ)å…§æ‰å¯èª¿ç”¨ã€‚
  3.1 Basic啟動PLC任務
  Basic里å¯ä½¿ç”¨èªžå¥â€œrun"xxx.plc",任務編號â€ä¾†å•Ÿå‹•PLC文件任務。
  PLCå程åºSRETå程åºè¿”回指令å¯ä»¥å¸¶ä¸Šè¿”回值,返回值å˜å„²åœ¨LV局部寄å˜å™¨ä¸ï¼Œè¿”å›žå€¼æ˜¯æµ®é»žæ ¼å¼ï¼Œèª¿ç”¨è€…通éŽRETURN指令ç²å–返回值。
  3.2. Basic調用PLCå程åº
  Basic里使用“CALL SUB_FUNCâ€æˆ–“RUNTASK 任務號, SUB_FUNCâ€ä¾†èª¿ç”¨PLCå程åºLBL。
  如下圖,Basic程åºåŸ·è¡Œåˆ°CALL語å¥åŽè·³è½‰åˆ°PLC程åºçš„LBLå程åºåŸ·è¡Œï¼ŒåŸ·è¡Œå®Œå程åºSRETè¿”å›žåƒæ•¸LV1ä¿å˜åœ¨RETURNä¸ã€‚
  二æ’補功能介紹梯形圖介紹
  (一)æ’補原ç†
  直線æ’補方å¼ä¸ï¼Œå…©é»žé–“çš„æ’補沿著直線的點群來逼近。首先å‡è¨åœ¨å¯¦éš›è¼ªå»“起始點處沿Xæ–¹å‘èµ°ä¸€å°æ®µ(給一個脈沖當é‡è»¸èµ°ä¸€æ®µå›ºå®šè·é›¢),發ç¾çµ‚點在實際輪廓的上方,則下一æ¢ç·šæ®µæ²¿Yæ–¹å‘èµ°ä¸€å°æ®µï¼Œæ¤æ™‚如果線段終點還在實際輪廓下方,則繼續沿Yæ–¹å‘èµ°ä¸€å°æ®µï¼Œç›´åˆ°åœ¨å¯¦éš›è¼ªå»“上方以åŽï¼Œå†å‘Xæ–¹å‘èµ°ä¸€å°æ®µï¼Œä¾æ¤é¡žæŽ¨ï¼Œç›´åˆ°åˆ°é”輪廓終點為æ¢ã€‚實際輪廓是由一段段的折線拼接而æˆï¼Œé›–然是折線,但æ¯ä¸€æ®µæ’補線段在精度å…許范åœå…§éžå¸¸å°ï¼Œé‚£ä¹ˆæ¤æ®µæŠ˜ç·šé‚„是å¯ä»¥è¿‘似看åšä¸€æ¢ç›´ç·šæ®µï¼Œé€™å°±æ˜¯ç›´ç·šæ’補。
  å‡è¨è»¸éœ€è¦åœ¨åœ¨XYå¹³é¢ä¸Šå¾žé»ž(X0,Y0)é‹å‹•到點(X1,Y1),其直線æ’è£œçš„åŠ å·¥éŽç¨‹å¦‚下圖所示。
  給軸發é€ä¸€å€‹è„ˆæ²–é‹å‹•çš„è·é›¢ç”±é›»æ©Ÿçš„特性決定,ä¸åŒçš„軸單個脈沖é‹å‹•è·é›¢æœ‰æ‰€ä¸åŒã€‚
  (二)梯形圖æ’補指令介紹
  在æ£é‹å‹•梯形圖編程ä¸ï¼Œæœ‰å…©ç¨®å½¢å¼çš„æ’è£œæŒ‡ä»¤å…¶åˆ†åˆ¥ç‚ºZbasicå½¢å¼å’ŒPLCå½¢å¼ã€‚
梯形圖使用Zbasic形弿’補指令
梯形圖使用PLC形弿’補指令
  1.Zbasicæ’補指令介紹
  MOVE -- ç›´ç·šé‹å‹•
  2.PLC形弿’補指令介紹
  MOVE
  指令說明: MOVE指令為直線æ’補相å°é‹å‹•指令。æ“作數:
S1:T,C,D,K,H,Z,V,LV,DT,@
S2:T,C,D,K,H,Z,V,LV,DT,@
……
S8:T,C,D,K,H,Z,V,LV,DT,@
æ“作數若使用å—寄å˜å™¨ï¼Œå¯„å˜å™¨ä¸çš„æ•¸å€¼éœ€ç”¨æµ®é»žæŒ‡ä»¤è³¦å€¼ã€‚編程示例:
  直接使用PLC指令ä¸çš„MOVE指令
  三梯形圖直線æ’補示例梯形圖介紹
  (一)梯形圖混åˆZbasic例程
ã€€ã€€æ¼”ç¤ºè¦–é »
  主循環部分
  上電M8002導通一次,調用軸åˆå§‹åŒ–函數執行,由M0調用相å°é‹å‹•函數執行。
  軸åˆå§‹åŒ–部分
  æ’補é‹å‹•部分
  當è¨ç½®äº†è»¸0和軸1çš„S曲線åŽï¼Œå¹³æ»‘時間100ms,SRAMP=100,100ï¼Œæ¤æ™‚的速度曲線如下圖:
  ld m8002exe @Axis_Initldp m0EXE @RelativeMoveendlbl @Axis_Initld m8000EXE @BASE(0,1)EXE @UNITS = 100,100EXE @ACCEL = 1000,1000EXE @DECEL = 1000,1000EXE @SPEED = 100,100EXE @DPOS = 0,0EXE @MPOS = 0,0sretLBL @RelativeMove ld m8000EXE @BASE(0,1)exe @Triggerexe @MOVE(300,400)sret
ã€€ã€€æ¢¯å½¢åœ–å°æ‡‰èªžå¥è¡¨
  ·
  Axis_Init
  WHILE 1
  IF SCAN_EVENT(MODBUS_BIT(0)) > 0 THEN Axis_Move ENDIFWEND
  END
  GLOBAL SUB Axis_Init() BASE(0,1) UNITS= 100,100 ACCEL = 1000,1000 DECEL = 1000,1000 SPEED = 100,100 DPOS = 0,0 MPOS = 0,0ENDSUB
  GLOBAL SUB Axis_Move() BASE(0,1) TRIGGER MOVE(300,400)ENDSUB
  與該梯形圖直線æ’補程åºç‰åƒ¹çš„Zbasicå½¢å¼ç¨‹åº
  本次,æ£é‹å‹•技術EtherCATé‹å‹•控制器的PLC編程(一) ç›´ç·šæ’補,就分享到這里。
  本文由æ£é‹å‹•技術原創,æ¡è¿Žå¤§å®¶è½‰è¼‰ï¼Œå…±åŒå¸ç¿’,一起æé«˜ä¸åœ‹æ™ºèƒ½åˆ¶é€ æ°´å¹³ã€‚æ–‡ç« ç‰ˆæ¬Šæ¸æ£é‹å‹•æŠ€è¡“æ‰€æœ‰ï¼Œå¦‚æœ‰è½‰è¼‰è«‹æ³¨æ˜Žæ–‡ç« ä¾†æºã€‚
上一篇:在物è¯ç¶²ä¸ä¿æŒæ•¸æ“šåˆè¦çš„三...
下一篇:怎樣æ‰èƒ½æ›´å®‰å…¨çš„使用æ¥é€²é›»æ©Ÿï¼Ÿ
ä¸åœ‹å‚³å‹•網版權與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²æ³¨æ˜Ž[來æºï¼šä¸åœ‹å‚³å‹•ç¶²]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Šå‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(www.siyutn.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉載請與0755-82949061è¯ç³»ã€‚任何媒體ã€ç¶²ç«™æˆ–å€‹äººè½‰è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²â€ï¼Œé•å者本網將追究其法律責任。
本網轉載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯ç¶²æˆ–æ¥å…§æŠ•稿人士,版權屬于原版權人。轉載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Šæ³•å¾‹è²¬ä»»ã€‚
相關資訊