RS485通訊輸出振動(dòng)傳感器
RS-485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。RS-485采用半雙工工作方式,任何時(shí)候只能有一點(diǎn)處于發(fā)送狀態(tài),因此,發(fā)送電路須由使能信號(hào)加以控制。RS-485用于多點(diǎn)互連時(shí)非常方便,可以省掉許多信號(hào)線(xiàn)。應(yīng)用RS-485 可以聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),其允許并聯(lián)32臺(tái)驅(qū)動(dòng)器和32臺(tái)接收器。在RS232或RS485設(shè)備聯(lián)成的設(shè)備網(wǎng)中,如果設(shè)備數(shù)量超過(guò)2臺(tái),就必須使用RS485做通訊介質(zhì),RS485網(wǎng)的設(shè)備間要想互通信息只有通過(guò)“主(Master)”設(shè)備中轉(zhuǎn)才能實(shí)現(xiàn),這個(gè)主設(shè)備通常是PC,而這種設(shè)備網(wǎng)中只允許存在一個(gè)主設(shè)備,其余全部是從(Slave)設(shè)備。
RS485有兩線(xiàn)制和四線(xiàn)制兩種接線(xiàn),四線(xiàn)制只能實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的通信方式,現(xiàn)很少采用,現(xiàn)在多采用的是兩線(xiàn)制接線(xiàn)方式,這種接線(xiàn)方式為總線(xiàn)式拓樸結(jié)構(gòu)在同一總線(xiàn)上可以?huà)旖?2個(gè)結(jié)點(diǎn)。在RS485通信網(wǎng)絡(luò)中一般采用的是主從通信方式,即一個(gè)主機(jī)帶多個(gè)從機(jī)。很多情況下,連接RS-485通信鏈路時(shí)只是簡(jiǎn)單地用一對(duì)雙絞線(xiàn)將各個(gè)接口的“A”、“B”端連接起來(lái)。而忽略了信號(hào)地的連接,這種連接方法在許多場(chǎng)合是能正常工作的,但卻埋下了很大的隱患,這有二個(gè)原因:
(1)共模干擾問(wèn)題: RS-485接口采用差分方式傳輸信號(hào)方式,并不需要相對(duì)于某個(gè)參照點(diǎn)來(lái)檢測(cè)信號(hào),系統(tǒng)只需檢測(cè)兩線(xiàn)之間的電位差就可以了。但人們往往忽視了收發(fā)器有一定的共模電壓范圍,RS-485收發(fā)器共模電壓范圍為-7~+12V,只有滿(mǎn)足上述條件,整個(gè)網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)線(xiàn)路中 共模電壓超出此范圍時(shí)就會(huì)影響通信的穩(wěn)定可靠,甚至損壞接口。
(2)EMI問(wèn)題:發(fā)送驅(qū)動(dòng)器輸出信號(hào)中的共模部分需要一個(gè)返回通路,如沒(méi)有一個(gè)低阻的返回通道(信號(hào)地),就會(huì)以輻射的形式返回源端,整個(gè)總線(xiàn)就會(huì)像一個(gè)巨大的天線(xiàn)向外輻射電磁波。 由于PC機(jī)默認(rèn)的只帶有RS232接口,有兩種方法可以得到PC上位機(jī)的RS485電路:(1)通過(guò)RS232/RS485轉(zhuǎn)換電路將PC機(jī)串口RS232信號(hào)轉(zhuǎn)換成RS485信號(hào),對(duì)于情況比較復(fù)雜的環(huán)境是選用防浪涌帶隔離珊的產(chǎn)品。(2)通過(guò)PCI多串口卡,可以直接選用輸出信號(hào)為RS485類(lèi)型的擴(kuò)展卡。
RS485通訊輸出振動(dòng)傳感器
【Modbus通信協(xié)議】
Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語(yǔ)言。通過(guò)此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用標(biāo)準(zhǔn)。有了它,不同廠(chǎng)商生產(chǎn)的控制設(shè)備可以連成網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過(guò)何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪(fǎng)問(wèn)其它設(shè)備的過(guò)程,如何回應(yīng)來(lái)自其它設(shè)備的請(qǐng)求,以及怎樣偵測(cè)錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。
Modbus具有以下幾個(gè)特點(diǎn):
(1)標(biāo)準(zhǔn)、開(kāi)放,用戶(hù)可以免費(fèi)、放心地使用Modbus協(xié)議,不需要交納許可證費(fèi),也不會(huì)侵犯知識(shí)產(chǎn)權(quán)。目前,支持Modbus的廠(chǎng)家超過(guò)400家,支持Modbus的產(chǎn)品超過(guò)600種。
(2)Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質(zhì)上傳送,如雙絞線(xiàn)、光纖、無(wú)線(xiàn)等。
(3)Modbus的幀格式簡(jiǎn)單、緊湊,通俗易懂。用戶(hù)使用容易,廠(chǎng)商開(kāi)發(fā)簡(jiǎn)單。
R【TU協(xié)議幀數(shù)據(jù)】
Modbus有兩種通信傳輸方式,一種是ASCII模式,一種是RTU模式。由于ASCII模式的數(shù)據(jù)字節(jié)是7bit數(shù)據(jù)位,51單片機(jī)無(wú)法實(shí)現(xiàn),而且應(yīng)用也相對(duì)較少,所以這里我們只用RTU模式。兩種模式相似,會(huì)用一種另外一種也就會(huì)了。一條典型的RTU數(shù)據(jù)幀如圖所示。
和我們實(shí)用串口通信程序類(lèi)似,我們一次發(fā)送的數(shù)據(jù)幀必須是作為一個(gè)連續(xù)的數(shù)據(jù)流進(jìn)行傳輸。我們?cè)趯?shí)用串口通信程序中采用的方法是定義30ms,如果接收到的數(shù)據(jù)超過(guò)了30ms還沒(méi)有接收到下一個(gè)字節(jié),我們就認(rèn)為這次的數(shù)據(jù)結(jié)束。而Modbus的RTU模式規(guī)定不同數(shù)據(jù)幀之間的間隔是3.5個(gè)字節(jié)通信時(shí)間以上。如果在一幀數(shù)據(jù)完成之前有超過(guò)3.5個(gè)字節(jié)時(shí)間的停頓,接收設(shè)備將刷新當(dāng)前的消息并假定下一個(gè)字節(jié)是一個(gè)新的數(shù)據(jù)幀的開(kāi)始。同樣的,如果一個(gè)新消息在小于3.5個(gè)字節(jié)時(shí)間內(nèi)接著前邊一個(gè)數(shù)據(jù)開(kāi)始的,接收的設(shè)備將會(huì)認(rèn)為它是前一幀數(shù)據(jù)的延續(xù)。這將會(huì)導(dǎo)致一個(gè)錯(cuò)誤,因此大家看RTU數(shù)據(jù)幀還有16bit的CRC校驗(yàn)。
起始位和結(jié)束符:前后都至少有3.5個(gè)字節(jié)的時(shí)間間隔,起始位和結(jié)束符實(shí)際上沒(méi)有任何數(shù)據(jù),T1-T2-T3-T4代表的是時(shí)間間隔3.5個(gè)字節(jié)以上的時(shí)間,而真正有意義的個(gè)字節(jié)是設(shè)備地址。
設(shè)備地址:在多機(jī)通信的時(shí)候,數(shù)據(jù)那么多,我們依靠什么判斷這個(gè)數(shù)據(jù)幀是哪個(gè)設(shè)備的呢?沒(méi)錯(cuò),就是依靠這個(gè)設(shè)備地址字節(jié)。每個(gè)設(shè)備都有一個(gè)自己的地址,當(dāng)設(shè)備接收到一幀數(shù)據(jù)后,程序首先對(duì)設(shè)備地址字節(jié)進(jìn)行判斷比較,如果與自己的地址不同,則對(duì)這幀數(shù)據(jù)直接不予理會(huì),如果如果與自己的地址相同,就要對(duì)這幀數(shù)據(jù)進(jìn)行解析,按照之后的功能碼執(zhí)行相應(yīng)的功能。如果地址是0x00,則認(rèn)為是一個(gè)廣播命令,就是所有的從機(jī)設(shè)備都要執(zhí)行的指令。
功能代碼:在第二個(gè)字節(jié)功能代碼字節(jié)中,Modbus規(guī)定了部分功能代碼,此外也保留了一部分功能代碼作為備用或者用戶(hù)自定義,這些功能碼大家不需要去記憶,甚至都不用去看,直到你有用到的那天再過(guò)來(lái)查這個(gè)表格即可