日韩欧美视频第二区,秋霞成人午夜鲁丝一区二区三区,美女日批视频在线观看,av在线不卡免费

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> PLC基礎入門教程 >> 正文

西門子S7-200PLC中,如何將大于32767的整數轉換成正實數?VD、VW、VB

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2022/9/10
來自西門子技術支持熱線的故事:S7-200plc中,如何將大于32767的整數轉換成正實數?
鈴~~~!電話響起------您好!歡迎您撥打西門子技術支持熱線。
客戶:我這邊是個S7-200的PLC系統,226 CN PLC 的port0口做modbus主站,讀取一個儀表的數據,數據能通信,但是讀過來的數據不對。
工程師:根據您的描述,那么應該已經通信上了,我們可以最后再排查程序問題。首先請檢查接線,引腳3是信號+,引腳8是信號-。
另外,請問有核實兩邊的數據存儲格式是否一致嗎?因為西門子plc的數據存儲格式是低位高字節,按照以VW0為例,就是高8位為VB0,低8位為VB1.如果儀表那邊是高位高字節,即:高8位為VB1,低8位為VB0.那么兩邊正好相反,即便通信上了,數據對不上是可能的。西門子的低位高字節數據存儲格式示意請參見:

VD和VW、VB的關系 
客戶:好,我先去核實一下。= = = = = =
客戶:您好,modbus通信已經沒問題了。PLC這邊數據已經讀取進來,我想問下讀到的數應該是什么格式的。我這邊一個數65500,PLC這邊為什么是負數。
工程師:PLC在程序中監控和運算多是以有符號整數進行的,VW或者VD的最高位是符號位,如果對于Word來說,大于32767后數據為負。
通過modbus通信過來的數都是負數是嗎?剛才65500的數是多少?除了程序塊監控外,狀態表在線監控,數據格式選擇無符號后數據讀取是否正常。
客戶:哦,都是大數才為負數,應該是都大于32767的。狀態表里譬如VW100吧,無符號數是65500,有符號數是-35,數據格式選擇無符號的就正確。
工程師:數據存儲實際上都是按照二進制進行的,只是讀取它時的數據格式不同而已,您可以在狀態表中選擇無符號數。
客戶:不是啊,我就是要正數。關鍵是我把這個數轉換成實數后還帶著負號,我port 1口連了第三方的觸摸屏,觸摸屏上選擇的是實數連接,讀上來后屏那邊顯示的是負數,不行啊。
工程師:嗯~,請問您是怎么進行編程轉換的。
客戶:我就是先用I_DI,再DI_R。不行啊,大數就錯了,小數才不帶符號。
工程師:您先別著急,按照正常的編程方式,您的思路是正確的,可對于負數來說就不行了。可以換種思路來考慮,對于word或者d-word的格式來說,數據的最高位是符號位。那么我們最開始轉換成雙字的時候,去掉符號就行了。
客戶:我也試過,讓這個數與16#7F相乘來去掉符號位,那就不對了,數就不對了。你這也不行啊
工程師:請先不要著急,我說的不是這個方法。在轉換成雙字的時候不要把最高位當作符號位,如下圖,先來了解符號位的定義:

 
通過I_DI的轉化,實際上是將VW0-VD0,可是如果將VW0直接放在VW2上,同時VW0清0,直接去讀取VD0是什么情況?原先VW0中的符號位,在VW2中,并不是VD0的最高位即符號位,在VD0里就是數據了。而與此同時,我們去掉了負號是嗎。
舉例:VW0=65500(無符號整數),經過I_DI給VD10.
對比:VD0,雙字轉換后的VD10,和僅僅將VW0傳送給VW6后的VD4,這幾個數的比較,請參見下面的實驗結果:

 
客戶:我明白了,是我把問題想復雜了,原來簡單的傳送就可以解決問題了。

Tags:S7-200,西門子plc,字節  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
推薦文章
最新推薦
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
主站蜘蛛池模板: 南安市| 阿拉善盟| 新源县| 凤冈县| 尤溪县| 宁武县| 任丘市| 龙口市| 珠海市| 英吉沙县| 九江市| 南开区| 阿合奇县| 石台县| 西充县| 开平市| 从江县| 永寿县| 赣榆县| 黔南| 西青区| 安仁县| 景谷| 静乐县| 青铜峡市| 边坝县| 大兴区| 五大连池市| 阳曲县| 永定县| 松阳县| 中西区| 宜都市| 上林县| 衡水市| 普格县| 斗六市| 保定市| 浮山县| 靖州| 绵竹市|