【玩轉(zhuǎn)485】9.數(shù)據(jù)的收發(fā)【連載9】
林慧玲
發(fā)布于2015-02-15 09:35
16
0
標(biāo)簽:通訊
上一篇文章我向大家介紹了,通訊中要使用到的發(fā)送完成中斷和接收完成中斷,本文我們就利用這兩個(gè)中斷在一個(gè)程序中完成數(shù)據(jù)的接收和發(fā)送這兩個(gè)功能。
1 主從通訊 圖1-1
首先要明確一點(diǎn)我之前的文章給大家講過RS485通訊方式是主從通訊,那么在數(shù)據(jù)的接收和發(fā)送中主站和從站的主要區(qū)別到底在哪呢?
對(duì)于主站主要體現(xiàn)在主站是必須要先發(fā)送數(shù)據(jù),然后再接收數(shù)據(jù),就相當(dāng)于主站要先發(fā)出命令給從站,然后等待從站把執(zhí)行結(jié)果反饋給主站,主站再發(fā)出下一條命令。
對(duì)于從站剛好和主站相反,從站一定是先接收數(shù)據(jù)然后再發(fā)送數(shù)據(jù)。相當(dāng)于從站要先等待主站的命令,接收到命令后從站執(zhí)行主站的命令,執(zhí)行完成后從站把執(zhí)行完成的結(jié)果再發(fā)送給主站,然后等待主站的下一個(gè)命令。
2 程序的編寫 下面我們就把PLC作為從站,電腦作為主站,我們用電腦向PLC發(fā)送一段報(bào)文11 BC 3A 24 5C 2E,PLC接收到這段報(bào)文后向電腦返回一段報(bào)文21 C3 47 87 92 5F。
圖 2-1
圖 2-2
圖 2-3
這個(gè)程序中圖 2-1是主程序,圖 2-2是接收完成中斷程序,圖 2-3 是發(fā)送完成中斷程序。程序總體來說還是非常簡單,由于PLC是從站所以我們主程序先激活接收指令,同時(shí)對(duì)接收完成中斷和發(fā)送完成中斷進(jìn)行使能。在接收完成中斷程序中我們調(diào)用發(fā)送指令,表示接收數(shù)據(jù)完成后PLC發(fā)送數(shù)據(jù)。在發(fā)送完成中斷程序中我們調(diào)用接收指令,表示數(shù)據(jù)發(fā)送完成后PLC等待接收數(shù)據(jù)。
圖 2-4
圖 2-4我們可以看到是用電腦做主站,執(zhí)行過一次發(fā)送后的界面,下方是發(fā)送給PLC的數(shù)據(jù),上方是從PLC接收回來的數(shù)據(jù),這時(shí)可能就有人要納悶了,為什么接收回來的數(shù)據(jù)一定是21 C3 4787 92 5F 38不是其他的數(shù)值?程序里看不出來?。科鋵?shí)這個(gè)很簡單因?yàn)槲乙呀?jīng)給PLC的發(fā)送緩沖區(qū)預(yù)制了這組報(bào)文,如圖 2-5所示。
圖 2-5
后我們監(jiān)控PLC的接收緩沖區(qū)可以看到PLC也接收到了發(fā)自電腦的報(bào)文。
圖2-6
作者:馬樂
版權(quán)為技成所有,未經(jīng)同意,盜取必究!