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

CODESYS寮鍙戞暀绋9-鏂囦欢璇诲啓锛圕AA File搴擄級

[澶嶅埗閾炬帴]

璇ョ敤鎴蜂粠鏈鍒

鍙戣〃浜 2023-4-12 22:57:22 | 鏄剧ず鍏ㄩ儴妤煎眰 |闃呰妯″紡
浠婂ぉ缁х画鎴戜滑鐨勫皬鐧芥暀绋嬶紝鑰侀笩灏变笉瑕佸湪杩欐氮璐规椂闂翠簡

鍓嶉潰涓鏈熸垜浠粙缁嶄簡CODESYS鐨勫畾鏃跺櫒鍙婅Е鍙戠浉鍏崇殑鍔熻兘鍧椼傝繖涓鏈熶富瑕佷粙缁岰ODESYS鐨凜AA.File搴撲腑鐨勭洰褰曞拰鏂囦欢璇诲啓鍔熻兘鍧楋紝涓昏鍖呮嫭鏂囦欢璺緞銆佸悕绉般佸ぇ灏忕殑鑾峰彇浠ュ強鏂囦欢鐨勫垱寤恒佹墦寮銆佽銆佸啓銆佹嫹璐濆拰鍒犻櫎鍔熻兘绛夈

涓銆佹枃浠跺簱绫诲瀷绠浠

鏂囦欢璇诲啓鏈変袱绉嶅簱锛欳AA File锛團ile Access锛夊簱鍜孲ysFile搴撱

1.CAA File锛團ile Access锛

CAA File搴撳寘鍚敤浜庤闂枃浠剁洰褰曞拰鏂囦欢鐨勫姛鑳藉潡銆

瀵逛簬3.5.17浠ュ墠鐨勭増鏈紝閫氬父鏄娇鐢–AA File搴撱傜敱浜嶤AA File搴撲腑浣跨敤鐨勯儴鍒嗙被鍨嬪畾涔夊湪鍙﹀涓涓簱CAA Types Extern涓紝鍥犳浣跨敤鏃惰繕闇瑕佸寘鍚搴撱

鍦3.5.17鍙婁互鍚庣増鏈紝鐩存帴浣跨敤File Access鍗冲彲锛屽涓嬪浘鎵绀恒

CODESYS寮鍙戞暀绋9-鏂囦欢璇诲啓锛圕AA File搴擄級-1.png

2.SysFile

SysFile灞炰簬CODESYS姣旇緝搴曞眰鐨勫簱锛屽嚱鏁板強鍔熻兘涓嶤璇█闈炲父鎺ヨ繎銆傚疄闄呬笂CAA File搴曞眰涔熸槸璋冪敤璇ュ簱鏉ュ疄鐜扮殑銆

浜屻丆AA.File搴撲粙缁

CAA.File搴撳寘鍚敤浜庤闂洰褰曞拰鏂囦欢鐨勬搷浣溿

1.鏋氫妇瀹氫箟

锛1锛夋枃浠跺睘鎬у畾涔堿TTRIB

瀹氫箟GetAttribute鍔熻兘鍧楄幏鍙栫殑鏂囦欢灞炴у笺

寰俊鍥剧墖_20230420125908.png

锛2锛夋枃浠惰闂ā寮廙ODE

瀹氫箟file.Open鍔熻兘鍧楁墦寮鏂囦欢鐨勮闂ā寮忋

寰俊鍥剧墖_20230420125938.png

锛3锛夐敊璇爜瀹氫箟ERROR

瀹氫箟鍦ㄥ鐞咰AA_File.library鐨勫嚱鏁版椂鍙兘浼氬嚭鐜伴敊璇笺

寰俊鍥剧墖_20230420130014.png

璇村疄璇濓紝涓婅〃涓畾涔夌殑寰堝閿欒鎴戠敤浜嗚繖涔堜箙涔熸病纰板埌杩囷紝甯歌鐨勫簲璇ユ槸鏍囩矖鐨勯偅鍑犱釜銆

鍙﹀闇瑕佹敞鎰忕殑鏄紝浠ヤ笂鍑犱釜鏋氫妇瀹氫箟閮介渶瑕侀氳繃鍏ㄥ眬鍙橀噺鍚嶁淔ILE.xxx鈥濇潵璁块棶锛屾瘮濡傚彧璇绘枃浠跺睘鎬ц鍐欎负FILE.ATTRIB.READONLY锛屽惁鍒欑紪璇戞椂浼氭姤鏍囪瘑鏈畾涔夐敊璇

2.FILE_DIR_ENTRY缁撴瀯

淇濆瓨鐩綍鏉$洰鎴栨枃浠剁殑淇℃伅銆

sEntry锛欳AA.FILENAME锛屾枃浠舵垨鐩綍鍚嶃

szSize锛欳AA.SIZE锛屾枃浠跺ぇ灏忋

xDirectory锛歍RUE涓虹洰褰, FALSE涓烘枃浠躲

xExclusive锛氭枃浠惰闂ā寮忥紝TRUE涓虹嫭鍗犺闂ā寮忥紝FALSE涓哄涓疄渚嬪彲浠ュ悓鏃惰闂

dtLastModification锛氫笂娆′慨鏀圭殑鏃ユ湡鍜屾椂闂达紝鏃ユ湡鏃堕棿鏍煎紡涓2023-01-17-11:13:00

娉ㄦ剰锛氫娇鐢ㄦ湰缁撴瀯闇瑕侀氳繃FILE.FILE_DIR_ENTRY瀹炵幇銆

3.鐩綍鎿嶄綔鍔熻兘鍧

鐩綍鎿嶄綔鍔熻兘鍧楋細

寰俊鍥剧墖_20230420130031.png

4.鏂囦欢鎿嶄綔鍔熻兘鍧

鏂囦欢鎿嶄綔鍔熻兘鍧楀涓嬭〃鎵绀猴細

寰俊鍥剧墖_20230420130050.png

5.鍔熻兘鍧椾富瑕佸弬鏁

鐢变簬鍚勪釜鍔熻兘鍧楃殑鍙傛暟鍜屾搷浣滄ā寮忓熀鏈被浼硷紝鍚勪釜鍔熻兘鍧楃殑澶ч儴鍒嗗弬鏁伴兘鏄被浼肩殑锛岃繖閲屽氨涓嶉拡瀵规瘡涓姛鑳藉潡鐨勫弬鏁颁竴涓璇存槑銆

xExecute锛氳緭鍏ワ紝涓婂崌娌垮紑濮嬫墽琛岋紝涓嬮檷娌垮浣嶈緭鍑恒傚鏋滃湪鍔熻兘鍧楀畬鎴愬叾鍔ㄤ綔涔嬪墠鍑虹幇涓嬮檷娌匡紝鍒欒緭鍑轰互閫氬父鐨勬柟寮忔搷浣滐紝骞朵笖浠呭湪鍔ㄤ綔瀹屾垚鎴栧彂鐢熼敊璇椂澶嶄綅銆傚湪杩欑鎯呭喌涓嬶紝瀵瑰簲鐨勮緭鍑哄硷紙xDone锛寈Error锛夊湪杈撳嚭绔彧鎸佺画涓涓懆鏈熴

xAbort锛氳緭鍏ワ紝TRUE鍒欑珛鍗冲仠姝㈡搷浣滐紝骞跺皢鎵鏈夎緭鍑虹疆涓哄垵濮嬪笺

sDirName锛氳緭鍏ワ紝寰呮搷浣滅洰褰曞悕绉般

sFileName锛氳緭鍏ワ紝寰呮搷浣滅殑鏂囦欢鍚嶇О銆

eFileMode锛氳緭鍏ワ紝鏂囦欢鎿嶄綔妯″紡锛岀敱FILE.MODE瀹氫箟銆

udiTimeOut锛氳緭鍏ワ紝瀹氫箟鍔熻兘鍧楀洜瓒呮椂鑰屼腑姝㈡搷浣滃苟杈撳嚭閿欒娑堟伅鐨勬椂闂达紝鍗曚綅碌s銆

hDir锛氬緟鎿嶄綔鐨勭洰褰曞彞鏌勩

hFile锛氬緟鎿嶄綔鐨勬枃浠跺彞鏌勩

pBuffer锛氳鍙栨垨鍐欏叆鏁版嵁缂撳啿鍖虹殑棣栧湴鍧锛岄氳繃ADR鑾峰彇銆

szBuffer锛氳璇诲彇鐨勫瓧鑺傛暟銆

xOverWrite锛氳緭鍏ワ紝TRUE涓鸿鐩栧凡瀛樺湪鐨勬枃浠舵垨鐩綍锛孎ALSE涓烘姤閿欍

xDone锛氳緭鍑猴紝TRUE涓烘搷浣滄垚鍔熴

xAborted锛氳緭鍑猴紝TRUE涓烘搷浣滆鐢ㄦ埛涓銆

xEOF锛氳緭鍑猴紝TRUE涓鸿揪鍒版枃浠剁粨灏俱

xBusy锛氳緭鍑猴紝TRUE涓哄姛鑳藉潡姝e湪鎵ц涓

xError锛氳緭鍑猴紝TRUE涓哄彂鐢熼敊璇紝鍔熻兘鍧楃粓姝㈣繍琛岋紱FALSE涓烘棤閿欒銆

eError锛氳緭鍑猴紝閿欒ID锛岀敱ERROR瀹氫箟銆

eFileAttrib锛氳緭鍑猴紝鏂囦欢灞炴э紝鐢盕ILE.ATTRIB瀹氫箟銆

uidPos锛氳緭鍑猴紝鏂囦欢鎸囬拡鍋忕Щ浣嶇疆锛堢浉瀵逛簬鏂囦欢寮澶寸殑瀛楄妭鏁帮級銆

szSize锛氳緭鍑猴紝鏂囦欢瀹為檯澶у皬锛屽崟浣嶄负瀛楄妭銆

dtLastModification锛氫笂娆′慨鏀圭殑鏃ユ湡鍜屾椂闂达紝鏍煎紡涓2023-02-03-16:23:00

涓夈佷娇鐢ㄧず渚

杩欓噷闇瑕佹敞鎰忕殑鏄紝鍦ㄦ棭鏈熺増鏈殑CODESYS瀹樻柟绀轰緥涓紝CAA.HANDLE銆丆AA.FILENAME銆丆AA.SIZE绛夊彉閲忔槸浠AA_HANDLE銆丆AA_FILENAME銆丆AA_SIZE鐨勫舰寮忓嚭鐜扮殑锛屽叿浣撲粠鍝釜搴撶増鏈紑濮嬫敼鐨勶紝鎴戜篃璁颁笉寰椾簡锛屾讳箣鏀硅繃鏉ヤ互鍚庝娇鐢ㄦ柊鐗堟湰鐨勫簱灏变笉浼氭姤閿欎簡~~銆

1.鐩綍鎿嶄綔浣跨敤绀轰緥

浠ヤ笅涓虹洰褰曟搷浣滅殑绀轰緥锛屽叾鍔熻兘鏄湪鎺у埗鍣ㄦ寚瀹氱洰褰曚笅寤虹珛鏂扮洰褰曪紝鐒跺悗瀵圭洰褰曡繘琛屾墦寮銆佽幏鍙栫洰褰曞睘鎬у垪琛ㄣ佸叧闂佹嫹璐濄侀噸鍛藉悕鍜屽垹闄ゆ搷浣溿傞渶瑕佹敞鎰忕殑鏄繖浜涙搷浣滈渶瑕佸湪瀹為檯鐨勬帶鍒跺櫒涓婃墠鑳芥墽琛岋紝浠跨湡妯″紡涓嬩細鎶5113鍙烽敊璇傛湰娆℃祴璇曚娇鐢ㄧ殑鎺у埗鍣ㄦ槸绂惧窛鐨凲0锛屼娇鐢ㄥ叾瀹冩帶鍒跺櫒鏃堕渶瑕佹纭寚瀹氬彲杩涜璇诲啓鎿嶄綔鐨勭洰褰曚綅缃

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

PROGRAM testDir

VAR

       xDirInit:       BOOL := FALSE;

    uiDirState:     UINT := 0;

    sDirNewName:    CAA.FILENAME:='flashfiles\TestDirectory';

    sDirNextName:   CAA.FILENAME:='flashfiles\NewDirectory';

    hDir:         CAA.HANDLE;

    deNewDirectory: FILE.FILE_DIR_ENTRY;

       eError:                  FILE.ERROR;

    fDirCreate:     FILE.DirCreate;

    fDirOpen:       FILE.DirOpen;

    fDirClose:      FILE.DirClose;

    fDirList:       FILE.DirList;

       fDirCopy:       FILE.DirCopy;

    fDirRename:     FILE.DirRename;

    fDirRm:         FILE.DirRemove;

END_VAR

绋嬪簭濡備笅锛

IF NOT xDirInit THEN

    fDirCreate(xExecute:=FALSE);

    fDirClose(xExecute:=FALSE);

    fDirList(xExecute:=FALSE);

    fDirRm(xExecute:=FALSE);

    xDirInit:=TRUE;

    uiDirState:=0;

ELSE

    CASE uiDirState OF

    0: (* 鍒涘缓鏂扮洰褰 *)

        fDirCreate.sDirName:=sDirNewName;

        fDirCreate.xParent:=FALSE;

        fDirCreate(xExecute:=TRUE);

        IF fDirCreate.xDone THEN

            uiDirState:=1;

        END_IF

        IF fDirCreate.xError THEN (* 閿欒澶勭悊*)

                     eError:=fDirCreate.eError;

        END_IF

    1: (* 鎵撳紑鐩綍 *)

        fDirOpen.sDirName:=sDirNewName;

        fDirOpen(xExecute:=TRUE);

        IF fDirOpen.xDone THEN

            hDir := fDirOpen.hDir;

            uiDirState:=2;

        END_IF

        IF fDirOpen.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fDirOpen.eError;

        END_IF

    2: (* 鑾峰彇鐩綍灞炴у垪琛 *)

        fDirList.hDir:=hDir;

        fDirList(xExecute:=TRUE);

        IF fDirList.xDone THEN

            deNewDirectory.sEntry :=fDirList.deDirEntry.sEntry;

            deNewDirectory.szSize :=fDirList.deDirEntry.szSize;

            deNewDirectory.xDirectory :=fDirList.deDirEntry.xDirectory;

            deNewDirectory.xExclusive :=fDirList.deDirEntry.xExclusive;

            deNewDirectory.dtLastModification :=fDirList.deDirEntry.dtLastModification;

            uiDirState:=3;

        END_IF

        IF fDirOpen.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fDirList.eError;

        END_IF

    3: (* 鍏抽棴鐩綍 *)

        fDirClose.hDir:=hDir;

        fDirClose(xExecute:=TRUE);

        IF fDirClose.xDone THEN

            uiDirState:=4;

        END_IF

        IF fDirClose.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fDirClose.eError;

        END_IF

       4: (* 鐩綍鎷疯礉 *)

        fDirCopy.sDirNameSource:=sDirNewName;

        fDirCopy.sDirNameDest:='flashfiles\TestDirectory1';

        fDirCopy(xExecute:=TRUE);

        IF fDirCopy.xDone THEN

            uiDirState:=5;

        END_IF

        IF fDirCopy.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fDirCopy.eError;

        END_IF

    5: (* 鐩綍閲嶅懡鍚 *)

        fDirRename.sDirNameOld:=sDirNewName;

        fDirRename.sDirNameNew:=sDirNextName;

        fDirRename(xExecute:=TRUE);

        IF fDirRename.xDone THEN

            uiDirState:=6;

        END_IF

        IF fDirRename.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fDirRename.eError;

        END_IF

    6: (* 鍒犻櫎鐩綍 *)

        fDirRm.sDirName:=sDirNextName;

        fDirRm.udiTimeOut:=100000;      (* 瓒呮椂鏃堕棿 100ms *)

        fDirRm.xRecursive:=FALSE;

        fDirRm(xExecute:=TRUE);

        IF fDirRm.xDone THEN

            uiDirState:=7;

        END_IF

        IF fDirRm.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fDirRm.eError;

        END_IF

    7: (* 绀轰緥缁撴潫 *)

    END_CASE

END_IF

2.鏂囦欢鎿嶄綔浣跨敤绀轰緥

浠ヤ笅涓烘枃浠舵搷浣滅殑绀轰緥锛屽叾鍔熻兘鏄湪鎺у埗鍣ㄦ寚瀹氱洰褰曚笅寤虹珛鏂版枃浠跺苟灏嗘寚瀹氭枃鏈唴瀹瑰啓鍏ユ枃浠讹紝鐒跺悗杩涜璇诲彇銆佸叧闂佹嫹璐濄侀噸鍛藉悕鍜屽垹闄ゆ枃浠舵搷浣溿傞渶瑕佹敞鎰忕殑鏄繖浜涙搷浣滈渶瑕佸湪瀹為檯鐨勬帶鍒跺櫒涓婃墠鑳芥墽琛岋紝浠跨湡妯″紡涓嬩細鎶ラ敊銆傛湰娆℃祴璇曚娇鐢ㄧ殑鎺у埗鍣ㄦ槸绂惧窛鐨凲0锛屼娇鐢ㄥ叾瀹冩帶鍒跺櫒鏃堕渶瑕佹纭寚瀹氬彲杩涜璇诲啓鎿嶄綔鐨勭洰褰曚綅缃

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

PROGRAM testFile

VAR

       xFileStdInit:   BOOL:=FALSE;

    uiFileStdState: UINT:=0;

    sFileName:        CAA.FILENAME:= 'TestFile.txt';

    hFile:          CAA.HANDLE;

    sFileTestString:STRING:='Hello 2023锛';

    sFileString:    STRING:='';

    szFileSize1:    CAA.SIZE := 0;

    szFileSize2:    CAA.SIZE := 0;

    sFileNewName:   CAA.FILENAME:= 'NewFile.txt';

    szCopiedFileSize:   CAA_SIZE := 0;

       eError:                  FILE.ERROR;

    fOpen:          FILE.Open;

    fWrite:         FILE.Write;

    fRead:          FILE.Read;

    fClose:         FILE.Close;

       fCopy:          FILE.Copy;

    fRename:        FILE.Rename;

    fDel:           FILE.Delete;

END_VAR

绋嬪簭濡備笅锛

IF NOT xFileStdInit THEN

    fOpen(xExecute:=FALSE);

    fClose(xExecute:=FALSE);

    fWrite(xExecute:=FALSE);

    fRead(xExecute:=FALSE);

    fDel(xExecute:=FALSE);

    fRename(xExecute:=FALSE);

    fCopy(xExecute:=FALSE);

    xFileStdInit:=TRUE;

    uiFileStdState:=0;

ELSE

    CASE uiFileStdState OF

    0: (* 鍒涘缓鏂版枃浠 *)

        fOpen.sFileName:=sFileName;

        fOpen.eFileMode:=FILE.MODE.MRDWR;

        fOpen.xExclusive:=TRUE;

        fOpen(xExecute:=TRUE);

        IF fOpen.xDone THEN

            hFile:=fOpen.hFile;

            uiFileStdState:=1;

        END_IF

        IF fOpen.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fOpen.eError; //閿欒鍙

        END_IF

    1* 鏂囨湰鍐呭鍐欏叆鏂囦欢 *)

        fWrite.hFile:=hFile;

        fWrite.pBuffer:=ADR(sFileTestString);

        szFileSize1:=SIZEOF(sFileTestString);

        fWrite.szSize:=szFileSize1;

        fWrite.udiTimeOut:=100000;       (* 100ms Timeout *)

        fWrite(xExecute:=TRUE);

        IF fWrite.xDone THEN

            uiFileStdState:=2;

        END_IF

        IF fWrite.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fWrite.eError;

        END_IF

    2* 璇诲彇鏂囦欢 - TestFile.txt*)

        fRead.hFile:=hFile;

        fRead.udiTimeOut:=100000;       (* 瓒呮椂鏃堕棿 100ms *)

        fRead.pBuffer:=ADR(sFileString);

        fRead.szBuffer:=255;

        fRead(xExecute:=TRUE);

        IF fRead.xDone THEN

            szFileSize2:=fRead.szSize;

            IF szFileSize2 = szFileSize1 THEN

                uiFileStdState:=3;

            ELSE (* 閿欒澶勭悊 *)

                            eError:=fRead.eError;

            END_IF

        END_IF

        IF fRead.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fRead.eError;

        END_IF

    3:  (* 鍏抽棴鏂囦欢  - TestFile.txt *)

        fClose.hFile:=hFile;

        fClose(xExecute:=TRUE);

        IF fClose.xDone THEN

            uiFileStdState:=4;

        END_IF

        IF fClose.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fClose.eError;

        END_IF

    4* 鎷疯礉 *)

        fCopy.sFileNameSource:=sFileName;

        fCopy.sFileNameDest:='DestFile.txt';

        fCopy.udiTimeOut:=100000;       (* 瓒呮椂鏃堕棿 100ms     *)

        fCopy.xOverWrite:=TRUE;         (* 瑕嗙洊宸叉湁鏂囦欢 *)

        fCopy( xExecute:=TRUE);

        IF fCopy.xDone THEN

            szCopiedFileSize := fCopy.szSize;

            uiFileStdState:=5;

        END_IF

        IF fCopy.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fCopy.eError;

        END_IF

    5: (* 鏂囦欢閲嶅懡鍚 *)

        fRename.sFileNameOld:='DestFile.txt';

        fRename.sFileNameNew:=sFileNewName;

        fRename( xExecute:=TRUE);

        IF fRename.xDone THEN

            uiFileStdState:=6;

        END_IF

        IF fRename.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fRename.eError;

        END_IF

    6* 鍒犻櫎鏂囦欢 *)

        fDel.sFileName:=sFileNewName;

        fDel( xExecute:=TRUE);

        IF fDel.xDone THEN

            uiFileStdState:=7;

        END_IF

        IF fDel.xError THEN (* 閿欒澶勭悊 *)

                     eError:=fDel.eError;

        END_IF

    7:  (* end of example *)

    END_CASE

END_IF

浠庝笂闈㈢殑绀轰緥鍙互鐪嬪嚭锛屾枃浠舵搷浣滃疄闄呬笂鏄氳繃鐘舵佹満鐨勬柟寮忚繘琛岀殑锛屽嵆鎵撳紑銆佽鍙栨垨鍐欏叆銆佸睘鎬ц幏鍙栥佸叧闂瓑鎿嶄綔閮芥槸姣忔鎵ц涓姝ワ紝涓涓搷浣滄墽琛屽畬鎴愬悗杞埌涓嬩竴鐘舵併傝繖涓祦绋嬪湪CODESYS涓鍐欐枃浠舵槸姣旇緝鎺ㄨ崘鐨勶紝鍙互閬垮厤鍥犳煇涓姝ラ鎿嶄綔鏃堕棿杩囬暱瀵艰嚧鐨勪换鍔¤秴鏃躲

鍥涖佺粨璁

CAA File搴撶殑浣跨敤鍏跺疄骞朵笉澶嶆潅锛屾柊鎵嬪彧瑕佸紕娓呮Open銆丷ead銆乄rite銆丆lose绛夊嚑涓富瑕佸姛鑳藉潡鐨勭敤娉曪紝鐓х潃涓婇潰鐨勭ず渚嬫敼涓涓嬪熀鏈笂鑳藉瑙e喅澶ч儴鍒嗙殑闂銆傝繖绡囨枃绔犳湰鏉ユ墦绠楄繛SysFile搴撲竴閿呯儵鐨勶紝鍐欑潃鍐欑潃鍙戠幇瀹炲湪鏄お闀夸簡锛岃繕鏄暀鐫涓嬫鍐嶅啓鍚-^~~

鍙﹀璇存槑涓涓嬶紝鏈枃鐨勭ず渚嬫槸鍦–ODESYS 3.5.17鐗堟湰涓婃祴璇曠殑锛屽鏋滄槸姣旇緝鑰佺殑鐗堟湰涓婏紙姣斿3.5.10锛変笂鍙兘鏃犳硶姝e父杩愯銆傚疄闄呬笂CODESYS鐨勫簱涔熸槸鍦ㄤ笉鍋滅殑鏀规潵鏀瑰幓鐨勶紝鏂版墜寤鸿鐢ㄦ渶鏂扮殑鐗堟湰銆傝冨彜鐨勫悓瀛﹂渶瑕佽嚜宸卞幓缈绘枃妗d簡锛堣繖閲岃鍚愭Ы涓涓嬶紝CODESYS鍦ㄧ嚎甯姪閲岄潰鏈夊緢澶氱ず渚嬩唬鐮佷娇鐢ㄧ殑绫诲瀷瀹氫箟涔熸槸鍦ㄨ繙鍙ょ増鏈殑搴撻噷闈紝鏀惧埌鐜板湪鐨勬柊鐗堟湰閲岄潰浼氱洿鎺ユ姤閿欌︹︼級銆

------------------

鍘熷垱涓嶆槗锛屾劅鍏磋叮鐨勫鏀寔锛
鈥斺斺斺斺斺斺斺斺斺斺斺斺斺斺斺
鐗堟潈澹版槑锛氭湰鏂囦负CSDN鍗氫富銆--鑾悕--銆嶇殑鍘熷垱鏂囩珷锛岄伒寰狢C 4.0 BY-SA鐗堟潈鍗忚锛岃浆杞借闄勪笂鍘熸枃鍑哄閾炬帴鍙婃湰澹版槑銆
鍘熸枃閾炬帴锛歨ttps://blog.csdn.net/halps/article/details/128873269
+10
涓嶈禐涓涓紵
鎵撹祻榧撳姳涓涓嬶紒
鍥炲

浣跨敤閬撳叿 涓炬姤

璇ョ敤鎴蜂粠鏈鍒

鍙戣〃浜 2024-7-21 15:59:23 | 鏄剧ず鍏ㄩ儴妤煎眰
鎴戞兂闂竴涓嬶紝鎴戞兂瀹炵幇鎵归噺鏂囦欢澶圭殑鍒犻櫎锛屾墍浠ョ敤浜嗕釜for寰幆閲岄潰宓屽浜哻avremove鍛戒护锛屼絾鏄瘡娆¢兘鏄彧鑳藉垹闄ょ涓涓惊鐜殑鏂囦欢锛岃屼笖cavremove鐨勮緭鍑烘病鏈夊姙娉曞浣嶏紝鎴戣繕鏈夊叾浠栨柟娉曞疄鐜板涓枃浠跺す鐨勫垹闄ゅ悧
+10
涓嶈禐涓涓紵
鎵撹祻榧撳姳涓涓嬶紒
鎮ㄩ渶瑕佺櫥褰曞悗鎵嶅彲浠ュ洖甯 鐧诲綍 | 绔嬪嵆娉ㄥ唽 鏂版氮寰崥鐧婚檰

鏈増绉垎瑙勫垯

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

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

GMT+8, 2024-11-23 20:56 , Processed in 0.159758 second(s), 65 queries .

閰峰痉缃

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

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