SBOBET登录地址

歡迎光臨入喜工業控制技術(上海)有限公司
當前位置
首頁 > 新聞中心
S7-200自由口通訊的監視分析方法
2020/12/4 9:06:37

以下程序,執行過程中發生無規律的通訊中斷且不自行恢復,STOP后RUN,再次M0.0置1后恢復通訊。將INT0中的ATCH挪到ENI前面后有改善,未再出現。但是不知道是不是根源。如何監視和分析自由口通訊的過程。請指教,是否有指令,寄存器或者程序,能夠監視自由口通訊過程,如何使用的。源程序來自下面鏈接的發送程序,http://www.ad.siemens.com.cn/service/article/S7-200/S7-200freeport/Default.aspx#1_3。

ENI是開中斷指令。
一般常規編寫程序的做法是先定義,定義通訊控制字節,定義通訊頻率、定義通訊數據等,最后開中斷。
如果把ENI寫在前面,從理論上是不符號西門子編程環境的,西門子的思想是先定義后使用的原則,符合歐洲人的思維邏輯。
程序大致含義是:
首先定義通訊(自由口通訊參數)
定義通訊數據,由M0.0上升沿觸發發送指令,即把上面定義好的數據發送出去
當發送完成進入發送完成中斷,執行接收并再次定義接收完成中斷(實際上這個完全可以在初始化程序段中編輯),你的問題是重新定義接收完成中斷后,仍然需要定義ENI指令一次。
當接收完成后進入接收完成中斷,你重新又再次定義定時中斷_0 = 20,(mS)這里同樣沒有再次定義ENI。
當定時中斷激活后,會在20mS的間隔發送你第一次定義好的數據。
我感覺你整體的程序架構不嚴謹,應該是初始化時,先定義好發送完成中斷、接收完成中斷,開中斷,不需要定義定時中斷的原因是自由口通訊是半雙工通訊,一條通訊鏈路上只能有唯一的一條指令有效,而定義定時中斷(它又不管你到底那條指令正常運行,或者指令沒有運行,到點一定會發送一條指令的),這樣會造成錯誤的幾率會大。
正常應該是先定義通訊數據,完成后執行發送,在發送中斷中編輯接收指令,在接收中斷中再次編輯需要的發送指令,如此循環進行。
上述僅僅只是我是一點看法。

提問者對于答案的評價:
謝謝指教。收益匪淺。改過后偶爾會卡在發送中斷,如何跳出,并恢復通訊?謝謝 。

最佳答案作者回復:
按我的思路,在發送完成中斷中編寫接收程序,在接收完成中斷寫發送程序,這個是我在編輯自由口通訊的工作經歷,按此方法可以,不會產生指令之間的沖突。

聯系方式
CONTACT US

電話:13818569113      15721373211

郵箱:fushidianji@139.com

網址:http://morethanzerosum.com

地址:上海青浦區北青公路7171號111-112室

用手機掃描二維碼關閉