公司新聞
經典WINCC浮點數輸入/輸出異常的處理方法
發布時間: 2024-03-17 15:05 更新時間: 2024-12-27 09:10
(一)模擬服務器環境搭建本例并不采用Modbus SIM或Modbus Slave做為服務器的原因是這兩個軟件可以通過DINT和REAL的顯示格式。通常在實際現場,設備側的寄存器存儲模式已經固定,不能修改,這樣就必須在上位中進行處理。利用施耐德UnityPro建立一個Modbus TCP的仿真服務器,并新建變量如下圖,變量aa和bb分別為REAL和Dint類型,在內存中都是占據%MW0,%MW1四個字節,通過在線監視可以看出,施耐德數據存儲是“小端模式”即數據高字存在高位存儲器中,即CDAB形式。(二)WINCC通信在WINCC中新建驅動并新建a3和a4變量,分別為FLOAT和DINT類型,同樣在內存中都是占據%MW0和%MW1共四個字節,并在上位畫面中與相應的IO域關聯。
與施耐德仿真PLC通信成功后,不難發現%MW0和%MW1均與PLC上一一對應,但是REAL類型的a3變量不能顯示,a4類型的DINT變量與PLC側的DINT數據不一樣。通過對比不難發現在WINCC側DINT和REAL的存儲結構是高字儲存在低位,而在PLC側是高字儲存在高位,這樣就造成這種雙字類型的變量顯示異常。(三)輸出值處理為了能正確顯示,需要在IO域輸出中利用C腳本進行高低字轉化,具體過程如下圖:通過上述C腳本處理后REAL類型顯示值就與PLC側一致了,DINT類型的處理過程類似,就不在贅述。(四)輸入值處理
與施耐德仿真PLC通信成功后,不難發現%MW0和%MW1均與PLC上一一對應,但是REAL類型的a3變量不能顯示,a4類型的DINT變量與PLC側的DINT數據不一樣。通過對比不難發現在WINCC側DINT和REAL的存儲結構是高字儲存在低位,而在PLC側是高字儲存在高位,這樣就造成這種雙字類型的變量顯示異常。(三)輸出值處理為了能正確顯示,需要在IO域輸出中利用C腳本進行高低字轉化,具體過程如下圖:通過上述C腳本處理后REAL類型顯示值就與PLC側一致了,DINT類型的處理過程類似,就不在贅述。(四)輸入值處理
通過上述方法處理后,這樣雖然可以正常的顯示,但是無法通過上位IO域輸入修改PLC側的變量數據。
因此本文通過監聽輸入值改變的事件,然后在事件中利用腳本將輸入的值按照小端模式進行重新組合后再寫給變量,從而改變相應變量的值并且與PLC側數據同步。具體過程如下:(五)IO域輸入/輸出連接不同變量的間接方法在西門子論壇中看到過兩個咨詢帖子,關于IO域的輸出和輸入連接不同變量的問題,通過官方的回復,基本確定目前并不支持該功能。通過前面解決浮點數顯示和輸入問題的思路,我們同樣可以可以利用C腳本間接實現一個IO域輸出、輸入關聯不同的變量。具體實現過程,各位網友可以按上述思路完成。(六)博途WINCC Modbus TCP驅動默認情況在博途WINCC中新建Modbus TCP驅動時,有一個改變字順序復制框,默認情況是沒有勾選的。
同時在博途WINCC下建立相同的變量進行測試,結果如下:(1)不勾選更改字順序,按小端處理,與PLC側數據一致。(2)勾選更改字順序,按大端處理,顯示數據異常。其他新聞
- 如何在西門子博途中組態SIPLUS極端組件 2024-12-27
- 如何選擇一款合適的變頻器 2024-12-27
- 博途中如何實現多重實例 2024-12-27
- EtherCAT和Profinet有何不同 2024-12-27
- 西門子DP從站連接至冗余CPU的兩種方法 2024-12-27
- 西門子下一代PLC編程環境,ChatPGT將成為主角 2024-12-27
- EtherCAT和Profinet總線對比 2024-12-27
- 虛擬機中S7-1500與Wincc如何連接 2024-12-27
- S7-1500通訊診斷與故障排除方法 2024-12-27
- 輕松搞定PLC與變頻器的Modbus通訊 2024-12-27
- 突破西門子技術壁壘,國產PROFINET還遠嗎 2024-12-27
- S7-1500與多臺S7-200SMART的以太網通訊方法 2024-12-27
- 西門子PLC+國產遠程IO,有何優勢 2024-12-27
- 基于PC的自動化控制器,到底有多厲害 2024-12-27
- 【圖文】博途V19仿真器的新功能 2024-12-27
產品分類
聯系方式
- 電 話:18126392341
- 聯系人:梁濤
- 手 機:15267534595
- 微 信:15267534595