西門子6ES7515-5FN03-0AB0簡介
編程通過OPC方式實現PC機與西門子PLC通訊
在上一次發表的<運用VC#編程通過OPC方式實現PC機與西門子PLC通訊>主要講的是同步通訊,本文將主要講解如何編程實現異步通訊,通過講解你也將會知道同步通訊與異步通訊的區別,以及在什么情況下使用異步通訊。
1、 配置OPC服務器
對于服務器的配置與同步通訊的配置一樣,這里不需再講解,若有不清楚的,可以參閱之前發布的<運用VC#編程通過OPC方式實現PC機與西門子PLC通訊>
2、 OPC編程
變量組、項的命名規則與同步通訊的一樣,這里不再描敘,下面主要就開發一個異步通訊類 AsynServer來講解如何編程。
<2>、編程
異步編程的原理就是在OPC服務器那邊檢測當前活動的變量組,一但檢測到某一個變量,譬如變量Q0.0從1變成0,就會執行一個回調函數,以實現針對變量發生變化時需要實現的動作,在這里可以采用委托來實現該功能。
上周,客戶反映當WinCC集成到STEP7中做變量上傳時,發生了很詭異的事情:當選擇DB塊中的Operator Control and Monitoring選項時,對鉤出現后瞬間消失?!如下圖所示(僅示意)。
一開始真心不相信。眼見為實,客戶發來了項目,果真如此。進一步檢測,發現該DB為FB背景數據塊,找到相關FB,做了如下測試:
1. 項目中其它的FB和DB塊沒有問題
2. 新創建的FB和DB塊沒有問題
3. 使用Reorganize進行項目重組無效
4. 創建新項目,拷貝原項目中的問題FB和DB塊無效
由此,推斷問題出現在該FB中,打開FB,也未發現異常。如下圖所示。
事到如今,只能采取笨方法 —— 排除法了。
1. 將問題FB復制,刪除所有Network程序
編譯存盤后,重新生成DB,設置監控屬性無效。推斷問題出現在Interface的接口參數中。
2. 刪除Interface中所有WinCC監控變量(標記為綠色三角)
編譯存盤后,重新生成DB,設置監控屬性有效。推斷問題出現在Interface中的WinCC監控變量中。
3. 逐一取消Interface中WinCC監控變量的S7_m_c屬性,如下圖所示
發現問題所在!Interface中定義的輸入參數的結構變量CONTROL.MANUAL_AUTO_CHAIN的S7_m_c屬性被取消后,DB設置監控屬性有效!
經過反復測試,FB中定義的結構變量超過24個字符,即可產生先前描述的詭異現象。刪除多余的字符(CONTROL.MANUAL_AUTO_CHAIN-> CONTROL.MANUAL_AUTO_CHAI),問題解決,如下圖所示。
在STEP7幫助中未發現對于變量名稱長度有24個字符的限制,而在WinCC中,變量定義RAWTAG時有24個字符的限制,可能和此有關。
DB中的結構變量名稱定義過長,雖然是小概率事件,但也給了我們一個很好的參考。