




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、gPLC(FX2N)浮點(小數點)運算編程研究講義2012目錄u PLC(FX2N)浮點(小數)運算編程概要u 實驗一 將一個整數轉變為一個二進制小數,并存入FX2N的Dn中(產生一個浮點數,存入FX2N的Dn中)u 實驗二 將2個二進制小數(或其中一個常數K、H)進行四則運算u 實驗三 一個二進制小數,如何在LED數碼顯示器,或者組態王上顯示監控u 實驗四 二進制浮點數運算實例u 實驗五 任意位浮點數(小數)的輸入u 附1:PLC數值顯示(LED數碼顯示器)含小數點方法u 附2:PLC(FX2N)中輸入小數小結、要點:PLC(FX2N)浮點(小數)運算編程概要1、 PLC(FX2N)浮點數(
2、小數)概論:u 二進制小數概念:二進制小數在PLC(FX2N)中存儲占用32位(即占用2個連續編號的Dn、Dn+1),最高位bit31位是符號位(1是負數,0是正數),其他位(bit30bit0)是數值位,數值位分尾數段和指數段,bit0bit22共23位是尾數段,bit23bit30共8位是指數段;注:二進制小數不是按2的補碼處理;u 浮點數(小數)運算規則概念² 進行浮點數(小數)運算的各Dn只能是二進制小數、常數K、H;不能是整數或十進制小數;² 若Dn中數據是整數,需用FLT指令轉化為二進制小數形式,再參與運算;² 若Dn中數據是十進制小數,需用EBIN指
3、令轉化為二進制小數形式,再參與運算;² 若Dn中數據是常數K、H,可直接參與運算,無需轉化,因其在參與運算過程中會自動轉化;² 浮點數運算中指令前一般應加D,因參與運算的二進制小數都占有二個連續的Dn、為32位數據;² 浮點數運算的種類在PLC(FX2N)中有加9EADD)、減(ESUB)、乘(EMUL)、除(EDIV)、正弦(SIN)、余弦(COS)、正切(TAN)、數類轉化(FLT、INT、EBIN、EBCD)、比較(ECMP、CZCP)等等;u 二進制小數的PLC處理中的監控:因二進制小數數值與指數占用了二個連續的Dn,且難以區別,故難以在組態王等上監控(如
4、LED數碼顯示器、組態王等)、監控的數據只是亂碼,故若要監控需將這些二進制小數用EBCD指令轉化為十進制小數,十進制小數占用連續二個Dn,編號大的為指數段,編號小的為尾數值、區別明確,易于監控;如:;其中D30為尾數值、D31為指數段;注:在FX2N仿真軟件上易監控仿真結果;u 十進制小數概念:十進制小數在PLC(FX2N)中占用32位,在PLC內部存儲時采用2個連續編號的Dn、Dn+1,編號小的保存尾數段(Dn),編號大的保存指數段(Dn+1);如:;其中D30為尾數值、D31為指數段;u 十進制小數的運算:十進制小數無法在PLC(FX2N)中直接進行運算處理,需用EBIN指令轉化為二進制小
5、數再進行運算;u 十進制小數的數值監控作用:十進制小數易于數值監控,而二進制小數難以直接監控,直接監控數值往往為亂碼,故PLC中二進制小數若需監控,可用EBCD指令將其轉化為十進制小數;注:十進制小數在FX2N仿真軟件上監控反而出現亂碼;u 二十進制數相互轉化中的誤差:² 在二進制小數轉化為十進制小數、或十進制小數轉化為二進制小數過程中,易產生一定的誤差,因有效數字四舍五入的緣故;² 因某些自動控制采用浮點數可提高控制精度與品質,故需浮點數運算及處理;² 因某些自動控制部件只能采用整數,故需將浮點數轉化為整數,其轉化過程有四舍五入,將產生一定的誤差。2、 得到一個
6、二進制小數的方法概要(與得到一個十進制小數的方法互為逆運算):u 方法一:如產生一個二進制小數254.6(往D20中存入一個二進制小數254.6);² 先往D0中送入一個整數(2546);MOV K2546 D0;² 再用二進制整數轉化為二進制小數指令FLT轉化得到二進制小數形式,存入D10(2546.00);FLT D0 D10;注:FLT指令僅是將整數的表示形式轉化為小數的表現形式(2546-2546.00),但此數值實質上仍是整數;² 最后將二進制小數形式除以常數10的倍數,得到所需小數后為幾位的二進制小數(254.6);DEDIV D10 K10 D20;
7、注:小數處理指令與整數處理指令類似,只是前面加E,表示屬小數處理指令;另外小數數值占二個Dn,為32位,故運算指令前需加D;² 注:二進制小數因是32位數值,整個數值254.6占了(D21)D20;² 注:方案一PLC軟件監控仿真結果正常;組態王監控為亂碼;² 例程:u 方法二:如產生一個二進制小數254.6(往D10中存入一個二進制小數254.6);² 將一個需轉化的整數送入D0(2546);MOV K2546 D0;² 再將一個負數(為小數的位數)送入D1;MOV -1 D1;² 注:上述二個Dn標號必須連續、且存放整數的Dn標號
8、應在前(D0)、存放負數的Dn標號應在后(D1);² 最后用十進制小數轉化為二進制小數指令EBIN轉化得到所需的二進制小數(254.6);DEBIN D0 D10;注:小數處理指令與整數處理指令類似,只是前面加E,表示屬小數處理指令;另外小數數值占二個Dn,為32位,故運算指令前需加D;² 注:二進制小數因是32位數值,整個數值254.6占了(D21)D20;² 注:方法二PLC軟件監控仿真為亂碼;組態王監控為亂碼;² 例程:3、 得到一個十進制小數的方法概要(與得到一個二進制小數的方法互為逆運算):u 方法一:將一個二進制小數通過EBCD指令(二進制小
9、數轉化為十進制小數指令)轉化得到;注:直接結果顯示PLC監控仿真為亂碼,可在組態王等上用尾數指數形式顯示結果Dn-Dn+1;u 方法二:先往Dn中送入一個整數;再往Dn+1中送入一個負數(為小數的位數);注:上述二個Dn標號必須連續、且存入整數的Dn標號在前(Dn)、存入負數的Dn標號在后(Dn+1)。注:直接結果顯示PLC監控仿真為亂碼,可在組態王等上用尾數指數形式顯示結果Dn-Dn+1;實驗一 將一個整數轉變為一個二進制小數,并存入FX2N的Dn中(產生一個浮點數,存入FX2N的Dn中) 1、具體實例:將一個整數12,轉變為二進制小數1.2,存入(D21)D20中;為了在組態王上易監控,再
10、轉化為十進制小數存入(D31)D30中;并用D30-D31方式在組態王顯示結果。2、程序1段及分析:先將常數(整數)12存入D0中;再用FLT指令將D0中的常數(整數)轉變為二進制小數形式(12.00)存入D11(D10)中;最后用二進制小數除法指令DEDIV得到1位小數的二進制小數(1.200)存入(D21)D20中;3、程序1段PLC仿真:4、程序2段及分析:為了實現(D21)D20中數值的組態王監控,先用DEBCD指令將其轉化為十進制小數、存入(D31)D30中;5、程序2段PLC仿真:6、程序3段及分析、PLC仿真:十進制小數(D31)D30中指數段(D31)值作正負值判別,若是負值則
11、求補碼,再顯示;若是正值則不需處理,直接顯示;(指數段作正負判別是為了:若可能出現負數,需求補碼處理成原碼絕對值-十進制小數的指數一般都是負數,如此處-3);7、程序4段及分析、PLC仿真:十進制小數(D31)D30中尾數段(D30)值作正負值判別,若是負值則求補碼,再顯示;若是正值則不需處理,直接顯示;(尾數段作正負判別是為了:若可能出現負數,需求補碼處理成原碼絕對值-為負數的十進制小數時才可能出現,此處不是);8、組態王監控結果及說明: 在組態王監控中,原數D0=12,將其轉化為1.200存入(D31)D30,并用D30-D31方式顯示(1199×10-3):9、 總的PLC程序
12、及解說、仿真結果:10、幾點說明:u 將一個整數轉變為二進制小數形式,用FLT指令;u 二進制小數形式數在FX2N中:² 占用二個連續Dn存儲,占32位;² b0位b22位(共23位)是尾數位;² b23位b30位(共8位)是指數位;² b31位是符號位(1為負數,0為正數);² 二進制小數不是按2的補碼處理;u 因上述規則,故二進制小數難以直接監控,直接監控會出現亂碼;一般可將其轉變為十進制小數,再進行監控;u 其整數后面(小數點后面)為三位小數形式;u 例如:一個整數12轉變為二進制小數形式數,形式為12.000; u 將二進制小數轉變為十
13、進制小數形式,用EBCD指令;u 十進制小數形式在FX2N中:² 占用二個連續Dn存儲,占32位;² Dn編號小的是尾數段,Dn編號大的是指數段;² Dn的最高位都是符號位;² 十進制小數是按2的補碼處理;² 例如:一個二進制小數轉變為十進制小數存入D31、D30中,其表示形式為:,即;即D30中存的是尾數段1199;D31中存的是指數段-3。u 因上述規則,故十進制小數可以用于直接監控;u 將二進制小數轉變為十進制小數時,十進制小數的尾數段為4位,故轉變可能會出現一定的誤差。實驗二 將2個二進制小數(或其中一個常數K、H)進行四則運算1、具體
14、實例:產生2個二進制小數,(D21)D20=2.4,(D26)D25=1.2,再將這2個二進制小數進行加減乘除等四則運算處理;2、 FX2N程序及解說、仿真3、程序說明² 首先用MOV指令將整數24放入D1中、整數12放入D2中;² 用FLT指令將D1中的整數24轉變為二進制小數形式24.00存入D10中、將D2中的整數12轉變為二進制小數形式12.00存入D15中;² 用DEDIV指令將D10中的二進制小數形式數24.00成為具有一位小數的二進制小數2.400、用DEDIV指令將D15中的二進制小數形式數12.00成為具有一位小數的二進制小數1.200;
15、8; 二進制小數2.400與12.00進行加減乘除四則運算:2.4+1.2=(D31)D30;2.4-1.2=(D36)D35;2.4×1.2=(D41)D40;2.4÷1.2=(D46)D45;4、幾點說明n 將FX2N中Dn的多個二進制小數進行四則運算,它們類型需都為浮點形式;n 若某個類型不是浮點形式,需用FLT轉化,再參與運算;n 但常數K、H無需轉化,因其在參與運算過程中會自動轉化為浮點形式;n 二進制小數在進行四則運算過程中,都需應用FX2N的浮點四則運算指令,而不能應用普通四則運算指令;n 運算結果若需監控的(LED數碼顯示器、組態王等),可將其轉換為十進制小
16、數再監控。實驗三 一個二進制小數,如何在LED數碼顯示器,或者組態王上顯示監控1、具體實例:產生一個二進制小數1.2,并分別組態王上監控顯示、在LED數碼顯示器上顯示。2、編程思路解讀:u 首先用FLT指令及DEDIV指令產生1個1位二進制小數1.2;存入(D11)D10中;u 用DEBCD指令將該二進制小數1.2轉化為十進制小數1.2,并存入(D101)D100中;u 將十進制小數的指數段(高位Dn,即D101)進行正負符號判別:² 正數則直接顯示十進制小數的指數值D101;² 負數則先求補碼,再顯示十進制小數的指數值;(顯示數值前面加負號,大多如此);D101=-3;u
17、 將十進制小數的尾數段(低位Dn,即D100)進行正負符號判別:² 正數則直接顯示十進制小數的尾數值D100=1199;² 負數則先求補碼,再顯示十進制小數的尾數值D100;(顯示數值前面加負號);u 十進制小數的總體表示形式為:,具體的即:D100-D101;此實驗結果為1199-3;u 十進制小數用LED數碼顯示器顯示(結合硬件I/O圖查看):² 先對Dn(十進制小數尾數,經正負判別與求補碼處理D100)進行常規處理顯示(BCD或SEGD等);注意數值前面需加負號與否;² 再對Dn+1(十進制小數指數,經正負判別與求補碼處理D101)進行常規處理顯示
18、(BCD或SEGD等);注意數值前面需加負號與否;u 十進制小數用組態王顯示監控:² 按十進制小數的總體表示形式:;設置Dn變量(D100)、Dn+1變量(D101);并在畫面按上述形式制作D100-D101;顯示結果為1199-3;3、PLC程序、解說及仿真4、組態王監控圖(略)5、LED數碼顯示器顯示硬件I/O圖實驗四 二進制浮點數運算實例1、具體任務:要求編制一解方程程序:;其中X:X0X17(K4X0),由四位數字開關輸入,范圍為09999。2、PLC程序、解說及仿真 3、程序編制思路:u 程序編程:² 采用DMOV指令、DFLT指令及DEDIV指令先產生1個二進制
19、小數115.2=(D26)D25;² 采用DMOV指令、DFLT指令及DEDIV指令先產生1個二進制小數375.23=(D7)D6;² 采用DMOV指令、DFLT指令及DEDIV指令先產生1個二進制小數187.6=(D16)D15;² X0X17輸入數據處理:先用BIN指令將輸入的16位BCD碼整數轉換為二進制整數;再用FLT指令將此數轉換為二進制小數形式存入(D36)D35;² 用EDMUL指令將(D26)D25與(D36)D35進行二進制小數的乘法,結果存入(D41)D40中;² 用DEADD指令將(D41)D40與(D7)D6進行二進制小
20、數的加法;結果存入(D46)D45中;² 用DEDIV指令將(D46)D45與(D16)D15進行二進制小數的除法,得到方程最終結果存入(D51)D50中。u 方程編程運算過程: u 方程編程中各變量Dn含義:² (D26)D25=115.2;² (D36)D35=K4X0(X0X17)² (D7)D6=375.23;² (D16)D15=187.6;² (D26)D25×(D36)D35=(D41)D40;² (D41)D40+(D7)D6=(D46)D45;² (D51)D50=(D46)D45
21、47;(D16)D15;即方程最后結果;實驗五 任意位浮點數(小數)的輸入一、具體任務及編程解讀:1、 設置加1/加5鍵(INC指令/ADD指令),減1/減5鍵(DEC指令/SUB指令),復位鍵,小數點1位鍵,小數點2位鍵,數據存入D0中;2、 減1/減5操作時,初始最大值設置為50,最小減至0;(觸點比較指令)3、 加1/加5操作時,初始最小值設置為0,最大加至50;(觸點比較指令)4、 減1/減5、加1/加5操作中若D0數據需歸零,可按復位鍵(RST指令);5、 輸入一個小數點后一位的小數;(FLT指令、DEDIV指令)D206、 輸入一個小數點后二位的小數;(FLT指令、DEDIV指令)
22、D207、 為了二進制小數的顯示,用DEBCD指令將二進制小數轉變為十進制小數;再用BON指令、NEG指令將數據變換為尾數、指數顯示形式D30-D31;二、編程思路1、 先用整數數據輸入指令(如加1/加n、減1/減n指令,TKY指令、HKY指令、DSW指令等等)輸入整數(即需輸入的整數連小數,先不考慮小數點)至Dn;2、 再在外部Xn選擇小數位(n位),編程處理存入Dm中,實現了小數的輸入。三、PLC程序及解說、仿真:附1:20一、實驗要求 顯示一個含有小數點的實數,如12.6、23.8、5.6等。二、實驗實現分析u 對于共陰LED數碼顯示器,將整數中最后一位的h(小數點)引腳通過一個限流電阻
23、接+Vcc即可;其他硬件電路都類同;并且無需在軟件中作任何處理。u 對于共陽LED數碼顯示器,將整數中最后一位的h(小數點)引腳通過一個限流電阻接地即可;其他硬件電路都類同;并且無需在軟件中作任何處理。三、實驗電路圖附2:PLC(FX2N)中輸入小數小結、要點:u FX2N中可外部輸入或內部產生1個二進制小數或十進制小數;u PLC外部輸入小數方案:² 外部(Xn)按常規方法輸入整數至PLC的Dn中,² 再在PLC中用FLT指令的將整數轉化為二進制小數形式,再用DEDIV指令來確定二進制小數的的位數;² 還有第二種方法,可見前面論述,略;² 若需轉化為十
24、進制小數,則可用DEBCD指令將二進制小數轉化為十進制小數;² 注:因二進制小數在PLC內部可直接進行運算,而十進制小數則直接不行,故需要小數往往首選二進制小數;u PLC內部產生小數方案:² 內部先用MOV指令在Dn中存入一個整數,² 再用FLT指令的將整數轉化為二進制小數形式,再用DEDIV指令來確定二進制小數的的位數;² 還有第二種方法,可見前述,略;² 若需轉化為十進制小數,則可用DEBCD指令將二進制小數轉化為十進制小數;² 注:因二進制小數在PLC內部可直接進行運算,而十進制小數則直接不行,故需要小數往往首選二進制小數;u PLC內部小數的運算:² PLC內部二進制小數可直接運算:如加減乘除比較等等;² 而十進制小數則不能直接運算,需用DEBIN指令將其轉化為二進制小數后進行;² 數據為K、K常數則可直接參與運算
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學低年級學生良好生活習慣養成與學校心理健康教育創新實踐研究論文
- 中國醫藥級氧化鎂行業市場前景預測及投資價值評估分析報告
- 節水措施與管理制度
- 關于房屋貸款保證保險合同糾紛的若干法律問題探討
- 視頻監控升級改造設計方案
- 建筑施工特種作業-建筑焊工真題庫-7
- 入學面試常識題目及答案
- 2023-2024學年陜西省漢中市高二下學期7月期末數學試題(解析版)
- 2024-2025學年山西省太原市高二上學期期末考試語文試題(解析版)
- 2025年秋三年級上冊語文同步教案 習作:寫日記
- 《論語》十二章對比閱讀復習精講精練含答案
- 成都市青羊區2023年數學四下期末教學質量檢測試題含解析
- 電子物證專業考試復習題庫(含答案)
- 國家開放大學02150-計算機網絡(本)期末復習題及參考答案
- 廣西2022年廣西農村信用社(農村商業銀行農村合作銀行)管理人員及業務骨干招聘考試參考題庫含答案詳解
- 國開2023年春《理工英語3》機考網考期末復習資料參考答案
- 重慶.住宅物業單位服務等級標準
- 全國工會財務知識競賽題庫附答案
- CIE-15-2004-Colorimetry原版完整文件
- 四年級下聰明小屋
- 植物精油提取工藝技術
評論
0/150
提交評論