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

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