串口通訊,又經(jīng)常被稱為點對點通訊或者ptp通訊,是工業(yè)設(shè)備中的一種非常通用的通訊方式,常用于獲取相對遠程采集設(shè)備的數(shù)據(jù)。串行通信,通常利用rs232c或者rs485電氣接口,實現(xiàn)ascii碼或者modbus通訊;其特點是通信線路簡單,成本較低,用于解決不同廠商產(chǎn)品之間節(jié)點少、數(shù)據(jù)量小、通訊速率低、實時性要求不高的場合,如過程儀表、變頻器、連接掃描儀、條碼閱讀器等帶有串行通訊接口的設(shè)備,cp卡加載通訊協(xié)議后,還可以和支持modbus協(xié)議的現(xiàn)場儀表通訊。
為了實現(xiàn)設(shè)備相互通訊,通訊雙方的通訊接口和通訊協(xié)議要一致,最基本的串行通訊的數(shù)據(jù)幀格式和波特率也要匹配。
西門子串行通訊支持的數(shù)據(jù)幀格式:
·起始位:1位;
·數(shù)據(jù)位:7/8位;
·校驗位:1位奇/偶校驗位,或者沒有校驗位;
·停止位:1/2位。
常用的串行數(shù)據(jù)接口有:rs232c 和 rs485/422。rs-232c、rs-422/485 標準只對接口的電氣特性做出規(guī)定,而不涉及接插件、電纜或協(xié)議,在此基礎(chǔ)上用戶可以建立自己的高層通信協(xié)議。
一、rs232c接口
rs-232c 是低速率的單端串行通訊,rs-232c 采取不平衡傳輸方式,即所謂單端通訊。
1.rs232c 通訊接口特點
·rs-232采取不平衡傳輸方式,其收、發(fā)端的數(shù)據(jù)信號是相對于信號地,抗共模干擾能力差;
·近距離通訊,最大通信距離15m;
·只能用于點對點(即一對收/發(fā)設(shè)備)通訊。
2. rs232c 接口定義
rs232c并未定義連接器的物理特性,不同類型的連接器引腳定義也各不相同,其中9針和25針的引腳定義對照,如下圖所示。
最為簡單且常用的是三線制接法,即txd,rxd和地線三根,如上圖中紅色(2,3)和紫色(5)三個針腳。
二、rs422/485 接口
rs-422/485 改進 rs-232 通信距離短、速率低的缺點。
1.rs422/485接口特點
·rs-422、rs-485與rs-232不一樣,數(shù)據(jù)信號采用差分傳輸方式,也稱作平衡傳輸;
·平衡傳輸抗干擾能力更強,使傳輸距離更遠,通訊距離最長1200米;
·可以連接多個設(shè)備,rs422總線可支持10個節(jié)點(單機發(fā)送、多機接收的單向傳輸),rs485可支持32個節(jié)點(多點、雙向通訊能力);
·網(wǎng)絡(luò)拓撲一般采用終端匹配的總線型結(jié)構(gòu),不支持星型或樹形;
·傳輸距離超過50米,需要在兩端加終端電阻330歐姆(推薦用liycy電纜);
2.rs422/485接口定義
rs422/485 的端口有9針、15針,cp340/341/440/441的接口是15針,如下圖所示。
三、常用的協(xié)議類型
1.ascii 協(xié)議,又稱自由口
ascii 協(xié)議通過通訊處理器和通訊伙伴之間的點對點連接控制數(shù)據(jù)傳輸。由于消息的結(jié)構(gòu)完全由用戶定義,用戶可以以 ascii 協(xié)議為基礎(chǔ)開發(fā)自己的消息。在接收方只需要定義接收消息的結(jié)束方式,發(fā)送接收雙方協(xié)商一致。
ascii 驅(qū)動程序允許發(fā)送和接收任何結(jié)構(gòu)的數(shù)據(jù)(所有可打印的 ascii 碼表字符符以及從 00 到 ffh [帶有 8 個數(shù)據(jù)位字符幀] 的所有其它字符或從 00 到 7fh [帶有 7 個數(shù)據(jù)位字符幀]的所有其它字符)。ascii協(xié)議適用于與支持串行通信的智能儀表、條形碼閱讀器、掃描儀、打印機等設(shè)備進行通訊。
1.modbus 協(xié)議
modbus rtu 通信協(xié)議是以主從的方式進行數(shù)據(jù)傳輸?shù)?,主動方發(fā)送請求,被動方響應(yīng)請求,應(yīng)答的方式。在傳輸?shù)倪^程中主站是主動方,即主站發(fā)送數(shù)據(jù)請求報文到從站;從站是被動方,即如果正常從站返回正常響應(yīng)報文,如果故障從站返回異常響應(yīng)報文,如下圖所示。
modbus 系統(tǒng)中,數(shù)據(jù)交換需要通過功能代碼(function code)來控制的,具體分以下兩類。
有些功能碼是對位操作的,通信的用戶數(shù)據(jù)是以位為單位的:
·fc01讀輸出位的狀態(tài);
·fc02讀輸入位的狀態(tài);
·fc05寫單個輸出位;
·fc15寫多個輸出位。
有些功能碼是對16位寄存器操作的,通信的用戶數(shù)據(jù)是以字為單位的:
·fc03讀輸出寄存器;
·fc04讀輸入寄存器;
·fc06寫單個輸出寄存器;
·fc16寫多個輸出寄存器。
這些功能碼是對四個數(shù)據(jù)區(qū)位輸入、位輸出、寄存器輸入、寄存器輸出進行訪問的。