日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PLC读取PC文件(汇川PLC读取电脑上的文件)

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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读取电脑上的文件)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。