馬上注冊,免費學習超過100課時視頻教程,免費下載海量學習資料
自由口通訊協議的關鍵條件
定義開始接收消息和停止接收消息的條件。
1、空閑線檢測:設置il=1,sc=0,bk=0,smw90/smw190>0
空閑線條件定義為傳輸線路上的安靜或者空閑的時間。SMW90/SMW190中是以ms為單位的空閑時間。在該方式下,從執行接收指令開始起動空閑時間檢測。在傳輸線空閑的時間大于等于SMW90/SMW190中設定的時間之后接收的第一個字符作為新信息的起始字符。接收消息功能將會忽略在空閑時間到達之前接收到的任何字符,并會在每個字符后面重新啟動空閑線定時器。
空閑線時間應大于以指定波特率傳送一個字符所需要的時間??障邢呤奔淶牡湫臀災付ǖ牟ㄌ羋蝕?/span>3個字符所需要的時間。傳輸速率為19200bit/s時候,可設置空閑時間為2ms。
對于二進制協議,沒有特定起始字符的協議或指定了消息之間最小時間間隔的協議,可以將空閑線檢測用作開始條件。
2、起始字符檢測:設置il=0,sc=1,bk=0,忽略smw90/smw190
起始字符是消息的第一個字符,以SMB88/SMB188中的起始字符作為接收到的消息開始的標志。接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存儲在消息緩沖區中。起始字符檢測一般用于ASCII協議。
3、空閑線和起始字符:設置il=1,sc=1,bk=0,SMW90/SMW190大于0
滿足空閑線條件之后,接收消息功能查找指定的起始字符。如果接收到的字符不是smB88/smb188指定的起始字符,將開始重新檢測空閑線條件。在滿足空閑線條件之前接收到的以及起始字符之前接收到的字符都將會被忽略。這種方式尤其適合用于通訊鏈路上有多臺設備的情況。
4 、break檢測:設置il=0,sc=0,bk=1,檢測smw90/smw190和smb88/smb188
以接收到的break(斷開)作為接收消息的開始。當接收到的數據保持為0的時間大于完整字符(包含起始位,數據位,奇偶校驗位和停止位)傳輸的時間,表示檢測到break。斷開條件之前接收到的字符將忽略,斷開條件之后接收到的任意字符都會存儲在消息緩沖區中。
5、break和起始字符:il=0,sc=1,bk=1,忽略smw90/smw190
斷開條件滿足后,接收消息功能將查找指定的起始字符。如果接收到的字符不是起始字符,將重新搜索斷開條件。所有在斷開條件滿足之前在接收到起始字符之前接收的字符都會忽略。起始字符和所有后續字符一起存入消息緩沖區
6、任何字符開始接受:設置il=1,sc=0,bk=0,smw90/smw190=0
忽略smb88/smb188中的起始字符。應為smw90/smw190中的空閑線時間為0,接收指令已經執行,便將立即開始強制接收所有的任意字符,并將存入消息緩沖區。
7、任意字符開始,消息定時器超過則結束接收消息:令il = 1,sc = 0,bk = 0,smw90/smw190 = 0,忽略smb88/smb188中的起始字符。以上設置用于實現從任意字符開始接收消息。
此外設置c/m = 1,tmr =1,用smw92/smw192設置以ms為單位的消息超時時間,用消息定時器監視接收是否超時。如果未滿足其他結束條件,在消息定時器超時的時候,將會終止接收消息功能。這對自由口協議的主站是非常有用的。
1.SMB30定義
定義通訊的傳輸速度和模式
SMB30=16#05=2# 00 0 001 01
其中從高位到低位依次:
00:表示無校驗
0:表示8個數據位
001:表示波特率19200
01:表示自由口通訊
2.SMB87定義
定義接收消息控制字節
SMB87=16#FC = 2#1111 1100
其中從高位到低位依次:
en=1:啟用接受消息功能
sc=1:使用SMB88 的值監測數據的起始
ec=1:使用SMB89 的值監測數據的終止
il=1:使用SMW90 的值監測空閑條件
c/m=1:定時器為消息定時器
tmr=1:超過SMW92 中的時間段,則終止接收
bk=0:忽略中斷條件
SM87.0=0 (無效)
3.定義SMB88、SMB89、SMW90、SMW92、SMB94
SMB88:定義開始字符為 2A
SMB89:定義結束字符為 0A
SMW90:空閑線時間段,單位:MS
SMW92:消息定時器的超時值(單位:MS),若超過該時間段,則停止接受消息
SMB94:要接受的最大字符數(1--255個字節);即使未使用字符計數消息終止,此范圍也必須設置為所需的最大數據交換區
l SMW90=1000000us/19200 *11*3
其中:1000000/19200得到傳輸1個位需要多長時間,一個字符11個位,檢測空閑3.5個字符,約等于3個字符
l SMW92=1000000us/19200 *11*20*1.5
其中:20表示字節接收最大的字節數,與SMB94有關,1.5倍表示整個消息長度的倍數
4.執行接受指令
TBL:
5.連接接受完成中斷和發送完成中斷,并且開放中斷
6.接收完成中斷:
由于我們使用的RS485轉USB的線纜是半雙工,發送和接收需要間隔至少5ms的時間。所以接 收完成后先延時5ms在發送。

7.SMB34定時中斷:
延時時間到,執行發送指令,把先期接收到的數據再發送給PC。

8.發送完成中斷:
推薦學習相關視頻:
西門子S7-300使用指南
西門子s7-300中高級應用技術
西門子S7-200PLC從入門到精通
西門子S7-200 SMART PLC編程應用入門