




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第14頁TwinCATTwinCAT3文件功能塊的使用方法作者:余洋職務:助理技術工程師日期:2023-02-10摘要:在工控行業中,工藝參數、配方等數據至關重要。TwinCAT3為應對不同的場景和需求提供了多種數據存儲方式。首先,使用
Persistent、Retain變量,以及Novram可以對少量的過程數據進行保存。這三種方式往往是為設備突然掉電而設計。這樣一來,在項目中需要記錄的關鍵數據或者變量值會被保存至系統的boot文件夾當中。但是,這些數據只能被保存為當前值,所以無法查看歷史值。此外,大量數據保存、管理的方式有XML文件存儲和DatabaseServer。這兩者不僅可以保存當前值,還可以保存所有的歷史數據,大大提高了數據的完整性。XML文件儲存指的是TwinCATXMLDataServer。借助它可以使用存儲在XML文件中的數據對TwinCATPLC變量初始化,或者把PLC變量存儲在XML文件中。XML文件中的變量的結構應該和PLC中變量的結構匹配。變量的子元素可以直接讀取,十分地方便。DatabaseServer則是利用第三方數據庫,將TwinCAT的數據與第三方服務器進行交互,從而實現更加龐大的數據管理和整合。但是,這兩種文件的保存方式都需要購買相對應的授權才能使用。針對項目中數據量小的情況,可以使用txt文件保存管理的低成本方式。TwinCAT3為此提供了功能塊對txt文件進行管理,可以分別對本地文件甚至是網絡鄰居的文件進行打開、關閉、寫入、讀取和重命名的操作。不過,受限于txt格式文件以及其解碼形式,對于TwinCAT內數據的格式和大小都有局限性。附件:序號文件名備注1TwinCATWriteUPSDataProject掉電保持應用例程2TwinCATWriteContentProject寫入內容例程3TwinCATReadContentProject獲取內容例程4TwinCATAddContentProject補充內容例程5TwinCATOtherFunctionProject其他功能例程6TwinCATCopyFileProject復制源文件例程歷史版本:免責聲明:我們已對本文檔描述的內容做測試。但是差錯在所難免,無法保證絕對正確并完全滿足您的使用需求。本文檔的內容可能隨時更新,如有改動,恕不事先通知,也歡迎您提出改進建議。參考信息:目錄1. 軟硬件版本 41.1. 倍福Beckhoff 41.1.1. 控制器硬件 41.1.2. 控制軟件 42. 準備工作 42.1. 文件夾創建 43. 文件功能塊的使用方法 43.1.寫入內容進(新)文件 43.1.1. FB_FileOpen 43.1.2. FB_FileClose 63.1.3. FB_FilePuts 73.2.讀取文件內容 73.2.1. FB_FileGets 73.3.補充文件內容 83.3.1. FB_FileWrite 83.4.復制源文件(新功能塊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.文件管理功能塊在掉電保持中的應用 104. 報錯代碼及相關原因 115. 如何管理網絡鄰居的電腦文件 126. 結束語 13
軟硬件版本倍福Beckhoff控制器硬件筆記本電腦(例程“TwinCATFileTestProject2”需要CX5130控制器、相關模塊以及電機)控制軟件TwinCAT3.14024.35準備工作文件夾創建在電腦中創建一個測試文件夾以及文件,本例程中在D:\中創建了一個文件夾Data用以存放需要記錄的數據和文件。文件管理功能塊的使用方法各個文件管理功能塊的效果,需要和其他的功能塊一起組合才能實現。在調用之前,尤其要注意不同功能需要在打開還是關閉模式下才能使用。寫入內容進(新)文件如果我們需要把考生分數Julia的寫入txt文件,如何實現呢?這個時候就需要用到三個功能塊:FB_FileOpen、FB_FilePuts和FB_FileClose(打開文件,寫入文件,關閉文件)。包含在例程文件“TwinCATWriteContentProject”(寫入文件內容例程)中。(注:使用前需更改AmsNetId,并在D盤中創建Data的文件夾,否則找不到指定文件夾,會報錯)FB_FileOpenFB_FileOpen是文件管理功能塊中最常用的功能塊,也是其他功能塊的使用前提,很多時候在對文件進行操作時,都需要先將其打開。FB_FileOpen的引腳和填寫方式如下:SNetId指的是AmsNetId。可以在System-Routes-NetIdManagement中查到。此引腳不填默認為當前程序控制的設備,而非本地。SPathName代表目標文件路徑。本次測試的文件路徑為:D:\testfile\testfile.txt。NMode意味著打開文件的方式,一共有八種,常用的模式為1和2。以下是所有模式以及其對應的含義:引腳ePath可以選擇TwinCAT系統路徑,此引腳大部分模式依然正在處于開發階段。如果不是進入boot文件夾可以直接選擇PATH_GENERIC。bExcute是觸發引腳。使用的時候,將觸發為置位True就可以了。tTimeout是超時響應時間,不填默認時間為5s。bBussy是檢測位,它是一個輸出引腳用。于查看功能塊是否正在運行過程中,運行結束其值為FALSE。bError和nErrorld為錯誤檢測位,也是輸出引腳。前者為TRUE則功能塊運行錯誤,后者則會提供一個錯誤代碼供用戶參考。輸出引腳HFile是一個數字。其代表文件的句柄,這個參數在其他需要先打開再進行操作的功能塊中會用到。需要注意的時,功能塊打開文件的方式并非Windows打開窗口的形式,獲取的都是內存數據。如果僅僅單獨執行FB_OpenFile,可以在Windows資源管理器中試著刪除一下目標文件,會彈出“操作無法完成,因為文件已在TwinCAT3SystemService中打開”的字樣。當txt文件還未被建立,打開文件模式選擇FOPEN_MODEAPPENDORFOPEN_MODEPLUS:這種模式可以在打開文件的同時提供讀取和寫入兩種操作權限。當指定文件名不存在時,可以直接新建。FB_FileClose有打開自然也有關閉,關閉文件使用的功能塊為FB_FileClose。它的引腳與FB_FileOpen基本重疊,只有一個輸入引腳hFile不一致。這是因為這個功能塊尋找文件的方式從地址改為了句柄。HFile為FB_FileOpen生成的句柄。使用時直接將后者賦值給前者即可。FB_FilePuts除了需要對文件進行打開和關閉,更多地是對文件的內容進行更改。而例程中輸入用到的是功能塊FB_FilePuts。在啟動這個功能塊之前,需要注意兩點,第一是使用前文件必須處于打開的狀態下;第二則是打開模式必須支持寫入。否則會在nErrId顯示1792的報錯。寫入功能塊是先寫進內存,close之后才會保存在硬盤里。因此,需要先試用FB_FileClose進行關閉。(注:由于是拿記事本來進行測試,解析格式為ASCII碼,因此使用String類型的數據進行寫入以及讀取。)成績單需要知道這個成績是屬于誰的。因此,例程使用了CONCAT()函數將“Juliasscoreis”與“90$L”拼接,再一起進行寫入。($L是TwinCAT中的換行符)FB_FileOpen、FB_FileGets和FB_FileClose依次執行。判斷前者是否執行完的依據是前者的輸入引腳bExecute輸出引腳bBussy:當前者執行引腳為TRUE,bBussy為FALSE,則運行下一個功能塊。整個程序的觸發引腳為b_excute。CONCAT()函數解析:/content/1033/tcplclib_tc2_standard/74411019.html?id=147199721235531983讀取文件內容怎么知道寫入文件的操作有沒有成功呢?我們可以用FB_FileOpen、FB_FileGets和FB_FileClose三個功能塊來獲取文件中的內容。為了避免覆蓋創建新文件和亂碼的情況,例程文件“TwinCATReadContentProject”(讀取文件內容例程)使用的文件打開模式為FOPEN_MODEREAD(只讀)。同時,設置了一個STRING類型的變量s_content,將功能塊中獨到的數據提取出來。(注:使用此例程前,需更改對應的AmsNetId,且需要先運行例程TwinCATWriteContentProject才能讀取到內容。如對應路徑文件名找不到,會報錯)FB_FileGets讀取字符串的功能塊FB_FileGets。輸入引腳在這里就不進行講解了,上文都已提及。輸出引腳中的bEOF則是一個檢測位:如果到達文件末尾,并且無法讀取更多數據字節,則輸出為True。如果可以讀取某些數據字節,則輸出為False。同時,在讀取之前,依然需要將文件打開,否則會在nErrId顯示1795的報錯。程序載入之后三個功能塊FB_FileOpen、FB_FileGets和FB_FileClose通過CASE語句和邏輯判斷依次執行。整個程序的觸發引腳為b_excute。補充文件內容所有人的成績不可能一次性上傳,更何況STRING數據類型本身大小也有限,假如需要補充新考生的成績該如何實現呢?這就需要FB_FileOpen、FB_FileWrite和FB_FileClose三個功能塊來實現。在例程文件“TwinCATAddContentProject”(補充文件內容例程)中,打開文件使用的模式依然是寫入時候的FOPEN_MODEAPPENDORFOPEN_MODEPLUS。(測試時需要注意STRING類型數據的格式和大小上限)(注:為了展示添加內容的效果,在使用前最好先運行例程TwinCATWriteContentProject,并修改AmsNetId)FB_FileWrite通過這個功能塊我們可以隨意在文件后面增加新的內容。使用時有兩個引腳需要注意,分別是pWriteBuff和cbWriteLen。前者指被寫入內容的地址,后者則是被寫入內容的字節大小。對此我們可以用ADR和SIZEOF函數來進行指針指向和讀取大小。補充寫入依然需要文件打開且支持寫入的前提,否則會在nErrId顯示1792的報錯。ADR()函數解析:/content/1033/tcplccontrol/925563403.html?id=6081196681883796967SIZEOF()函數解析:/content/1033/tc3_plc_intro/2528896907.html?id=1985493739426684680程序載入之后三個功能塊FB_FileOpen、FB_FileWrite、FB_FileClose通過CASE語句和邏輯判斷依次執行。整個程序的觸發引腳為b_excute。(注:寫入的功能塊默認字符串字節大小為81,為了顯示的一致性,建議在補充的內容后面加$L換行。否則81個字節之前沒有內容的空間會被空格取代。)復制源文件(新功能塊FB_FileCopy)為了防止文件的丟失,常常會備份文件。而備份文件最簡單的方式就是將目標文件復制多份。如何才能實現這個功能呢?配合FB_FileOpen、FB_FileRead、FB_FileWrite和FB_FileClose四個功能塊,我們可以通過例程“TwinCATCopyFileProject”創造一個新的功能塊FB_FileCopy。(注:使用前需保證有源文件,并更改AmsNetId和文件路徑,否則會報錯)FB_FileRead讀取文件內容的另一個功能塊為FB_FileRead。它與FB_FileGets實現的效果是不一樣的,不同的是它的讀取是通過指針的方式來實現(更靈活,也更強大)。使用之前需提前打開文件。在填寫引腳時,有兩個引腳需要注意,分別是pReadBuff和cbReadLen。這兩者與FB_FileWrite中的輸入引腳pWriteBuff和cbWriteLen相同。分別使用ADR和SIZEOF補充即可。整個功能塊內部的結構分為五步:1.初始化參數2.分別打開源文件和目標文件3.讀取源文件的內容4.寫入內容至目標文件5.復位完成之后便可在主程序里面調用了,使用時只需分別填寫初始系統和目標系統的AmsNetId、對應的文件路徑和名稱即可。載入之后將bExcute置位True,就可以在原來文件的下方出現一個新的文件,內容與前者一致。其他對文件以及文件夾的功能很多時候,由于積累的文件過多,會意外出現“文件名重復”的現象。這個時候應該怎么做?解決此問題的第一種方法為直接刪除舊文件,直接調用功能塊FB_FileDelete。FB_FileDelete刪除文件使用的功能塊為FB_FileDelete。它的引腳與FB_FileOpen幾乎一致,無非是少了一個nMode。需要注意的是,刪除前需要將文件關閉,并非在Windows中關閉,而是使用FB_FileClose進行關閉。否則,會在nErrId顯示1804報錯。第二種方則是重命名文件,需要調用功能塊FB_FileRename。FB_FileRename對文件進行重命名的功能塊為FB_FileRename。直接填寫引腳就可以使用了。sOldName為文件的舊名,而sNewName則為替換的新名。在使用時,需要先將文件close,否則會在nErrId顯示1804的報錯。在項目中,數據類型是多種多樣的,為了整理數據,往往需要建立不同的文件夾進行分類。分別可以調用FB_CreateDir和FB_RemoveDir進行新建和刪除文件夾的操作。FB_CreateDir如需創建新文件夾,可以使用功能塊FB_CreateDir。聲明調用之后只需要將文件名sPathName和對應路徑方式ePath填寫好,最后再啟動,對應目錄就會出現一個新的文件夾。FB_RemoveDir刪除文件夾使用的功能塊為FB_RemoveDir。使用方法與FB_CreateDir一致。如果刪除的文件夾不存在,會在nErrId顯示1804的報錯。以上舉例的功能都在例程“TwinCATOtherFunctionProject”中,這些功能塊使用起來無需搭配其他功能塊,使用起來非常簡單方便,將各個功能塊的觸發引腳置TRUE即可。文件管理功能塊在掉電保持中的應用掉電保持在工業生產中是一個非常實用的功能,倍福提供的方式有Persistent和Retain變量。但掉電之后的數據只能再次上電在TwinCAT中查看。怎么才能在外部進行查看呢?配合文件管理功能塊就能將其中的數據提取出來。例程“TwinCATWriteUPSDataProject”以軸的運動控制為例,一共包含四部分程序:1.運動控制程序(使能,運動功能塊)2.掉電保持檢測程序(CX5130UPS指令)3.文件管理程序(打開,寫入和關閉功能塊)和數據轉換程序。(注:使用前需更改相關硬件配置,否則無法正常運行程序。此外例程中的UPS指令只適用于CX51系列控制器,調試時需根據自己的控制器進行相關的更改)當程序載入時,可以先進行軸的運動調試。軸運動的同時,其實際位置被轉化為WSTRING類型的變量(中文顯示需要使用WSTRING),并與“軸的實際位置”拼接。由于txt文件是UTF8的格式,因此需要將帶中文的內容使用WSTRING_TO_UTF8()函數轉換格式。在軸運動的時候,將CX5130控制器斷電。功能塊FB_S_UPS_CX51x0檢測到供電電壓消失,立即將b_e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國自動切口去尾料機行業投資前景及策略咨詢研究報告
- 2025年中國皮形毯行業投資前景及策略咨詢研究報告
- 2025年中國煤氣節能器行業投資前景及策略咨詢研究報告
- 2025年中國柑桔黃酮行業投資前景及策略咨詢研究報告
- 2025年中國數顯紫外監測儀行業投資前景及策略咨詢研究報告
- 2025年中國圓鋼起重鉗行業投資前景及策略咨詢研究報告
- 2025年中國內絲管套行業投資前景及策略咨詢研究報告
- 廣東省粵西五校聯考2025屆化學高一下期末考試模擬試題含解析
- 四川省成都市外國語學校2025年高一化學第二學期期末達標檢測模擬試題含解析
- 大專國防教育課考試題及答案
- 人工智能基礎智慧樹知到答案章節測試2023年武漢學院
- 《廣播電視概論》考試復習題庫(200題)
- 配電室巡檢記錄表
- 卓越績效評價準則概述(專業性權威性實用性)
- GB/T 30142-2013平面型電磁屏蔽材料屏蔽效能測量方法
- GB/T 29894-2013木材鑒別方法通則
- 國資進場交易工作流程講座
- 當代法律英語翻譯全
- 制冷操作證培訓教材制冷與空調設備運行操作作業培訓教程課件
- 湖南省長沙市望城區2020-2021學年八年級下學期期末考試歷史試卷
- 煙葉烘烤調制理論考試試題
評論
0/150
提交評論