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

7.SMB34定時中斷:
延時時間到,執(zhí)行發(fā)送指令,把先期接收到的數(shù)據(jù)再發(fā)送給PC。

8.發(fā)送完成中斷:
推薦學(xué)習(xí)相關(guān)視頻:
西門子S7-300使用指南
西門子s7-300中高級應(yīng)用技術(shù)
西門子S7-200PLC從入門到精通
西門子S7-200 SMART PLC編程應(yīng)用入門