S71200的指令_第1頁
S71200的指令_第2頁
S71200的指令_第3頁
S71200的指令_第4頁
S71200的指令_第5頁
已閱讀5頁,還剩47頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第3章 s7-1200的指令3.1 位邏輯指令位邏輯指令 1常開觸點與常閉觸點常開觸點與常閉觸點 打開項目“位邏輯指令應(yīng)用”,常開觸點在指定的位為1狀態(tài)時閉合,為0狀態(tài)時斷開。常閉觸點反之。兩個觸點串聯(lián)將進行“與”運算,兩個觸點并聯(lián)將進行“或”運算。 2取反取反rlo觸點觸點 rlo是邏輯運算結(jié)果的簡稱,中間有“not”的觸點為取反rlo觸點,如果沒有能流流入取反rlo觸點,則有能流流出。如果有能流流入取反rlo觸點,則沒有能流流出。 3線圈線圈 線圈將輸入的邏輯運算結(jié)果(rlo)的信號狀態(tài)寫入指定的地址,線圈通電時寫入1,斷電時寫入0。可以用q0.4:p的線圈將位數(shù)據(jù)值寫入過程映像輸出q0.

2、4,同時立即直接寫給對應(yīng)的物理輸出點。 如果有能流流過m4.1的取反線圈,則m4.1為0狀態(tài),其常開觸點斷開,反之m4.1為1狀態(tài),其常開觸點閉合。 4置位、復(fù)位輸出指令置位、復(fù)位輸出指令 s(置位輸出)、r(復(fù)位輸出)指令將指定的位操作數(shù)置位和復(fù)位。 如果同一操作數(shù)的s線圈和r線圈同時斷電,指定操作數(shù)的信號狀態(tài)不變。 置位輸出指令與復(fù)位輸出指令最主要的特點是有記憶和保持功能。如果i0.4的常開觸點閉合,q0.5變?yōu)?狀態(tài)并保持該狀態(tài)。即使i0.4的常開觸點斷開,q0.5也仍然保持1狀態(tài)。在程序狀態(tài)中,用q0.5的s和r線圈連續(xù)的綠色圓弧和綠色的字母表示q0.5為1狀態(tài),用間斷的藍色圓弧和藍色

3、的字母表示0狀態(tài)。 5置位位域指令與復(fù)位位域指令置位位域指令與復(fù)位位域指令 “置位位域”指令set_bf將指定的地址開始的連續(xù)的若干個位地址置位,“復(fù)位位域”指令reset_bf將指定的地址開始的連續(xù)的若干個位地址復(fù)位。 7掃描操作數(shù)信號邊沿的指令掃描操作數(shù)信號邊沿的指令 中間有p的觸點的名稱為“掃描操作數(shù)的信號上升沿”,在i0.6的上升沿,該觸點接通一個掃描周期。m4.3為邊沿存儲位,用來存儲上一次掃描循環(huán)時i0.6的狀態(tài)。通過比較i0.6前后兩次循環(huán)的狀態(tài),來檢測信號的邊沿。邊沿存儲位的地址只能在程序中使用一次。不能用代碼塊的臨時局部數(shù)據(jù)或i/o變量來作邊沿存儲位。 中間有n的觸點的名稱為

4、“掃描操作數(shù)的信號下降沿”,在m4.4的下降沿,reset_bf的線圈“通電”一個掃描周期。該觸點下面的m4.5為邊沿存儲位。 6置位置位/復(fù)位觸發(fā)器與復(fù)位復(fù)位觸發(fā)器與復(fù)位/置位觸發(fā)器置位觸發(fā)器 sr方框是置位/復(fù)位(復(fù)位優(yōu)先)觸發(fā)器,在置位(s)和復(fù)位(r1)信號同時為1時,方框上的輸出位m7.2被復(fù)位為0。可選的輸出q反映了m7.2的狀態(tài)。 rs方框是復(fù)位/置位(置位優(yōu)先)觸發(fā)器,在置位(s1)和復(fù)位(r)信號同時為1時,方框上的m7.6為置位為1。可選的輸出q反映了m7.6的狀態(tài)。 8在信號邊沿置位操作數(shù)的指令在信號邊沿置位操作數(shù)的指令 中間有p的線圈是“在信號上升沿置位操作數(shù)”指令,僅

5、在流進該線圈的能流的上升沿,該指令的輸出位m6.1為1狀態(tài)。其他情況下m6.1均為0狀態(tài),m6.2為保存p線圈輸入端的rlo的邊沿存儲位。 中間有n的線圈是“在信號下降沿置位操作數(shù)”指令,僅在流進該線圈的能流的下降沿,該指令的輸出位m6.3為1狀態(tài)。其他情況下m6.3均為0狀態(tài),m6.4為邊沿存儲位。 上述兩條線圈格式的指令對能流是暢通無阻的,這兩條指令可以放置在程序段的中間或最右邊。在運行時改變i0.7的狀態(tài),可以使m6.6置位和復(fù)位。 9掃描掃描rlo的信號邊沿指令的信號邊沿指令 在流進“掃描rlo的信號上升沿”指令(p_trig指令)的clk輸入端的能流(即rlo)的上升沿,q端輸出脈沖

6、寬度為一個掃描周期的能流,方框下面的m8.0是脈沖存儲位。 在流進“掃描rlo的信號下降沿”指令(n_trig指令)的clk輸入端的能流的下降沿,q端輸出一個掃描周期的能流。方框下面的m8.2是脈沖存儲器位。p_trig 指令與n_trig 指令不能放在電路的開始處和結(jié)束處。 10檢測信號邊沿指令檢測信號邊沿指令 r_trig是“檢測信號上升沿”指令,f_trig是“檢測信號下降沿”指令。它們是函數(shù)塊,在調(diào)用時應(yīng)為它們指定背景數(shù)據(jù)塊。這兩條指令將輸入clk的當(dāng)前狀態(tài)與背景數(shù)據(jù)塊中的邊沿存儲位保存的上一個掃描周期的clk的狀態(tài)進行比較。如果指令檢測到clk的上升沿或下降沿,將會通過q端輸出一個掃

7、描周期的脈沖。 在輸入clk輸入端的電路時,選中左側(cè)的垂直“電源”線,雙擊收藏夾中的“打開分支”按鈕,生成一個串聯(lián)電路。用鼠標(biāo)將串聯(lián)電路右端的雙箭頭拖拽到clk端。松開鼠標(biāo)左鍵,串聯(lián)電路被連接到clk端。 11邊沿檢測指令的比較邊沿檢測指令的比較 以上升沿檢測為例,p觸點用于檢測觸點上面的地址的上升沿,并且直接輸出上升沿脈沖。其他3種指令都是用來檢測rlo(流入它們的能流)的上升沿。 p線圈用于檢測能流的上升沿,并用線圈上面的地址來輸出上升沿脈沖。其他3種指令都是直接輸出檢測結(jié)果。 r_trig指令與p_trig指令都是用于檢測流入它們的clk端的能流的上升沿,并直接輸出檢測結(jié)果。其區(qū)別在于r

8、_trig指令用背景數(shù)據(jù)塊保存上一次掃描循環(huán)clk端信號的狀態(tài),而p_trig指令用邊沿存儲位來保存它。 12故障顯示電路故障顯示電路 【例3-1】 設(shè)計故障信息顯示電路,從故障信號i0.0的上升沿開始,q0.7控制的指示燈以1hz的頻率閃爍。操作人員按復(fù)位按鈕i0.1后,如果故障已經(jīng)消失,則指示燈熄滅。如果沒有消失,則指示燈轉(zhuǎn)為常亮,直至故障消失。 設(shè)置mb0為時鐘存儲器字節(jié),m0.5提供周期為1s的時鐘脈沖。出現(xiàn)故障時,將i0.0提供的故障信號用m2.1鎖存起來,m2.1和m0.5的常開觸點組成的串聯(lián)電路使q0.7控制的指示燈以1hz的頻率閃爍。按下復(fù)位按鈕i0.1,故障鎖存標(biāo)志m2.1被

9、復(fù)位為0狀態(tài)。如果故障已經(jīng)消失,指示燈熄滅。如果沒有消失,m2.1的常閉觸點與i0.0的常開觸點組成的串聯(lián)電路使指示燈轉(zhuǎn)為常亮,直至i0.0變?yōu)?狀態(tài),故障消失,指示燈熄滅。3.2 定時器與計數(shù)器指令定時器與計數(shù)器指令3.2.1 定時器指令定時器指令 1脈沖定時器脈沖定時器 將指令列表中的“生成脈沖”指令tp拖放到梯形圖中,在出現(xiàn)的“調(diào)用選項”對話框中,將默認的背景數(shù)據(jù)塊的名稱改為t1,可以用它來做定時器的標(biāo)示符。單擊“確定”按鈕,自動生成背景數(shù)據(jù)塊。 定時器的輸入in為啟動輸入端,pt為預(yù)設(shè)時間值,et為定時開始后經(jīng)過的當(dāng)前時間值,它們的數(shù)據(jù)類型為32位的time,單位為ms,最大定時時間為

10、24天多。q為定時器的位輸出,各參數(shù)均可以使用i(僅用于輸入?yún)?shù))、q、m、d、l存儲區(qū),pt可以使用常量。定時器指令可以放在程序段的中間或結(jié)束處。 脈沖定時器用于將輸出q置位為pt預(yù)設(shè)的一段時間。在in輸入信號的上升沿啟動該指令,q輸出變?yōu)?狀態(tài),開始輸出脈沖,et從0ms開始不斷增大,達到pt預(yù)設(shè)的時間時,q輸出變?yōu)?狀態(tài)。如果in輸入信號為1狀態(tài),則當(dāng)前時間值保持不變(見波形a)。如果in輸入信號為0狀態(tài),則當(dāng)前時間變?yōu)?s(見波形b)。in輸入的脈沖寬度可以小于預(yù)設(shè)值,在脈沖輸出期間,即使in輸入出現(xiàn)下降沿和上升沿,也不會影響脈沖的輸出。 i0.1為1時,定時器復(fù)位線圈rt通電,定時器

11、t1被復(fù)位。如果正在定時,且in輸入信號為0狀態(tài),將使當(dāng)前時間值et清零,q輸出也變?yōu)?狀態(tài)(見波形c)。如果此時正在定時,且in輸入信號為1狀態(tài),將使當(dāng)前時間清零,但是q輸出保持為1狀態(tài)(見波形d)。復(fù)位信號i0.1變?yōu)?狀態(tài)時,如果in輸入信號為1狀態(tài),將重新開始定時(見波形e)。 2接通延時定時器接通延時定時器 接通延時定時器ton用于將q輸出的置位操作延時pt指定的一段時間。在in輸入的上升沿開始定時。et大于等于pt指定的設(shè)定值時,輸出q變?yōu)?狀態(tài),et保持不變(見波形a)。 in輸入電路斷開時,或定時器復(fù)位線圈rt通電,定時器被復(fù)位,當(dāng)前時間被清零,輸出q變?yōu)?狀態(tài)。如果in輸入信

12、號在未達到pt設(shè)定的時間時變?yōu)?狀態(tài)(見波形b),輸出q保持0狀態(tài)不變。 復(fù)位輸入i0.3變?yōu)?狀態(tài)時,如果in輸入信號為1狀態(tài),將開始重新定時(見波形d)。 3關(guān)斷延時定時器指令關(guān)斷延時定時器指令 關(guān)斷延時定時器(tof)用于將q輸出的復(fù)位操作延時pt指定的一段時間。in輸入電路接通時,輸出q為1狀態(tài),當(dāng)前時間被清零。在in的下降沿開始定時,et從0逐漸增大。et等于預(yù)設(shè)值時,輸出q變?yōu)?狀態(tài),當(dāng)前時間保持不變,直到in輸入電路接通(見波形a)。關(guān)斷延時定時器可以用于設(shè)備停機后的延時。 如果et未達到pt預(yù)設(shè)的值,in輸入信號就變?yōu)?狀態(tài),et被清0,輸出q保持1狀態(tài)不變(見波形b)。復(fù)位線

13、圈rt通電時,如果in輸入信號為0狀態(tài),則定時器被復(fù)位,當(dāng)前時間被清零,輸出q變?yōu)?狀態(tài)(見波形c)。如果復(fù)位時in輸入信號為1狀態(tài),則復(fù)位信號不起作用(見波形d)。 4時間累加器時間累加器 時間累加器tonr的in輸入電路接通時開始定時(見波形a和b)。輸入電路斷開時,累計的當(dāng)前時間值保持不變。可以用tonr來累計輸入電路接通的若干個時間段。圖3-21中的累計時間t1+t2等于預(yù)設(shè)值pt時,q輸出變?yōu)?狀態(tài)(見波形d)。 復(fù)位輸入r為1狀態(tài)時(見波形c),tonr被復(fù)位,它的et變?yōu)?,輸出q變?yōu)?狀態(tài)。 “加載持續(xù)時間”線圈pt通電時,將pt線圈指定的時間預(yù)設(shè)值寫入tonr定時器的背景數(shù)據(jù)

14、塊的靜態(tài)變量pt(”t4”.pt),將它作為tonr的輸入?yún)?shù)pt的實參。用i0.7復(fù)位tonr時,”t4”.pt也被清0。 【例3-2】 用接通延時定時器設(shè)計周期和占空比可調(diào)的振蕩電路。 圖3-22中的串聯(lián)電路接通后,定時器t5的in輸入信號為1狀態(tài),開始定時。2s后定時時間到,它的q輸出使定時器t6開始定時,同時q0.7的線圈通電。3s后t6的定時時間到,它的輸出“t6”.q的常閉觸點斷開,使t5的in輸入電路斷開,其q輸出變?yōu)?狀態(tài),使q0.7和定時器t6的q輸出也變?yōu)?狀態(tài)。下一個掃描周期因為“t6”.q的常閉觸點接通,t5又從預(yù)設(shè)值開始定時。q0.7的線圈將這樣周期性地通電和斷電,直

15、到串聯(lián)電路斷開。q0.7線圈通電和斷電的時間分別等于t6和t5的預(yù)設(shè)值。 5用數(shù)據(jù)類型為用數(shù)據(jù)類型為iec_timer的變量的變量提供背景數(shù)據(jù)提供背景數(shù)據(jù) 用3種定時器設(shè)計衛(wèi)生間沖水控制電路。i0.7是光電開關(guān)檢測到的有使用者的信號,用q1.2 控制沖水電磁閥。在符號地址為“定時器db”的db15中生成數(shù)據(jù)類型為iec_timer的變量t1、t2、t3,用它們提供定時器的背景數(shù)據(jù)。 從i0.7(有人使用)的上升沿開始,ton延時3s后其輸出q變?yōu)?狀態(tài),使tp的in輸入信號變?yōu)?狀態(tài),”定時器db”.t2.q提供4s的脈沖。 tof的q輸出”定時器db”.t3.q的波形減去i0.7的波形得到寬

16、度為5s的脈沖波形,用兩個觸點的串聯(lián)電路來實現(xiàn)上述要求。兩塊脈沖波形的疊加用并聯(lián)電路來實現(xiàn)。”定時器db”.t1.q的常開觸點用于防止3s內(nèi)有人進入和離開時沖水。 6定時器線圈指令定時器線圈指令 兩條運輸帶順序相連,按下起動按鈕i0.3,1號運輸帶開始運行,8s后2號運輸帶自動起動。按了停止按鈕i0.2,先停2號運輸帶,8s后停1號運輸帶。 在運輸帶控制程序中設(shè)置了一個用起動、停止按鈕控制的m2.3,用它來控制ton的in輸入端和tof線圈。 中間標(biāo)有tof的線圈上面是定時器的背景數(shù)據(jù)塊,下面是時間預(yù)設(shè)值pt。tof線圈和tof方框定時器指令的功能相同。 ton的q輸出端控制的q0.6在i0.

17、3的上升沿之后8s變?yōu)?狀態(tài),在m2.3的下降沿時變?yōu)?狀態(tài)。所以可以用ton的q輸出端直接控制2號運輸帶q0.6。t11是db11的符號地址。按下起動按鈕i0.3,tof線圈通電。它的q輸出“t11”.q在它的線圈通電時變?yōu)?狀態(tài),在它的線圈斷電后延時8s變?yōu)?狀態(tài),因此可以用“t11”.q的常開觸點控制1號運輸帶q1.1。3.2.2 計數(shù)器指令計數(shù)器指令 1計數(shù)器的數(shù)據(jù)類型計數(shù)器的數(shù)據(jù)類型 s7-1200的計數(shù)器屬于函數(shù)塊,調(diào)用時需要生成背景數(shù)據(jù)塊。單擊指令助記符下面的問號,用下拉式列表選擇某種整數(shù)數(shù)據(jù)類型。 cu和cd分別是加計數(shù)輸入和減計數(shù)輸入,在cu或cd信號的上升沿,當(dāng)前計數(shù)器值c

18、v被加1或減1。pv為預(yù)設(shè)計數(shù)值,cv為當(dāng)前計數(shù)器值,r為復(fù)位輸入,q為布爾輸出。 2加計數(shù)器加計數(shù)器 當(dāng)接在r輸入端的i1.1為0狀態(tài),在cu信號的上升沿,cv加1,直到達到指定的數(shù)據(jù)類型的上限值用,cv的值不再增加。 cv大于等于pv時,輸出q為1狀態(tài),反之為0狀態(tài)。第一次執(zhí)行指令時,cv被清零。各類計數(shù)器的復(fù)位輸入r為1狀態(tài)時,計數(shù)器被復(fù)位,輸出q變?yōu)?狀態(tài),cv被清零。 3減計數(shù)器減計數(shù)器 減計數(shù)器的裝載輸入ld為1狀態(tài)時,輸出q被復(fù)位為0,并把pv的值裝入cv。在減計數(shù)輸入cd的上升沿,cv減1,直到cv達到指定的數(shù)據(jù)類型的下限值。此后cv的值不再減小。 cv小于等于0時,輸出q為1

19、狀態(tài),反之q為0狀態(tài)。第一次執(zhí)行指令時,cv被清零。 4加減計數(shù)器加減計數(shù)器 在cu的上升沿,cv加1, cv達到指定的數(shù)據(jù)類型的上限值時不再增加。 在cd的上升沿,cv減1 ,cv達到指定的數(shù)據(jù)類型的下限值時不再減小。 cv大于等于pv時,qu為1,反之為0。cv小于等于0時,qd為1,反之為0。 裝載輸入ld為1狀態(tài)時,pv被裝入cv,qu變?yōu)?狀態(tài),qd被復(fù)位為0狀態(tài)。 r為1狀態(tài)時,計數(shù)器被復(fù)位,cv被清零,輸出qu變?yōu)?狀態(tài),qd變?yōu)?狀態(tài),cu 、cd和ld不再起作用。3.3 數(shù)據(jù)處理指令數(shù)據(jù)處理指令3.3.1 比較器操作指令比較器操作指令 比較指令用來比較數(shù)據(jù)類型相同的兩個操作數(shù)

20、的大小。滿足比較關(guān)系式給出的條件時,等效觸點接通。操作數(shù)可以是i、q、m、l、d存儲區(qū)中的變量或常數(shù)。比較指令需要設(shè)置數(shù)據(jù)類型,可以設(shè)置比較條件。 “值在范圍內(nèi)”指令in_range與“值超出范圍”指令out_range可以視為一個等效的觸點, min、max和val的數(shù)據(jù)類型必須相同。有能流流入且滿足條件時等效觸點閉合,有能流流出。 ok和not ok觸點指令檢查是否是有效或無效的浮點數(shù)。 【例3-4】 用接通延時定時器和比較指令組成占空比可調(diào)的脈沖發(fā)生器。 “t1”.q是ton的位輸出,plc進入run模式時,ton的in輸入端為1狀態(tài),ton的當(dāng)前值從0開始不斷增大。當(dāng)前值等于預(yù)設(shè)值時,

21、“t1”.q變?yōu)?狀態(tài),其常閉觸點斷開,定時器被復(fù)位,“t1”.q變?yōu)?狀態(tài)。下一掃描周期其常閉觸點接通,定時器又開始定時。ton的當(dāng)前時間“t1”.et按鋸齒波形變化。比較指令用來產(chǎn)生脈沖寬度可調(diào)的方波,q1.0為0狀態(tài)的時間取決于比較觸點下面的操作數(shù)的值。3.3.2 使能輸入與使能輸出使能輸入與使能輸出 有能流流到方框指令的en(使能輸入)端,方框指令才能執(zhí)行。如果en輸入有能流流入,而且執(zhí)行時無錯誤,則使能輸出eno端將能流傳遞給下一個元件。如果執(zhí)行過程中有錯誤,能流在出現(xiàn)錯誤的方框指令終止。右鍵單擊指令框,可以生成eno或不生成eno(eno變?yōu)榛疑2簧蒭no時,eno端始終有能

22、流流出。 convert是數(shù)據(jù)轉(zhuǎn)換指令,需要在conv下面“to”兩邊設(shè)置轉(zhuǎn)換前后的數(shù)據(jù)的數(shù)據(jù)類型。 啟動程序狀態(tài)功能, 設(shè)置轉(zhuǎn)換前的bcd碼為16#f234,轉(zhuǎn)換后得到-234,程序執(zhí)行成功,有能流從eno輸出端流出。 轉(zhuǎn)換前的數(shù)值如果為16#23f,16#f不是bcd碼的數(shù)字,指令執(zhí)行出錯,沒有能流從eno流出。可以在指令的在線幫助中找到使eno為0狀態(tài)的原因。 eno可以作為下一個方框的en輸入,只有前一個方框被正確執(zhí)行,與它連接的后面的程序才能被執(zhí)行。en和eno的操作數(shù)均為能流,數(shù)據(jù)類型為bool。3.3.3 轉(zhuǎn)換操作指令轉(zhuǎn)換操作指令 1轉(zhuǎn)換值指令轉(zhuǎn)換值指令 轉(zhuǎn)換值指令convert

23、的參數(shù)in、out可以設(shè)置十多種數(shù)據(jù)類型。 2浮點數(shù)轉(zhuǎn)換為雙整數(shù)的指令浮點數(shù)轉(zhuǎn)換為雙整數(shù)的指令 有4條浮點數(shù)轉(zhuǎn)換為雙整數(shù)指令,用得最多的是四舍五入的取整指令round。 “截尾取整”指令trunc僅保留浮點數(shù)的整數(shù)部分,去掉其小數(shù)部分。“浮點數(shù)向上取整”指令ceil和“浮點數(shù)向下取整”指令floor極少使用。 3標(biāo)準(zhǔn)化指令標(biāo)準(zhǔn)化指令 標(biāo)準(zhǔn)化指令norm_x的整數(shù)輸入值value(minvaluemax)被線性轉(zhuǎn)換(標(biāo)準(zhǔn)化)為0.01.0之間的浮點數(shù),需設(shè)置變量的數(shù)據(jù)類型。out =(value - min)/(max - min) 4縮放指令縮放指令 縮放指令scale_x的浮點數(shù)輸入值val

24、ue(0.0value1.0)被線性轉(zhuǎn)換(映射)為min和max定義的數(shù)值范圍之間的整數(shù)。out = value(max - min)+ min 【例3-5】 某溫度變送器的量程為-200850,輸出信號為420ma,符號地址為“模擬值”的iw96將020ma的電流信號轉(zhuǎn)換為數(shù)字027648,求以為單位的浮點數(shù)溫度值。 4ma對應(yīng)的模擬值為5530,iw96將-200850的溫度轉(zhuǎn)換為模擬值553027648,用“標(biāo)準(zhǔn)化”指令norm_x將553027648的模擬值歸一化為0.01.0之間的浮點數(shù)“歸一化” ,然后用“縮放”指令scale_x將歸一化后的數(shù)字轉(zhuǎn)換為-200850的浮點數(shù)溫度值,

25、用變量“溫度值”保存。 【例3-6】地址為qw96的整型變量“aq輸入”轉(zhuǎn)換后的dc 010v電壓作為變頻器的模擬量輸入值,010v的電壓對應(yīng)的轉(zhuǎn)速為01800rpm。求以rpm為單位的整型變量“轉(zhuǎn)速”對應(yīng)的aq模塊的輸入值“aq輸入”。 “標(biāo)準(zhǔn)化”指令norm_x將01800的轉(zhuǎn)速值歸一化為0.01.0之間的浮點數(shù)“歸一化”,然后用“縮放”指令scale_x將歸一化后的數(shù)字轉(zhuǎn)換為027648的整數(shù)值,用變量“aq輸入”保存。3.3.4 移動操作指令移動操作指令 1移動值指令移動值指令 “移動值”指令move用于將in輸入的源數(shù)據(jù)傳送給out1輸出的目的地址,并且轉(zhuǎn)換為out1允許的數(shù)據(jù)類型(

26、與是否進行iec檢查有關(guān)),源數(shù)據(jù)保持不變。move指令的in和out1可以是bool之外所有的基本數(shù)據(jù)類型、數(shù)據(jù)類型dtl、struct、array,in還可以是常數(shù)。可增減輸出參數(shù)的個數(shù)。 如果in數(shù)據(jù)類型的位長度超出out1數(shù)據(jù)類型的位長度,源值的高位丟失。如果in數(shù)據(jù)類型的位長度小于輸出out1數(shù)據(jù)類型的位長度,目標(biāo)值的高位被改寫為0。 2交換指令交換指令 交換指令swap用于交換字或雙字中的字節(jié)。 3填充存儲區(qū)指令填充存儲區(qū)指令 生成“數(shù)據(jù)塊_1”(db3)和“數(shù)據(jù)塊_2”(db4),在db3中創(chuàng)建有40個int元素的數(shù)組source,在db4中創(chuàng)建有40個int元素的數(shù)組disti

27、n。 “tag_13”(i0.4)的常開觸點接通時,“填充存儲區(qū)”指令fill_blk將常數(shù)3527填充到數(shù)據(jù)塊_1中的數(shù)組source的前20個整數(shù)元素中。 “不可中斷的存儲區(qū)填充”指令ufill_blk與fill_blk指令的功能相同,其填充操作不會被操作系統(tǒng)的其他任務(wù)打斷。 4存儲區(qū)移動指令存儲區(qū)移動指令 i0.3(tag_12)的常開觸點接通時,“存儲區(qū)移動”指令move_blk將源區(qū)域數(shù)據(jù)塊_1的數(shù)組source的0號元素開始的20個int元素的值,復(fù)制給目標(biāo)區(qū)域數(shù)據(jù)塊_2的數(shù)組distin的0號元素開始的20個元素。復(fù)制操作按地址增大的方向進行。 in和out是待復(fù)制的源區(qū)域和目標(biāo)

28、區(qū)域中的首個元素。 “不可中斷的存儲區(qū)移動”指令umove_blk與move_blk的功能基本上相同,其復(fù)制操作不會被操作系統(tǒng)的其他任務(wù)打斷。3.3.5 移位與循環(huán)移位指令移位與循環(huán)移位指令 1移位指令移位指令 右移指令shr和左移指令shl將輸入?yún)?shù)in指定的存儲單元的整個內(nèi)容逐位右移或左移n位。需要設(shè)置指令的數(shù)據(jù)類型。有符號數(shù)右移后空出來的位用符號位填充。無符號數(shù)移位和有符號數(shù)左移后空出來的位用0填充。右移n位相當(dāng)于除以2n ,左移n位相當(dāng)于乘以2n 。 如果移位后的數(shù)據(jù)要送回原地址,應(yīng)在信號邊沿操作。 2循環(huán)移位指令循環(huán)移位指令 “循環(huán)右移”指令ror和“循環(huán)左移”指令rol將輸入?yún)?shù)i

29、n指定的存儲單元的整個內(nèi)容逐位循環(huán)右移或循環(huán)左移n位,移出來的位又送回存儲單元另一端空出來的位。移位的結(jié)果保存在輸出參數(shù)out指定的地址。移位位數(shù)n可以大于被移位存儲單元的位數(shù)。 3使用循環(huán)移位指令的彩燈控制器使用循環(huán)移位指令的彩燈控制器 m1.0是首次掃描脈沖,用它給彩燈置初值7。時鐘存儲器位m0.5的頻率為1hz。是否移位用i0.6來控制,移位的方向用i0.7來控制。因為qb0循環(huán)移位后的值又送回qb0,必須使用p_trig指令。3.4 數(shù)學(xué)運算指令數(shù)學(xué)運算指令3.4.1 數(shù)學(xué)函數(shù)指令數(shù)學(xué)函數(shù)指令 1四則運算指令四則運算指令 add、sub、mul和div指令可選多種整數(shù)和實數(shù)數(shù)據(jù)類型,整

30、數(shù)除法截尾取整。in1和in2可以是常數(shù),in1、in2和out的數(shù)據(jù)類型應(yīng)相同。add和mul指令可增加輸入個數(shù)。 【例3-6】壓力變送器的量程為010mpa,輸出信號為010v,被iw64轉(zhuǎn)換為027648的數(shù)字n。試求以kpa為單位的壓力值。 p =(10000 n)/ 27648 (kpa) temp1的數(shù)據(jù)類型為dint,在運算時一定要先乘后除,應(yīng)使用雙整數(shù)乘法和除法。為此首先用conv指令將iw64轉(zhuǎn)換為雙整數(shù)。【例3-7】 使用浮點數(shù)運算計算上例以kpa為單位的壓力值。p =(10000 n)/ 27648 = 0.361690n (kpa) 首先用conv指令將iw64轉(zhuǎn)換為實

31、數(shù),再用實數(shù)乘法指令完成運算。最后用round指令,將運算結(jié)果四舍五入為整數(shù)。 2calculate指令指令 可以用“計算”指令calculate定義和執(zhí)行數(shù)學(xué)表達式,根據(jù)所選的數(shù)據(jù)類型計算復(fù)雜的數(shù)學(xué)運算或邏輯運算。雙擊指令框中間的數(shù)學(xué)表達式方框,打開下圖的對話框。輸入待計算的表達式,表達式只能使用方框內(nèi)的輸入?yún)?shù)inn和運算符。可增加輸入?yún)?shù)的個數(shù)。 運行時使用方框外輸入的值執(zhí)行指定的表達式的運算,運算結(jié)果傳送到md36中。 3浮點數(shù)函數(shù)運算指令 浮點數(shù)數(shù)學(xué)運算指令的操作數(shù)in和out的數(shù)據(jù)類型均為real。 sqrt和ln指令的輸入值如果小于0,輸出out為無效的浮點數(shù)。 三角函數(shù)指令和反

32、三角函數(shù)指令中的角度均為以弧度為單位的浮點數(shù)。以度為單位的角度值乘以/180.0,轉(zhuǎn)換為弧度值。 【例 3-9】 測量遠處物體的高度,已知被測物體到測量點的距離l和以度為單位的夾角,求被測物體的高度h,h = ltan ,md40中角度的單位為度,乘以/180 = 0.0174533,得到角度的弧度值,運算的中間結(jié)果用實數(shù)臨時局部變量temp2保存。md44中是l的實數(shù)值,運算結(jié)果在md48中。 4其他數(shù)學(xué)函數(shù)指令 (1)“返回除法的余數(shù)”指令mod用于求各種整數(shù)除法的余數(shù)。輸出out中的運算結(jié)果為除法運算in1/ in2的余數(shù)。 (2)“求二進制補碼”(取反)指令neg將輸入in的值的符號取

33、反后,保存在輸出out中。in和out的數(shù)據(jù)類型可以是sint、int、dint和real。 (3)遞增指令inc與遞減指令dec將參數(shù)in/out的值分別加1和減1。數(shù)據(jù)類型為各種整數(shù)。圖中的inc指令用來計i0.4動作的次數(shù),應(yīng)在inc指令之前添加p_trig指令。 (4)“計算絕對值”指令abs用來求輸入in中的有符號整數(shù)或?qū)崝?shù)的絕對值,將結(jié)果保存在輸出out中。in和out的數(shù)據(jù)類型應(yīng)相同。 (5)“獲取最小值”指令min和“獲取最大值”指令max比較輸入in1和in2的值,將其中較小或較大的值送給輸出out。可增加輸入個數(shù)。 (6)“設(shè)置限值”指令limit將輸入in的值限制在輸入m

34、in與max的值范圍之間。 (7)“提取小數(shù)”指令frac將輸入in的小數(shù)部分傳送到輸出out。“取冪”指令expt計算以輸入in1的值為底,以輸入in2為指數(shù)的冪(out = in1in2)。3.4.2 字邏輯運算指令字邏輯運算指令 1字邏輯運算指令字邏輯運算指令 字邏輯運算指令對兩個輸入in1和in2逐位進行邏輯運算,運算結(jié)果在輸出out指定的地址中。可以增加輸入的個數(shù)。 “與運算”(and)指令的兩個操作數(shù)的同一位如果均為1,運算結(jié)果的對應(yīng)位為1,否則為0(見表3-5)。“或運算”(or)指令的兩個操作數(shù)的同一位如果均為0,運算結(jié)果的對應(yīng)位為0,否則為1。“異或運算”運算(xor)指令的

35、兩個操作數(shù)的同一位如果不相同,運算結(jié)果的對應(yīng)位為1,否則為0。指令的操作數(shù)的數(shù)據(jù)類型為位字符串byte、word或dword。 “求反碼”指令invert將輸入in中的二進制整數(shù)逐位取反(由0變1,由1變0),運算結(jié)果存放在輸出out指定的地址。 2解碼與編碼指令 如果輸入?yún)?shù)in的值為n,“解碼”指令deco將輸出參數(shù)out的第n位置位為1,其余各位置0。如果輸入in的值大于31,將in的值除以32以后,用余數(shù)來進行解碼操作。in為5時out為2#0010 0000(16#20),僅第5位為1。 “編碼”指令enco將in中為1的最低位的位數(shù)送給out指定的地址。如果in為2#0010100

36、0(即16#28),out中的編碼結(jié)果為3。如果in為1或0,out的值為0。如果in為0,eno為0狀態(tài)。 3sel與mux、demux指令 “選擇”指令sel(select)的bool輸入?yún)?shù)g為0時選中in0,g為1時選中in1,選中的數(shù)值被保存到輸出參數(shù)out指定的地址。 “多路復(fù)用”指令mux(multiplex)根據(jù)輸入?yún)?shù)k的值,選中某個輸入數(shù)據(jù),并將它傳送到輸出參數(shù)out指定的地址。k = m時,將選中輸入?yún)?shù)inm。如果k的值大于可用的輸入個數(shù),else的值將復(fù)制到輸出out中,eno為0狀態(tài)。可以增加輸入?yún)?shù)inn的個數(shù)。inn、else和out的數(shù)據(jù)類型應(yīng)相同。 “多路分

37、用”指令demux根據(jù)輸入?yún)?shù)k的值,將輸入in的內(nèi)容復(fù)制到選定的輸出,其他輸出則保持不變。k = m時,將復(fù)制到輸出outm。可以增加輸出參數(shù)outn的個數(shù)。in、else和outn的數(shù)據(jù)類型應(yīng)相同。如果參數(shù)k的值大于可用的輸出個數(shù),參數(shù)else輸出in的值,eno為0狀態(tài)。 1跳轉(zhuǎn)指令與標(biāo)簽指令跳轉(zhuǎn)指令與標(biāo)簽指令 跳轉(zhuǎn)指令中止程序的順序執(zhí)行,跳轉(zhuǎn)到指令中的跳轉(zhuǎn)標(biāo)簽所在的目的地址。可以向前或向后跳轉(zhuǎn),只能在同一個代碼塊內(nèi)跳轉(zhuǎn)。在一個塊內(nèi),跳轉(zhuǎn)標(biāo)簽的名稱只能使用一次。一個程度段中只能設(shè)置一個跳轉(zhuǎn)標(biāo)簽。 “rlo為1時跳轉(zhuǎn)”指令jmp的線圈通電時跳轉(zhuǎn)到指定的跳轉(zhuǎn)標(biāo)簽。 “rlo為0時跳轉(zhuǎn)”指令j

38、mpn的線圈斷電時跳轉(zhuǎn)到指定的跳轉(zhuǎn)標(biāo)簽。 如果跳轉(zhuǎn)條件不滿足,將繼續(xù)執(zhí)行跳轉(zhuǎn)指令之后的程序。標(biāo)簽在程序段的開始處,標(biāo)簽的第一個字符必須是字母。 2跳轉(zhuǎn)分支指令與定義跳轉(zhuǎn)列表指令跳轉(zhuǎn)分支指令與定義跳轉(zhuǎn)列表指令 “跳轉(zhuǎn)分支指令”switch根據(jù)一個或多個比較指令的結(jié)果,定義要執(zhí)行的多個程序跳轉(zhuǎn)。用參數(shù)k指定要比較的值,將該值與各個輸入提供的值進行比較。滿足條件則跳轉(zhuǎn)到對應(yīng)的標(biāo)簽。不滿足上述條件將跳轉(zhuǎn)到else指定的標(biāo)簽。可增加輸出的個數(shù)。 “定義跳轉(zhuǎn)列表”指令jmp_list定義多個有條件跳轉(zhuǎn),并繼續(xù)執(zhí)行由參數(shù)k的值指定的程序段中的程序。可增加輸出的個數(shù)。如果k值大于可用的輸出編號,則繼續(xù)執(zhí)行塊中

39、下一個程序段的程序。 “重新啟動周期監(jiān)視時間”指令re_trigr用于復(fù)位監(jiān)控定時器。 “退出程序”指令stp使plc進入stop模式。“返回”指令ret用來有條件地結(jié)束塊。ret線圈上面的參數(shù)返回值是fc或fb的eno的值。3.6 日期和時間指令日期和時間指令 在cpu斷電時,用超級電容提供的實時時鐘的保持時間通常為20天。 數(shù)據(jù)類型time的長度為4b,時間單位為ms。數(shù)據(jù)結(jié)構(gòu)dtl(日期時間)共12b,分別是年(2b)、月、日、星期、時、分、秒、ns(4b)。星期代碼17分別是星期日星期六。 “轉(zhuǎn)換時間并提取”指令t_conv用于在整數(shù)和時間數(shù)據(jù)類型之間轉(zhuǎn)換。 t_add、t_sub指令

40、將兩個時間段相加、減。 “時間值相減”指令t_diff將 in1 中的時間值減去 in2 中的時間值。 “組合時間”指令t_combine用于合并日期值和時間值。 指令wr_sys_t和rd_sys_t用于設(shè)置和讀取cpu時鐘的系統(tǒng)時間(格林尼治標(biāo)準(zhǔn)時間)。 指令wr_loc_t和rd_loc_t用于設(shè)置和讀取cpu時鐘的本地時間。 組態(tài)cpu的屬性時,應(yīng)設(shè)置實時時間的時區(qū)為北京,不啟用夏令時。 指令set_timezone用于設(shè)置時區(qū)。 指令rtm(運行時間定時器)用于對cpu的32位運行小時計數(shù)器的設(shè)置、啟動、停止和讀取操作。 生成全局數(shù)據(jù)塊“數(shù)據(jù)塊_1”,在其中生成數(shù)據(jù)類型為dtl的變量

41、dt1 dt3 。 用監(jiān)控表將新的時間值寫入“數(shù)據(jù)塊_1”.dt3。“寫時間”(m3.2)為1狀態(tài)時,“寫入本地時間”指令wr_loc_t將輸入?yún)?shù)loctime輸入的日期時間作為本地時間寫入實時鐘。參數(shù)dst與夏令時有關(guān),我國不使用夏令時。 “讀時間”(m3.1)為1狀態(tài)時, “讀取時間”指令rd_sys_t和“讀取本地時間”指令rd_loc_t的輸出out分別是數(shù)據(jù)類型為dtl的plc中的系統(tǒng)時間和本地時間。 本地時間多8個小時。 3.5.3 字符串與字符指令字符串與字符指令 數(shù)據(jù)類型string的首字節(jié)是字符串的最大長度,第2個字節(jié)是當(dāng)前實際使用的字符數(shù),后面是最多254b的ascii字

42、符代碼。此外還有寬字符串wstring。 在db1中生成3個字符串,數(shù)據(jù)類型為string18,最大長度18個字符。 “轉(zhuǎn)換字符串”指令s_conv用于字符串和數(shù)值的相互轉(zhuǎn)換。strg_val是“將字符串轉(zhuǎn)換為數(shù)值”指令,val_strg是“將數(shù)值轉(zhuǎn)換為字符串”指令。 指令strg_to_chars將字符串轉(zhuǎn)換為字符元素組成的數(shù)組,指令chars_to_ strg將字符元素組成的數(shù)組轉(zhuǎn)換為字符串。指令ath將ascii字符串轉(zhuǎn)換為十六進制數(shù),指令hta將十六進制數(shù)轉(zhuǎn)換為ascii字符串。 len是“確定字符串的長度”指令,max_len是“確定字符串的最大長度指令”, concat是“合并字符串”指令。 s_move是“移動字符串”指令。 left、right和mid指令分別用來讀取字符串左邊、右邊和中間的字符。 delete、insert、replace和find指令分別用來刪除、插入、替換和查找字符。指令中的l用來定義字符個數(shù),p是字符串中字符的位置。3.6 高速計數(shù)器與高速脈沖輸出高速計數(shù)器與高速脈沖輸出3.6.1 高速計數(shù)器高速計數(shù)器 1編碼器編碼器 高速計數(shù)器與增量式編碼器一起工作。單通道增量式編碼器內(nèi)部只有1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論