<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al

        TWDLC*A10DRF單字乘除擴展功能

        2017/1/10 11:52:17

        1.概述

          本文介紹無雙字功能的CPU如何實現類似雙字乘除運算的方法.

          Twido CPU中僅TWDLC*A10DRF無雙字功能,雖然應用該型號CPU一般都是純邏輯控制,沒有高精度乘除運算的需求,但有時用到高速計數.電位器.操作終端輸入等情況,需要運算來判斷位置或設定值參與運算時則很不方便.

          主要問題有:

          1.)運算時可能要改比例

          2.)系統控制精度降低

          2 具體描述

          1.) 運算時可能要改比例,因為有可能發生溢出錯誤.

          下圖為Twido字對象格式:

          從圖中可看到10進制整數介于 -32768 和 32767 ,如果應用中有10進制運算328*100時就發生溢出,結果不是預期中的32800,而是-32;

          要想避免計算出錯,防止溢出,就必須使乘積結果小于32767,也就要改變乘數或被乘數的比例,如將328*100改為328*10=3280,這樣改后雖然不會出錯,但可能帶來了我們前面提到的第2.)個問題;

          2.)系統控制精度降低

          假設上述舉例為位置控制,328表示高速計數輸入,100表示單位脈沖長度輸入范圍,即可從0到100,如果這時單位脈沖長度為0.1毫米,那么當范圍由0到100改為0到10時,單位脈沖長度相當于1毫米了,這種只有舍棄精度才能保證正確的乘法運算是我們不愿見到的;

          再假設上述舉例中的高速計數輸入值大到20000,則根本無法乘運算了,因此有必要擴展乘除運算功能;

          3 單字乘除擴展功能的實現

          根據乘法原理:乘法表示相同的幾個數相加;即3*2=2+2+2, 相當于3個2相加,因此可把積(結果)=被乘數*乘數相當于=被乘數+…+被乘數,共乘數個被乘數相加,但這樣做當乘數很大時算會很麻煩,如乘數為1234時被乘數加1234次才有結果, 程序量大不易實現;

          根據10進制數定義, 1234=1*1000+2*100+3*10+4*1,這樣拆解乘數以后用1,2,3,4分別乘以乘數再累加求和,將大于32767的累加值的進位放到高字,小于32767的放在低字存儲,用連續的兩個高低字實現,這樣運算程序容易編且執行速度快.

          詳細說明可參考以下程序:

          程序要求:被乘數與乘數,其中一個不能大于3640(因3640*9<32767),另外一個不能大于32767(因為單字定義不能大于32767),否則結果無意義

          乘積范圍:(0 到3640)*32767=119271880

          除法是乘法的反過程不作詳細說明,除數要求<=3640;

          程序(TXT類型,可在下拉菜單選:程序à導入àASCII程序,打開梯形圖)

          (* %MW300,%MW301是乘數、被乘數(范圍:0 - 3640*32767=119271880),其中一個〈3640 *)

          (* %MW333是除數《=3640 *****下面還有說明***** *)

          (* %MW320,MW321是乘法擴展低、高位 *)

          (* %MW340,MW341是除法擴展低、高位 *)

          LD 1

          SR0

          END

          (* 乘法擴展子程序(范圍:0 - 3640*32767=119271880) *)

          (* (算法要求:被乘數與乘數,其中一個不能大于3640,另外一個不能大于32767,否則結果無意義) *)

          SR0:

          LD 1

          [ %MW320 := 0 ]

          [ %MW321 := 0 ]

          [ %MW322 := 0 ]

          [ %MW323 := 0 ]

        (* 乘法計算初步分析 *)

          (* %MW300被乘數 %MW301乘數 %MW302臨時寄存器 *)

          LD 1

          [ %MW302 := %MW300 * %MW301 ]

          (* 沒有溢出,則處理高低位后,直接輸出 *)

          LDN %S18

          JMPC %L0

          (* 結果溢出,則復位溢出寄存器 *)

          LD %S18

          R %S18

          (* 比較被乘數與乘數,被乘數要求:小于等于乘數,不能大于3640 *)

          LD [ %MW300 <= %MW301 ]

          JMPC %L1

          (* 被乘數大于乘數,則交換被乘數與乘數 *)

          LD 1

          [ %MW302 := %MW300 ]

          [ %MW300 := %MW301 ]

          [ %MW301 := %MW302 ]

          %L1:

          LD 1

          [ %MW303 := %MW301 ]

          (* 計算乘數個位與被乘數的積 *)

          LD 1

          [ %MW304 := %MW303 REM 10 ]

          [ %MW313 := %MW304 * %MW300 ]

          [ %MW305 := %MW303 / 10 ]

          LD [ %MW305 = 0 ]

          JMPC %L2

          (* 計算乘數十位與被乘數的積 *)

          LD 1

          [ %MW306 := %MW305 REM 10 ]

          [ %MW314 := %MW306 * %MW300 ]

          [ %MW307 := %MW305 / 10 ]

          LD [ %MW307 = 0 ]

          JMPC %L3

          (* 計算乘數百位與被乘數的積 *)

          LD 1

          [ %MW308 := %MW307 REM 10 ]

          [ %MW315 := %MW308 * %MW300 ]

          [ %MW309 := %MW307 / 10 ]

          LD [ %MW309 = 0 ]

          JMPC %L4

          (* 計算乘數千位與被乘數的積 *)

          LD 1

          [ %MW310 := %MW309 REM 10 ]

          [ %MW316 := %MW310 * %MW300 ]

          [ %MW311 := %MW309 / 10 ]

          LD [ %MW311 = 0 ]

          JMPC %L5

          (* 計算乘數的萬位與被乘數的積之和 *)

          LD 1

          [ %MW312 := %MW311 REM 10 ]

          [ %MW317 := %MW312 * %MW300 ]

          [ %MW318 := 0 ]

          [ %MW319 := %MW317 ]

          [ %MW320 := %MW320 + %MW318 ]

          [ %MW321 := %MW321 + %MW319 ]

          (* 計算乘數的萬、千位與被乘數的積之和 *)

          %L5:

          LD 1

          [ %MW318 := %MW316 REM 10 ]

          [ %MW318 := %MW318 * 1000 ]

          [ %MW319 := %MW316 / 10 ]

          [ %MW320 := %MW320 + %MW318 ]

          [ %MW321 := %MW321 + %MW319 ]

          (* 計算乘數的萬、千、百位與被乘數的積之和 *)

          %L4:

          LD 1

          [ %MW318 := %MW315 REM 100 ]

        [ %MW318 := %MW318 * 100 ]

          [ %MW319 := %MW315 / 100 ]

          [ %MW320 := %MW320 + %MW318 ]

          [ %MW321 := %MW321 + %MW319 ]

          (* 計算乘數的萬、千、百、十位與被乘數的積之和 *)

          %L3:

          LD 1

          [ %MW318 := %MW314 REM 1000 ]

          [ %MW318 := %MW318 * 10 ]

          [ %MW319 := %MW314 / 1000 ]

          [ %MW320 := %MW320 + %MW318 ]

          [ %MW321 := %MW321 + %MW319 ]

          (* 計算乘數的萬、千、百、十、個位與被乘數的積之和 *)

          %L2:

          LD 1

          [ %MW318 := %MW313 REM 10000 ]

          [ %MW319 := %MW313 / 10000 ]

          [ %MW320 := %MW320 + %MW318 ]

          [ %MW302 := %MW320 ]

          [ %MW320 := %MW302 REM 10000 ]

          [ %MW302 := %MW302 / 10000 ]

          (* 計算最終結果 *)

          LD 1

          [ %MW321 := %MW321 + %MW302 ]

          [ %MW321 := %MW321 + %MW319 ]

          JMPC %L6

          (* 高低位處理直接計算結果 *)

          %L0:

          LD 1

          [ %MW320 := %MW302 REM 10000 ]

          [ %MW321 := %MW302 / 10000 ]

          (* 最終計算結果輸出 *)

          %L6:

          LD 1

          [ %MW322 := %MW320 ]

          [ %MW323 := %MW321 ]

          (* 高位除法得到高位商值,余數,%MW333為除數必須小于3640 *)

          (* 否則結果錯誤 *)

          LD 1

          [ %MW341 := %MW321 / %MW333 ]

          [ %MW342 := %MW321 REM %MW333 ]

          (* 高位余數加低位千位數除 *)

          LD 1

          [ %MW332 := %MW320 / 1000 ]

          [ %MW331 := %MW320 REM 1000 ]

          [ %MW343 := %MW342 * 10 ]

          [ %MW344 := %MW343 + %MW332 ]

          [ %MW345 := %MW344 / %MW333 ]

          [ %MW346 := %MW344 REM %MW333 ]

          (* 千位除法余數加百位數除 *)

          LD 1

          [ %MW347 := %MW331 / 100 ]

          [ %MW348 := %MW331 REM 100 ]

          [ %MW349 := %MW346 * 10 ]

          [ %MW350 := %MW349 + %MW347 ]

          [ %MW351 := %MW350 / %MW333 ]

          [ %MW352 := %MW350 REM %MW333 ]

          (* 百位除法余數加十位數除 *)

          LD 1

          [ %MW353 := %MW348 / 10 ]

          [ %MW354 := %MW348 REM 10 ]

        [ %MW355 := %MW352 * 10 ]

          [ %MW356 := %MW355 + %MW353 ]

          [ %MW357 := %MW356 / %MW333 ]

          [ %MW358 := %MW356 REM %MW333 ]

          (* 十位除法余數加個位數除 *)

          LD 1

          [ %MW359 := %MW358 * 10 ]

          [ %MW360 := %MW359 + %MW354 ]

          [ %MW361 := %MW360 / %MW333 ]

          [ %MW362 := %MW360 REM %MW333 ]

          (* 千、百、十、個位商值求和 *)

          LD 1

          [ %MW363 := %MW345 * 1000 ]

          [ %MW364 := %MW351 * 100 ]

          [ %MW365 := %MW357 * 10 ]

          [ %MW366 := %MW363 + %MW364 ]

          [ %MW367 := %MW365 + %MW361 ]

          [ %MW340 := %MW366 + %MW367 ]

          (* 個位余數如果大于除數一半,即四舍五入到商數低位%MW340 *)

          LD 1

          [ %MW368 := %MW333 / 2 ]

          AND [ %MW362 >= %MW368 ]

          [ %MW340 := %MW340 + 1 ]

          RET

        施耐德電氣技術文摘:
        施耐德電氣石油和天然氣管道的安全控制解決方案
        施耐德電氣綠色城市綜合體
        變頻協調控制技術在引風變頻系統改造中的應用
        兩種TWIDO PLC在線修改程序錯誤的解決方法
        Twdio PLC無法自動運行解決方法
        施耐德電氣Twido系列PLC數據掉電保存的應用
        施耐德電氣變頻器故障代碼及處理方法
        施耐德電氣變頻器故障代碼及處理方法
        wido plc 在某些有特殊控制規律設備中的使用技巧
        壓力傳感器如何選型
        施耐德斷路器進水怎么維修
        施耐德電氣熱繼電器選型方式
        ATV61變頻器高級多泵卡的PID參數的整定方法
        昆鋼25MW發電機組煤氣鍋爐引送風機變頻改造實施經驗
        Twido PLC上電時數據初始化方法匯總
        施耐德電氣ATV31變頻器電機自整定注意事項
        施耐德電氣變頻器常見問題解析
        施耐德電氣PLC通過CANopen的SDO報文控制SD388B
        更多施耐德電氣技術文摘...

        通過中華工控網在線聯系施耐德電氣有限公司:

        免費注冊為中華工控網會員

        主站蜘蛛池模板: 精品人妻无码中文字幕在线| 亚洲性日韩精品一区二区| 中文字幕一区日韩精品| 久久天天躁狠狠躁夜夜2o2o| 久久精品中文字幕极品| 亚洲精品中文字幕码专区| 国产成人精品无码免费看| 日本变态网址中国字幕| 九九热在线精品免费视频| 婷婷四虎东京热无码群交双飞视频 | 欧美孕妇乳喷奶水在线观看| 久久久久无码精品国产app| 91福利国产午夜亚洲精品| 最近免费中文字幕大全| 99久久激情国产精品| 又粗又硬又黄a级毛片| 久久天天躁狠狠躁夜夜躁2020| 久久天天躁狠狠躁夜夜不卡| 欧美videos粗暴| 日本伊人色综合网| 免费无码观看的AV在线播放 | 2021亚洲国产精品无码| 久久久精品人妻无码专区不卡 | 午夜男女爽爽影院在线| 97久久超碰亚洲视觉盛宴| 亚洲av成人精品日韩一区| 日本熟妇浓毛| 国产精品人伦一区二区三| 日韩中文字幕免费在线观看| 国产精品久久久久鬼色| 国产麻豆精品av在线观看| 日本高清视频色WWWWWW色 | 一区二区三区四区精品视频| 国内自拍av在线免费| 露脸一二三区国语对白| 午夜毛片精彩毛片| 亚洲国产一区二区精品专| 无码人妻斩一区二区三区| 婷婷六月色| 久久久国产精品樱花网站| 国产老熟女国语免费视频|