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