|
高RS485總線通信速度的一種設計
引言
工業現場經常要采集多點數據,模擬信號或開關信號,一般用到 RS485總線,使用一主帶多從的通信方式,該種方式接線方便隻需要兩根屏蔽電纜線,通信距離遠最大可支持1500m,加深圳市天地華傑公司的中繼器(TD-109)haikeyanchangtongxinjuli,caiyongchafenxinhaofangshikangdianciganraohao。dangaifangshitongxinsudubunengtaikuai,yibancaiyongzhucongzhaohuandefangshicaijigezidanyuandeshuju,jizhudanyuanyicizhaohuangezidanyuan(見圖1),召zhao喚huan到dao哪na個ge單dan元yuan哪na個ge單dan元yuan上shang傳chuan數shu據ju,總zong線xian的de使shi用yong權quan完wan全quan由you主zhu單dan元yuan分fen配pei,各ge子zi單dan元yuan不bu能neng擅shan自zi占zhan領ling總zong線xian。如ru果guo係xi統tong的de單dan元yuan多duo,主zhu單dan元yuan循xun環huan采cai集ji一yi周zhou的de時shi間jian就jiu很hen長chang,子zi單dan元yuan信xin息xi變bian化hua時shi不bu能neng及ji時shi發fa送song給gei主zhu單dan元yuan,導dao致zhi係xi統tong對dui突tu變bian事shi件jian的de反fan應ying處chu理li速su度du慢man。本ben文wen通tong過guo總zong線xian狀zhuang態tai檢jian測ce、從機主動上發的方式解決。
圖1 常規RS485總線主從方式接口圖
硬件設計
整個係統由主單元和多個子單元組成(圖2),主單元包括:ARM7微控製器、程序存儲器、數據存儲器、與子單元通信RS485、與主單元通信RS485、係統電源和通信隔離電源;子單元包括:MSP430單片機、與子單元通信RS485、係統電源和通信隔離電源。
圖2 係統框圖
主單元
ARM微控製器是主單元的核心,采用三星32位ARM7TDMI內核芯片 S3C44B0,該芯片最高處理速度可達76MHZ,總線開放,可外擴程序存儲器FLASH和數據存儲器SDRAM,該係統外擴了SST公司生產的39VF1601和現代生產的HY57V641620HG,2個 UART串行接口,使用ADI的隔離RS485芯片ADM2483進行接口電平轉換,總線狀態檢測使用74HC125三態門芯片。
子單元
子單元的微控製器使用TI的MSP430F133單片機,該單片機處理速度可達8MHz,8K字節片內FLASH存儲,256K字節片內SRAM。
電源電路
電源電路采用開關電源供電,開關電源輸入電壓範圍比較寬,輸出直流電壓5V,通過SP1117-3.3和SP1117-2.5芯片輸出3.3V電源。RS485需要的隔離5V電源通過DC-DC模塊得到。
總線檢測電路
總線狀態檢測使用74HC125三態門芯片和單片機的兩個I/O(圖3),當係統都不使用總線時,每個單元的74HC125都輸出高阻狀態,此時總線為低電平,當有單元要使用總線時,他首先檢測總線狀態,如果總線為低電平,該單元迅速把74HC125改為輸出狀態,此時總線變為高電平,該單元占領總線,往總線上發送數據,發送數據完成再把74HC125改為高阻狀態。如果檢測到總線是高電平,等待檢測,直到總線變低後再占領總線。
圖3 總線檢測電路
隔離485電路
使用ADI的ADM2483芯片進行接口電平轉換(圖4),該芯片屬於隔離485,雙電源供電輸入輸出隔離。
圖4 隔離485電路
軟件設計
主機程序部分需要實現各從機上傳數據的接收、處理和上傳。主機接收子單元信息通過一個RS485串口實現,數據格式為16進製,數據位8位,1 個起始位,1個結束位,無寄偶校驗位,波特率9600bps。采cai用yong串chuan行xing口kou中zhong斷duan的de方fang式shi接jie收shou,主zhu機ji程cheng序xu初chu始shi化hua完wan成cheng後hou等deng待dai各ge從cong機ji發fa送song信xin息xi,當dang主zhu機ji接jie收shou到dao第di一yi個ge字zi節jie後hou,判pan斷duan該gai字zi節jie是shi否fou為wei設she備bei號hao,如ru果guo不bu是shi設she備bei號hao,接jie收shou個ge數shu清qing零ling,如ru果guo是shi設she備bei號hao繼ji續xu接jie收shou第di二er個ge字zi節jie;判定第二個字節是否為正確的功能碼,如果功能碼錯誤,接收個數清零重新接收,功能碼正確;接收第三個字節,該字節為從單元發送信息的字節個數x,計算從單元發送總字節個數為M=X+3+2,3個開頭字節和2個 CRC校驗碼,主機接收到M個字節後,首先判斷CRC校驗碼是否正確,錯誤舍棄所有信息,正確則把從單元的信息保存到數據區,該次接收結束,主機繼續等待接收。
信息的上傳通過一個RS232串chuan口kou實shi現xian。當dang主zhu機ji接jie收shou到dao從cong機ji信xin息xi後hou,進jin行xing數shu據ju的de處chu理li,發fa現xian從cong單dan元yuan信xin息xi發fa生sheng變bian化hua,主zhu機ji準zhun備bei把ba從cong機ji信xin息xi發fa送song到dao上shang位wei機ji,首shou先xian重zhong新xin初chu始shi化hua發fa送song緩huan衝chong區qu,然ran後hou通tong過guo中zhong斷duan的de方fang式shi依yi次ci發fa送song信xin息xi到dao上shang位wei機ji,發fa送song信xin息xi包bao括kuo設she備bei號hao、功能碼、發送字節個數、信息字節和CRC校驗碼。
主機單元接收數據流程圖示於圖5。
圖5 程序流程圖
結語
徐龍輝所設計的係統實現了開關信號的多點監測,一個主機單元,32個從機單元,每個從機單元監測32個開關,該係統共可監測1024個開關,使用 9600bps的波特率。采用主從召換的方式,開關信號監測的反應時間一般要用20-30s,使用該種總線檢測的方式,開關信號的反應速度最慢也不超過 1s,快時隻有幾百ms,大大提高反應時間,並且由於不用時時召喚,總線數據流少,提高了總線的穩定性。
|