喬勇
摘 要:本文詳細介紹了Siemens公司的點到點通信處理器模塊CP340如何與C8051F021單片機實現ASCII協議通信的。文章給出了硬件電路連接,介紹了通信協議的制定方法,并給出了PLC與單片機的編程介紹。
關鍵詞:PLC;點到點通信;ASCII協議;RS-485
0 引言
本文介紹了CP340在SIMATIC S7-300中,采用RS-485的接口協議與C8051F021單片機的通訊解決方案,本系統以PLC為核心控制單元,通過通訊模塊CP340與單片機系統實現485通信,實現主控單元與單片機系統之間的指令、數據通訊;實現數據接收功能,最后由PLC負責將這些數據進行運算處理。
CP340通訊處理器模塊可以在西門子 S7系列中使用,該模塊可以實現ASCII碼、打印機驅動和3964三種通訊協議,通過集成在STEP7中參數化工具進行設置。并提供了三種通訊接口:RS232、模擬量20mA、RS422/485。
1 通訊接口設計
CP340-RS422/485可配置RS422全雙工模式和RS485半雙工模式,方案設計中配置為RS485半雙工模式,CP340模塊提供一15針接頭,在硬件連接上需要引出第4腳R(A)/T(A)和第11腳R(B)/T(B)兩個數據線引腳;而C8051F021單片機只需配置一個全雙工的串行口線,為了增強抗干攏能力,設計上選用了內部集成隔離電路的MAX1480芯片,將其轉化成RS485信號。
2 通訊協議的制定
CP340可以傳輸十六位進制的00-FF之間的任何數據,用戶可以自己制定相關的傳輸協議,CP340的ASCII協議只有三種可選的波特率:2400bps、4800bps、9600bps。
制定通信協議:單片機作為從機,PLC作為主機,從機在建立與主機通信之前,一直處于對通信線路的監聽狀態,主機PLC通過CP340通訊模塊向從機發送通訊指令,從機在接收到指令后對其進行識別,校驗,判斷是否主機呼叫從機,如果地址相符,確認呼叫從機。然后,從機停止監聽通訊線路,并發送程序指定的數據。通信的指令格式如下:
(1)主機發送指令格式:從機地址號{參數號1:參數值1, 參數號2:參數值2, ……}CRC16校驗碼EOF。說明:1)第一個字節是地址,所以第9位必須置1;其他字節隨意;2)第一個字節是從機特定地址。從機地址若被分配為ASCII碼“1”,轉換為十六進制是:0x31;3)參數號不分大小先后,可以發送單個或者多個參數,參數之間的分隔符可以是除了數字、e、E、小數點和冒號這些關鍵字之外的所有字符,例如空格、逗號等。所以參數可以分行。參數串以大括號“ }”結尾。所有字符都必須是ASCII字符。4)發送完參數串以后,上位機必須計算參數串的16位CRC校驗碼,并將校驗碼(用4位十六進制字符表示)發送給下位機,最后是EOF作為一幀數據的結尾。5)發送完EOF以后,從機計算接收到的參數串的16位CRC校驗碼,如果和主機發送的校驗碼吻合,則發送“1”作為通信有效應答,否則發送“0”作為通信錯誤應答。如果主機在發送數據完成后在約定時間(2秒)內沒有接收到任何應答,也將認為通信發生錯誤。這樣主機可以根據應答判斷通信狀況:“1”-發送成功;“0”-發送數據錯誤;無應答(“\0”)-可能線路發生故障。6)小于10的參數號不能在前面加“0”。如參數號“7”不能用“07”代替;7)參數號后面緊跟著冒號“:”,緊跟著參數值,緊跟著分隔符;(為了易于辨認,參數后可加注釋)。8)系統將順序搜索字符串,每當找到一個冒號“:”,就提取它前面的參數號和它后面的參數;直到字符串被搜索完畢。所以,如果傳輸多個相同的參數號,系統將最終接受最后的1個。9)注意:單片機內部串口輸入緩沖區長度被設置為1024個字節,輸出緩沖區長度則是1024字節。所以單次發送的字符串(包括校驗碼)總長度不能超過1024個字節!
(2)從機發送數據格式:從機地址號{數據}CRC16校驗碼EOF。
3 通信程序設計
(1)PLC通信程序設計。PLC(西門子 S7-300)以專用通訊模塊與CP340接口進行數據交換,程序設計中用到功能塊FB3(發送數據)和FB2(接收數據),FB3將數據塊中的數據寫入到CP340的發送緩沖區中,FB2將CP340接收緩沖區中的數據讀回,存入到接收數據塊中。
設計程序的時候,使用一個延時定時器T0來控制超時的時間,超時的時間必須大于發送指令開始到正確接收到一幀完整數據之間的時間,如果定時器輸出‘1,則表示在規定的超時時間內沒有接收到正確的數據,如果定時器輸出‘0,則表示沒有出現通訊錯誤,每次發送指令時啟動定時器T0,如果正確的接收到數據,復位定時器T0后,再進行下一指令的發送,保證定時器T0輸出為‘0。如果沒有接收到正確數據,定時器輸出置位,此時做相應的錯誤處理程序后再準備指令的重新發送。
波特率選用9600bps,1個起始位,8個數據位,1個停止位,發送數據塊DB1,接收數據塊DB10,假設發送指令字節數4個,接收最大字節數為40個,所以超時時間應大于:(1/9600)*(1+8+1)*(4+40)*1000=46ms,可設定超時時間為70ms。
指令數據塊:在通訊模塊中,定義指令格式,采用字符數組形式,內存分配如下表所示:
(2)單片機通信程序設計。單片機C8051F021程序使用C語言編寫, RS485為半雙工模式,一般情況下將RS485芯片使能于接收狀態,接收到指令后,開始校驗,若正確,就將RS485芯片置位于發送狀態,并將主機所需要的數據發送出去,發送結束后,再使其置位于接收狀態。通信程序采用中斷方式,從機默認地址為01。
4 結束語
在點到點數據通訊系統設計中,采用SIMATIC S7-300和CP340通訊模塊與C8051F021單片機實現了ASCII碼協議通信,該方案結構簡單,投資少,運行穩定,傳輸距離遠,這使得PLC在工業在線檢測儀表主機的開發中具有很高的應用價值。
參考文獻:
[1]任冠甲.SIMATIC STEP7梯形邏輯參考手冊[K].
[2]S7300-400語句表(STL)編程手冊[K].
[3]徐愛鈞,彭秀華.單片機高級語言C51應用程序設計[M].電子工業出版社,2001.