codeSys 入門 (一)


新建標准工程,可以選擇設備和編程語言

 

 

由於Windows本身不是實時系統,故不能直接作為軟PLC的載體,其原因如下:yWindows本身無法提供高精度的定時器,因此不能保證程序運行的實時性;yWindows所有線程都是該系統的普通線程,不能提供實時服務;系統事件存在延遲;Windows對分頁內存的訪問時間不可預知。 

實時性對於工業機器人來說一般是必須的,對於服務或娛樂機器人則未必。一般人很容易錯把“實時性”理解為處理或者響應速度快,但是其實“實時性”表示時間上的“確定性”,例如實時操作系統(RTOS)中的中斷響應或者進程切換的延遲時間一定是在一個時間范圍內。 

我們常用的操作系統(Windows、Linux)都不是實時操作系統,因為它們設計的初衷是吞吐量,不能保證每個事件都在一定范圍內得到處理。再比如,標准以太網的傳輸速度比實時工業以太網快多了,但是它也卻不是實時的,因為它同樣不能保證數據在給定的時間內完成傳輸。

CODESYS的RTE即實現了這樣的技術,它對Windows操作系統的內核進行了恰當的實時性改造(占用一個CPU物理核),使其保證具有微秒級抖動量(幾十μs)的確定性,且不需增加其他硬件,最終實現“硬實時”的功能。通過實時核進行任務的管理和調度,降低了實時控制系統的設計難度,提高了實時性和可維護性。

只需要在PC上安裝軟PLCCODESYS RTE軟件,然后根據PC的功能,它就會變成一台先進的高性能可編程控制器。它可以運行在安裝有WindowsNT、Windows2000或WindowsXP/7等操作系統的標准工業PC上。

 

 

無論是哪個版本的RTE,64位的系統的任務遵循以下原則

運控相關的功能塊要放到和總線一個任務下(EtherCAT_TASK)

其他的邏輯性的放到其他的任務都可以

 

 

 PLC采用循環的工作方式,輸入信號只會在每個周期的開始階段進行刷新,輸出在每個工作周期的結束階段進行集中輸出,因此必然會產生輸出信號相對輸入信號滯后的現象。

輸出電路的滯后時間。與輸出電路的方式有關,繼電器輸出方式的滯后時間一般為10ms左右,晶體管輸出方式滯后時間小於1ms

 

添加事件

CoDeSys 中的可以對任務的優先級進行設置,一共可以設 32 個級別(0 到 31 之間的一個數字,0 是最高優先級,31 是最低優先級)。當一個程序在執行時,優先級高的任務優先於優先級任務低的任務,高優先級任務 0 能中斷同一資源中較低優先級的程序執行,使較低優先級程序執行被放緩
 
任務類型
 

 

  • 循環, 指定時間不斷運行
  • 慣性滑行(Freewheeling),程序一開始運行,任務就會被處理,一個運行周期結束后,任務將在下一個循環中自動重新啟動。該執行方式不受程序掃描周期的影響,即確保每次執行完程序的最后一條指令后才進入下一個循環周期,否則不會結束該程序周期。該執行方式沒有固定的任務時間,每次執行的時間可能都不一樣,因此不能保證程序的實時性,PLC_PRG才會用這個,其他很少用
  • 事件(Event)如果事件區域的變量得到一個上升沿,那么任務開始。
  • 狀態(Status) 與事件觸發功能類似,區別在於,只要狀態觸發的觸發變量為TRUE,程序就執行,若為FALSE,則不執行,而事件觸發只采集觸發變量的上升沿有效信號。
看門狗是一種控制器硬件式的計時設備
CoDeSys 內可以通過“任務配置”對其進行使能,默認不使用看門狗功能。
看門狗的主要功能是監控程序執行時出現的異常或內部時鍾發生的故障。如當系統出現死機或當程序進入死循環時,看門狗計時器就會對系統發出重置信號或停止 PLC 當前運行的程序。我們可以形象的將它理解為一只小狗需要主人定時的去給它喂食,如果超過規定的時間沒有喂,則他馬上就會餓。

 例如,循環時間設為10ms,靈敏度設為5,則實際“看門狗”觸發的時間為50ms,一旦任務的執行時間超過50ms,則立即激活“看門狗”並將任務中止。

 
PLC_PRG 是一個特殊的 POU,其默認的運行方式為“慣性滑行(FreeWheeling)”。系統默認每個控制周期調用該 POU
 
主程序PLC_PRG使用結構化文本編程語言,其中的程序內容如下:
POU1();
POU2();
 
主程序分別調用並執行了POU_1和POU_2,而POU_1中又分別調用了POU_3和POU_4。
實際PLC內部按如下順序執行程序:
1)PLC先執行子程序POU_1;
2)由於POU_1中依次調用了POU_3和POU_4,因此先執行POU_3;
3)執行POU_4,POU_1執行完成;
4)最后執行POU_2
 
庫函數

 

 

  目前CODESYS提供的IDE所支持的數據類型有:__UXINT、__VECTOR、__XINT、__XWORD、BIT、BOOL、BYTE、DATE、DATE_AND_TIME、DINT、DT、DWORD、INT、LINT、LREAL、LTIME、LWORD、REAL、SINT、STRING、TIME、TIME_OF_DAY、TOD、UDINT、ULINT、USINT、WORD、WSTRING

常用的數據類型介紹:

BIT:位數據類型,數據大小為一個bit,數據范圍0~1

BOOL:布爾數據類型,數據大小為一個bit,數據只能是TRUE或FALSE

BYTE:字節數據類型,數據大小為一個字節大小(8個位),數據范圍0~255

DATE:日期數據類型,及PLC系統當前的時間,格式:D#年-月-日

DATE_AND_TIME:日期時間數據類型,詳細顯示到時、分、秒,格式:DT#年-月-日-時-分-秒

DINT:有符號雙倍整形數據,數據大小為4個字節(32位),有符號就是最高位代表符號位。

DT:與DATE_AND_TIME相同

DWORD:有符號雙字類型數據,這里的數據大小為4個字節(32位),有符號就是最高位代表符號位。

INT:有符號整形數據類型,數據大小為2個字節,有符號就是最高位代表符號位。

LINT:有符號長整形數據類型,數據大小為跟PLC系統有關,CPU位數是32位則為32位,有符號就是最高位代表符號位。

LREAL:長實數類型,數據大小為8個字節

LTIME:長整數時間設置,數據大小為8個字節,主要用來設置定時器的延時時間,格式為LTIME#xxx時間單位

LWORD:長字類型數據,數據大小與CPU的位長度有關(32位的系統則為32位,64位的系統為64位)

REAL:實數類型數據,數據大小為4個字節

SINT:有符號短整形數據類型,數據大小為2個字節,有符號就是最高位代表符號位。

TIME:整數時間數據類型,數據大小為4個字節,主要用來設置定時器的延時時間,格式為TIME#xxx時間單位。

TIME_OF_DAY:年-月-日設置數據類型,該數據類型用來設置系統的年月日,數據格式:年-月-日

UDINT:無符號雙整形數據類型,數據長度為8個字節,無符號類型意味着數據最小為0

ULINT:無符號長整形數據,數據大小與PLC系統有關,CPU為32位的則為32位,無符號類型意味着數據最小為0

USINT:無符號短整形數據,數據大小為2個字節,無符號類型意味着數據最小為0

WORD:字類型數據,數據大小為2個字節

定義變量:  在VAR和END_VAR之間  冒號(:)左邊是變量名,右邊對應為數據類型

PROGRAM PLC_PRG
VAR
	nTestCnt: BYTE;	
	bVar1:BOOL;
	strName:STRING;	
END_VAR

數據類型強制轉換函數來滿足我們的需求

1、這些函數的基本格式為:原數據類型_to_目標類型(原類型對應的變量)

2、這個是CODESYS提供的內置轉換函數,目前支持任何數據類型之間的轉換!

3、舉個例子:
   VAR_0:BOOL;
   VAR_1:LTIME;

   VAR_0 := LTIME_TO_BOOL(VAR_1);   //將LTIME數據類型變量轉換為BOOL型//
   VAR_1 := BOOL_TO_LTIME(VAR_0);   //將BOOL數據類型變量轉換為LTIME型//

 

 如何仿真調試===========================================

  • 1. 點擊菜單欄“在線”按鈕,勾選仿真
  • 2. 底部狀態欄部分會顯示紅色仿真二字
  • 3. 點擊工具欄編譯按鈕
  • 4. 點擊登錄按鈕,即可進入登錄界面
  • 5. 然后點擊運行按鈕,就能運行仿真了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

==============================運動控制入門====================================================

向X、Y、Z軸的方向微動動作。如果是垂直6軸型機械手,則可以向U方向(傾斜)、V方向(仰卧)、W方向(偏轉)微動。

//$Execute,"print realpos"
//#Execute," X: -182.632 Y: 240.114 Z: -20.002 U: -36.156 V: 0.000 W: 0.000 /R /0"
//$Execute,"move here +x(-1)"
//#Execute,0
//$Execute,"print realpos"
//#Execute," X: -183.630 Y: 240.115 Z: -20.002 U: -36.156 V: 0.000 W: 0.000 /R /0"
//$Execute,"move here -x(1)"
//#Execute,0
//$Execute,"print realpos"
//#Execute," X: -184.631 Y: 240.114 Z: -20.002 U: -36.155 V: 0.000 W: 0.000 /R /0

 ======================

 

六軸關節機器人的運動方式

六軸工業機器人作為工業機器人中應用中最為廣泛的類型,具有高靈活性、超大負載、高定位精度等眾多優點。那六個軸的各自運動路徑如何,將以FANUC robot R-2000 iB來進行詳細解讀。

J1旋轉(S軸)

 

 

 

J2下臂(L軸)

 

 

J3上臂(U軸)

 

 

J4手腕旋轉(R軸)

 

 

手腕擺動(B軸)

 

 

J6手腕回轉(T軸)

 

插補原理

直線插補方式中,兩點間的插補沿着直線的點群來逼近。首先假設在實際輪廓起始點處沿X方向走一小段(給一個脈沖當量軸走一段固定距離),發現終點在實際輪廓的上方,則下一條線段沿Y方向走一小段,此時如果線段終點還在實際輪廓下方,則繼續沿Y方向走一小段,直到在實際輪廓上方以后,再向X方向走一小段,依此類推,直到到達輪廓終點為止。實際輪廓是由一段段的折線拼接而成,雖然是折線,但每一段插補線段在精度允許范圍內非常小,那么此段折線還是可以近似看做一條直線段,這就是直線插補。

假設軸需要在在XY平面上從點(X0,Y0)運動到點(X1,Y1),其直線插補的加工過程如下圖所示。

 

 

圓弧插補的定義是給出兩端點間的插補數字信息,借此信息控制刀具與工件的相對運動,使其按規定的圓弧加工出理想曲面的一種插補方式。

 

 

拐角減速功能解決的問題是:當指令間夾角過大時,如果仍以較大速度運行,會在夾角處產生較大的機械沖擊,軌跡偏離。

小圓限速功能用於處理,在運行軌跡中可能運行圓弧軌跡擬合成的小圓,由於角度偏轉較大導致出現軌跡偏轉,因此在這種位置需要進行速度限制的處理。

自動倒角功能一般是用於拐角處按照一定的倒角半徑進行軌跡的弧度化處理,使速度變化更平滑

 

工業互聯網EtherCAT原理

EtherCAT技術突破了其他以太網解決方案的系統限制:通過該項技術,無需接收以太網數據,將其解碼,之后再將過程數據復制到各個設備。EtherCAT是一種實時以太網技術,由一個主站設備和多個從站設備構成。主站可以使用標准網卡實現,從站選用特定的EtherCAT從站控制器ESC(EtherCAT Slave Controller)或者FPGA實現。EtherCAT報文(標准的ISO/IEC 8802-3以太網幀)由主站設備發出,途經各個從站設備,從站設備在報文經過時進行提取或插入數據。當報文到達網段內最后一個從站設備時再反方向傳輸,最后由第一個從站設備把收集到的信息返回到主站設備。

 

 

圖2.1 過程數據插入至報文中

 


第一個方面是以太幀“時分復用”。一般以太幀里都只包含了一個設備發送的消息,5個設備就會發送5條以太幀。而EtherCAT則是多個從站共享一條以太幀。就像圖2-1中的火車,EtherCAT主站發出了“火車”(以太幀),各個從站則從這輛火車的不同的“車廂”(子報文)中提取或插入自己的“乘客”(消息)。這樣一來就實現了以太幀的“時分復用”,只用一條以太幀(最大1486byte),就可以讓各個從站都收發出自己的消息,大大的降低了通信的延時(這一部分《淺析EtherCAT 總線》里面講的比較清楚,還沒理解的同學可以看看)。

On The Fly影響的另一個方面就是總線仲裁了。所謂總線(例如CAN總線),就是大家都共用一條通道來通信,各個設備都掛載在同一條總線上。所以,當一個總線上的多個設備同時想要發消息的時候,就會產生沖突,所以,就有總線仲裁的機制。控制器決定當前時刻,誰來發消息,誰來“占用”這條總線。而EtherCAT玩了一個花樣,EtherCAT的各個設備之間是一種P2P(Point to Point)的連接方式,這些設備根本沒有連接在“同一條”總線上。下面是EtherCAT的連接結構。

圖 2-2 EtherCAT連接結構

圖2-2中,最左邊的是主站,后面的都是從站,各個從站下面還掛載了不同的設備。可以看到主站向從站1發送以太幀,從站1接收、處理完自己的子報文后,再把以太幀發送給從站;從站2接收,處理完自己的子報文后在發送給從站3;如此往返,直到最后一個從站n接收處理完自己的消息,再把這條以太幀返回回去。所以,各個從站之間根本就不會存在總線沖突。EtherCAT只需要預先配置好各個從站占用的子報文位置,也就是On The Fly技術,就可以解決總線總裁這一個老大難的問題,確實是一箭雙雕。

實例網絡連接

 

 

 控制器的Ethernet口與電腦的網口聯接;

● 控制器的EtherCAT口與驅動器的ECAT IN 聯接;

● 第一台驅動器的ECAT OUT 聯接下一台驅動器的ECATIN口;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM