PLC读取PC文件(汇川PLC读取电脑上的文件)
qq群里老被人吊,看不起玩C#的,我只是業余看看下位機,發現匯川PLC是真的香,支持G代碼,帶的ecat軸數也多。就是新的購買渠道不行。?學習資料還有些欠缺。比如PLC去讀取電腦上的G代碼文件。每次拷貝下去很麻煩。下面我寫個帖子:PLC控制電腦在D盤:打開文件,讀寫文件,刪除文件,關閉文件。
常用函數庫名稱:SysFile/SysDir/File Access? ? ??
1打開文件:?
sysfile和systype這2個文件必須要裝?
高級》sysfile? ? ? 基礎文件
雙擊》再裝個systype? ? ? ? ? 基礎數據類型
這2文件裝好后,就可以準備干活了,來看下函數:?ST空白行處》右擊》輸入助手
?1:輸出的是結構體,你就當她是對象,潘金蓮來了(hFile)。。。
234:這3個是輸入參數:2文件路徑,3文件操作模式,4錯誤日志
這里要注意:文件路徑不能有反斜杠\?操作模式要記住名字,一會要用,錯誤日志是用來判斷錯誤的。
在plc里寫ST程序:?
// PC端:打開文件 IF key THEN // key是使能,調用方法前加個 閥門keyhFile := SysFileOpen(szFile:='D:/cnc/weixiudiangong.txt' //返回的是文件對象,szFile是文件路徑, am:= ACCESS_MODE.AM_WRITE_PLUS //plus是找不到文件的話,會新建這個文件,再打開, pResult:= udiopenerror1 // 這個是錯誤日志,用于判斷文件操作是否遇到錯誤 );; ELSE; END_IF// SysFileOpen(szFile:= , am:= , pResult:= )?plc程序和C語言最大的區別就是,plc的函數全往main里面扔,靠bool標志位控制函數是否運行,看下效果:
?
和預想的一樣,在我筆記本D盤新建了,維修電工的文件。
文件操作模式:追加,讀,寫?
2讀取文件:
// 中文有bugIF Test THEN szTestLine := 'This is the first line.';hFile := SysFileOpen(szFile:='D:/Test/Test.txt', am:=ACCESS_MODE.AM_WRITE_PLUS, pResult:=ADR(udiOpenError1)); IF hFile <> RTS_INVALID_HANDLE THEN//udiPosError := SysFileGetPos(hFile:=hFile, pulPos:=ADR(udiPos));udiWrite := SysFileWrite(hFile:=hFile, pbyBuffer:=ADR(szTestLine), ulSize:=INT_TO_UDINT(LEN(szTestLine)), pResult:=ADR(udiWriteError1)); udiPosError2 := SysFileSetPos(hFile:=hFile , ulOffset:= 0 );udiRead := SysFileRead(hFile:=hFile , pbyBuffer:=ADR(szReadLine) , ulSize:=SIZEOF(szReadLine) , pResult:= udiWriteError1); udiCloseError1 := SysFileClose(hFile:=hFile);END_IFTest:=FALSE; END_IF PROGRAM PLC_PRG VARszTestLine: STRING(INT#128);szReadLine: STRING(INT#128);hFile : RTS_IEC_HANDLE := RTS_INVALID_HANDLE;udiOpenError1: RTS_IEC_RESULT;udiPosError: UDINT;udiPos: __XWORD;udiWrite: __XWORD;udiWriteError1: RTS_IEC_RESULT;udiCloseError1: UDINT;Test: BOOL;udiPosError2: UDINT;udiRead: __XWORD;udiReadError1: POINTER TO RTS_IEC_RESULT; END_VAR解決bug:
// 中文 // 讀取文件 電腦D盤 DGcnc文件(電工文件) IF dk打開文件 THEN//打開文件 DGcnc文件(電工文件) ACCESS_MODE.AM_READ_PLUSDGcnc := SysFile.SysFileOpen(szFile:='D:/cnc/DGcnc.txt' , am:=ACCESS_MODE.AM_WRITE_PLUS , pResult:=rz錯誤日志 );;IF DGcnc <> RTS_INVALID_HANDLE THEN // 不是-1時(文件打開成功)// 讀 // SysFile.SysFileRead(hFile:=DGcnc , pbyBuffer:= ADR(rxbuff) , ulSize:=200 , pResult:= rz錯誤日志 );// 寫len長度 :=SIZEOF (szTestLine);szTestLine := '維修電工到此一游!';SysFile.SysFileWrite(hFile:= DGcnc , pbyBuffer:= ADR( (szTestLine) ), ulSize:=INT_TO_UDINT(LEN(szTestLine)), pResult:= rz錯誤日志 );// 寫追加// 刪// 關閉文件SysFile.SysFileClose(hFile:= DGcnc);;ELSERETURN;//打開文件失敗,退出END_IF; ELSE; END_IF還得編碼轉換?
//=======================================================
am:= ACCESS_MODE控制文件的操作模式:plus是寫不了就新建這個文件
高級》file access
?雙擊》再裝個cmperrors
雙擊》再裝個sysdir? ? ?這個是文件目錄管理(視頻是這么說的)??
雙擊? ?SysFile ?
?
File Access是同步的,用這個。SysFile是異步的,且不能使用反斜杠。
access需要實例化,sysfile直接拖入就行,資料可能有錯,sysfile不能使用反斜杠? \? ??
提示無該變量:添加SysTypes Interfaces函數庫,還有CmpErrors,3.3.1.40? ??
?旁擊
?
全局變量,沒有的話,按提示新建。?
//文件路徑 wenjian文件路徑 : string := 'D:/cnc';1開始調用庫:
空行》右擊》輸入助手》
雙擊
函數就出來了?
PROGRAM PLC_PRG VARszTestLine: STRING(INT#128);szReadLine: STRING(INT#128);hFile : RTS_IEC_HANDLE := RTS_INVALID_HANDLE;udiOpenError1: RTS_IEC_RESULT;udiPosError: UDINT;udiPos: __XWORD;udiWrite: __XWORD;udiWriteError1: RTS_IEC_RESULT;udiCloseError1: UDINT;Test: BOOL;udiPosError2: UDINT;udiRead: __XWORD;udiReadError1: POINTER TO RTS_IEC_RESULT; END_VAR IF Test THEN szTestLine := 'This is the first line.';hFile := SysFileOpen(szFile:='D:/Test/Test.txt', am:=ACCESS_MODE.AM_WRITE_PLUS, pResult:=ADR(udiOpenError1)); IF hFile <> RTS_INVALID_HANDLE THEN//udiPosError := SysFileGetPos(hFile:=hFile, pulPos:=ADR(udiPos));udiWrite := SysFileWrite(hFile:=hFile, pbyBuffer:=ADR(szTestLine), ulSize:=INT_TO_UDINT(LEN(szTestLine)), pResult:=ADR(udiWriteError1)); udiPosError2 := SysFileSetPos(hFile:=hFile , ulOffset:= 0 );udiRead := SysFileRead(hFile:=hFile , pbyBuffer:=ADR(szReadLine) , ulSize:=SIZEOF(szReadLine) , pResult:= udiWriteError1); udiCloseError1 := SysFileClose(hFile:=hFile);END_IFTest:=FALSE; END_IF文件操作篇:3、基礎內容-文件操作函數 - 中型PLC - 匯川技術官網-水滴社區 - Powered by Discuz!
庫核對老出錯,多裝了庫,自己去這網頁下載文件。
總結
以上是生活随笔為你收集整理的PLC读取PC文件(汇川PLC读取电脑上的文件)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言标准库 SOCKET,[转载] 基
- 下一篇: SEO基础知识简介(一)