版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第14頁TwinCATTwinCAT3文件功能塊的使用方法作者:余洋職務(wù):助理技術(shù)工程師日期:2023-02-10摘要:在工控行業(yè)中,工藝參數(shù)、配方等數(shù)據(jù)至關(guān)重要。TwinCAT3為應(yīng)對不同的場景和需求提供了多種數(shù)據(jù)存儲方式。首先,使用
Persistent、Retain變量,以及Novram可以對少量的過程數(shù)據(jù)進(jìn)行保存。這三種方式往往是為設(shè)備突然掉電而設(shè)計(jì)。這樣一來,在項(xiàng)目中需要記錄的關(guān)鍵數(shù)據(jù)或者變量值會被保存至系統(tǒng)的boot文件夾當(dāng)中。但是,這些數(shù)據(jù)只能被保存為當(dāng)前值,所以無法查看歷史值。此外,大量數(shù)據(jù)保存、管理的方式有XML文件存儲和DatabaseServer。這兩者不僅可以保存當(dāng)前值,還可以保存所有的歷史數(shù)據(jù),大大提高了數(shù)據(jù)的完整性。XML文件儲存指的是TwinCATXMLDataServer。借助它可以使用存儲在XML文件中的數(shù)據(jù)對TwinCATPLC變量初始化,或者把PLC變量存儲在XML文件中。XML文件中的變量的結(jié)構(gòu)應(yīng)該和PLC中變量的結(jié)構(gòu)匹配。變量的子元素可以直接讀取,十分地方便。DatabaseServer則是利用第三方數(shù)據(jù)庫,將TwinCAT的數(shù)據(jù)與第三方服務(wù)器進(jìn)行交互,從而實(shí)現(xiàn)更加龐大的數(shù)據(jù)管理和整合。但是,這兩種文件的保存方式都需要購買相對應(yīng)的授權(quán)才能使用。針對項(xiàng)目中數(shù)據(jù)量小的情況,可以使用txt文件保存管理的低成本方式。TwinCAT3為此提供了功能塊對txt文件進(jìn)行管理,可以分別對本地文件甚至是網(wǎng)絡(luò)鄰居的文件進(jìn)行打開、關(guān)閉、寫入、讀取和重命名的操作。不過,受限于txt格式文件以及其解碼形式,對于TwinCAT內(nèi)數(shù)據(jù)的格式和大小都有局限性。附件:序號文件名備注1TwinCATWriteUPSDataProject掉電保持應(yīng)用例程2TwinCATWriteContentProject寫入內(nèi)容例程3TwinCATReadContentProject獲取內(nèi)容例程4TwinCATAddContentProject補(bǔ)充內(nèi)容例程5TwinCATOtherFunctionProject其他功能例程6TwinCATCopyFileProject復(fù)制源文件例程歷史版本:免責(zé)聲明:我們已對本文檔描述的內(nèi)容做測試。但是差錯在所難免,無法保證絕對正確并完全滿足您的使用需求。本文檔的內(nèi)容可能隨時(shí)更新,如有改動,恕不事先通知,也歡迎您提出改進(jìn)建議。參考信息:目錄1. 軟硬件版本 41.1. 倍福Beckhoff 41.1.1. 控制器硬件 41.1.2. 控制軟件 42. 準(zhǔn)備工作 42.1. 文件夾創(chuàng)建 43. 文件功能塊的使用方法 43.1.寫入內(nèi)容進(jìn)(新)文件 43.1.1. FB_FileOpen 43.1.2. FB_FileClose 63.1.3. FB_FilePuts 73.2.讀取文件內(nèi)容 73.2.1. FB_FileGets 73.3.補(bǔ)充文件內(nèi)容 83.3.1. FB_FileWrite 83.4.復(fù)制源文件(新功能塊FB_FileCopy) 93.4.1. FB_FileRead 93.5.其他對文件以及文件夾的功能 93.5.1. FB_FileDelete 93.5.2. FB_FileRename 103.5.3.FB_CreateDir 103.5.4. FB_RemoveDir 103.6.文件管理功能塊在掉電保持中的應(yīng)用 104. 報(bào)錯代碼及相關(guān)原因 115. 如何管理網(wǎng)絡(luò)鄰居的電腦文件 126. 結(jié)束語 13
軟硬件版本倍福Beckhoff控制器硬件筆記本電腦(例程“TwinCATFileTestProject2”需要CX5130控制器、相關(guān)模塊以及電機(jī))控制軟件TwinCAT3.14024.35準(zhǔn)備工作文件夾創(chuàng)建在電腦中創(chuàng)建一個(gè)測試文件夾以及文件,本例程中在D:\中創(chuàng)建了一個(gè)文件夾Data用以存放需要記錄的數(shù)據(jù)和文件。文件管理功能塊的使用方法各個(gè)文件管理功能塊的效果,需要和其他的功能塊一起組合才能實(shí)現(xiàn)。在調(diào)用之前,尤其要注意不同功能需要在打開還是關(guān)閉模式下才能使用。寫入內(nèi)容進(jìn)(新)文件如果我們需要把考生分?jǐn)?shù)Julia的寫入txt文件,如何實(shí)現(xiàn)呢?這個(gè)時(shí)候就需要用到三個(gè)功能塊:FB_FileOpen、FB_FilePuts和FB_FileClose(打開文件,寫入文件,關(guān)閉文件)。包含在例程文件“TwinCATWriteContentProject”(寫入文件內(nèi)容例程)中。(注:使用前需更改AmsNetId,并在D盤中創(chuàng)建Data的文件夾,否則找不到指定文件夾,會報(bào)錯)FB_FileOpenFB_FileOpen是文件管理功能塊中最常用的功能塊,也是其他功能塊的使用前提,很多時(shí)候在對文件進(jìn)行操作時(shí),都需要先將其打開。FB_FileOpen的引腳和填寫方式如下:SNetId指的是AmsNetId??梢栽赟ystem-Routes-NetIdManagement中查到。此引腳不填默認(rèn)為當(dāng)前程序控制的設(shè)備,而非本地。SPathName代表目標(biāo)文件路徑。本次測試的文件路徑為:D:\testfile\testfile.txt。NMode意味著打開文件的方式,一共有八種,常用的模式為1和2。以下是所有模式以及其對應(yīng)的含義:引腳ePath可以選擇TwinCAT系統(tǒng)路徑,此引腳大部分模式依然正在處于開發(fā)階段。如果不是進(jìn)入boot文件夾可以直接選擇PATH_GENERIC。bExcute是觸發(fā)引腳。使用的時(shí)候,將觸發(fā)為置位True就可以了。tTimeout是超時(shí)響應(yīng)時(shí)間,不填默認(rèn)時(shí)間為5s。bBussy是檢測位,它是一個(gè)輸出引腳用。于查看功能塊是否正在運(yùn)行過程中,運(yùn)行結(jié)束其值為FALSE。bError和nErrorld為錯誤檢測位,也是輸出引腳。前者為TRUE則功能塊運(yùn)行錯誤,后者則會提供一個(gè)錯誤代碼供用戶參考。輸出引腳HFile是一個(gè)數(shù)字。其代表文件的句柄,這個(gè)參數(shù)在其他需要先打開再進(jìn)行操作的功能塊中會用到。需要注意的時(shí),功能塊打開文件的方式并非Windows打開窗口的形式,獲取的都是內(nèi)存數(shù)據(jù)。如果僅僅單獨(dú)執(zhí)行FB_OpenFile,可以在Windows資源管理器中試著刪除一下目標(biāo)文件,會彈出“操作無法完成,因?yàn)槲募言赥winCAT3SystemService中打開”的字樣。當(dāng)txt文件還未被建立,打開文件模式選擇FOPEN_MODEAPPENDORFOPEN_MODEPLUS:這種模式可以在打開文件的同時(shí)提供讀取和寫入兩種操作權(quán)限。當(dāng)指定文件名不存在時(shí),可以直接新建。FB_FileClose有打開自然也有關(guān)閉,關(guān)閉文件使用的功能塊為FB_FileClose。它的引腳與FB_FileOpen基本重疊,只有一個(gè)輸入引腳hFile不一致。這是因?yàn)檫@個(gè)功能塊尋找文件的方式從地址改為了句柄。HFile為FB_FileOpen生成的句柄。使用時(shí)直接將后者賦值給前者即可。FB_FilePuts除了需要對文件進(jìn)行打開和關(guān)閉,更多地是對文件的內(nèi)容進(jìn)行更改。而例程中輸入用到的是功能塊FB_FilePuts。在啟動這個(gè)功能塊之前,需要注意兩點(diǎn),第一是使用前文件必須處于打開的狀態(tài)下;第二則是打開模式必須支持寫入。否則會在nErrId顯示1792的報(bào)錯。寫入功能塊是先寫進(jìn)內(nèi)存,close之后才會保存在硬盤里。因此,需要先試用FB_FileClose進(jìn)行關(guān)閉。(注:由于是拿記事本來進(jìn)行測試,解析格式為ASCII碼,因此使用String類型的數(shù)據(jù)進(jìn)行寫入以及讀取。)成績單需要知道這個(gè)成績是屬于誰的。因此,例程使用了CONCAT()函數(shù)將“Juliasscoreis”與“90$L”拼接,再一起進(jìn)行寫入。($L是TwinCAT中的換行符)FB_FileOpen、FB_FileGets和FB_FileClose依次執(zhí)行。判斷前者是否執(zhí)行完的依據(jù)是前者的輸入引腳bExecute輸出引腳bBussy:當(dāng)前者執(zhí)行引腳為TRUE,bBussy為FALSE,則運(yùn)行下一個(gè)功能塊。整個(gè)程序的觸發(fā)引腳為b_excute。CONCAT()函數(shù)解析:/content/1033/tcplclib_tc2_standard/74411019.html?id=147199721235531983讀取文件內(nèi)容怎么知道寫入文件的操作有沒有成功呢?我們可以用FB_FileOpen、FB_FileGets和FB_FileClose三個(gè)功能塊來獲取文件中的內(nèi)容。為了避免覆蓋創(chuàng)建新文件和亂碼的情況,例程文件“TwinCATReadContentProject”(讀取文件內(nèi)容例程)使用的文件打開模式為FOPEN_MODEREAD(只讀)。同時(shí),設(shè)置了一個(gè)STRING類型的變量s_content,將功能塊中獨(dú)到的數(shù)據(jù)提取出來。(注:使用此例程前,需更改對應(yīng)的AmsNetId,且需要先運(yùn)行例程TwinCATWriteContentProject才能讀取到內(nèi)容。如對應(yīng)路徑文件名找不到,會報(bào)錯)FB_FileGets讀取字符串的功能塊FB_FileGets。輸入引腳在這里就不進(jìn)行講解了,上文都已提及。輸出引腳中的bEOF則是一個(gè)檢測位:如果到達(dá)文件末尾,并且無法讀取更多數(shù)據(jù)字節(jié),則輸出為True。如果可以讀取某些數(shù)據(jù)字節(jié),則輸出為False。同時(shí),在讀取之前,依然需要將文件打開,否則會在nErrId顯示1795的報(bào)錯。程序載入之后三個(gè)功能塊FB_FileOpen、FB_FileGets和FB_FileClose通過CASE語句和邏輯判斷依次執(zhí)行。整個(gè)程序的觸發(fā)引腳為b_excute。補(bǔ)充文件內(nèi)容所有人的成績不可能一次性上傳,更何況STRING數(shù)據(jù)類型本身大小也有限,假如需要補(bǔ)充新考生的成績該如何實(shí)現(xiàn)呢?這就需要FB_FileOpen、FB_FileWrite和FB_FileClose三個(gè)功能塊來實(shí)現(xiàn)。在例程文件“TwinCATAddContentProject”(補(bǔ)充文件內(nèi)容例程)中,打開文件使用的模式依然是寫入時(shí)候的FOPEN_MODEAPPENDORFOPEN_MODEPLUS。(測試時(shí)需要注意STRING類型數(shù)據(jù)的格式和大小上限)(注:為了展示添加內(nèi)容的效果,在使用前最好先運(yùn)行例程TwinCATWriteContentProject,并修改AmsNetId)FB_FileWrite通過這個(gè)功能塊我們可以隨意在文件后面增加新的內(nèi)容。使用時(shí)有兩個(gè)引腳需要注意,分別是pWriteBuff和cbWriteLen。前者指被寫入內(nèi)容的地址,后者則是被寫入內(nèi)容的字節(jié)大小。對此我們可以用ADR和SIZEOF函數(shù)來進(jìn)行指針指向和讀取大小。補(bǔ)充寫入依然需要文件打開且支持寫入的前提,否則會在nErrId顯示1792的報(bào)錯。ADR()函數(shù)解析:/content/1033/tcplccontrol/925563403.html?id=6081196681883796967SIZEOF()函數(shù)解析:/content/1033/tc3_plc_intro/2528896907.html?id=1985493739426684680程序載入之后三個(gè)功能塊FB_FileOpen、FB_FileWrite、FB_FileClose通過CASE語句和邏輯判斷依次執(zhí)行。整個(gè)程序的觸發(fā)引腳為b_excute。(注:寫入的功能塊默認(rèn)字符串字節(jié)大小為81,為了顯示的一致性,建議在補(bǔ)充的內(nèi)容后面加$L換行。否則81個(gè)字節(jié)之前沒有內(nèi)容的空間會被空格取代。)復(fù)制源文件(新功能塊FB_FileCopy)為了防止文件的丟失,常常會備份文件。而備份文件最簡單的方式就是將目標(biāo)文件復(fù)制多份。如何才能實(shí)現(xiàn)這個(gè)功能呢?配合FB_FileOpen、FB_FileRead、FB_FileWrite和FB_FileClose四個(gè)功能塊,我們可以通過例程“TwinCATCopyFileProject”創(chuàng)造一個(gè)新的功能塊FB_FileCopy。(注:使用前需保證有源文件,并更改AmsNetId和文件路徑,否則會報(bào)錯)FB_FileRead讀取文件內(nèi)容的另一個(gè)功能塊為FB_FileRead。它與FB_FileGets實(shí)現(xiàn)的效果是不一樣的,不同的是它的讀取是通過指針的方式來實(shí)現(xiàn)(更靈活,也更強(qiáng)大)。使用之前需提前打開文件。在填寫引腳時(shí),有兩個(gè)引腳需要注意,分別是pReadBuff和cbReadLen。這兩者與FB_FileWrite中的輸入引腳pWriteBuff和cbWriteLen相同。分別使用ADR和SIZEOF補(bǔ)充即可。整個(gè)功能塊內(nèi)部的結(jié)構(gòu)分為五步:1.初始化參數(shù)2.分別打開源文件和目標(biāo)文件3.讀取源文件的內(nèi)容4.寫入內(nèi)容至目標(biāo)文件5.復(fù)位完成之后便可在主程序里面調(diào)用了,使用時(shí)只需分別填寫初始系統(tǒng)和目標(biāo)系統(tǒng)的AmsNetId、對應(yīng)的文件路徑和名稱即可。載入之后將bExcute置位True,就可以在原來文件的下方出現(xiàn)一個(gè)新的文件,內(nèi)容與前者一致。其他對文件以及文件夾的功能很多時(shí)候,由于積累的文件過多,會意外出現(xiàn)“文件名重復(fù)”的現(xiàn)象。這個(gè)時(shí)候應(yīng)該怎么做?解決此問題的第一種方法為直接刪除舊文件,直接調(diào)用功能塊FB_FileDelete。FB_FileDelete刪除文件使用的功能塊為FB_FileDelete。它的引腳與FB_FileOpen幾乎一致,無非是少了一個(gè)nMode。需要注意的是,刪除前需要將文件關(guān)閉,并非在Windows中關(guān)閉,而是使用FB_FileClose進(jìn)行關(guān)閉。否則,會在nErrId顯示1804報(bào)錯。第二種方則是重命名文件,需要調(diào)用功能塊FB_FileRename。FB_FileRename對文件進(jìn)行重命名的功能塊為FB_FileRename。直接填寫引腳就可以使用了。sOldName為文件的舊名,而sNewName則為替換的新名。在使用時(shí),需要先將文件close,否則會在nErrId顯示1804的報(bào)錯。在項(xiàng)目中,數(shù)據(jù)類型是多種多樣的,為了整理數(shù)據(jù),往往需要建立不同的文件夾進(jìn)行分類。分別可以調(diào)用FB_CreateDir和FB_RemoveDir進(jìn)行新建和刪除文件夾的操作。FB_CreateDir如需創(chuàng)建新文件夾,可以使用功能塊FB_CreateDir。聲明調(diào)用之后只需要將文件名sPathName和對應(yīng)路徑方式ePath填寫好,最后再啟動,對應(yīng)目錄就會出現(xiàn)一個(gè)新的文件夾。FB_RemoveDir刪除文件夾使用的功能塊為FB_RemoveDir。使用方法與FB_CreateDir一致。如果刪除的文件夾不存在,會在nErrId顯示1804的報(bào)錯。以上舉例的功能都在例程“TwinCATOtherFunctionProject”中,這些功能塊使用起來無需搭配其他功能塊,使用起來非常簡單方便,將各個(gè)功能塊的觸發(fā)引腳置TRUE即可。文件管理功能塊在掉電保持中的應(yīng)用掉電保持在工業(yè)生產(chǎn)中是一個(gè)非常實(shí)用的功能,倍福提供的方式有Persistent和Retain變量。但掉電之后的數(shù)據(jù)只能再次上電在TwinCAT中查看。怎么才能在外部進(jìn)行查看呢?配合文件管理功能塊就能將其中的數(shù)據(jù)提取出來。例程“TwinCATWriteUPSDataProject”以軸的運(yùn)動控制為例,一共包含四部分程序:1.運(yùn)動控制程序(使能,運(yùn)動功能塊)2.掉電保持檢測程序(CX5130UPS指令)3.文件管理程序(打開,寫入和關(guān)閉功能塊)和數(shù)據(jù)轉(zhuǎn)換程序。(注:使用前需更改相關(guān)硬件配置,否則無法正常運(yùn)行程序。此外例程中的UPS指令只適用于CX51系列控制器,調(diào)試時(shí)需根據(jù)自己的控制器進(jìn)行相關(guān)的更改)當(dāng)程序載入時(shí),可以先進(jìn)行軸的運(yùn)動調(diào)試。軸運(yùn)動的同時(shí),其實(shí)際位置被轉(zhuǎn)化為WSTRING類型的變量(中文顯示需要使用WSTRING),并與“軸的實(shí)際位置”拼接。由于txt文件是UTF8的格式,因此需要將帶中文的內(nèi)容使用WSTRING_TO_UTF8()函數(shù)轉(zhuǎn)換格式。在軸運(yùn)動的時(shí)候,將CX5130控制器斷電。功能塊FB_S_UPS_CX51x0檢測到供電電壓消失,立即將b_e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度木結(jié)構(gòu)建筑維護(hù)木工承包合同范本3篇
- 二零二五年度婚慶服務(wù)市場前景分析婚慶協(xié)議合同3篇
- 二零二五年度木材采購與木材行業(yè)技術(shù)培訓(xùn)合同3篇
- 2025年度個(gè)人二手房交易資金監(jiān)管合同范本4篇
- 二零二五年度智能停車場車牌租賃與安全管理合同4篇
- 2025版民間借貸合同要點(diǎn)識別并規(guī)避四種借款人風(fēng)險(xiǎn)4篇
- 二零二五年度棉布面料環(huán)保認(rèn)證與檢測服務(wù)合同4篇
- 二零二五年度民爆物品儲存安全責(zé)任合同4篇
- 2025年度汽車文化體驗(yàn)館租賃合同4篇
- 2025年物業(yè)管理公司委托管理合同范本3篇
- 遼寧省撫順五十中學(xué)2024屆中考化學(xué)全真模擬試卷含解析
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 2024年中國科學(xué)技術(shù)大學(xué)少年創(chuàng)新班數(shù)學(xué)試題真題(答案詳解)
- 家長心理健康教育知識講座
- GB/T 292-2023滾動軸承角接觸球軸承外形尺寸
- 2024年九省聯(lián)考高考數(shù)學(xué)卷試題真題答案詳解(精校打?。?/a>
- 軍人結(jié)婚函調(diào)報(bào)告表
- 民用無人駕駛航空器實(shí)名制登記管理規(guī)定
- 北京地鐵6號線
- 航空油料計(jì)量統(tǒng)計(jì)員(初級)理論考試復(fù)習(xí)題庫大全-上(單選題匯總)
- 諒解書(標(biāo)準(zhǔn)樣本)
評論
0/150
提交評論