最近有好朋友問我,為什麼我用PLC寫的232/485通訊程序不好用?我應該怎麼測試是哪出現了問題?正好我最近寫了一個西門子S7-200smart利用RS485進行自由口通訊向電腦發送狀態的小程序,在這裡和大家分享一下。
以前我們講過,一些電子稱具備RS232/485接口,可以與PLC進行通訊,那麼除了這個功能,它還可以幹什麼?
PPI協議是西門子自己的協議,為自己的設備做連接用的。
我們重點說下自由口通訊,自由口通訊不限設備的限制,只要是支持RS485/232通訊的,不論是不是西門子的都可以使用。比如說不同PLC之間的通訊讀寫數據,以及和一些驅動器做通訊讀寫數據或者是給電腦端讀寫數據。
今天我們瞭解一下如何使用西門子S7-200SMART使用RS485端口與電腦進行通訊並調試。
首先S7-200SMART自帶一個485接口,還可以拓展一個485接口,需要在硬件裡配置波特率。
硬件連接需要一個PLC,一個485轉232的轉換器,以及一臺帶串口的電腦或者筆記本加串口轉USB,以及串口調試工具。
西門子S7-200SMART PLC
485轉232轉換器(電腦側是232)注意線序不要接錯了,接錯後依然有數據,只是數據是反的。
電腦端口
編程時需要配置接口信息,比如說用哪個接口發送,通訊參數是多少等等。
S7-200smart 可接兩RS485口
通訊參數是特殊存儲器SMB30(端口0)和SMB130(端口1)
端口設置
假如需要傳輸的數據是(波特率9600,無奇偶效驗,數據位8,停止位1),數據從端口0傳輸,那麼將9賦值給SMB30。
然後我們看下發送和接收指令,XMT和RCV,這兩個指令需要注意的是;
1 指令需要以脈衝形式觸發。
2發送或者接受的第一個字節的含義是你要發送的字節總字數。且不包含第一個。比如說我發送從VB801-VB876,所以發送地址需要寫VB800,且VB800賦值為76。
主程序
程序解析;因為協議是“波特率9600,無奇偶效驗,數據位8,停止位1”利用端口1進行通訊,利用脈衝觸發XMT。
最後我們下載程序並觸發脈衝,那麼怎麼進行調試呢?我們需要串口調試工具,本文用到的串口調試工具是作者從業多年用的最好的一款,綠色無需安裝,且沒有BUG,打開軟件後,我們打開COM口,即可接收數據,還可以看到數據的總量,非常方便.想要小工具的可以關注並私信我;“串口調試工具”。
當然如果想發送讓PC識別的語言的話,需要藉助ASC碼來幫助,這個碼,大家可以去網上查找,即是通過用計算機容易發送的數字來表示字母;(比如說A在碼中以16進制數字41代替,Z在碼中以16進制數字5A代替)通過這個轉換,PLC終於可以按照人的意願和PC對話了,但要切記,通訊過程中的字與字之間最好用分隔符分開,而且安全起見,最後一位可以通過程序做效驗。
對於一些複雜的自由口通訊協議,比如說松下伺服驅動器等涉及精度,複雜功能或者安全等,需要多次讀寫發送來驗證是否通訊有效,這就需要中斷來幫助,在這裡對於端口0發送完成的標誌是中斷事件9,端口1發送完成的標誌是中斷事件26,對於端口0接收完成的標誌是中斷事件23,端口1接收完成的標誌是中斷事件24。