【玩轉(zhuǎn)485】2.數(shù)據(jù)的發(fā)送【連載2】
林慧玲
發(fā)布于2015-02-13 14:35
3620
1
標(biāo)簽:基礎(chǔ)
說到通訊大家都覺得很難,覺得學(xué)起來沒有頭緒,其實(shí)我剛看到通訊的時(shí)候也是這樣的感覺,資料找了一大堆都是理論,看來看去總感覺無從下手,后終于搞懂后才發(fā)現(xiàn),其實(shí)學(xué)不懂的主要原因并不應(yīng)該用難來形容,而是這個(gè)東西它太復(fù)雜了,想要一次全部看懂消化是不太可能的事情,只有分步驟將這個(gè)復(fù)雜的知識(shí)一點(diǎn)點(diǎn)的進(jìn)行拆分,循序漸進(jìn)的進(jìn)行理解,才能終將這個(gè)復(fù)雜的知識(shí)掌握。
上一篇文章我首先給大家普及了一下通訊的基本原理(到底什么是通訊),什么是RS485,首先幫助大家先對(duì)RS485通訊建立一個(gè)基本的概念。本文我們就從通訊中簡(jiǎn)單的步驟,數(shù)據(jù)的發(fā)送(PLC向電腦發(fā)數(shù)據(jù))向大家講起。
1、實(shí)驗(yàn)工具
要告訴大家我們這篇文章中要用到的工具。
1. S7-200CPU 1個(gè)(型號(hào)無所謂,好有兩個(gè)通訊口)
圖1-1
2. 串口調(diào)試軟件
圖1-2
3. Usb轉(zhuǎn)485轉(zhuǎn)換接頭1個(gè)(RS232轉(zhuǎn)RS485接頭也可)
圖1-3
4. 9針接頭公頭1個(gè)

圖1-4
5.兩芯電纜
圖1-5
2、實(shí)驗(yàn)流程
實(shí)驗(yàn)?zāi)康模簭腜LC向電腦發(fā)送一個(gè)字節(jié)的數(shù)據(jù)。
實(shí)驗(yàn)操作:用S7-200PLC向電腦發(fā)送一個(gè)字節(jié)的數(shù)據(jù),通過串口調(diào)試軟件接收,由于現(xiàn)在的電腦都沒有RS485通訊接口,因此我們要使用Usb轉(zhuǎn)485轉(zhuǎn)換接頭才能保障電腦可以接收到來自PLC的數(shù)據(jù),另外接線要注意9針頭的3腳接Usb轉(zhuǎn)485接頭的信號(hào)“+”,8腳接Usb轉(zhuǎn)485接頭的信號(hào)“-”
3、自由口模式
說到程序的編寫首先大家必須了解S7-200的自由口模式,由于S7-200的默認(rèn)通訊方式是PPI通訊,因此不能自由收發(fā)數(shù)據(jù),如果想自由收發(fā)數(shù)據(jù),就必須先將S7-200的通訊接口設(shè)置為自由口模式,控制S7-200自由口的是特殊位寄存器SMB30和SMB130。其中SMB30是控制CPU通訊口0的,SMB130是控制通訊口1的,當(dāng)然如果只有一個(gè)通訊端口就只能使用SMB30這個(gè)特殊位寄存器了。下面我們一起來看看這8個(gè)位,分別表示什么含義如圖 3-1所示。
圖 3-1
1) 0 、1位: 協(xié)議選擇
mm:
00 = 點(diǎn)到點(diǎn)接口協(xié)議(PPI/從站模式)
01 = 自由口協(xié)議
10 = PPI/主站模式
11 = 保留(缺省是PPI/從站模式)
2) 2、 3 、4位:自由口波特率設(shè)置
bbb:
000 = 38400bps
001 = 19200bps
010 = 9600bps
011 = 4800bps
100 = 2400bps
101 = 1200bps
110 = 115200bps
111 = 57600bps
3) 5位:每個(gè)字符的數(shù)據(jù)位
d:
0 = 8位/字符
1 = 7位/字符
4) 6 、7位:效驗(yàn)選擇
pp:
00 = 不效驗(yàn)
01 = 偶效驗(yàn)
10 = 不效驗(yàn)
11 = 奇效驗(yàn)
這里還要和大家補(bǔ)充一個(gè)概念,在通訊的過程中每次發(fā)送與接收的小單位是字符而不是位,1個(gè)字符通常包括1個(gè)起始位表示字符的開始,1個(gè)停止位表示字符的結(jié)束,一個(gè)奇偶效驗(yàn)位用于驗(yàn)證字符錯(cuò)對(duì),和8個(gè)或者7個(gè)數(shù)據(jù)位用于傳遞信息。這里奇偶效驗(yàn)位可有可無,數(shù)據(jù)位通常情況下是8個(gè)位也就是1個(gè)字節(jié),因此如果一個(gè)字符包含奇偶效驗(yàn)位通常是11個(gè)位,不包含奇偶效驗(yàn)位則是10個(gè)位。
通過上面對(duì)自由口模式的介紹,如果我們?cè)赟7-200CPU的通訊端口0使用自由口模式,通訊速率為9600bps傳輸?shù)淖址灰媾夹?yàn)位,那么我們就必須將SMB30中的數(shù)據(jù)配置成00001001如圖 3-2所示換算成16進(jìn)制就是16#9
圖 3-2
4、程序編寫
在開始編寫程序之前,我們首先要掌握S7-200發(fā)送指令的使用。
圖4-1
XMT發(fā)送指令有兩個(gè)管腳,TBL和PORT。
?PORT:通訊端口編號(hào),如果用0端口則寫0,如果用1端口則寫1.
TBL:定義發(fā)送緩沖區(qū)的起始地址和緩沖區(qū)的大小,如果TBL中寫VB100,VB100中存放1,則發(fā)送緩沖區(qū)是VB101,發(fā)送數(shù)據(jù)時(shí)將VB101中的數(shù)據(jù)發(fā)送出去。如果VB100中存放2,則發(fā)送緩沖區(qū)為VB101和VB102,發(fā)送數(shù)據(jù)時(shí)將VB101、VB102的數(shù)據(jù)發(fā)送出去。
下面我們來看程序的具體寫法。
圖 4-2
圖 4-2所示的程序就是一個(gè)簡(jiǎn)單的發(fā)送程序,首先用SMB30將通訊口0定義為自由口,通訊速率9600bps,然后定義VB101為發(fā)送緩沖區(qū)(因?yàn)閂B100中存放的是1),通過SM0.5將VB101中的16進(jìn)制的CC以1秒鐘為單位發(fā)送給電腦。終我們電腦將會(huì)以1秒為單位接收到PLC發(fā)送的字符CC如圖 4-3所示。
圖 4-3
作者:馬樂
版權(quán)為技成所有,未經(jīng)同意,盜取必究!