CODESYS寮鍙戞暀绋10-鏂囦欢璇诲啓锛圫ysFile搴擄級-CODESYS璧勬簮涓嬭浇鍖-閰峰痉缃 - CoDeSys杞欢鏁欑▼涓嬭浇,CoDeSys宸ユ帶璧勮闂ㄦ埛
HSC6490-cn涓浗鍒堕狅紝涓浗鑺瘇
鏌ョ湅: 844|鍥炲: 0

CODESYS寮鍙戞暀绋10-鏂囦欢璇诲啓锛圫ysFile搴擄級

[澶嶅埗閾炬帴]
  • TA鐨勬瘡鏃ュ績鎯
    鎱垫噿
    2017-11-9 20:49
  • 绛惧埌澶╂暟: 2 澶

    [LV.1]鍒濇潵涔嶅埌

    鍙戣〃浜 2023-4-12 22:39:38 | 鏄剧ず鍏ㄩ儴妤煎眰 |闃呰妯″紡

    浠婂ぉ缁х画鎴戜滑鐨勫皬鐧芥暀绋嬶紝鑰侀笩灏变笉瑕佸湪杩欐氮璐规椂闂翠簡

    鍓嶉潰涓鏈熸垜浠粙缁嶄簡CODESYS鐨勬枃浠舵搷浣滃簱CAA File銆傝繖涓鏈熶富瑕佷粙缁岰ODESYS鐨凷ysFile搴撴墍鍖呭惈鐨勬枃浠惰鍐欏姛鑳藉潡锛屼富瑕佸寘鎷枃浠惰矾寰勩佸悕绉般佸ぇ灏忕殑鑾峰彇浠ュ強鏂囦欢鐨勫垱寤恒佹墦寮銆佽銆佸啓銆佹嫹璐濆拰鍒犻櫎鍔熻兘绛夈

    涓銆丼ysFile搴撶畝浠

    涓庝笂涓鏈熶粙缁嶇殑鐩綍鍜屾枃浠舵搷浣滃簱CAA File涓嶅悓锛孲ysFile灞炰簬CODESYS姣旇緝搴曞眰鐨勫簱锛屽叾涓粨鏋勫拰鍔熻兘鍧楃殑瀹氫箟涓嶤璇█闈炲父鎺ヨ繎銆備娇鐢ㄨ搴撻渶瑕佸湪鈥滃簱绠$悊鍣ㄢ濅腑娣诲姞SysFile搴擄紝杩欓噷浣跨敤鐨勬槸3.5.15鐗堟湰銆

    CODESYS寮鍙戞暀绋10-鏂囦欢璇诲啓锛圫ysFile搴擄級-1.png

    闇瑕佹敞鎰忕殑鏄紝SysFile搴撲腑鎵鏈夊姛鑳藉潎涓哄嚱鏁帮紙FUNCTION锛夛紝涓嶤AA File搴撲腑鐨勫姛鑳藉潡锛團UNCTION_BLOCK锛夋槸涓嶅悓銆傚嚱鏁板彲浠ョ洿鎺ヤ娇鐢紝鑰屽姛鑳藉潡闇瑕佸厛澹版槑鍚庝娇鐢ㄣ傚洜涓篊ODESYS鐨勫嚱鏁板唴閮ㄧ殑鍙橀噺鍦ㄨ繍琛屽悗鏄笉浼氫繚鐣欑殑锛岃繖涓笌鍔熻兘鍧楁槸涓嶅悓銆備娇鐢ㄧ殑鏃跺欒鍒嗘竻妤氾紝閬垮厤鍥犱负鍒濆鐘舵佷笉鍚屽鑷寸殑闂銆

    浜屻丼ysFile搴撶殑涓昏鍔熻兘鍧

    鎻愪緵瀵硅繍琛屾椂绯荤粺鐨勬枃浠跺姛鑳界殑璁块棶銆備粎鑳借繘琛屾枃浠剁浉鍏崇殑鎿嶄綔銆

    1.鍩烘湰瀹氫箟

    锛1锛夋枃浠惰闂ā寮廇CCESS_MODE

    瀹氫箟鏂囦欢鎵撳紑鐨勬ā寮忋

    寰俊鍥剧墖_20230420131350.png

    娉ㄦ剰锛氬浜庢墍鏈*_PLUS妯″紡锛岃鍙栨枃浠跺悗锛屽彧鑳藉湪璋冪敤SysFileGetPos鎴朣ysFileSetPos鍚庢墠鑳借繘琛屽啓鍏ワ紒濡傛灉鍦⊿ysFileRead涔嬪悗绔嬪嵆璋冪敤SysFileWrite锛屽垯鏂囦欢鎸囬拡鍙兘浣嶄簬鏃犳晥浣嶇疆锛佹纭殑浣跨敤鏂瑰紡濡備笅锛

    SysFileRead();

    SysFileGetPos();

    SysFileWrite();

    锛2锛夋枃浠剁殑鏃堕棿鎴砈YS_FILETIME

    瀹氫箟鏂囦欢鐨勬椂闂存埑缁撴瀯銆

    tCreation锛氭枃浠跺垱寤烘椂闂淬

    tLastAccess锛氳闂枃浠剁殑鏃堕棿銆

    tLastModification锛氫笂娆′慨鏀圭殑鏃堕棿銆

    锛3锛夋枃浠剁姸鎬丼YS_FILE_STATUS

    瀹氫箟鎸囧畾鏂囦欢鐨勫疄闄呮枃浠剁姸鎬併

    寰俊鍥剧墖_20230420131407.png

    锛4锛夐敊璇爜瀹氫箟Errors

    姝ら敊璇爜瀹氫箟浣嶄簬CmpErrors搴撲腑锛屾枃浠惰鍐欎腑甯哥敤鐨勫涓嬭〃鎵绀猴細

    寰俊鍥剧墖_20230420131421.png

    鐢变簬閿欒瀹氫箟杈冨锛岃繖閲屽彧鍒椾簡姣旇緝甯哥敤鐨勫嚑涓紝涓婅〃涓病鏈夊垪鍑虹殑鍙互鍙傝冨畼鏂规枃妗c

    2.鏂囦欢鎿嶄綔鍑芥暟

    鏂囦欢鎿嶄綔鍑芥暟濡備笅琛細

    寰俊鍥剧墖_20230420131457.png

    3.甯哥敤鐨勫嚱鏁颁粙缁

    SysFile搴撴枃浠舵搷浣滃嚱鏁扮殑鍙傛暟姣旇緝绫讳技锛屼笅闈㈠鍑犱釜甯哥敤鐨勫嚱鏁拌繘琛屼粙缁嶃

    锛1锛塖ysFileOpen

    szFile锛氭枃浠跺悕绉般傚彲浠ュ寘鍚粷瀵规垨鐩稿璺緞锛屾敞鎰忚矾寰勯渶瑕佺敤鏂滄潬鈥/鈥濊〃绀猴紝涓嶈兘鐢ㄥ弽鏂滄潬鈥淺鈥濄

    am锛氭墦寮妯″紡锛岀被鍨嬩负SysFile.ACCESS_MODE銆

    pResult锛氳繑鍥炶繍琛岀郴缁熼敊璇唬鐮侊紝绫诲瀷涓篜OINTER TO RTS_IEC_RESULT锛屽惈涔夊湪CMPErrors搴撲腑瀹氫箟锛岃绗竴閮ㄥ垎浠嬬粛銆

    杩斿洖鍊硷細鎴愬姛鍒欒繑鍥炴枃浠跺彞鏌勶紝绫诲瀷涓篠ysFile.RTS_IEC_HANDLE锛屽け璐ュ垯杩斿洖RTS_INVALID_HANDLE銆

    锛2锛塖ysFileClose銆丼ysFileFlush

    hFile锛氭枃浠跺彞鏌勶紝绫诲瀷涓篠ysFile.RTS_IEC_HANDLE銆

    杩斿洖鍊硷細杩斿洖杩愯绯荤粺閿欒浠g爜锛岀被鍨嬩负RTS_IEC_RESULT銆

    锛3锛塖ysFileRead鍜孲ysFileWrite

    hFile锛氭枃浠跺彞鏌勩

    pbyBuffer锛氭寚鍚戣鎴栬呭啓缂撳啿鍖洪鍦板潃锛岀被鍨嬩负POINTER TO BYTE銆

    ulSize锛氶渶瑕佽鍙栨垨鍐欏叆鐨勫瓧鑺傛暟銆傛敞鎰忓繀椤诲皬浜庣瓑浜庣紦鍐插尯灏哄銆

    pResult锛氳繑鍥炶繍琛岀郴缁熼敊璇唬鐮併

    杩斿洖鍊硷細鎴愬姛鍒欒繑鍥炶鍙栨垨鍐欏叆鐨勫瓧鑺傦紝澶辫触鍒欒繑鍥0銆傛暟鎹被鍨嬩负_XWORD锛屽疄闄呬笌DWORD绛変环銆

    锛4锛塖ysFileGetSize

    szFileName锛氭枃浠跺悕绉

    pResult锛氳繑鍥炶繍琛岀郴缁熼敊璇唬鐮併

    杩斿洖鍊硷細鏂囦欢灏哄銆

    锛5锛塖ysFileGetTime

    szFileName锛氭枃浠跺悕绉

    ptFileTime锛氭枃浠舵椂闂达紝绫诲瀷涓篜OINTER TO SYS_FILETIME銆

    杩斿洖鍊硷細杩斿洖杩愯绯荤粺閿欒浠g爜锛岀被鍨嬩负SysFile.RTS_IEC_RESULT銆

    娉ㄦ剰锛氫互涓婂嚱鏁颁腑鍑℃槸绫诲瀷涓篟TS_IEC_RESULT鐨勮繑鍥炲硷紝濡傛灉鏄湪鍑芥暟涓綔涓鸿緭鍏ワ紝鍒欓渶瑕佸畾涔変负鎸囬拡POINTER TO RTS_IEC_RESULT鎴栬呬娇鐢ˋDR()鏉ヨ幏鍙栭敊璇爜锛涘鏋滀綔涓哄嚱鏁拌繑鍥炲硷紝鍒欎负SysFile.RTS_IEC_RESULT銆

    涓夈丼ysFile搴撲娇鐢ㄧず渚

    SysFile搴撶殑鍑芥暟鍙互鐩存帴涓璧烽『搴忎娇鐢紝涔熷彲浠ュ儚CAA File搴撲腑鐨勫姛鑳藉潡涓鏍锋寜鐘舵佹満鐨勬柟寮忚繘琛屾搷浣溿備互涓嬬ず渚嬩负鏂囦欢鍐欏叆鐨勫垎姝ユ搷浣溿傛湰娆℃祴璇曚娇鐢ㄧ殑鎺у埗鍣ㄦ槸绂惧窛鐨凲0锛屼娇鐢ㄥ叾瀹冩帶鍒跺櫒鏃堕渶瑕佹纭寚瀹氬彲杩涜璇诲啓鎿嶄綔鐨勭洰褰曚綅缃

    绋嬪簭鍙橀噺瀹氫箟濡備笅锛

    PROGRAM testSysFile

    VAR

           bExecute : BOOL;

           szFileName    : STRING:='/testfile.txt';

           pbyBuffer      : POINTER TO BYTE;

           ulSize            : DWORD;

           ErrorCode      : INT;

           Done             : BOOL;

           stContent      : STRING:='hello everyone!';

           Mode            : SysFile.ACCESS_MODE := 1;      //0-AM_READ; 1-AM_WRITE; 2-AM_APPEND; 3-AM_READ_PLUS; 4-AM_WRITE_PLUS; 5-AM_APPEND_PLUS

           iStep      : INT := 0;      //杩愯浆娴佺▼

           OP_TRIG : R_TRIG;

           bError            : BOOL;

           hFile       : SysFile.RTS_IEC_HANDLE;

           pRes              : SysFile.RTS_IEC_RESULT;

           iRet        : DWORD;

    END_VAR

    绋嬪簭濡備笅锛

    bExecute:=TRUE;

    OP_TRIG(CLK := bExecute);

    pbyBuffer:=ADR(stContent);

    ulSize:=SIZEOF(stContent);

    IF OP_TRIG.Q AND iStep=0 THEN

           iStep := 1;

    END_IF

    CASE iStep OF

    0:

           IF bExecute=FALSE THEN

                  Done := FALSE;

                  ErrorCode := 0;

                  bError := FALSE;

           END_IF

    1:

           hFile := SysFileOpen(szFileName, Mode, ADR(pRes)); //鎵撳紑鏂囦欢

           IF (pRes<>0 OR hFile=SysFile.RTS_INVALID_HANDLE) THEN

                  bError := TRUE;

           ELSE

                  iStep := 2;

           END_IF

    2:

           iRet:=SysFileWrite(hFile, pbyBuffer, ulSize, ADR(pRes)); //鍐呭鍐欏叆鏂囦欢

           IF (iRet=0) THEN

                  SysFileClose(hFile);

                  bError := TRUE;

           ELSE

                  iStep := 3;

           END_IF

    3:

           pRes:=SysFileFlush(hFile); //缂撳瓨鍐呭鍐欏叆鏂囦欢

           IF (pRes=0) THEN

                  iStep := 4;

           ELSE

                  SysFileClose(hFile);

                  bError := TRUE;

           END_IF

    4:

           pRes:=SysFileClose(hFile); //鍏抽棴鏂囦欢

           IF pRes=0 THEN

                  Done := TRUE;

                  iStep := 0;

           ELSE

                  bError := TRUE;

           END_IF

    END_CASE

    //閿欒妫鏌

    IF bError THEN

           iStep := 0;

           ErrorCode := 1;

    END_IF

    娉ㄦ剰锛歋ysFile搴撶殑鏂囦欢璇诲啓鎿嶄綔鏄笉鑳借鍏跺畠鍛ㄦ湡浠诲姟涓柇鐨勩傚綋闇瑕佽鍐欑殑鏂囦欢杈冨ぇ鏃讹紝闇瑕佺殑鏃堕棿浼氭瘮杈冮暱銆傝繖鏃跺欓渶瑕佹妸杩愯璇诲啓绋嬪簭鐨勪换鍔″懆鏈熻皟闀匡紝淇濊瘉璇诲啓鎿嶄綔鑳藉椤哄埄瀹屾垚銆傚鏋滀换鍔℃椂闂翠笉澶燂紝鍙兘浼氬嚭鐜版枃浠舵病鏈夎瀹屾垨鑰呭啓瀹岀殑鎯呭喌銆

    鍥涖佺粨璁

    SysFile搴撳疄闄呬笂灞炰簬杩愯绯荤粺鐨勬枃浠舵搷浣滃嚱鏁帮紝涓嶇鏄搷浣滄柟寮忚繕鏄弬鏁板畾涔夐兘涓嶤璇█鐨勫搴斿嚱鏁扮被浼硷紝瀵笴璇█姣旇緝鐔熸倝鐨勬湅鍙嬪簲璇ュ緢瀹规槗涓婃墜銆傚彟澶栭渶瑕佹敞鎰忕殑鏄簳灞傛搷浣滃嚱鏁颁笌骞冲彴鐩稿叧鎬ц緝澶э紝姣斿璇诲啓鏃堕棿涓庢墍浣跨敤鐨勭殑鎺у埗鍣ㄥ钩鍙板叧绯诲緢澶э紝鏈濂芥槸鍦ㄨ嚜宸变娇鐢ㄧ殑骞冲彴涓婂仛涓浜涜鍐欐祴璇曞悗璁剧疆鍚堢悊鐨勪换鍔″懆鏈燂紝閬垮厤鍑虹幇鏂囦欢璇诲啓涓嶅畬鏁撮棶棰樸

    鍏充簬SysFile搴撹鍐欏ぇ鏂囦欢鐨勯棶棰橈紝杩樻湁涓绉嶆濊矾鏄妸浠ヤ笂浠g爜灏佽鎴愬姛鑳藉潡锛屽湪璇绘垨鑰呭啓杩囩▼涓妸澶ф枃浠舵媶鍒嗘垚灏哄杈冨皬鐨勫潡锛岄氳繃鍒嗘澶氭璇诲啓锛屾瘡娆¤繘鍏ヨ鍐欐祦绋嬫椂璇绘垨鑰呭啓涓鍧楋紝鐩磋嚦鎵鏈夊唴瀹硅鍐欏畬鎴愩傚綋鐒惰繖涓祦绋嬩細澶嶆潅涓浜涳紝瀚岄夯鐑︾殑杩樻槸鐩存帴鐢–AA File搴撴潵瀹炵幇鍚~~^-^銆
    鈥斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
    鐗堟潈澹版槑锛氭湰鏂囦负CSDN鍗氫富銆--鑾悕--銆嶇殑鍘熷垱鏂囩珷锛岄伒寰狢C 4.0 BY-SA鐗堟潈鍗忚锛岃浆杞借闄勪笂鍘熸枃鍑哄閾炬帴鍙婃湰澹版槑銆
    鍘熸枃閾炬帴锛歨ttps://blog.csdn.net/halps/article/details/128974489
    +10
    鎵撹祻榧撳姳涓涓嬶紒
    鍥炲

    浣跨敤閬撳叿 涓炬姤

    鎮ㄩ渶瑕佺櫥褰曞悗鎵嶅彲浠ュ洖甯 鐧诲綍 | 绔嬪嵆娉ㄥ唽 鏂版氮寰崥鐧婚檰

    鏈増绉垎瑙勫垯

    椤堕儴qrcode搴曢儴
    鍏虫敞閰峰痉缃戣闃呭彿锛岃幏鍙栨洿澶氳祫璁紒

    QQ|灏忛粦灞|鎵嬫満鐗|Archiver|閰峰痉璁哄潧 ( 鑻廔CP澶16065247鍙-1 )|缃戠珯鍦板浘

    GMT+8, 2024-5-18 14:33 , Processed in 0.363869 second(s), 59 queries .

    閰峰痉缃

    © 2001-2013 Hicodesys. 鎶鏈敮鎸 by 閰峰痉缃

    蹇熷洖澶 杩斿洖椤堕儴 杩斿洖鍒楄〃