PLC通信是個(gè)大學(xué)問(wèn)宣蔚,我們從基礎(chǔ)開(kāi)始吧!

當(dāng)我們知道了工業(yè)上串口通信(RS232\RS422\RS485)通信的甲乙雙方如何在物理層面上建立起通信的鏈路认境。是不是有了這些條件通信的甲乙雙方就可以進(jìn)行溝通了呢胚委?

其實(shí)還是不夠的。這就好比兩個(gè)人打電話叉信,電話線路是通暢的亩冬,但是兩個(gè)人說(shuō)的不是同一種語(yǔ)言,一個(gè)人說(shuō)中文硼身,一個(gè)人說(shuō)德文硅急,說(shuō)了半天一句沒(méi)聽(tīng)懂,“你這是弄啥勒”鸠姨?啪铜秆,電話掛掉了淹真。


兩個(gè)講著不同語(yǔ)言的人是無(wú)法進(jìn)行交流的讶迁,要想交流,就必須對(duì)語(yǔ)言進(jìn)行統(tǒng)一核蘸,比如都用英文巍糯,這樣兩個(gè)人就能夠進(jìn)行溝通,愉快的玩耍了客扎。


工業(yè)上的通信和日常說(shuō)話其實(shí)是一樣一樣的祟峦,當(dāng)我們把物理上的線路都正確的連接后,還需要對(duì)相互的之間數(shù)據(jù)的發(fā)送接收進(jìn)行相應(yīng)的規(guī)定徙鱼,這種規(guī)定稱為通信協(xié)議宅楞。


通信協(xié)議對(duì)數(shù)據(jù)報(bào)文進(jìn)行了明確的定義,比如:幀的起始信號(hào)袱吆,結(jié)束信號(hào)厌衙,數(shù)據(jù)的長(zhǎng)度,校驗(yàn)碼等等绞绒。工業(yè)上的通信協(xié)議非常多婶希,比如:Modbus總線協(xié)議;ProfiBus總線協(xié)議蓬衡,ProfiNet總線協(xié)議喻杈,S7 通信協(xié)議彤枢;Interbus總線協(xié)議;汽車上用的最廣泛的CAN協(xié)議筒饰;及很多基于CAN協(xié)議的如DeviceNet,CanOpen等等缴啡。有了這些協(xié)議,通信的甲乙雙方(總線協(xié)議可以有很多通信小伙伴)就可以建立起連接瓷们,愉快的交換數(shù)據(jù)了盟猖。


這里我們要著重說(shuō)的是串口通信的協(xié)議,稱之為ASCII協(xié)議换棚。該協(xié)議有這樣一些參數(shù):波特率式镐,起始位,數(shù)據(jù)位固蚤,停止位娘汞,校驗(yàn)位。

1)波特率(baud rate):是指每秒鐘所傳輸?shù)淖址ㄒ卜Q為碼元)的個(gè)數(shù)夕玩。注意這里的字符不是字節(jié)你弦,不一定是8位。波特率的單位是 “Baud”燎孟。


?很多小伙伴容易把“波特率”和“比特率”進(jìn)行混淆禽作。比特是英文的"bit"的翻譯,表示二進(jìn)制的“位”揩页。比特率是指每秒鐘所傳輸?shù)奈坏膫€(gè)數(shù)旷偿,單位為bps(bit per second)。假設(shè)一秒鐘傳輸2個(gè)字節(jié)(一個(gè)字節(jié)有八個(gè)位)爆侣,比特率就是2*8=16bps萍程。


再回到波特率,假如波特率中的字符(碼元)是這樣定義的:1個(gè)起始位兔仰,1個(gè)停止位茫负,8個(gè)數(shù)據(jù)位 。那么碼元的總位數(shù)(bit)=1+1+8=10乎赴。在波特率等于9600的情況下忍法,傳輸?shù)谋忍芈?9600*10=96000 bps。

2)起始位:串行通信在空閑的時(shí)候榕吼,總線上的電平為高電平(邏輯1)饿序,開(kāi)始傳輸數(shù)據(jù)時(shí),要先把總線上的電平拉低一個(gè)時(shí)間單位(邏輯0)友题,稱為1個(gè)起始位嗤堰。時(shí)間單位是與波特率相關(guān)的,波特率越高,時(shí)間單位的寬度越窄踢匣。起始位不需要設(shè)置告匠,默認(rèn)為1,是包含在數(shù)據(jù)位里的离唬。

3)數(shù)據(jù)位:表示傳輸?shù)臄?shù)據(jù)的位數(shù)后专,范圍是5-8,通常是8位输莺;注意戚哎,8位數(shù)據(jù)由于包含了一個(gè)起始位,其有效的數(shù)據(jù)位數(shù)為7位嫂用。

4)校驗(yàn)位:校驗(yàn)是數(shù)據(jù)傳送時(shí)采用的一種校正數(shù)據(jù)錯(cuò)誤的一種方式型凳,通常分為奇校驗(yàn)和偶校驗(yàn),串行通信中可以有如下幾種校驗(yàn)位的選擇:

4.1)奇校驗(yàn)(Odd):數(shù)據(jù)在傳輸過(guò)程中嘱函,為1的位(bit)的總數(shù)應(yīng)為奇數(shù)甘畅;若不是奇數(shù),則校驗(yàn)位=1往弓;若是疏唾,則校驗(yàn)位=0;

4.2)偶校驗(yàn)(Even):數(shù)據(jù)在傳輸過(guò)程中函似,為1的位(bit)的總數(shù)應(yīng)為偶數(shù)槐脏;若不是偶數(shù),則校驗(yàn)位=1撇寞;若是顿天,則校驗(yàn)位=0;

4.3)空位校驗(yàn)(Space):校驗(yàn)位=0

4.4)標(biāo)記校驗(yàn)(Mark):校驗(yàn)位=1

4.5)無(wú)校驗(yàn)(no parity):不使用校驗(yàn)位

5)停止位:當(dāng)一個(gè)字符的數(shù)據(jù)傳輸完成后重抖,要把總線的電平拉高露氮。停止位也是以時(shí)間長(zhǎng)度來(lái)衡量的祖灰,通持优妫可以選擇“1”,“1.5”局扶,“2”恨统。以1.5為例,它表示停止位的高電平要保持1.5個(gè)時(shí)間單位的長(zhǎng)度(取決于波特率)三妈。停止位之后總線就轉(zhuǎn)入空閑狀態(tài)等待下次的起始信號(hào)畜埋。


下圖就是方正智芯的串口調(diào)試軟件“Como”的串口配置界面迫肖。


這里注意的是“串口名稱”這一項(xiàng)闪盔,計(jì)算機(jī)上可能有很多串口真朗,COM1琐谤,COM2等结窘,在這里選擇你要使用的是哪個(gè)串口。


細(xì)心的小伙伴可能會(huì)發(fā)現(xiàn)渡冻,在上圖的界面中砾赔,有個(gè)"RTS/CTR使能"的選項(xiàng),這是什么東東呢么翰?這就要說(shuō)到串行通信的“流控制”(handshaking)了牺汤。


這里所說(shuō)的“流”,是指數(shù)據(jù)流浩嫌。數(shù)據(jù)在兩個(gè)串口之間進(jìn)行傳輸時(shí)檐迟,有時(shí)候會(huì)出現(xiàn)數(shù)據(jù)丟失的情況。因?yàn)殡m然我們配置好了波特率码耐,數(shù)據(jù)位等相關(guān)的信息追迟,但是兩個(gè)串口各自的數(shù)據(jù)處理速度很多時(shí)候是不一樣的。比如臺(tái)式機(jī)與單片機(jī)的通信骚腥,當(dāng)單片機(jī)來(lái)不及處理臺(tái)式機(jī)發(fā)來(lái)的數(shù)據(jù)時(shí)怔匣,就會(huì)造成數(shù)據(jù)緩存區(qū)滿的情況。如果此時(shí)臺(tái)式機(jī)繼續(xù)發(fā)送數(shù)據(jù)桦沉,單片機(jī)就無(wú)法接收這些數(shù)據(jù)每瞒,從而造成數(shù)據(jù)丟失。


為了解決串行通信中甲乙雙方數(shù)據(jù)處理速度不同造成的數(shù)據(jù)丟失的情況纯露,聰明的工程師們提出了“流控制”的概念剿骨。流控制有兩種:一種是硬件流控制,一種是軟件流控制埠褪。

1)硬件流控制浓利。

所謂硬件流控制,是指利用硬件線路的電氣信號(hào)進(jìn)行發(fā)送和接收的控制钞速,硬件流控制必須用電纜將相應(yīng)的控制引腳進(jìn)行連接贷掖。例如當(dāng)使用RTS\CTS這一對(duì)硬件流控制,首先要將通信甲乙雙方的RTS和CTS進(jìn)行連接渴语。

下圖是Datalog 掃碼槍硬件流控制(RTS\CTS)的示意圖:

當(dāng)掃碼槍要發(fā)送數(shù)據(jù)時(shí)苹威,先將RTS的電平拉高,然后檢測(cè)CTS的電平驾凶,如果CTS為高電平牙甫,則啟動(dòng)數(shù)據(jù)的發(fā)送。如果CTS為低電平调违,則暫停數(shù)據(jù)的發(fā)送窟哺。當(dāng)數(shù)據(jù)發(fā)送完畢時(shí),將RTS的電平拉低技肩。

硬件流控制還可以使用DTR和DSR這一對(duì)連線的信號(hào)且轨,和RTS\CTS類似,不再贅述。

2)軟件流控制


硬件流控制由于需要相應(yīng)的電纜接線阿蝶,會(huì)增加項(xiàng)目的成本爽丹。在某些對(duì)控制要求不是很嚴(yán)格的場(chǎng)合真仲,可以使用軟件進(jìn)行流控制碑宴。軟件流控制一般通過(guò)XOFF和XON來(lái)實(shí)現(xiàn)祸挪。還以Datalog的掃碼槍為例,如下圖:


當(dāng)上位機(jī)或PLC(Host)的輸入緩沖區(qū)內(nèi)的數(shù)據(jù)超過(guò)設(shè)定的上限值時(shí)(比如緩沖區(qū)大小的75%)峻仇,上位機(jī)發(fā)送XOFF字符(13 Hex帆调,表示16進(jìn)制的13)影锈。掃碼槍收到XOFF字符即停止數(shù)據(jù)的發(fā)送。當(dāng)上位機(jī)或PLC(Host)的輸入緩沖區(qū)的數(shù)據(jù)恢復(fù)到正常范圍時(shí),上位機(jī)發(fā)送XON字符(11 Hex,表示16進(jìn)制的11),掃碼槍收到XON字符時(shí)一喘,就繼續(xù)發(fā)送數(shù)據(jù)议蟆。


軟件流控制可以減少布線的成本萎战,但是在設(shè)計(jì)程序時(shí)必須謹(jǐn)慎使用0x13(13 Hex)和0x11(11 Hex)這兩個(gè)字符作為數(shù)據(jù)包的內(nèi)容咪鲜,否則很有可能引起軟件的誤操作。


文章來(lái)源:電氣系? (全網(wǎng)同名)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撞鹉,一起剝皮案震驚了整個(gè)濱河市疟丙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鸟雏,老刑警劉巖享郊,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異孝鹊,居然都是意外死亡炊琉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門又活,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)苔咪,“玉大人,你說(shuō)我怎么就攤上這事柳骄⊥派停” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵耐薯,是天一觀的道長(zhǎng)舔清。 經(jīng)常有香客問(wèn)我丝里,道長(zhǎng),這世上最難降的妖魔是什么体谒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任杯聚,我火速辦了婚禮,結(jié)果婚禮上抒痒,老公的妹妹穿的比我還像新娘幌绍。我一直安慰自己,他們只是感情好故响,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布傀广。 她就那樣靜靜地躺著,像睡著了一般被去。 火紅的嫁衣襯著肌膚如雪主儡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天惨缆,我揣著相機(jī)與錄音糜值,去河邊找鬼。 笑死坯墨,一個(gè)胖子當(dāng)著我的面吹牛寂汇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播捣染,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼骄瓣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了耍攘?” 一聲冷哼從身側(cè)響起榕栏,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蕾各,沒(méi)想到半個(gè)月后扒磁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡式曲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年妨托,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吝羞。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兰伤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出钧排,到底是詐尸還是另有隱情敦腔,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布卖氨,位于F島的核電站会烙,受9級(jí)特大地震影響负懦,放射性物質(zhì)發(fā)生泄漏筒捺。R本人自食惡果不足惜柏腻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望系吭。 院中可真熱鬧五嫂,春花似錦、人聲如沸肯尺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)则吟。三九已至槐臀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間氓仲,已是汗流浹背水慨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敬扛,地道東北人晰洒。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像啥箭,于是被迫代替她去往敵國(guó)和親谍珊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容