PLC課程設(shè)計(jì)-皮帶_第1頁(yè)
PLC課程設(shè)計(jì)-皮帶_第2頁(yè)
PLC課程設(shè)計(jì)-皮帶_第3頁(yè)
PLC課程設(shè)計(jì)-皮帶_第4頁(yè)
PLC課程設(shè)計(jì)-皮帶_第5頁(yè)
已閱讀5頁(yè),還剩25頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、PAGE 8PAGE 30課 程 設(shè) 計(jì)學(xué) 期:20142015學(xué)年 第一學(xué)期 課 程 名 稱(chēng): 綜 合 訓(xùn) 練 年 級(jí): 2012級(jí) 專(zhuān) 業(yè): 機(jī)電一體化技術(shù) 班 級(jí): 機(jī)電1201 學(xué) 號(hào): 201211061128 學(xué) 生 姓 名: 鄭凱能 院 系:機(jī)械工程與電氣自動(dòng)化學(xué)院日 期: 2014.11.11 皮帶系統(tǒng)PLC控制隨著工業(yè)發(fā)展和工業(yè)改革的不斷深入,工廠和企業(yè)開(kāi)始使用生產(chǎn)線來(lái)生產(chǎn),在大大節(jié)省效率的同時(shí)也節(jié)省了生產(chǎn)成本!那么如何讓快捷方便的去控制生產(chǎn)線上的皮帶呢?這也成為了人們考慮的重點(diǎn),無(wú)疑PLC是完美的選擇。行為PLC具有 通用性強(qiáng)、使用方便、適應(yīng)面廣、安全可靠、抗干擾能力強(qiáng)、編

2、程容易等特點(diǎn)。并且PLC在工業(yè)自動(dòng)化控制特別是順序控制方面具有突出優(yōu)勢(shì)??刂埔?如圖所示,需要控制裝置為給料機(jī),1#皮帶輪、2#皮帶輪、3#皮帶輪。達(dá)到物料從給料機(jī)出來(lái)送到料倉(cāng)不漏料完全送到料倉(cāng)的要求。1系統(tǒng)的控制要求: A.啟動(dòng)控制 逆流方向啟動(dòng)。即啟動(dòng)按鈕按下,PLC的程序按照:3#皮帶啟動(dòng) 延時(shí)1 2#皮帶啟動(dòng)延時(shí)2 1#皮帶啟動(dòng) 延時(shí)3 給料機(jī)啟動(dòng)的順序,進(jìn)行控制。 B.停車(chē)控制 順流方向停車(chē)。即停車(chē)按鈕按下,PLC的程序按照:給料機(jī)停車(chē) 延時(shí)4 1#皮帶停車(chē) 延時(shí)5 2#皮帶停車(chē) 延時(shí)6 3#皮帶停車(chē)的順序,進(jìn)行控制。這樣的控制,目的有以下幾個(gè):可以避免設(shè)備同時(shí)啟動(dòng)時(shí),因啟動(dòng)電流太

3、大而對(duì)電網(wǎng)的沖擊,造成設(shè)備啟動(dòng)失?。ㄗⅲ阂慌_(tái)變壓器下的電網(wǎng),當(dāng)其供電電流太大時(shí),將會(huì)使該電網(wǎng)電壓降低,從而使接觸器線圈,因電壓降低而產(chǎn)生的電磁吸力不夠,使接觸器不能吸合,電機(jī)的供電主電路失電停車(chē))。當(dāng)采用設(shè)備按時(shí)間順序,分別啟動(dòng),可有效的躲過(guò)電機(jī)啟動(dòng)時(shí)的電流沖擊。逆流方向啟動(dòng)??梢苑乐挂蛟O(shè)備故障而造成的堆料現(xiàn)象(注:如果先啟動(dòng)給料機(jī),而1#皮帶為停車(chē)現(xiàn)象,則給料機(jī)送出的原料,將被堆放在1#皮帶上,這被認(rèn)為是一種故障)。啟動(dòng)時(shí)各設(shè)備的延時(shí)時(shí)間,應(yīng)該按照設(shè)備電機(jī)功率的大小設(shè)定 設(shè)備功率大的時(shí)間長(zhǎng)一些,小的短一些(見(jiàn)表二)順流停車(chē),其目的也是為了產(chǎn)生堆料現(xiàn)象。即設(shè)備全部停車(chē)后,各皮帶上因該沒(méi)有原料。

4、順流停車(chē)時(shí),各皮帶延時(shí)的時(shí)間,應(yīng)該按照皮帶的大?。ㄩL(zhǎng)短),進(jìn)行設(shè)定。皮帶長(zhǎng)的應(yīng)延時(shí)時(shí)間長(zhǎng)一些,反之短一些(見(jiàn)表二),以確保皮帶上的原料能全部送完。 C.故障控制 按物流方向,故障點(diǎn)以上的設(shè)備,立刻停車(chē);故障點(diǎn)以下的設(shè)備按停車(chē)順序,進(jìn)行停車(chē)。例如,當(dāng)1#皮帶故障發(fā)生時(shí),1#皮帶和給料機(jī)立刻停車(chē);2#皮帶延時(shí)28秒(2#皮帶送料時(shí)間)后停車(chē);3#皮帶在2#皮帶停車(chē)16秒(3#皮帶送料時(shí)間)后停車(chē)。依次類(lèi)推。 D.故障類(lèi)型 1)過(guò)載 由熱繼電器給出 2)接觸器故障 由接觸器的輔助觸點(diǎn)給出 3)跳閘 由斷路器(空氣開(kāi)關(guān))的輔助觸點(diǎn)給出 E.緊急停車(chē) 系統(tǒng)設(shè)有緊急停車(chē)按鈕。一旦該按鈕按下,后,所有設(shè)備應(yīng)

5、立刻停車(chē)(注:停車(chē)按鈕是一種保持型常開(kāi)觸點(diǎn)開(kāi)關(guān),一但按下,該觸點(diǎn)閉合并保持閉合狀態(tài)不變,除非人工采取其他方法方可復(fù)位,使急停按鈕信號(hào)斷開(kāi))F.自動(dòng)許可信號(hào) 每臺(tái)設(shè)備,設(shè)有一個(gè)選擇開(kāi)關(guān)。當(dāng)這個(gè)開(kāi)關(guān)打在就地方式位置時(shí),表明該設(shè)備正處于檢修狀態(tài),不允許PLC系統(tǒng)啟動(dòng)并控制設(shè)備運(yùn)行。只有當(dāng)給料機(jī)、1#、2#和3#皮帶的4個(gè)選擇開(kāi)關(guān)都打到備妥(或集控)位置(狀態(tài))時(shí),系統(tǒng)允許PLC控制。按下啟動(dòng)按鈕后,PLC可進(jìn)行上述控制。否則,按下啟動(dòng)按鈕后,PLC的程序應(yīng)閉鎖其控制。 G.各種指示燈 1)設(shè)備正常運(yùn)行 由接觸器的輔助觸點(diǎn)控制2)過(guò)載指示 由相應(yīng)的繼電器觸點(diǎn)控制3)跳閘指示 由PLC輸出控制(須設(shè)計(jì)相

6、應(yīng)的程序) .4) 接觸器故障 由PLC輸出控制(須設(shè)計(jì)相應(yīng)的程序)附表 表一設(shè)備1#皮帶2#皮帶3#皮帶給料機(jī)電機(jī)功率11KW110KW55KW2.2 KW電機(jī)電壓380V380V380V380V電機(jī)電流23A210A110A5.4A啟動(dòng)方式直接啟動(dòng)直接啟動(dòng)直接啟動(dòng)直接啟動(dòng)表二設(shè)備1#皮帶2#皮帶3#皮帶啟動(dòng)時(shí)間5秒(延時(shí)3)15秒(延時(shí)2)10秒(延時(shí)1)送料時(shí)間8秒(延時(shí)4)28秒(延時(shí)5)16秒(延時(shí)6)系統(tǒng)電路圖4相關(guān)電器元件型號(hào)參考表斷路器DZ20Y系列斷路器 瞬間10 xIe型號(hào)規(guī)格型號(hào)規(guī)格DZ20Y-100/3300 100100ADZ20Y-225/3300 125125AD

7、Z20Y-100/3300 80 80ADZ20Y-225/3300 160160ADZ20Y-100/3300 60 60ADZ20Y-225/3300 180180ADZ20Y-100/3300 50 50ADZ20Y-225/3300 200200ADZ20Y-225/3300 100100ADZ20Y-225/3300 225225A DZ47-63 3級(jí) 動(dòng)力用微型斷路器型號(hào)規(guī)格型號(hào)規(guī)格DZ47-63 D50 3P 50ADZ47-63 D20 3P 20ADZ47-63 D40 3P 40ADZ47-63 D16 3P 16ADZ47-63 D32 3P 32ADZ47-63 D

8、9 3P 9ADZ47-63 D25 3P 25ADZ47-63 D 6 3P 6A DZ47-63 2級(jí) 照明用微型斷路器型號(hào)規(guī)格型號(hào)規(guī)格DZ47-63 C50 2P 50ADZ47-63 C16 2P 16ADZ47-63 C40 2P 40ADZ47-63 C 9 2P 9ADZ47-63 C32 2P 32ADZ47-63 C 6 2P 6ADZ47-63 C25 2P 25ADZ47-63 C 3 2P 3A接觸器型號(hào)主觸點(diǎn)電流型號(hào)主觸點(diǎn)電流CJ20-20 20A 380V /220VCJ20-160160A 380V /220VCJ20-4040A 380V /220VCJ20-2

9、00200A 380V /220VCJ20-6060A 380V /220VCJ20-260260A 380V /220VCJ20-100100A 380V /220VCJ20-400400A 380V /220V熱繼電器型號(hào)電流整定范圍型號(hào)電流整定范圍JRS4-09310d46ALR9F53573050AJRS4-09312d5.58ALR9F536990150AJRS4-25322d1825ALR9F5371132-220AJRS4-40353d2332ALR9F7375200-330A塑皮銅軟線導(dǎo)線規(guī)格型號(hào)導(dǎo)體截面規(guī)格型號(hào)導(dǎo)體截面規(guī)格BVR 2.52.52 10ABVR 25252 80

10、-100ABVR 44.02 15ABVR 35352 100-150ABVR 66.02 20ABVR 50502 150-200ABVR10102 30ABVR 70702 200-280ABVR16162 60ABVR 95952 300-400Aplc的設(shè)置2輸入輸出分配一、1I/O分配輸入輸出啟動(dòng)X0DTY0急停X1M1Y1滿倉(cāng)信號(hào)X2M2Y2空倉(cāng)信號(hào)X3M3Y3故障啟動(dòng)X4M4Y4二、外接線圖三、順序功能圖的設(shè)計(jì)1)發(fā)分步、劃分步1.將整個(gè)工作過(guò)程按工序分解正常啟動(dòng)初始狀態(tài)S0M1啟動(dòng) S20DT啟動(dòng) S21M2啟動(dòng) S22M3啟動(dòng) S23M4啟動(dòng) S24故障啟動(dòng)M4啟動(dòng) S25M

11、3啟動(dòng) S26M2啟動(dòng) S27M1啟動(dòng) S28DT啟動(dòng) S29正常停止DT停止 S30M1停止 S31M2停止 S32M3停止 S33M4停止 S342)動(dòng)作的確定2.對(duì)應(yīng)每一步的動(dòng)作正常啟動(dòng)S0 S20 Y1為ON M1轉(zhuǎn)動(dòng)S21 Y0為ON DT轉(zhuǎn)動(dòng)S22 Y2為ON M2轉(zhuǎn)動(dòng)S23 Y3為ON M3轉(zhuǎn)動(dòng)S24 Y4為ON M4轉(zhuǎn)動(dòng)故障啟動(dòng)S25 Y4為ON M4轉(zhuǎn)動(dòng) S26 Y3為ON M3轉(zhuǎn)動(dòng)S27 Y2為ON M2轉(zhuǎn)動(dòng)S28 Y1為ON M1轉(zhuǎn)動(dòng)S29 Y0為ON DT轉(zhuǎn)動(dòng)正常停止S30 Y0為OFF DT停止S31 Y1為OFF M1停止S32 Y2為OFF M2停止S33 Y3為

12、OFF M3停止S34 Y4為OFF M4停止 3)轉(zhuǎn)換條件的確定S0 PLC上電之初由初始脈沖M8000與開(kāi)關(guān)P0S20 X12給空倉(cāng)信號(hào)S21 T0的常開(kāi)觸點(diǎn)S22 T1的常開(kāi)觸點(diǎn) S23 T2的常開(kāi)觸點(diǎn)S24 T3的常開(kāi)觸點(diǎn)S25 X13給故障信號(hào)S26 T5的常開(kāi)觸點(diǎn)S27 T6的常開(kāi)觸點(diǎn)S28 T7的常開(kāi)觸點(diǎn)S29 T8的常開(kāi)觸點(diǎn)S30 X11給滿倉(cāng)信號(hào)同時(shí)X2給正常停止信號(hào) S31 T10的常開(kāi)觸點(diǎn)S32 T11的常開(kāi)觸點(diǎn)S33 T12的常開(kāi)觸點(diǎn)S34 T13的常開(kāi)觸點(diǎn)S0 T14的常開(kāi)觸點(diǎn)順序功能圖步進(jìn)梯形圖指令表四、系統(tǒng)的調(diào)試1輸入程序,按前面介紹的程序輸入方法,用手持式編程器

13、(或計(jì)算機(jī))正確輸入程序。2靜態(tài)調(diào)試,按圖7.3所示的系統(tǒng)接線圖正確連接好輸入設(shè)備,進(jìn)行PLC的模擬靜態(tài)調(diào)試,并通過(guò)手持式編程器(或計(jì)算機(jī))監(jiān)視,觀察其是否與控制要求一致,否則,檢查并修改、調(diào)試程序,直至指示正確。3動(dòng)態(tài)調(diào)試,按圖7.3所示的系統(tǒng)接線圖正確連接好輸出設(shè)備,進(jìn)行系統(tǒng)的動(dòng)態(tài)調(diào)試,先調(diào)試手動(dòng)程序,后調(diào)試自動(dòng)程序,觀察指示燈能否按控制要求動(dòng)作,并通過(guò)手持式編程器(或計(jì)算機(jī))監(jiān)視,觀察其是否與控制要求一致,否則,檢查線路或修改程序,直至指示燈能按控制要求動(dòng)作。 五、總結(jié)本論文設(shè)計(jì)的是一套基于PLC的供料系統(tǒng),該設(shè)計(jì)主要是針對(duì)供料系統(tǒng)正常情況下系統(tǒng)啟動(dòng)和停止環(huán)節(jié)的順序控制方案的解決。當(dāng)系統(tǒng)

14、接收到順序啟動(dòng)信號(hào)時(shí),由于設(shè)備處于同一個(gè)電網(wǎng)中及工藝過(guò)程的實(shí)際需要,先啟動(dòng)冶煉爐然后依次啟動(dòng)直至給料器啟動(dòng)完畢時(shí)整個(gè)啟動(dòng)過(guò)程完畢。順序停止過(guò)程也類(lèi)似,先停止給料器最后停止冶煉爐當(dāng)某單體設(shè)備需要臨時(shí)檢修時(shí),系統(tǒng)將跳入執(zhí)行手動(dòng)停止子程序,在此手動(dòng)停止子程序中,為了避免堆料現(xiàn)象發(fā)生應(yīng)先停止該單體設(shè)備之前應(yīng)順序停止的設(shè)備然后再停止此設(shè)備。又當(dāng)某單體設(shè)備處出現(xiàn)緊急意外情況時(shí),系統(tǒng)將跳入執(zhí)行緊急停止子程序,因?yàn)槭蔷o急停止,所以在此緊急停止子程序中,就不像手動(dòng)停止那樣依次停止設(shè)備后再停止該設(shè)備,而是該設(shè)備及其之前應(yīng)按順序停止的設(shè)備同時(shí)停止,這樣實(shí)現(xiàn)了最短時(shí)間內(nèi)停止的問(wèn)題,減小意外發(fā)生的程度。且意外發(fā)生按下緊

15、急停止時(shí),有相應(yīng)的輸出端口輸出信號(hào)來(lái)啟動(dòng)報(bào)警指示燈,這樣達(dá)到了報(bào)警的控制效果。課程設(shè)計(jì)作為本科階段的一個(gè)最重要的理論和實(shí)際相結(jié)合的學(xué)習(xí)過(guò)程,是檢測(cè)自己對(duì)本專(zhuān)業(yè)知識(shí)及技能理解與掌握的綜合匯總。設(shè)計(jì)中我發(fā)現(xiàn)自己學(xué)習(xí)還有欠缺,知識(shí)面有待提高,實(shí)際應(yīng)用能力有待提高。在以后的工作和生活中,我會(huì)不斷的完善自己,爭(zhēng)取獲得更好的成績(jī)。 附錄資料:不需要的可以自行刪除 perl函數(shù)應(yīng)用一、進(jìn)程處理函數(shù)1、進(jìn)程啟動(dòng)函數(shù)函數(shù)名eval調(diào)用語(yǔ)法eval(string)解說(shuō)將string看作Perl語(yǔ)句執(zhí)行。正確執(zhí)行后,系統(tǒng)變量$為空串,如果有錯(cuò)誤,$中為錯(cuò)誤信息。例子$print = print (hello,wor

16、ldn);eval ($print);結(jié)果輸出hello, world函數(shù)名system調(diào)用語(yǔ)法system(list)解說(shuō)list中第一個(gè)元素為程序名,其余為參數(shù)。system啟動(dòng)一個(gè)進(jìn)程運(yùn)行程序并等待其結(jié)束,程序結(jié)束后錯(cuò)誤代碼左移八位成為返回值。例子proglist = (echo, hello,world!);system(proglist);結(jié)果輸出hello, world!函數(shù)名fork調(diào)用語(yǔ)法procid = fork();解說(shuō)創(chuàng)建程序的兩個(gè)拷貝-父進(jìn)程和子進(jìn)程-同時(shí)運(yùn)行。子進(jìn)程返回零,父進(jìn)程返回非零值,此值為子程序的進(jìn)程ID號(hào)。例子$retval = fork();if ($re

17、tval = 0) # this is the child process exit; # this terminates the child process else # this is the parent process結(jié)果輸出無(wú)函數(shù)名pipe調(diào)用語(yǔ)法pipe (infile, outfile);解說(shuō)與fork合用,給父進(jìn)程和子進(jìn)程提供通信的方式。送到outfile文件變量的信息可以通過(guò)infile文件變量讀取。步驟:1、調(diào)用pipe2、用fork將程序分成父進(jìn)程和子進(jìn)程3、一個(gè)進(jìn)程關(guān)掉infile,另一個(gè)關(guān)掉outfile例子pipe (INPUT, OUTPUT);$retval =

18、 fork();if ($retval != 0) # this is the parent process close (INPUT); print (Enter a line of input:n); $line = ; print OUTPUT ($line); else # this is the child process close (OUTPUT); $line = ; print ($line); exit (0);結(jié)果輸出$programEnter a line of input:Here is a test lineHere is a test line$函數(shù)名exec調(diào)用

19、語(yǔ)法exec (list);解說(shuō)與system類(lèi)似,區(qū)別是啟動(dòng)新進(jìn)程前結(jié)束當(dāng)前程序。常與fork合用,當(dāng)fork分成兩個(gè)進(jìn)程后,子進(jìn)程用exec啟動(dòng)另一個(gè)程序。例子 結(jié)果輸出函數(shù)名syscall調(diào)用語(yǔ)法syscall (list);解說(shuō)調(diào)用系統(tǒng)函數(shù),list第一個(gè)元素是系統(tǒng)調(diào)用名,其余為參數(shù)。如果參數(shù)是數(shù)字,就轉(zhuǎn)化成C的整型數(shù)(type int)。否則傳遞字符串的指針。詳見(jiàn)UNIX的幫助或Perl文檔。使用syscall必須包含文件syscall.pl,即:require (syscall.ph); 例子結(jié)果輸出2、進(jìn)程終止函數(shù)函數(shù)名Die調(diào)用語(yǔ)法die (message);解說(shuō)終止程序并向S

20、TDERR輸出錯(cuò)誤信息。message可以為字符串或列表。如果最后一個(gè)參數(shù)不包含換行符,則程序文件名和行號(hào)也被輸出。例子die (Cannot open input file);結(jié)果輸出Cannot open input file at myprog line 6.函數(shù)名warn調(diào)用語(yǔ)法warn (message);解說(shuō)與die類(lèi)似,區(qū)別是不終止程序。例子warn(Danger! Danger!n);結(jié)果輸出Danger! Danger!函數(shù)名exit調(diào)用語(yǔ)法exit (retcode);解說(shuō)終止程序并指定返回值。例子exit(2);結(jié)果輸出無(wú)函數(shù)名kill調(diào)用語(yǔ)法kill (signal,

21、proclist);解說(shuō)給一組進(jìn)程發(fā)送信號(hào)。signal是發(fā)送的數(shù)字信號(hào),9為殺掉進(jìn)程。proclist是進(jìn)程ID列表。詳見(jiàn)kill的UNIX幫助。例子結(jié)果輸出3、進(jìn)程控制函數(shù)函數(shù)名sleep調(diào)用語(yǔ)法sleep (time);解說(shuō)將程序暫停一段時(shí)間。time是停止的秒數(shù)。返回值為實(shí)際停止的秒數(shù)。例子sleep (5);結(jié)果輸出無(wú)函數(shù)名wait調(diào)用語(yǔ)法procid = wait();解說(shuō)暫停程序執(zhí)行,等待子進(jìn)程終止。不需要參數(shù),返回值為子進(jìn)程ID,如果沒(méi)有子進(jìn)程,返回-1。例子結(jié)果輸出函數(shù)名waitpid調(diào)用語(yǔ)法waitpid (procid, waitflag);解說(shuō)暫停程序執(zhí)行,等待特定的子

22、進(jìn)程終止。procid為等待的進(jìn)程ID例子$procid = fork();if ($procid = 0) # this is the child process print (this line is printed firstn); exit(0); else # this is the parent process waitpid ($procid, 0); print (this line is printed lastn);結(jié)果輸出$ programthis line is printed firstthis line is printed last$4、其它控制函數(shù)函數(shù)名call

23、er調(diào)用語(yǔ)法subinfo = caller();解說(shuō)返回調(diào)用者的程序名和行號(hào),用于Perl Debugger。返回值為三元素的列表:1、調(diào)用處的包名2、調(diào)用者文件名3、調(diào)用處的行號(hào)例子結(jié)果輸出函數(shù)名chroot調(diào)用語(yǔ)法chroot (dir);解說(shuō)改變程序的根目錄,詳見(jiàn)chroot幫助。例子結(jié)果輸出函數(shù)名local調(diào)用語(yǔ)法local($variable);解說(shuō)在語(yǔ)句塊(由大括號(hào)包圍的語(yǔ)句集合)中定義局域變量,僅在此語(yǔ)句塊中起作用,對(duì)其的改變不對(duì)塊外同名變量造成影響。千萬(wàn)不要在循環(huán)中使用,否則每次循環(huán)都定義一個(gè)新的局域變量!例子結(jié)果輸出函數(shù)名times調(diào)用語(yǔ)法timelist = times解

24、說(shuō)返回該程序及所有子進(jìn)程消耗的工作時(shí)間。返回值為四個(gè)浮點(diǎn)數(shù)的列表:1、程序耗用的用戶時(shí)間2、程序耗用的系統(tǒng)時(shí)間3、子進(jìn)程耗用的用戶時(shí)間4、子進(jìn)程耗用的系統(tǒng)時(shí)間例子結(jié)果輸出二、數(shù)學(xué)函數(shù)函數(shù)名sin調(diào)用語(yǔ)法retval = sin (value);解說(shuō)參數(shù)為弧度值。函數(shù)名cos調(diào)用語(yǔ)法retval = cos (value);解說(shuō)參數(shù)為弧度值。函數(shù)名atan2調(diào)用語(yǔ)法retval = atan2 (value1, value2);解說(shuō)運(yùn)算并返回value1除以value2結(jié)果的arctan值,單位為弧度,范圍在-PIPI。應(yīng)用例:角度轉(zhuǎn)化成弧度子程序。sub degrees_to_radians

25、local ($degrees) = _; local ($radians);11: $radians = atan2(1,1) * $degrees / 45;函數(shù)名sqrt調(diào)用語(yǔ)法retval = sqrt (value);解說(shuō)平方根函數(shù)。value為非負(fù)數(shù)。函數(shù)名exp調(diào)用語(yǔ)法retval = exp (value);解說(shuō)返回e的value次方。函數(shù)名log調(diào)用語(yǔ)法retval = log (value);解說(shuō)以e為底的自然對(duì)數(shù)。函數(shù)名abs調(diào)用語(yǔ)法retval = abs (value);解說(shuō)絕對(duì)值函數(shù)。(Perl 4中沒(méi)有)函數(shù)名rand調(diào)用語(yǔ)法retval = rand (num)

26、;解說(shuō)隨機(jī)數(shù)函數(shù),返回0和整數(shù)num之間的一個(gè)浮點(diǎn)數(shù)。函數(shù)名srand調(diào)用語(yǔ)法srand (value);解說(shuō)初始化隨機(jī)數(shù)生成器。保證每次調(diào)用rand真正隨機(jī)。三、字符串處理函數(shù)函數(shù)名index調(diào)用語(yǔ)法position = index (string, substring, position);解說(shuō)返回子串substring在字符串string中的位置,如果不存在則返回-1。參數(shù)position是可選項(xiàng),表示匹配之前跳過(guò)的字符數(shù),或者說(shuō)從該位置開(kāi)始匹配。函數(shù)名rindex調(diào)用語(yǔ)法position = rindex (string, substring, position);解說(shuō)與index類(lèi)似

27、,區(qū)別是從右端匹配。函數(shù)名length調(diào)用語(yǔ)法num = length (string);解說(shuō)返回字符串長(zhǎng)度,或者說(shuō)含有字符的數(shù)目。函數(shù)名pos調(diào)用語(yǔ)法offset = pos(string);解說(shuō)返回最后一次模式匹配的位置。函數(shù)名substr調(diào)用語(yǔ)法substr (expr, skipchars, length)解說(shuō)抽取字符串(或表達(dá)式生成的字符串)expr中的子串,跳過(guò)skipchars個(gè)字符,或者說(shuō)從位置skipchars開(kāi)始抽取子串(第一個(gè)字符位置為0),子串長(zhǎng)度為length,此參數(shù)可忽略,意味著取剩下的全部字符。當(dāng)此函數(shù)出現(xiàn)在等式左邊時(shí),expr必須為變量或數(shù)組元素,此時(shí)其中部分子

28、串被等式右邊的值替換。函數(shù)名study調(diào)用語(yǔ)法study (scalar);解說(shuō)用一種內(nèi)部格式提高變量的訪問(wèn)速度,同一時(shí)刻只對(duì)一個(gè)變量起作用。函數(shù)名lcuc調(diào)用語(yǔ)法retval = lc(string);retval = uc(string);解說(shuō)將字符串全部轉(zhuǎn)換成小/大寫(xiě)字母。函數(shù)名lcfirstucfirst調(diào)用語(yǔ)法retval = lcfirst(string);retval = ucfirst(string);解說(shuō)將第一個(gè)字母轉(zhuǎn)換成小/大寫(xiě)。函數(shù)名quotameta調(diào)用語(yǔ)法newstring = quotemeta(oldstring);解說(shuō)將非單詞的字母前面加上反斜線()。語(yǔ)句 :

29、$string = quotemeta($string);等效于:$string = s/(W)/$1/g;常用于模式匹配操作中,確保字符串中沒(méi)有字符被看作匹配操作符。函數(shù)名join調(diào)用語(yǔ)法join (joinstr, list);解說(shuō)把字符串列表(數(shù)組)組合成一個(gè)長(zhǎng)的字符串,在每?jī)蓚€(gè)列表元素間插入串joinstr。函數(shù)名sprintf調(diào)用語(yǔ)法sprintf (string, fields);解說(shuō)與printf類(lèi)似,區(qū)別是結(jié)果不輸出到文件,而作為返回值賦給變量。例子$num = 26;$outstr = sprintf(%d = %x hexadecimal or %o octaln,$num

30、, $num, $num);print ($outstr);結(jié)果輸出26 = 1a hexadecimal or 32 octal四、標(biāo)量轉(zhuǎn)換函數(shù)函數(shù)名chop調(diào)用語(yǔ)法$lastchar = chop (var);解說(shuō)var可為變量或數(shù)組,當(dāng)var為變量時(shí),最后一個(gè)字符被刪除并賦給$lastchar,當(dāng)var為數(shù)組/列表時(shí),所有元素的最后一個(gè)字符被刪除,最后一個(gè)元素的最后一個(gè)字母賦給$lastchar。函數(shù)名chomp調(diào)用語(yǔ)法result = chomp(var);解說(shuō)檢查字符串或字符串列表中元素的最后一個(gè)字符是否為由系統(tǒng)變量$/定義的行分隔符,如果是就刪除。返回值為實(shí)際刪除的字符個(gè)數(shù)。函數(shù)名

31、crypt調(diào)用語(yǔ)法result = crypt (original, salt);解說(shuō)用DES算法加密字符串,original是將要加密的字符串,salt是兩個(gè)字符的字符串,定義如何改變DES算法,以使更難解碼。返回值為加密后的串。函數(shù)名hex調(diào)用語(yǔ)法decnum = hex (hexnum);解說(shuō)將十六進(jìn)制數(shù)(字符串形式)轉(zhuǎn)化為十進(jìn)制數(shù)。函數(shù)名int調(diào)用語(yǔ)法intnum = int (floatnum);解說(shuō)將浮點(diǎn)數(shù)舍去小數(shù)部分轉(zhuǎn)化為整型數(shù)。函數(shù)名oct調(diào)用語(yǔ)法decnum = oct (octnum);解說(shuō)將八進(jìn)制數(shù)(字符串形式)或十六進(jìn)制數(shù)(0 x.形式)轉(zhuǎn)化為十進(jìn)制數(shù)。函數(shù)名ord調(diào)用

32、語(yǔ)法asciival = ord (char);解說(shuō)返回單個(gè)字符的ASCII值,與PASCAL中同名函數(shù)類(lèi)似。函數(shù)名chr調(diào)用語(yǔ)法$char = chr (asciival);解說(shuō)返回ASCII值的相應(yīng)字符,與PASCAL中同名函數(shù)類(lèi)似。函數(shù)名pack調(diào)用語(yǔ)法formatstr = pack(packformat, list);解說(shuō)把一個(gè)列表或數(shù)組以在實(shí)際機(jī)器存貯格式或C等編程語(yǔ)言使用的格式轉(zhuǎn)化(包裝)到一個(gè)簡(jiǎn)單變量中。參數(shù)packformat包含一個(gè)或多個(gè)格式字符,列表中每個(gè)元素對(duì)應(yīng)一個(gè),各格式字符間可用空格或tab隔開(kāi),因?yàn)閜ack忽略空格。除了格式a、A和外,重復(fù)使用一種格式多次可在其后

33、加個(gè)整數(shù),如: $twoints = pack (i2, 103, 241);把同一格式應(yīng)用于所有的元素則加個(gè)*號(hào),如: $manyints = pack (i*, 14, 26, 11, 83);對(duì)于a和A而言,其后的整數(shù)表示要?jiǎng)?chuàng)建的字符串長(zhǎng)度,重復(fù)方法如下: $strings = pack (a6 x 2, test1, test2);格式的情況比較特殊,其后必須加個(gè)整數(shù),該數(shù)表示字符串必須的長(zhǎng)度,如果長(zhǎng)度不夠,則用空字符(null)補(bǔ)足,如: $output = pack (a 6 a, test, test2);pack函數(shù)最常見(jiàn)的用途是創(chuàng)建可與C程序交互的數(shù)據(jù),例如C語(yǔ)言中字符串均以

34、空字符(null)結(jié)尾,創(chuàng)建這樣的數(shù)據(jù)可以這樣做: $Cstring = pack (ax, $mystring);下表是一些格式字符與C中數(shù)據(jù)類(lèi)型的等價(jià)關(guān)系:字符 等價(jià)C數(shù)據(jù)類(lèi)型CcharddoubleffloatiintIunsigned int (or unsigned)llongLunsigned longsshortSunsigned short完整的格式字符見(jiàn)下表。 格式字符 描述a用空字符(null)補(bǔ)足的字符串A用空格補(bǔ)足的字符串b位串,低位在前B位串,高位在前c帶符號(hào)字符(通常-128127)C無(wú)符號(hào)字符(通常8位)d雙精度浮點(diǎn)數(shù)f單精度浮點(diǎn)數(shù)h十六進(jìn)制數(shù)串,低位在前H十六進(jìn)

35、制數(shù)串,高位在前i帶符號(hào)整數(shù)I無(wú)符號(hào)整數(shù)l帶符號(hào)長(zhǎng)整數(shù)L無(wú)符號(hào)長(zhǎng)整數(shù)n網(wǎng)絡(luò)序短整數(shù)N網(wǎng)絡(luò)序長(zhǎng)整數(shù)p字符串指針s帶符號(hào)短整數(shù)S無(wú)符號(hào)短整數(shù)u轉(zhuǎn)化成uuencode格式vVAX序短整數(shù)VVAX序長(zhǎng)整數(shù)x一個(gè)空字節(jié)X回退一個(gè)字節(jié)以空字節(jié)(null)填充函數(shù)名unpack調(diào)用語(yǔ)法list = unpack (packformat, formatstr);解說(shuō)unpack與pack功能相反,將以機(jī)器格式存貯的值轉(zhuǎn)化成Perl中值的列表。其格式字符與pack基本相同(即上表),不同的有:A格式將機(jī)器格式字符串轉(zhuǎn)化為Perl字符串并去掉尾部所有空格或空字符;x為跳過(guò)一個(gè)字節(jié);為跳過(guò)一些字節(jié)到指定的位置,如4

36、為跳過(guò)4個(gè)字節(jié)。下面看一個(gè)和X合同的例子: $longrightint = unpack (* X4 L, $packstring);此語(yǔ)句將最后四個(gè)字節(jié)看作無(wú)符號(hào)長(zhǎng)整數(shù)進(jìn)行轉(zhuǎn)化。下面看一個(gè)對(duì)uuencode文件解碼的例子:1 : #!/usr/local/bin/perl2 : 3 : open (CODEDFILE, /u/janedoe/codefile) |4 : die (Cant open input file);5 : open (OUTFILE, outfile) |6 : die (Cant open output file);7 : while ($line = ) 8 :

37、 $decoded = unpack(u, $line);9 : print OUTFILE ($decoded);10: 11: close (OUTFILE);12: close (CODEDFILE); 當(dāng)將pack和unpack用于uuencode時(shí),要記住,雖然它們與UNIX中的uuencode、uudecode工具算法相同,但并不提供首行和末行,如果想用uudecode對(duì)由pack的輸出創(chuàng)建的文件進(jìn)行解碼,必須也把首行和末行輸出(詳見(jiàn)UNIX中uuencode幫助)。函數(shù)名vec調(diào)用語(yǔ)法retval = vec (vector, index, bits);解說(shuō)顧名思義,vec即矢量

38、(vector)函數(shù),它把簡(jiǎn)單變量vector的值看作多塊(維)數(shù)據(jù),每塊含一定數(shù)目的位,合起來(lái)即一個(gè)矢量數(shù)據(jù)。每次的調(diào)用訪問(wèn)其中一塊數(shù)據(jù),可以讀取,也可以寫(xiě)入。參數(shù)index就象數(shù)組下標(biāo)一樣,提出訪問(wèn)哪一塊,0為第一塊,依次類(lèi)推,要注意的是訪問(wèn)次序是從右到左的,即第一塊在最右邊。參數(shù)bits指定每塊中的位數(shù),可以為1,2,4,8,16或32。例子1 : #!/usr/local/bin/perl2 : 3 : $vector = pack (B*, 11010011);4 : $val1 = vec ($vector, 0, 4);5 : $val2 = vec ($vector, 1, 4

39、);6 : print (high-to-low order values: $val1 and $val2n);7 : $vector = pack (b*, 11010011);8 : $val1 = vec ($vector, 0, 4);9 : $val2 = vec ($vector, 1, 4);10: print (low-to-high order values: $val1 and $val2n); 結(jié)果high-to-low order values: 3 and 13low-to-high order values: 11 and 12函數(shù)名defined調(diào)用語(yǔ)法retv

40、al = defined (expr);解說(shuō)判斷一個(gè)變量、數(shù)組或數(shù)組的一個(gè)元素是否已經(jīng)被賦值。expr為變量名、數(shù)組名或一個(gè)數(shù)組元素。如果已定義,返回真,否則返回假。函數(shù)名undef調(diào)用語(yǔ)法retval = undef (expr);解說(shuō)取消變量、數(shù)組或數(shù)組元素甚至子程序的定義,回收其空間。返回值始終為未定義值,此值與空串等效。五、數(shù)組和列表函數(shù)函數(shù)名grep調(diào)用語(yǔ)法foundlist = grep (pattern, searchlist);解說(shuō)與同名的UNIX查找工具類(lèi)似,grep函數(shù)在列表中抽取與指定模式匹配的元素,參數(shù)pattern為欲查找的模式,返回值是匹配元素的列表。例子list

41、= (This, is, a, test);foundlist = grep(/tT/, list);結(jié)果foundlist = (This, test);函數(shù)名splice調(diào)用語(yǔ)法retval = splice (array, slipelements, length, newlist);解說(shuō)拼接函數(shù)可以向列表(數(shù)組)中間插入元素、刪除子列表或替換子列表。參數(shù)skipelements是拼接前跳過(guò)的元素?cái)?shù)目,length是被替換的元素?cái)?shù),newlist是將要拼接進(jìn)來(lái)的列表。當(dāng)newlist的長(zhǎng)度大于length時(shí),后面的元素自動(dòng)后移,反之則向前縮進(jìn)。因此,當(dāng)length=0時(shí),就相當(dāng)于向列表中

42、插入元素,而形如語(yǔ)句splice (array, -1, 0, Hello);則向數(shù)組末尾添加元素。而當(dāng)newlist為空時(shí)就相當(dāng)于刪除子列表,這時(shí),如果length為空,就從第skipelements個(gè)元素后全部刪除,而刪除最后一個(gè)元素則為:splice (array, -1);這種情況下,返回值為被刪去的元素列表。函數(shù)名shift調(diào)用語(yǔ)法element = shift (arrayvar);解說(shuō)刪去數(shù)組第一個(gè)元素,剩下元素前移,返回被刪去的元素。不加參數(shù)時(shí),缺省地對(duì)ARGV進(jìn)行操作。函數(shù)名unshift調(diào)用語(yǔ)法count = unshift (arrayver, elements);解說(shuō)作用與shift相反,在數(shù)組arrayvar開(kāi)頭增加一個(gè)或多個(gè)元素,返回值為結(jié)果(列表)的長(zhǎng)度。等價(jià)于splice (array, 0, 0, elements);函數(shù)名push調(diào)用語(yǔ)法push (arrayvar, element

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論