西門子代理商PLC中國(授權)一級代理吉林省
| 更新時間 2024-12-02 08:00:00 價格 請來電詢價 西門子變頻器 西門子觸摸屏 西門子伺服電機 西門子PLC 西門子直流調速器 西門子電纜 聯系電話 13922889745 聯系手機 18475208684 聯系人 向小姐 立即詢價 |
超詳細講解 PLC自由口通訊——以S7-200為例。
接收過程的定義接收過程首先執行RCV指令,啟動接收,啟動之后會進入一種接收等待的狀態,等待起始狀態的滿足,當起始條件滿足以后SMB86/186=0,此時數據將按照發送的順序進入信息緩沖區,直到結束條件的滿足,結束條件滿足以后SMB86/186不再等于0,之后接收過程結束并產生接收信息完成中斷。在整個過程中Zui為重要的就是起始條件和結束條件,想要將自由口通訊學好,這兩個條件是必不可少也是Zui為關鍵的部分。
a) 起始條件
上圖中將起始條件分為六種:
① 空閑線檢測:所謂空閑線檢測指的是如果傳輸線路上的空閑時間大于等于SMW90/190里面所設置的時間的話被認為是一次接收的啟動,空閑時間是從RCV被執行的一刻起開始記錄,如果在空閑線時間未到的情況下有字符傳輸進來,那么空閑線時間的計時器將會被重新啟動;
② 起始字符檢測:對于起始字符的檢測是設置在SMB88/188中的一個字符,如果在傳輸線路中收到了與SMB88/188中設置的起始字符相同的字符,那么被認為是起始條件的滿足,從這一刻起傳輸線路上接收到的數據將會陸續地按順序進入信息緩沖區,如果檢測不到起始字符,則始終處于接收等待的狀態;
③ 空閑線和起始字符:它是第一點和第二點的結合,即二者同時滿足的前提下才能夠被認為是一次起始條件的滿足;
④ 斷點檢測:斷點指的是在一個完整的字符傳送的時間內,線上的邏輯全部為0。其中一個完整的字符傳送時間是指包括起始位、數據位、校驗位和結束位在內的一段時間。通常講起始位固定是0,數據位和校驗位也可以都是0,但是結束位一定是1,也就是說在一個完整的字符傳送期間之內,線上至少有一刻是為1的,所以斷電條件不易滿足。這種情況通常應用于通訊對象可以造出一個斷點來,那么我們用S7-200PLC可以和它進行斷點檢測作為通訊起始條件的一種通訊機制。S7-200自身也可做斷點,S7-200如果需要發出一個斷點,首先在XMT指令使用之前將待發送的數據緩沖區的數據長度定義為0,在這個基礎之上執行一次傳送指令,將會有一個斷點被發出。如果兩臺S7-200PLC之間進行斷點檢測的接收過程,其中一臺應該先發一個斷點給對方,然后再發數據,這樣對方那臺以斷點檢測作為起始條件的PLC將會接到它的數據,雙方的通訊就建立了;
⑤ 斷點和起始字符:它是斷點檢測和起始字符檢測兩個條件相與的關系,同時滿足的時候將會作為起始條件的一個設定;
⑥ 任意字符:所謂的任意字符指的是RCV指令一旦執行便無條件地開始起始條件的滿足,中間幾乎沒有接受等待的過程。任意字符也是空閑線檢測的一個特例,只是此時SMW90/190是被賦0的,這樣就無需任何的等待,一旦RCV指令被執行,起始條件即刻滿足,隨之而來的數據將直接進入到信息緩沖區。
b) 結束條件
① 結束字符檢測:結束字符被定義在SMB89/189中,如果傳輸的報文中出現了與SMB89/189中相一致的結束字符,接收的過程將結束。結束字符無非就是一個字符,如何能夠保證在傳輸的正常的數據里沒有和結束字符相一致的數據呢?使用結束字符檢測作為結束條件的應用有一定局限,首先要確保中間的數據不會與結束字符相一致,比如采用ASCII字符傳輸的過程中, ASCII是有限的一些數,并不是所有的二進制數排列組合都能夠在ASCII碼表中得以體現,所以此時可以把結束字符定義成為中間傳送的數據當中所沒有那個ASCII字符來作為結束條件;
② 字符間隔定時器和信息定時器:二者同為定時器且定時時間均由SMW92/192決定,二者之間的區別在于,字符間隔定時器指的是在數據的傳送過程中,如果檢測到兩個字符之間的時間間隔大于SMW92/192里面所設定的時間,那么接收的過程將被終止,而信息定時器指的是從信息開始被接收一旦時間大于了信息定時器所指定的時間,接收將會被終止。
③ Zui大字符計數、校驗錯誤、用戶結束:三者與前面1、2、3三點不同,前面三點是用戶可以自己組態和選擇的,而4、5、6后三點是非正常的結束過程。
④ Zui大字符計數:是在SMB94/194中指定的Zui大長度,長度Zui大可以達到255,如果在接收過程中已經接收到信息緩沖區里面的數據的字節數大于SMB94/194中所指定的數據長度,本次接收過程將會被勒令停止。Zui大字符計數在使用時一定要記得給SMB94/194賦值,如果未賦值將默認為0,此時即便選擇前面三個條件,可是沒等前面三個條件滿足時,Zui大字符計數已經勒令此次接收行為終止。
⑤ 校驗錯誤:指的是奇偶校驗錯誤,這種是非正常的結束狀態。一旦數據的奇偶校驗產生錯誤,那么當前的這組數據顯然是不可以被采信的,此時,數據將會被放棄,接收結束。
⑥ 用戶結束:當由于某種原因,用戶想提前結束現在正在進行的這次接收行為,那么可以在控制字里面禁止一個位然后執行RCV指令,這樣用戶條件就結束了,禁止的位其實是SMB87/187的Zui高位,也就是接收使能位。
注意:
① SMB87/187是自由口通訊控制字,起始和結束條件是通過它來定義的;
② SMB94/194是Zui大傳輸字符限制,必須定義。
除了使用RCV指令來進行接收以外,還可以使用字符接收方式來進行自由口的接收。在介紹這種接收方式之前首先來看與自由口通訊有關的中斷事件,下圖中列舉出了6個中斷事件,其中前三個是針對端口0,后三個是針對端口1,下面以端口0為例進行講解:
對于端口0而言,首先來看中斷號為9的中斷事件叫做發送完成,它和XMT指令是對應的,XMT指令所激活的發送過程完成的時候會激活中斷事件號為9的中斷。中斷號為23的中斷事件叫做中斷信息(數據幀)完成,它和RCV指令是對應的,使用RCV指令激活的接收過程完成之后會啟動中斷號為23號的中斷事件。中斷號為8的中斷事件叫做接收單個字符完成,接收單個字符與23號中斷事件不同,23號是接收整個數據幀也就是RCV指令會接收Zui大長度為255個字節的一組數據,一組數據全部接完后激活23號事件,而8號則不同,它是每接收一個字符就產生一次事件,因此可以用這種方式來使用字符進行接收。這里需要介紹SMB2和SMB3兩個控制字,這兩個控制字是端口0和端口1所共用的,當字符的接收來自端口0時,執行與事件(中斷事件8)相連的中斷服務程序,其中SMB2中存儲從端口0接收到的字符,SMB3中存儲該字符的校驗狀態。對于端口1而言,當字符的接收來自端口1時,執行與事件(中斷事件25)相連的中斷服務程序,SMB2中存儲從端口1接收到的字符,SMB3中存儲該字符的校驗狀態。
接收的過程如上圖所示,從圖的左側來了一個字符將會送到SMB2當中,然后通過用戶程序在8號中斷事件當中把SMB2的值傳送給數據緩沖區中的第一個字節,接下來第二個字節先送到SMB2中,再由SMB2送給第二個字節,以此類推,第n個字節也會相應地進到數據緩沖區中的第n個字節。數據緩沖區字節的起始地址是如何定義以及這些字節如何能夠一一對應?使用字符接收方式的過程中已經不需要RCV指令,而是人為地在中斷號為8號或者25號的中斷事件中編寫程序,人為地把SMB2一個一個賦給地址區間,不一定必須是連續的,主要看用戶編寫習慣。
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684