結(jié)束信息的方式可以是以下的一種或幾種組合。
①結(jié)束字符檢測:結(jié)束字符是用于表示信息結(jié)束的任意字符。設(shè)置ec一1,SMB89(或SMBl89)一結(jié)束字符;信息接收功能在找到起始條件開始接收字符后,檢查每一個接收到的字符,并判手指套斷它是否與結(jié)束字符相匹配,如果接收到結(jié)束字符,將其存入信息緩沖區(qū),信息接收功能結(jié)束。通常對于所有信息都使用同一字符作為結(jié)束的.AS(1、II碼協(xié)議,用戶可以使用結(jié)束字符檢測。
②字符間隔定時器超時:字符間隔時間是指從一個字符的結(jié)尾(停止位)到下一個字符的結(jié)尾(停止位)之問的時間。設(shè)置c/m—O,tmr一1,SMW92(SMwl92)一字符間超時時間。如
果信息接收功能接收到的兩個字符之間的時間間隔超過字符問超時定時器設(shè)定時問,則信息接收功能結(jié)束。字符間超時定時器設(shè)定值應(yīng)大于指定波特率下傳輸一個字符(包括起始位、數(shù)據(jù)位、手指套校驗(yàn)位和停止位)的時問。用戶可以通過使用字符間隔定時器與結(jié)束字符檢測或者最大字符計(jì)數(shù)相結(jié)合,來結(jié)束一條信息。
③信息定時器超值:從信息的開始算起,在經(jīng)過指定的一段時間之后,信息定時器結(jié)束一條信息。設(shè)置c/m一1,tmr一1,SMW92(SMwl92)一信息超時時間。信息接收功能在找到起始條件手指套開始接收字符時,啟動信息定時器,信息定時器時間到,則信息接收功能結(jié)束。同樣用戶可以通過使用字符間隔定時器與結(jié)束字符檢測或者最大字符計(jì)數(shù)相結(jié)合,來結(jié)束一條信息。
④最大字符計(jì)數(shù):當(dāng)信息接收功能接收到的字符數(shù)大于SMB94(或SMBl94)時,信息接收功能結(jié)束。接收指令要求用戶設(shè)定一個希望最大的字符數(shù),從而能確保信息緩沖區(qū)之后的用戶數(shù)據(jù)不會被覆蓋。
最大字符計(jì)數(shù)總是與結(jié)束字符、字符間超時定時器、信息定時器結(jié)合在一起作為結(jié)束條件使用。 ’
⑤校驗(yàn)錯誤:當(dāng)接收字符出現(xiàn)奇偶校驗(yàn)錯誤時,信息接收功能自動結(jié)束。只有在SMB30(或SMBl30)中設(shè)定了校驗(yàn)位時,才有可能出現(xiàn)校驗(yàn)錯誤。
⑥用戶結(jié)束:用戶可以通過將SMB87(或SMBl87)設(shè)置為0來終止信息接收功能。
為了完全適應(yīng)對各種通信協(xié)議的支持,可以使用字符中斷控制的方式來接收數(shù)據(jù)。通信口每接收一個字符時都會產(chǎn)生中斷。在執(zhí)行連接到接收字符中斷事件上的中斷程序前,接收到的字符存儲在SMB2中,校驗(yàn)狀態(tài)(如果允許的話)存儲在SM3.O中。 ‘ ’
SMB2是自由端口接收字符緩沖區(qū)。在自由端口模式下,每一個接收到的字符都會被存儲在這個單元中,以方便用戶程序訪問。SMB3用于自由端口模式,并包含一個校驗(yàn)錯誤標(biāo)志位。當(dāng)接收字符的同時檢測到校驗(yàn)錯誤時,該位被置位,該字節(jié)的所有其他位保留。
注意,SMB2和SMB3是端口O和端口1公用的。當(dāng)接收的字符來自端口0時,執(zhí)行與事件(中斷事件8)相連接的中斷程序,此時SMB2中存儲從端口0接收的字符,SMB3中存儲字符的校驗(yàn)狀態(tài);當(dāng)接收的字符來自端口1,執(zhí)行與事件(中斷事件25)相連接的中斷程序,SMB2中存儲從端口1接收的字符,SMB3中存儲該字符的校驗(yàn)狀態(tài)。
本程序功能為上位PC和PLC之間的通信,PLC接收上位PC發(fā)送的一串字符,直到收到回車符為止,PI。c又將信息發(fā)送回Pc。
自由口協(xié)議通信指令應(yīng)用舉例的主程序,本程序?qū)崿F(xiàn)的功能是接收一個字符串,直到接收到換行字符。接收完成后,信息會發(fā)送回發(fā)送方。中斷0為接收完成中斷例行程序。中斷0實(shí)現(xiàn)的功能是如果接收狀態(tài)顯示接收結(jié)束字符,則附加一個10ms計(jì)時器,觸發(fā)傳輸并返回。中斷l(xiāng)為10ms定時觸發(fā)發(fā)送。中斷2為發(fā)送字符中斷事件。