鍦–odesys鐢⊿T璇█鍩轰簬鏁扮粍瀹炵幇鏍圠IFO鏁版嵁缁撴瀯璇︾粏璇存槑+浠g爜瀹炰緥-CODESYS璧勬簮涓嬭浇鍖-閰峰痉缃 - CoDeSys杞欢鏁欑▼涓嬭浇,CoDeSys宸ユ帶璧勮闂ㄦ埛
HSC6490-cn涓浗鍒堕狅紝涓浗鑺瘇
鏌ョ湅: 1013|鍥炲: 0

鍦–odesys鐢⊿T璇█鍩轰簬鏁扮粍瀹炵幇鏍圠IFO鏁版嵁缁撴瀯璇︾粏璇存槑+浠g爜瀹炰緥

[澶嶅埗閾炬帴]
  • TA鐨勬瘡鏃ュ績鎯
    寮蹇
    2017-11-20 22:07
  • 绛惧埌澶╂暟: 2 澶

    [LV.1]鍒濇潵涔嶅埌

    鍙戣〃浜 2023-4-12 22:08:40 | 鏄剧ず鍏ㄩ儴妤煎眰 |闃呰妯″紡
    涓銆 鏍堝畾涔

    鏍堟槸涓绉嶅悗杩涘厛鍑(LIFO鈥斺攍ast in first out)绾挎ц〃,瀹冨彧鍏佽鍦ㄨ〃鐨勫悗绔紙tail锛夎繘琛屾彃鍏(push)鍜屽垹闄(pop)鎿嶄綔銆

    鍦–odesys鐢⊿T璇█鍩轰簬鏁扮粍瀹炵幇鏍圠IFO鏁版嵁缁撴瀯璇︾粏璇存槑+浠g爜瀹炰緥-1.jpg


    鍦–odesys鐢⊿T璇█鍩轰簬鏁扮粍瀹炵幇鏍圠IFO鏁版嵁缁撴瀯璇︾粏璇存槑+浠g爜瀹炰緥-2.gif


    浜屻佹爤瀹炵幇

    瀹炵幇鏍堬紝鎴戜滑鍙互浣跨敤鍔ㄦ佹暟缁勪互鍙婃寚鍚戞爤椤剁殑绱㈠紩
    鍦ㄩ『搴忔爤涓瀹氫竴涓殢鏃舵寚鍚戞爤椤跺厓绱犵殑绱㈠紩鍙橀噺tail锛屽綋 tail 鐨勫间负 -1 鏃讹紝涓衡滅┖鏍堚濓紱鏁版嵁鍏冪礌杩涙爤锛宼ail 灏卞姞 1 锛涙暟鎹厓绱犲嚭鏍堬紝 tail 灏卞噺 1;

    鍦–odesys鐢⊿T璇█鍩轰簬鏁扮粍瀹炵幇鏍圠IFO鏁版嵁缁撴瀯璇︾粏璇存槑+浠g爜瀹炰緥-3.png

    渚嬪鎴戜滑鍒嗛厤涓涓渶闀块暱搴︿负7鐨勬暟缁勶紝鎴戜滑鏈澶氬彧鑳芥坊鍔7涓厓绱狅紝鍦ㄧ7娆″厓绱"7"鍏ユ爤鍚庯紝鍥犱负鏍堝凡婊★紝鏍堜笉鍦ㄦ帴鍙楁洿澶氱殑鍏ユ爤璇锋眰锛
    涓夈 鏍堣璁

    鎴戜滑鍒嗗埆閲囩敤c++鍜宑odesys涓璼t璇█杩涜瀹炵幇鍩轰簬閾捐〃鐨勬爤鎿嶄綔
    (1) C++ 璇█瀹炵幇

    鍔熻兘濡備笅
      Create(k):鏋勯犲櫒锛屽姩鎬佸垱寤篕澶у皬鐨勬暟缁凱ush(value) : 鍚戞爤涓彃鍏ヤ竴涓厓绱狅紝鎴愬姛杩斿洖truepop():浠庢爤涓脊鍑轰竴涓厓绱燛mpty(): 妫娴嬫爤鏄惁涓虹┖Full() : 妫娴嬫爤鏄惁宸叉弧Destroy:閿姣佹爤
    1. typedefint DataElement;//鐢ㄦ埛鑷畾涔夋暟鎹//鏍堟暟鎹厓绱爐ypedefstruct{
    2.         DataElement *data;//鐢ㄦ埛鑷畾涔夋暟鎹暟缁勬寚閽坕nt         mTail;//灏鹃儴绱㈠紩int         mSize;//鏁扮粍澶у皬}ArrayStackElement;//鏁扮粍鏍堢被classArrayStack{private:
    3.        ArrayStackElement *myStackElement;//鍏冪礌public://鍔ㄦ佸垱寤烘暟缁勫ぇ灏廱oolCreateStack(int k){//濡傛灉鏍堝凡缁忓瓨鍦紝閿姣乮f(myStackElement !=0)Destroy();//寮杈熷唴瀛
    4.          myStackElement =(ArrayStackElement *)malloc(sizeof(ArrayStackElement));
    5.          myStackElement->data =(DataElement*)malloc(sizeof(DataElement)* k);
    6.          myStackElement->mTail =-1;//鏍堥《鍒濆鍊-1锛屼负绌
    7.          myStackElement->mSize =  k;//鏍堟暟缁勫ぇ灏弐eturntrue;};//鍒ゆ柇鏍堟槸鍚︿负绌,绌鸿繑鍥瀟rueboolEmpty(){if(myStackElement ==0)//鎸囬拡涓虹┖returnfalse;if(myStackElement->mTail ==-1)//鏍堥《鎸囬拡涓-1锛岃〃绀虹┖returntrue;elsereturnfalse;};//鍒ゆ柇鏍堟槸鍚﹀瓨婊★紝婊¤繑鍥瀟rueboolFull(){if(myStackElement ==0)//鎸囬拡涓虹┖returnfalse;if(myStackElement->mTail == myStackElement->mSize -1)//鏍堥《+1 绛変簬鏁扮粍澶у皬returntrue;elsereturnfalse;};//鍏ユ爤鎿嶄綔boolPush(DataElement _data){if(myStackElement ==0)//鎸囬拡涓虹┖returnfalse;if(Full())//鏍堟弧 杩斿洖returnfalse;else{
    8.             myStackElement->mTail = myStackElement->mTail +1;//鏍堥《鎸囬拡鍔1
    9.             myStackElement->data[myStackElement->mTail]= _data;//杈撳叆瀛樺叆鏍堥《}returntrue;};//鍑烘爤鎿嶄綔
    10.    DataElement Pop(){if(myStackElement ==0)//鎸囬拡涓虹┖return0;if(Empty())//鏍堢┖return0;else{
    11.             myStackElement->mTail = myStackElement->mTail -1;//鏍堥《鎸囬拡鍑1return  myStackElement->data[myStackElement->mTail +1];//寮瑰嚭鏍堥《鏁版嵁}};//閿姣佹爤boolDestroy(){if(myStackElement ==0)//鎸囬拡涓虹┖returnfalse;if(myStackElement->data !=0)delete(myStackElement->data);//閿姣佸唴瀛榠f(myStackElement !=0)delete(myStackElement);//閿姣佸唴瀛   returntrue;};};
    澶嶅埗浠g爜
    绀轰緥濡備笅

    鍦–odesys鐢⊿T璇█鍩轰簬鏁扮粍瀹炵幇鏍圠IFO鏁版嵁缁撴瀯璇︾粏璇存槑+浠g爜瀹炰緥-4.jpg


    (2) Codesys 瀹炵幇

      缂栫▼杞欢锛 Codesys V3.5 SP17杩愯璁惧锛歅C鐢佃剳缂栫▼璇█锛 ST 锛屾帉鎻″浣曞垱寤鍔ㄦ佹暟缁New鐨勪娇鐢
    瀹氫箟缁撴瀯浣
    1. //鏍堟搷浣滅殑鏁版嵁
    2. TYPE ArrayStackElement :
    3. STRUCT
    4.         pData : POINTER TO BaseElement;
    5.         mTail : INT;
    6.         mSize : INT;
    7. END_STRUCT
    8. END_TYPE
    澶嶅埗浠g爜
    鍏朵腑 BaseElement 鏄竴涓埆鍚嶏紝鍏跺畾涔夊涓嬶紝杩欓噷BaseElement 鏄敤鎴疯嚜瀹氫箟鏁版嵁(姣斿缁撴瀯浣)锛岄噰鐢ㄥ埆鍚嶆槸鏂逛究鏇挎崲銆
    1. TYPE BaseElement : INT; END_TYPE
    澶嶅埗浠g爜
    瀹氫箟鍔熻兘鍧楋紙FUNCTION_BLOCK锛夛細 ArrayStack锛屽疄鐜板涓嬪嚱鏁
      Create(k):鏋勯犲櫒锛屽姩鎬佸垱寤篕澶у皬鐨勬暟缁凱ush(value) : 鍚戞爤涓彃鍏ヤ竴涓厓绱狅紝鎴愬姛杩斿洖truepop():浠庢爤涓脊鍑轰竴涓厓绱燛mpty(): 妫娴嬫爤鏄惁涓虹┖Full() : 妫娴嬫爤鏄惁宸叉弧Destroy:閿姣佹爤Size():鑾峰緱鏍堢殑鍏冪礌涓暟
    绀轰緥濡備笅
    1. PROGRAM PLC_PRG
    2. VAR       
    3.         t :ArrayStack;
    4. END_VAR
    5. VAR
    6.         bInit :BOOL:= FALSE;
    7.         isize : INT;
    8.         ivar1: ARRAY[0..20] OF BaseElement;
    9. END_VAR
    澶嶅埗浠g爜
    1. IF bInit = FALSE THEN
    2.        
    3. bInit := TRUE;
    4. t.Create(4);//鍔ㄦ佸垱寤烘爤鍐呮暟缁勫ぇ灏
    5. t.Push(11);//鍏ユ爤 锛岃繑鍥濼RUE
    6. t.Push(22);//鍏ユ爤 锛岃繑鍥濼RUE
    7. t.Push(33);//鍏ユ爤 锛岃繑鍥濼RUE
    8. isize := t.Size();//杩斿洖4
    9. ivar1[0]:= t.Pop();//杩斿洖33
    10. ivar1[1]:= t.Pop();//杩斿洖22
    11. ivar1[2]:= t.Pop();//杩斿洖11
    12. ivar1[3]:= t.Pop();//杩斿洖0
    13. END_IF
    澶嶅埗浠g爜
    鍦–odesys鐢⊿T璇█鍩轰簬鏁扮粍瀹炵幇鏍圠IFO鏁版嵁缁撴瀯璇︾粏璇存槑+浠g爜瀹炰緥-5.jpg


    鍥涖 Codesys浠g爜涓嬭浇
    +10
    涓嶈禐涓涓紵
    鎵撹祻榧撳姳涓涓嬶紒
    鍥炲

    浣跨敤閬撳叿 涓炬姤

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

    鏈増绉垎瑙勫垯

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

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

    GMT+8, 2024-11-23 19:47 , Processed in 0.145028 second(s), 59 queries .

    閰峰痉缃

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

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