3 .4軟PLC指令系統設計
梯形圖與指令表是開發PLC用戶程序使用最多的兩種編程語言,雖然二者 指令的表達形式不同但表示內容都是由操作碼和操作數組成。操作碼提供運算的 法則,操作數提供執行運算所需的數據和地址信息。軟PLC指令是以函數的形 式提供操作碼和操作數。
軟PLC運行系統為每條PLC指令編寫了相應的指令函數,它們共同組成了 軟PLC系統的指令庫。為了便于以后的擴展和管理,本文在編制軟PLC指令時 制定了統一的格式。
PLC指令分為基本指令和功能指令兩類,前者用于對位進行簡單的邏輯運 算,是編制PLC程序最常使用的指令;后者主要對字節、字等復雜數據進行處 理完成某種特定的功能。本文在參考國際標準IEC61131-3中梯形圖與指令表指 令的基礎上,依據SIMATIC S7-300指令系統設計軟PLC系統的指令函數。
本軟PLC系統共設計了 25個指令函數,其中基本指令函數16個,功能指 令函數9個。表3-2、3-3分別對每個指令函數進行了說明。
編號 |
PLC指令 |
指令函數 |
實現功能 |
1001 |
LD |
ReadInBit〇 |
讀輸入位狀態壓入堆棧 |
1002 |
LDI |
ReadInBitnot〇 |
讀輸入位狀態取反壓入堆棧 |
1003 |
A |
ReadInANDBit() |
讀輸入位狀態與棧頂元素進行邏輯“與”運算,然 后壓入堆棧 |
1004 |
AI |
ReadInANDBitnot() |
讀輸入位狀態取反后與棧頂元素進行邏輯“與”運 算,然后壓入堆棧 |
1005 |
0 |
ReadInORBit() |
讀輸入位狀態與棧頂元素進行邏輯“或”運算,然 后壓入堆棧 |
1006 |
01 |
ReadInORBitnot() |
讀輸入位狀態取反后與棧頂元素進行邏輯“或”運 算,然后壓入堆棧 |
1007 |
OutBit |
WriteOutBit〇 |
將邏輯堆棧棧頂元素狀態寫到對應輸出地址位 |
1008 |
NOT |
LogicNot〇 |
將邏輯堆棧棧頂元素狀態取反后壓入堆棧 |
1009 |
S |
SetBit〇 |
將對應的輸入輸出位狀態置“1” |
1010 |
R |
ResetBit() |
將對應的輸入輸出位狀態置“0” |
1011 |
CopyPush |
C〇py() |
將邏輯堆棧棧頂元素復制到第二個棧中 |
1012 |
Pop |
ReleasePop() |
釋放邏輯堆棧棧頂元素 |
1013 |
ANB |
AndStack〇 |
將兩個堆棧棧頂元素進行邏輯“與”運算 |
1014 |
ORB |
OrStack() |
將兩個堆棧棧頂元素進行邏輯“或”運算 |
1015 |
Copytofirst |
Copytofirst〇 |
將邏輯堆棧棧頂兩個元素進行“與”運算 |
1016 |
CLR |
ClearStackQ |
清空邏輯堆棧中的所有元素 |
|
編號 |
PLC指令 |
指令函數 |
實現功能 |
1017 |
BAND |
LogicANDByte〇 |
將兩個字節的數值進行邏輯“與”運算 |
1018 |
WAND |
LogicANDWord() |
將兩個字的數值進行邏輯“與”運算 |
1019 |
BOR |
LogicORByte() |
將兩個字節的數值進行邏輯“或”運算 |
1020 |
WOR |
LogicORByte() |
將兩個字的數值進行邏輯“或”運算 |
1021 |
CompareByte |
ComparedByteLD(); ComparedByteAND〇 ; ComparedByteOR〇 ; |
將兩個字節的數值進行比較 將比較結果壓入邏輯堆棧;
將比較結果與棧頂元素進行邏輯“與”運算; 將比較結果與棧頂元素進行邏輯“或”運算; 比較運算符:==、>、<、>=、<=、!= |
1022 |
CompareWord |
C ompare dWor dLD (); ComparedWordAND〇 ; ComparedWordOR(); |
將兩個字的數值進行比較 將比較結果壓入棧頂;
將比較結果與棧頂元素進行邏輯“與”運算; 將比較結果與棧頂元素進行邏輯“或”運算; 比較運算符:==、>、<、>=、<=、!= |
1023 |
Move |
MoveByte(); Move Word(); MoveD Word〇 ; |
按字節賦值 按字賦值 按雙字賦值 |
1024 |
Timer |
TIMER |
定時功能:用于設定輸出信號的延遲時間, 當延遲時間到達到所設定的值時能流通過 |
1025 |
Counter |
COUNTER |
計數功能:用于對脈沖信號進行計數,當脈 沖數等于所設定值時能流通過 |
|
下面以基本指令函數ReadlnBitG和功能指令函數COUNTER為例,說明他 們的具體實現:
(1) ReadInBit()
讀輸入位指令是最常用的指令之一,當軟PLC系統執行LD指令時會調用 ReadInBit〇函數。首先它按照參數訪問I/O存儲區域,通過字節號查詢到該位軟 元件所在的單元地址,然后查找位號讀取該位當前狀態,將其壓入邏輯堆棧。具 體實現代碼如下:
ReadInBit(char Channel [no])
{bool bitno =false; //清 “0”
ReadBit(Channel[no], bitno); //讀取操作數(位)狀態
pb—stackarea ->push(bitno); //壓入邏輯堆棧
(2) COUNTER
西門子PLC計數器按計數方式的不同分為:加計數器、減計數器以及加/減 計數器。本文COUNTER采用遞減方式計數,當當前值減為“0”時計數器完成 計數功能。梯形圖指令中的計數器如圖3.9所示。
軟PLC為COUNTER類分配了存儲區域m_counterAREA[]來保存計數器的 預設倌和狀杰信息。計數器執行函數的運行流稈如圖3.9所示。當計數器的狀杰 位Curcondition[0]=FALSE (可計數狀態)且Reset=0時,檢測到上升沿脈沖信號 輸入時,計數器的當前值m_CurValue減1。當m_CurValue= 0時計數標志位置 “1”,完成計數。若Curcondition[0]=TRUE(不可計數狀態),則以預設值m_PV 初始化計數器,并使計數標志位置“0”,未完成計數。
計數器功能的實現代碼如下:
{ int bitno =(C_No%8-l); //確定軟兀件所在位號 char flagC=0x01;
if(Curcondition[0]==TRUE) //判斷計數器的狀態 {if(Lastcondition[l]== TRUE)
{ m_CurValue=m_PV; } //計數器值復位 flagC=!(0x01« bitno);
m_counterAREA[C_No/8]&=flagC;// 計數標志位置 “0”
}
else //可計數狀態
{ if((m_CurValue!=0)&&(!Lastcondition[l])&&Curcondition[l]) {m_Cur Value--;}//有上升沿脈沖信號輸入計數值自減
if(m_CurValue==〇y/判斷計數器的當前值
{
flagC=! (0x01« bitno);
m_counterAREA[C_N〇 /8]卜 flagC; //完成計數功能
}
else
{
flagC=!(0x01« bitno);
m_counterAREA[C_No/8]&= flagC;//未完成計數功能
}
}
}
(1)軟PLC指令尋址格式
軟PLC指令函數是通過尋址函數獲取操作數及其地址信息的。對于簡單數 據軟PLC運行系統提供按位(bit)、字節(Byte)的尋址方式,對于復雜數據按 字(W)、雙字(DW)方式進行尋址。尋址時首先指定數據存儲區域,接著指定存儲 的輸入、輸出標識,最后指定所在字、字節以及位地址。例如:尋址“LI4.3” 表示對應I/O端子的數據存儲在本地通訊存儲區的輸入映像區,其中“L”代表 數據的存儲區域,“I”代表存儲在輸入映像寄存區,“4”代表數據所在字節編號, 表示取位操作符,“3”代表所取元素所在字節中的位號。
由于CPU —次至少能處理8位,所以對于按字節、字、雙字尋址,軟PLC
米用了頭部尋址加尾部尋址的統一尋址格式。編址格式見圖3.12。米用統一尋址 可避免因外部I/O采集裝置的改變而對用戶程序的接口函數進行修改,通過尋址 能夠智能獲取數據。圖3.13給出了軟PLC按字節的尋址方式。
|
r \ |
||
區域標識符 |
輸入輸出標識符 |
尋址類型 |
字節編號 |
(L,R, T,A,P,C) |
(i,Q) |
(B,W,DW) |
15 0 |
參數信息:
L,R,T,A,P,C分別為PLC數據在內存中的存儲區域
I-輸入映像區Q-輸出映像區
B-按字節尋址W-按字尋址DW-按雙字尋址
(2)軟PLC指令尋址函數實現
每種尋址方式都有對應的尋址函數,如:按位尋址函數ReadBitG、按字節 尋址函數ReadByte〇、按字尋址函數ReadWord(),它們共同完成向PLC指令函 數提供操作數的任務。按位尋址函數ReadBitG的部分實現代碼如下:
{ char * chr_point;
chr_point=strchr(address,將指針指向字符串中所在位號 switch(address[0]) //判斷軟邏輯存儲區域
{case 'L':
switch(address「ll) //判斷輸入還是輸出映像區 { case T:
CurrentBitStatus(m SercosBuffer.m SercosToPLCBufFer.m ulSercosToPL
C[atoi(address+2)],atoi(chr_point+l),bitbool);
break;
case 'Q':
…}
CurrentBitStatus(unsigned char Channelno, int bitno,bool &bitstatus) //判斷當前 輸入位狀態
{ char flagbit=0x01; flagbit «=bitno;
if((flagbit & Channelno) == flagbit)//判斷當前位狀態是否為 “ 1 ” bitstatus =tme; else
bitstatus =false;
}
3. 5本章小結
本章通過分析軟PLC運行系統的工作原理,劃分了軟PLC運行系統的任務 組成,給出了各模塊的執行流程圖以及部分實現代碼,結合直接方式和間接方式 調度的優點實現了軟PLC系統多任務之間的調度,并對軟PLC存儲系統、指令 系統以及尋址方式進行了設計,給出了典型的基本指令和功能指令的實現函數, 基本上實現了軟PLC運行系統的功能。
本文采摘自“五軸數控加工中心軟PLC控制系統的研究”,因為編輯困難導致有些函數、表格、圖片、內容無法顯示,有需要者可以在網絡中查找相關文章!本文由伯特利數控整理發表文章均來自網絡僅供學習參考,轉載請注明!
2021-09
星瀚系列是宇匠數控打造的顛覆性產品,在高精度加工的情況下保證高速、高剛的特性,是真正意義的高速加工中心,其性能及質量可媲美進口高速加工中心。同時可配置超聲波系統與石墨集塵系統,亦可運用在陶瓷等硬脆料、石墨等高粉塵料的加工;… [了解更多]
2021-09
星瀚S系列是宇匠數控打造的顛覆性產品,采用全閉環設計,在高精度加工的情況下保證高速、高剛的特性,是真正意義的高速加工中心,其性能及質量可媲美進口高速加工中心。同時可配置超聲波系統與石墨集塵系統,亦可運用在陶瓷等硬脆料、石墨等高粉塵料的加工;… [了解更多]
2021-09
TC系列超聲波陶瓷雕銑機,是利用了超聲波高頻振動原理作用于刀具,使刀具產生了16KHz-40KHz(每秒16000-40000次)的連續高強度脈沖沖擊,帶動磨頭沖擊工作。當工件的局部應力遠遠超過材料脆裂極限,材料局部破碎去除。 適用范圍 特別適用于陶瓷(氧化鋯、氧化鋁、氮化鋁… [了解更多]
2020-10
1 問題的提出數控加工夾具是數控CNC機械制造加工過程中用來 固定加工對象,使之占有正確的位置,以滿足加工工藝條件、迅速、方便、安全地安裝工件的裝置。夾具通常由定位元件、夾緊裝置 、對刀引導元件、分度裝置、連接元件及夾具體等組成[1]。圖1所示零件是應用于系列礦用防爆電器產品上的… [了解更多]