新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 自由通訊口如何正確接收結(jié)束消息

        自由通訊口如何正確接收結(jié)束消息

        作者: 時(shí)間:2016-12-19 來源:網(wǎng)絡(luò) 收藏
        本文以自由通訊口接收結(jié)束消息方式為例,通信伙伴的數(shù)據(jù)是一幀一幀發(fā)送的,比如通信伙伴每隔 100ms 發(fā)送一幀 01 02 03 04 05 給S7-200,S7-200接收這些數(shù)據(jù),那么我們有幾種方法可以正確接收到這些數(shù)據(jù):

        1、指定空閑線時(shí)間(可以理解為兩幀數(shù)據(jù)之間的間隔)為50ms(小于發(fā)送間隔時(shí)間100ms),則當(dāng)發(fā)送完第一幀 01 02 03 04 05 后,啟動(dòng)空閑時(shí)間檢測,超過50ms即認(rèn)為一幀數(shù)據(jù)結(jié)束,準(zhǔn)備接收下一幀數(shù)據(jù)。這可以看做是“字符間定時(shí)器”結(jié)束消息方式。

        2、指定接收結(jié)束字符為05,則當(dāng)接收到 01 02 03 04 05 后,即收到結(jié)束字符05后,認(rèn)為一幀數(shù)據(jù)結(jié)束,再接收到的 01 02 03 04 05 認(rèn)為是下一幀數(shù)據(jù),依此類推。這可以看做是“結(jié)束字符檢測”結(jié)束消息方式。

        3、指定接收數(shù)據(jù)長度為5,則收到 01 02 03 04 05 (5個(gè)字符)后,即認(rèn)為一幀數(shù)據(jù)結(jié)束,再接收到的 01 02 03 04 05 認(rèn)為是下一幀數(shù)據(jù),依此類推。這可以看做是“最大字符計(jì)數(shù)”結(jié)束消息方式。

        4、其他條件還包括“消息定時(shí)器”、“奇偶效驗(yàn)錯(cuò)誤”、“用戶終止”等結(jié)束消息的方式,或者這些條件的組合作為結(jié)束消息的方式。

        那么在應(yīng)用中選擇哪種結(jié)束消息的方式,要具體情況具體分析。這話說起來很空洞,但確實(shí)如此,因?yàn)樽杂煽谕ㄐ疟旧砭蜎Q定了,不同的通信對象間的數(shù)據(jù)幀格式(或協(xié)議)是設(shè)備廠家自由定義的,這就要求事先充分理解通信協(xié)議,并在此基礎(chǔ)上進(jìn)行選擇。

        另外一方面,如果能靈活掌握這部分內(nèi)容,還可以解決一些實(shí)際問題。比如大家都知道數(shù)據(jù)要接收到接收緩沖區(qū),而接收緩沖區(qū)的大小是有限制的(255個(gè)字節(jié)),那么怎么能夠接收到大于255個(gè)字節(jié)的數(shù)據(jù)呢(緩沖區(qū)溢出后前面的數(shù)據(jù)被覆蓋)?可以考慮設(shè)置“最大字符計(jì)數(shù)”為結(jié)束消息方式,將數(shù)據(jù)分為多個(gè)部分依次進(jìn)行接收。


        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 新河县| 三原县| 定远县| 枣阳市| 玉门市| 霍山县| 东方市| 农安县| 原阳县| 襄樊市| 渭源县| 台中县| 界首市| 平湖市| 文登市| 兴业县| 洪湖市| 南丹县| 鲁甸县| 眉山市| 隆回县| 高碑店市| 巨鹿县| 内丘县| 九寨沟县| 福州市| 衢州市| 牙克石市| 河东区| 郁南县| 根河市| 临城县| 信阳市| 临洮县| 历史| 东宁县| 青阳县| 黑河市| 池州市| 山东省| 周宁县|