操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    在我前天發表的文章《圖說西門子特殊寄存器之SM1.0-SM1.7》中講到SM1.6處,我留了一個問題給朋友們,就是:“使用BCD碼轉整數指令時候,為何輸入參數是1113指令運行無錯誤,而當輸入參數是1114時指令運行出錯了?”,以這個為引子,開始我今天的文章。

    說到BCD碼可能會立馬想到8421碼,讀書的時候應該接觸的就是這個。其實BCD碼還可以分為有權碼、無權碼,還有什么5421碼,但這些都不是我要講的,本人要說的是西門子200PLC中關于BCD碼的指令,特別是BCD碼轉換指令出錯的原因分析。

    BCD碼(Binary-Coded Decimal?)也叫二-十進制碼,是用4位二進制數表示十進制數中0-9這10個數字的一種碼。這個是BCD碼的基礎定義,不管是什么PLC都要遵守的,所以特意再提出來。

    首先來看2張監控截圖:

    BCD指令錯誤監控圖1

    BCD指令錯誤監控圖2

    從上邊這2張圖上,我們可以看到BCD_I指令的輸入端輸入整數10-15和輸入十六進制的ABCDEF時候,該指令都出錯了(此時SM1.6會被置1,可以去看前一篇文章),因此后邊的ENO都無法輸出了,后邊的監控線頭是灰色,因為沒有能流。同時,還可以看到輸入整數值16的時候,程序沒有出錯,為什么呢?

    根據BCD碼的基礎定義“用4位二進制數表示十進制數中0-9這10個數字”,從這句話可知十六進制的ABCDEF就是十進制的10-15,這明顯超出了基礎定義的0-9,因此16進制下的ABCDEF用作輸入參數時指令出錯的原因就找到了。

    那么為何輸入整數16處理的時候就沒有出錯呢?BCD_I指令的輸入端這里,在指令處理的時候BCD端的參數,是以怎樣的真實格式化去處理的?

    Micro/WIN軟件中對指令的解釋

    根據幫助文件的解釋和實際的程序,我猜測可能有2種可能:

    ①是以直接以2進制BCD碼的格式來處理的(也就是說16已經被看作一個BCD碼數,那他的二進制應該是BCD 2#0001 0110==16#16)?

    ②是以16進制下的值看作BCD的格式來處理的(也就是說將整數16自動轉換為16#10,BCD 16#10)?

    --為了探明這問題,繼續看下一個圖片。

    BCD指令監控圖3

    BCD指令監控之狀態表圖

    從監控圖3可以看到,BCD端輸入整數16,被轉換為整數10。而將VW0也就是整數10再次作為BCD_I指令的輸入端時,指令又出錯了。按照上邊猜測①的思路16是當做一個BCD碼看待的,即BCD 2#0001 0110,那么轉化后的結果應該是16才對,而監控中VW0的結果是10,由此可見,思路①的猜測是錯誤的。

    那么只有按照思路②來看,輸入端的整數16先是被轉換為16進制下的16#10后看作一個BCD碼再去轉換的,也就是將16#10即2#0001 000看作了BCD碼,因此轉化為十進制數就是10。以這樣的解釋來看結果,那么結果就對了,再來多試驗看看:

    BCD指令監控圖4

    從這個圖片可以看到整數17被轉換為了11,整數18被轉換為了12。

    17的16進制表示就是16#11,即BCD 16#11==2#0001 0001,因此轉化BCD轉化為整數就是11。

    18的16進制表示就是16#12,即BCD 16#12==2#0001 0010,因此轉化BCD轉化為整數就是12。(請忽略本文中的==用法的不準確性,僅為說明問題,謝謝)

    所以,到這里BCD_I指令,BCD輸入端其實是16進制下的BCD值,BCD_I指令更加準確的描述應該是將16進制BCD碼轉化為為整數,不知道幫助文件或者西門子200的手冊為何沒有強調這個16進制。下圖是手冊上的解釋:

    BCD碼指令在系統手冊上的解釋

    但是我在西門子找答案網頁上發現了西門子的專家置評,見下圖:

    BCD_I指令的官方評價

    所以,文章寫到此,可以得出一個結論:BCD_I指令就是將16進制的BCD碼轉化為整數的一個指令,其在BCD參數輸入端的值為16進制數時最好,不為16進制數時系統將自動將其轉化成16進制數,而后才對其進行運算。

    再進一步來說一下BCD端是要求16進制的問題,下邊看一個西門子300的程序切圖:

    M20.0不為1時切圖

    這個圖片是值運行程序第2行,整數16通過BCD_I指令后結果也是10,證明是和西門子200中的算法一樣的。

    M20.0為1時切圖

    這個圖片是將M20.0置1,程序第1行也接通,從這個圖片上看到PLC還是在運行,ENO還是輸出了,這是和西門子200系統不一樣的地方,但是MW2的值此時為0,顯然是不對的,所以PLC還是給出了提示:

    300系統指示燈報錯了

    診斷報告說BCD轉換錯誤

    這兩個圖詳細說明了,因為程序第一行的BCD_I指令出現錯誤,所以系統報錯了。報錯的真是原因是什么呢?就是整數10被轉為了16#0a,而BCD碼的基本概念是用4位二進制數表示0-9這10個十進制數,因此BCD #160a是非法的,它不能被看作是一個BCD碼。

    寫到這里,再回頭看我在之前的文章中留下的問題:“使用BCD碼轉整數指令時候,為何輸入參數是1113指令運行無錯誤,而當輸入參數是1114時指令運行出錯了?”,我想有的朋友已經有答案了。

    答案就是:BCD_I指令是要求16進制的BCD碼格式,整數1113轉化為16進制是16#459,整數1114轉化為16進制是16#45A,而出現A就是非法的BCD碼。這就是最終的答案。

    整數1114轉化為16進制是16#45A

    本篇文章結束,可能有點費理解,但是提高就是不斷的越過障礙,希望通過本文能讓朋友們對BCD相關指令編程時候的錯誤情況有一個更深入的了解,不至于出錯了還要想很久才知道哪里錯了。

    最后,感謝大家的支持,有不明白的地方,敬請關注留言,我會及時回復,謝謝。

    雙系統如何引導修復?多數小伙伴裝了雙系統之后無法修復引導,火急火燎的找到快啟動小編詢問解決方法,針對這個問題,快啟動小編接下來分享以修復UEFI+GPT模式下win7和win10雙系統引導為例圖文教程,Legacy+MBR修復引導也是類似,不同的操作點,小編會相應的指出來,想要了解的小伙伴抓緊了。

    雙系統引導修復工具詳細操作:

    1、首先準備一個制作好的快啟動U盤啟動盤(如何制作快啟動U盤啟動盤),然后連接好電腦與U盤啟動盤。重啟電腦,在開機畫面出現時按下啟動快捷鍵,選擇U盤啟動,然后就進入了快啟動主菜單界面,然后通過方向鍵選擇“【02】運行快啟動Win10PE” ,按下回車鍵。不懂得問題可以關注快啟動頭條號詢問小編哦。

    2、進入快啟動PE系統后,雙擊桌面上的“更多工具” 文件夾,在文件夾中找到并雙擊“BCD編輯工具”圖標,打開bootice工具,如圖所示:

    3、在bootice界面中,首先切換到“BCD編輯”,選擇“其他BCD文件(0)”,然后“新建BCD(N)”。

    4、新建BCD將文件存在容易找尋的文件夾中,文件名為:BCD(在此一定要注意字母應為大寫,不可任性取之)。

    5、以上操作完成彈出“已成功創建新的BCD文件”提示框,點擊確定即可。

    6、然后點擊“智能編輯模式(C)”。

    7、點擊“添加”,選擇“windows 7/8/8.1 啟動項”(這是NT6.x 架構系統,當然win8/10 也適用)。

    8、點擊“添加”后,會出現默認的初始BCD內容,在此基礎上,我們進行win7+win10 BCD的修改,主要將“啟動磁盤”修改為“當前系統對應的磁盤”;“啟動分區”修改為“當前主系統分區(C盤)”。

    9、接著將“菜單標題”改為“windows7”,將“啟動文件”修改為"windows\system\winload.efi",在此需注意的是啟動文件winload.efi 為UEFI+GPT啟動文件,如果是修復Legacy+MBR啟動文件,此處應為winload.exe。 修改后,點擊“保存到當前系統設置”。

    10、以上操作完成彈出“BCD數據修改成功”提示框,點擊確定,這樣win7的BCD內容就添加完成了。

    11、接下來,我們按照上面的方法再次添加win10的BCD信息,點擊“添加”,選擇“windows 7/8/8.1 啟動項”。

    12、主要將“啟動磁盤”修改為“當前系統對應的磁盤”;“啟動分區”修改為“當前主系統分區(D盤)”;接著將“菜單標題”改為“windows10”,將“啟動文件”修改為"windows\system\winload.efi",修改好之后,保存當前系統設置,win10的BCD信息就添加好了,然后再點擊“保存全局設置”。

    13、彈出“BCD數據修改成功”提示框,點擊確定,這樣win7和win10的引導信息就會保存到我們創建的這個BCD文件中了,重啟電腦就可以顯示win7win10啟動項了。

    14、創建好BCD文件后,我們只需在快啟動PE下將這個BCD替換到相應的目錄下就可以完成引導修復了。所以此處BCD替換文件的目錄為ESP/EFI這個fat分區:efi\Microsoft\BCD。但由于UEFI BIOS引導windows系統時,是通過一個FAT格式分區下的bootmgfw.efi文件來導入BCD文件,ESP和EFI分區一般都是隱藏的FAT分區,所以需要將ESP分區分配盤符(詳見快啟動小站:ESP分區如何分配盤符教程)。

    注意的是,如果是Legacy+MBR模式,若磁盤有一個隱藏的活動主分區,我們需要先給這個隱藏的主分區添加盤符(PE下磁盤管理添加盤符或借助DG分區工具添加),然后將該 BCD 文件替換到這個活動主分區:\Boot\BCD。

    以上的使用BCD修復引導工具是以UEFI+GPT模式舉例的,小伙伴要是想要修復UEFI+GPT模式下win7和win10雙系統引導可以用快啟動小編分享的方法進行一試,Legacy+MBR雙系統引導也類似,不懂得問題可以關注快啟動頭條號詢問小編哦,感謝大家的支持。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有