在研究S7-200 SMART時,了解到通過RS485接口可以實現以下幾種通信方式:
(1)modbus RTU通信
(2)PPI協議通信
(3)USS協議通信
(4)自由口通信
1.自由口通信是指在PLC和通信設備之間沒有共同通信協議時使用的一種通信方式。通常情況下,如果兩者之間沒有相同的通信協議,就需要使用自由口通信,也稱為無協議通信。在自由口通信中,需要根據對方設備的通信數據格式編寫一個臨時協議。盡管編寫自由口通信程序需要編程人員具備一定的技能和對對方通信數據格式的了解,但隨著標準通信協議(如modbus、USS等)的普及,自由口通信的應用越來越少。但是對于一些小型設備,如掃碼槍等,并沒有集成標準通信協議,因此只能使用自由口通信。需要注意的是,modbus和USS實際上可以看作是自由口通信的一種特例。對于許多人來說,自由口通信可能會讓人感到手足無措,但只要掌握了一定的規律,其實并不難。為此,我總結了自由口通信的基本步驟:
(1)理解對方的數據格式。
在串行通信中,數據是以位為單位進行傳輸的。為了確保數據的準確傳輸,通常會在數據前添加一個起始位、一個校驗位和一個停止位(在無校驗時為兩個停止位)。如圖1:
圖1:異步通信的字符信息格式
(2)以Modbus RTU為例,我們來詳細了解串口通信中數據的發送和接收過程。
Modbus RTU的數據格式如下:
初始位:一個(1)位。
數據位:有七(7)或八(8)個數據位,其中小有效位先發送。
奇偶校驗位:一個(1)位,如果設置為無校驗,則此位不存在。
停止位:有一個(1)位(在有校驗時),或兩個(2)位(在無校驗時)。
下表給出了數據格式的詳細描述:
11位字符幀(BIT1-BIT8為數據位):
10位字符幀(BIT1-BIT7為數據位):
在通信過程中,需要確保通信雙方具有相同的波特率、數據格式和奇偶校驗位。
波特率:通信速率,即每秒鐘傳輸的位數,單位為比特/秒(bps)。
奇偶校驗:偶校驗的作用是在數據傳輸之前附加一個偶校驗位,用于表示傳輸的數據中“1”的個數是奇數還是偶數。奇校驗的作用是在數據傳輸之前附加一個奇校驗位,用于表示傳輸的數據中“1”的個數是奇數還是偶數。
在一個字符幀中,數據位才是真正起作用的部分。起始位、校驗位和停止位的添加只是為了正確傳輸數據位。在實際應用中,必須確保主站和從站的數據位、奇偶校驗位和停止位設置一致。
在通信過程中,一個完整的通信報文包括多個數據幀,一般包含地址幀、功能碼幀、數據幀和校驗幀。在Modbus RTU中,一個報文發送完成后會保持3.5個字節的靜默時間,然后再發送下一個報文。如圖2:
圖2
地址幀:指示從站的站號,以十六進制表示,如01H。
功能碼幀:指示操作是讀還是寫,03H表示讀,06H表示寫。
數據幀:包含要讀寫的從站參數的起始地址、數量和數值。數據幀在發送時每個字都包含兩個8位字符,先發送高8位,然后發送低8位。
校驗幀:CRC校驗值,也被拆分為兩個字節,先發送低字節,然后發送高字節。校驗幀的原理是對所有數據幀進行CRC運算,得到一個校驗值,然后將該校驗值與數據幀一起發送過去。從站設備在接收到數據后也進行一次運算,將得到的校驗值與接收到的值進行比較,如果不一致,則說明數據發送出錯。
例如,要從地址為01H的從站變頻器中讀取從地址0004H開始的2個數據的值。
發送報文:01H(地址幀)、03H(功能碼幀)、00H(起始地址高位)、04H(起始地址低位)、00H(數據個數高位)、02H(數據個數低位)、85H(CRC低位)、CAH(CRC高位)。
例如,要將值為5000(1388H)寫入地址為02H的從站變頻器的0004H地址。
發送報文:02H、06H、00H、04H、13H、88H、C5H、6EH。
2.了解了通信協議的數據格式后,接下來是編寫自由口通信程序。下面以控制英威騰變頻器的啟停為例,詳細介紹編寫自由口通信程序的步驟:
(1)定義通信端口。
SMB30和SMB130分別為端口0和端口1的控制字節,提供了波特率、奇偶校驗、數據位和通信協議的選擇。如圖3:
圖3
通過字節傳送指令將分析得到的控制字節數據寫入到SMB30或SMB130中。如圖4:
圖4
例如,將2#01001001寫入SMB30,則定義端口0的通信協議為自由協議,波特率為9600,數據位為8位,奇校驗。
(2)按照發送指令XMT的緩沖區格式定義發送數據報文。
圖5
按照發送指令XMT的緩沖區格式定義發送數據報文。在圖1-5中,TBL(VB0)表示發送緩沖區的起始地址,其格式如下:
VB0:發送字節總數。
VB1:報文的幀,即地址幀,為16#01。
VB2:功能碼幀,寫入值為16#06。
VB3:通信地址的高位,控制啟停地址為16#2000,高位為16#20。
VB4:通信地址的低位,為16#00。
VB5:寫入數值的高位,為16#00(寫入16#0001表示正轉,16#0002表示反轉,16#0005表示停止)。
VB6:寫入數值的低位,為16#01。
VB7:CRC校驗碼的低位,為16#43。
VB8:CRC校驗碼的高位,為16#CA(校驗碼為16#CA43)。
程序如圖1-6所示,其中包含一個CRC算法程序。
圖6
觸發發送指令XMT的方式如圖7所示。
圖7
關于接收數據,有兩種方式:一種是利用RCV指令接收,這種方式較為復雜,在此不進行介紹;另一種是利用SMB2緩沖地址接收。當端口0接收到一個字符時,會觸發8號中斷,并將其存放于SMB2中。通常情況下,利用8號事件觸發中斷,在中斷中將SMB2的數據轉存到其他地址,否則下一個數據將覆蓋上一個數據,直到接收完所有數據后,置位一個完成標志,延時一定時間再次觸發發送指令。接收中斷程序如圖8所示。
圖8
以上介紹了S7-200SMART的自由口通信。使用自由口通信時,編寫程序并不是難點,關鍵在于理解對方通信數據格式。在以后的編程過程中,盡量選擇支持標準協議的設備。如果確實需要使用自由口通信,也不必擔心,只要按照上述步驟逐步完成,相信一定可以成功進行通信.(文章來源網絡,僅供參考。評論處大家可以補充文章解釋不對或欠缺的部分)
- 西門子S7-300PLC所有模擬量模塊接線問題匯總 2024-10-30
- PLC與西門子觸摸屏的RS-485通信,一步步詳解 2024-10-30
- 西門子PLC與juedui值編碼器的連接、實例和如何對編碼器編程 2024-10-30
- 「詳細圖解」西門子S7-300PLC的電氣安裝。 2024-10-30
- 湖南西控-西門子S7-300系列PLC的使用要點 2024-10-30
- PLC的安裝及其維護,看似簡單,細節重要! 2024-10-30
- 西門子S7-300PLC在某鋼廠水處理上的應用 2024-10-30
- 完美的PLC程序是什么樣子 2024-10-30
- Siemens西門子6ES7193-4CF50-0AA0 2024-10-30
- SIEMENS西門子接頭6ES7972-0BA52-0XA0 2024-10-30
- Siemens西門子代理商6EP1334-1LB00 2024-10-30
- Siemens西門子6ES7323-1BH01-0AA0 2024-10-30
- Siemens西門子6SL3130-7TE23-6AA3 2024-10-30
- Siemens西門子6SL3210-1SE21-0UA0 2024-10-30
- Siemens西門子6SL3210-1SE21-8UA0 2024-10-30
聯系方式
- 電 話:17838383235
- 經理:徐嘉泉
- 手 機:17838383235
- 微 信:17838383235