日本欧美一区-日本欧美一区二区三区片-日本强好片久久久久久AAA-日本-区一区二区三区A片-日本人伦一区二区三区-日本人妻A片成人免费看

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> 梯形圖實(shí)例 >> 正文

西門子200SMART之簡(jiǎn)接尋址學(xué)習(xí),指針與間接尋址,冒泡排序

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2023/8/8
在PLC里面有兩種尋址方式,一種是直接尋址,另一種是間接尋址。
間接尋址是指用指針來訪問存儲(chǔ)區(qū)的數(shù)據(jù)。指針以雙字的形式存儲(chǔ)其它存儲(chǔ)區(qū)的地址,只能將V存儲(chǔ)單元、L存儲(chǔ)單元或累加寄存器(AC1、AC2、AC3)用作指針。

創(chuàng)建指針時(shí),必須使用“移動(dòng)雙字”指令,將間接尋址的存儲(chǔ)單元地址移至指針位置。;用“&”符號(hào)加上要訪問的存儲(chǔ)區(qū)地址可建立一個(gè)指針,當(dāng)指令中的操作數(shù)是指針時(shí),應(yīng)該在操作數(shù)前加上“*”號(hào)。

1.建立指針

 

建立指針記得加“&”;將VB100的地址存放到VD1000內(nèi)。

2.指針偏移

 

按字節(jié)尋址,就+1;

按字尋址,就+2;

按雙字或浮點(diǎn)數(shù)尋址,就+4;

3.取指針

 

4.程序監(jiān)控

 

1)按下M0.0,執(zhí)行字節(jié)偏移,此時(shí)在VB101輸入“10”,VB3000的數(shù)據(jù)即為“10”,然后復(fù)位M0.0。2)按下M0.1,執(zhí)行字偏移,此時(shí)在VW102輸入“50”,VW4000的數(shù)據(jù)即為“50”,然后復(fù)位M0.1。3)按下M0.2,執(zhí)行雙字偏移,此時(shí)在VD104輸入“80”,VD5000的數(shù)據(jù)即為“80”,然后復(fù)位M0.2。


程序?qū)嵗ǜ韶洠?BR>
實(shí)例1:通過指針間接尋址改變定時(shí)器的3種不同定時(shí)時(shí)間。

 

 

 



實(shí)例2:通過指針間接尋址找一組數(shù)據(jù)的最值(大和小)和平均值。主程序

 

子程序

 

程序的監(jiān)控圖就不貼出來了,其實(shí)重點(diǎn)就在子程序的第二段,每循環(huán)一次,就做一次比較,如果比較條件滿足,就將大值和小值暫存到LD10和LD14中,直到循環(huán)到最后一次,此時(shí)最大值和最小值已經(jīng)找出來了,平均值就是將每循環(huán)一次的值進(jìn)行累加,然后再除以數(shù)據(jù)個(gè)數(shù),這里我就不展開仔細(xì)的分析了,可以參考一下最后一個(gè)案例,冒泡排序執(zhí)行原理。

實(shí)例3:通過指針間接尋址改變5個(gè)計(jì)數(shù)器的計(jì)數(shù)值。

 

 

 

案例4,冒泡排序,從小排到大。

主程序,排8組數(shù)據(jù)。

 

 

子程序

 

冒泡排序算法解析:

八組數(shù)據(jù):分別是20.0;365.0;7.0;7.0;210.5;7.6;15.6;22.8。

1.首先將要排列的數(shù)據(jù)個(gè)數(shù)-2(8-2),然后存放到LW10中;再將這個(gè)值附給外循環(huán)的FINAL。

2.第一個(gè)外循環(huán)的執(zhí)行的次數(shù)即為0~6(7次)。

3.INDX:假定 INIT 值為 0,F(xiàn)INAL 值為 6,則 FOR 指令和 NEXT 指令之間的指令將執(zhí)行 7 次,INDX 值遞增:0,1, 2, 3, 4.5.6。

第一次外循環(huán)(執(zhí)行7次內(nèi)循環(huán))

第一次內(nèi)循環(huán)

20.0;365.0;7.0;7.0;210.5;7.6;15.6;22.8;(20.0<365.0,位置不變)

第二次內(nèi)循環(huán)

20.0;7.0;365.0;7.0;210.5;7.6;15.6;22.8;(7.0<365.0,位置改變)

第三次內(nèi)循環(huán)

20.0;7.0;7.0;365.0;210.5;7.6;15.6;22.8;(7.0<365.0,位置改變)

第四次內(nèi)循環(huán)

20.0;7.0;7.0;210.5;365.0;7.6;15.6;22.8;(210.5<365.0,位置改變)

第五次內(nèi)循環(huán)

20.0;7.0;7.0;210.5;7.6;365.0;15.6;22.8;(7.6<365.0,位置改變)

第六次內(nèi)循環(huán)

20.0;7.0;7.0;210.5;7.6;15.6;365.0;22.8;(15.6<365.0位置改變)

第七次內(nèi)循環(huán)

20.0;7.0;7.0;210.5;7.6;15.6;22.8;365.0;(22.8<365.0位置改變,找到最大值),即最大值365.0。

第二次外循環(huán)(執(zhí)行6次內(nèi)循環(huán))

第一次內(nèi)循環(huán)

7.0;20.0;7.0;210.5;7.6;15.6;22.8;365.0;(7.0<20.0,位置改變)

第二次內(nèi)循環(huán)

7.0;7.0;20.0;210.5;7.6;15.6;22.8;365.0;(7.0<20.0,位置改變)

第三次內(nèi)循環(huán)

7.0;7.0;20.0;210.5;7.6;15.6;22.8;365.0;(20.0<210.5,位置不變,接下來就是210.5跟后面的數(shù)進(jìn)行比較)

第四次內(nèi)循環(huán)

7.0;7.0;20.0;7.6;210.5;15.6;22.8;365.0;(7.6<210.5,位置改變)

第五次內(nèi)循環(huán)

7.0;7.0;20.0;7.6;15.6;210.5;22.8;365.0;(15.6<210.5,位置改變)

第六次內(nèi)循環(huán)

7.0;7.0;20.0;7.6;15.6;22.8;210.5;365.0;(22.8<210.5,位置改變,找到第二個(gè)值),即第二大值210.5。

第三次外循環(huán)(執(zhí)行5次內(nèi)循環(huán))

第一次內(nèi)循環(huán)

7.0;7.0;20.0;7.6;15.6;22.8;210.5;365.0;(7.0=7.0,這里的排序就不變,假設(shè)第一個(gè)值為8.0,8.0>7.0,則位置改變)

第二次內(nèi)循環(huán)

7.0;7.0;20.0;7.6;15.6;22.8;210.5;365.0;(7.0<20.0,位置改變)

第三次內(nèi)循環(huán)

7.0;7.0;7.6;20.0;15.6;22.8;210.5;365.0;(7.6<20.0,位置改變)

第四次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(15.6<20.0,位置改變)

第五次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(20.0<22.8,位置不變,找出第三個(gè)值),即第三大值22.8。

第四次外循環(huán)(執(zhí)行4次內(nèi)循環(huán))

第一次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.0=7.0,位置不變)

第二次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.0<7.6,位置不變)

第三次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.6<15.6,位置不變)

第四次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(15.6<20.0,位置不變,找出第四個(gè)值),即最第四大值20.0。

第五次外循環(huán)(執(zhí)行3次內(nèi)循環(huán))

第一次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.0=7.0,位置不變)

第二次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.0<7.6,位置不變)

第三次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.6<15.6,位置不變,此時(shí)找出第五個(gè)值),即第五大值15.6。

第六次外循環(huán)(執(zhí)行2次內(nèi)循環(huán))

第一次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.0=7.0,位置不變)

第二次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.0<7.6,位置不變,此時(shí)找出第六個(gè)值),即第六大值7.6。

第七次外循環(huán)(執(zhí)行1次內(nèi)循環(huán))

第一次內(nèi)循環(huán)

7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0;(7.0=7.0,位置不變,此時(shí)找出第七個(gè)值),即第七大值7.0。

那么最后的那個(gè)數(shù)顯然就是最小值了。

最后由小到大依次排列出來的結(jié)果(7.0;7.0;7.6;15.6;20.0;22.8;210.5;365.0)。

其實(shí)這是一種冒泡排序法,熟悉計(jì)算機(jī)語言的小伙伴就應(yīng)該比較了解這種算法,至于冒泡算法的具體原理和說明,請(qǐng)各位小伙伴自行百度一下,這里就不再贅述了。

程序執(zhí)行原理:

第一次外循環(huán)

第一次內(nèi)循環(huán)

LW8=0,AC1=0*4,AC2=0+4,AC0=0,AC2=4;LD0偏移0和4,即VD1000和VD1004做比較(>),由于VD1000=20.0不大于VD1004=365.0;則程序6不執(zhí)行,排序不改變(即20.0;365.0;7.0;7.0;210.5;7.6;15.6;22.8;)。

第二次內(nèi)循環(huán)

LW8=1,AC1=1*4,AC2=4+4,AC0=4,AC2=8;LD0偏移4和8,即VD1004和VD1008做比較(>),由于VD1004=365.0>VD1008=7.0;

則程序6執(zhí)行,*AC1(VD1004=365.0)的值存放到TEMP里(TEMP=365.0),然后*AC2(VD1008=7.0)把值傳給*AC1(VD1004=7.0),最后將TEMP的值傳給*AC2(VD1008),此時(shí)VD1004=7.0,VD1008=365.0,排序發(fā)生變化(即20.0;7.0;365.0;7.0;210.5;7.6;15.6;22.8;)。

第三次內(nèi)循環(huán)

LW8=2,AC1=2*4,AC2=8+4,AC0=8,AC2=12;LD0偏移8和12,即VD1008和VD1012做比較(>),由于VD1008=365.0>VD1012=7.0,則程序6執(zhí)行,*AC1(VD1008=365.0)的值存放到TEMP里(TEMP=365.0),然后*AC2(VD1012=7.0)把值傳給*AC1(VD1008=7.0),最后將TEMP的值傳給*AC2(VD1012),此時(shí)VD1008=7.0,VD1012=365.0,排序發(fā)生變化(即20.0;7.0;7.0;365.0;210.5;7.6;15.6;22.8;)。

第四次內(nèi)循環(huán)

LW8=3,AC1=3*4,AC2=12+4,AC0=12,AC2=16;LD0偏移12和16,即VD1012和VD1016做比較(>),由于VD1012=365.0>VD1016=210.5,

則程序6執(zhí)行,*AC1(VD1012=365.0)的值存放到TEMP里(TEMP=365.0),然后*AC2(VD1016=210.5)把值傳給*AC1(VD1012=210.5),最后將TEMP的值傳給*AC2(VD1016),此時(shí)VD1012=210.5,VD1016=365.0,排序發(fā)生變化(即20.0;7.0;7.0;210.5;365.0;7.6;15.6;22.8;)。

第五次內(nèi)循環(huán)

LW8=4,AC1=4*4,AC2=16+4,AC0=16,AC2=20;LD0偏移16和20,即VD1016和VD1020做比較(>),由于VD1016=365.0>VD1020=7.6,

則程序6執(zhí)行,*AC1(VD1016=365.0)的值存放到TEMP里(TEMP=365.0),然后*AC2(VD1020=7.6)把值傳給*AC1(VD1016=7.6),最后將TEMP的值傳給*AC2(VD1020),此時(shí)VD1016=7.6,VD1020=365.0,排序發(fā)生變化(即20.0;7.0;7.0;210.5;7.6;365.0;15.6;22.8;)。

第六次內(nèi)循環(huán)

LW8=5,AC1=5*4,AC2=20+4,AC0=20,AC2=24;LD0偏移20和24,即VD1020和VD1024做比較(>),由于VD1020=365.0>VD1024=15.6,

則程序6執(zhí)行,*AC1(VD1020=365.0)的值存放到TEMP里(TEMP=365.0),然后*AC2(VD1024=15.6)把值傳給*AC1(VD1020=15.6),最后將TEMP的值傳給*AC2(VD1024),此時(shí)VD1020=15.6,VD1024=365.0,排序發(fā)生變化(即20.0;7.0;7.0;210.5;7.6;15.6;365.0;22.8;)。

第七次內(nèi)循環(huán)

LW8=6,AC1=6*4,AC2=24+4,AC0=24,AC2=28;LD0偏移24和28,即VD1024和VD1028做比較(>),由于VD1024=365.0>VD1028=22.8,

則程序6執(zhí)行,*AC1(VD1024=365.0)的值存放到TEMP里(TEMP=365.0),然后*AC2(VD1028=22.8)把值傳給*AC1(VD1024=22.8),最后將TEMP的值傳給*AC2(VD1028),此時(shí)VD1024=22.8,VD1028=365.0,排序發(fā)生變化(即20.0;7.0;7.0;210.5;7.6;15.6;22.8;365.0;)。最后找到了最大值,此時(shí)VD1028=365.0。

下面的循環(huán)就不在贅述,原理同上。

Tags:簡(jiǎn)接尋址,指針,200SMART  
責(zé)任編輯:admin
相關(guān)文章列表
西門子PLC S7-200 smart如何使用Modbus 485通訊傳輸接收數(shù)據(jù)_200
一張圖就能讀懂S7-200 SMART PLC的位、字節(jié)、字、雙字的數(shù)據(jù)組合
一起學(xué)習(xí)S7-200Smart控制器的中斷子程序
西門子S7-200 SMART 模擬量概述及自建庫文件,西門子PLC子程序創(chuàng)
西門子S7-200SMART間接尋址讀取配方 子程序調(diào)用方法
用200SMART高速脈沖實(shí)現(xiàn)軌跡跟隨運(yùn)動(dòng)
西門子200SMART PLC編程通過指針輕松實(shí)現(xiàn)多個(gè)數(shù)據(jù)排列
西門子S7-200SMART PLC如何實(shí)現(xiàn)星三角降壓?jiǎn)?dòng)多次調(diào)用?子程序編
西門子PLC子程序?qū)嵗琒7-200 SMART PLC帶參數(shù)子程序應(yīng)用實(shí)例
西門子S7-200SMART PLC彩色燈程序設(shè)計(jì)_跑馬燈程序 , SHB_L循環(huán)指
S7-200smart 恒溫PID控制_STEP7中PID設(shè)置溫度自動(dòng)控制編程
西門子PLC S7-200smart間接尋址應(yīng)用—求平均值, 創(chuàng)建指令庫
基于S7-200 SMART實(shí)現(xiàn)一鍵啟停_200smart 一鍵啟停
基于S7-200SMART實(shí)現(xiàn)Modbus TCP通信_(tái)200smart modbus tcp
基于S7-200 SMART實(shí)現(xiàn)MATLAB寫入與讀取PLC數(shù)據(jù)_matlab
西門子200smart高速計(jì)數(shù)器指令向?qū)Ъ俺绦颍ㄊ詹兀┨菪螆D實(shí)例
【案例】S7-200SMART運(yùn)動(dòng)定位程序梯形圖實(shí)例
S7-200SMART PLC實(shí)時(shí)時(shí)鐘指令
|分享| S7-200SMART常用指令(二)
|分享| S7-200SMART常用指令(一)
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
推薦文章
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢