資源描述:
《200的自由口通訊說明》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、自由口通訊概述S7-200PLC的通訊口支持RS485接口標(biāo)準(zhǔn)。采用正負(fù)兩根信號線作為傳輸線路。工作模式采用串行半雙工形式,在任意時刻只允許由一方發(fā)送數(shù)據(jù),另一方接收數(shù)據(jù)。數(shù)據(jù)傳輸采用異步方式,傳輸?shù)膯挝皇亲址?,收發(fā)雙方以預(yù)先約定的傳輸速率,在時鐘的作用下,傳送這個字符中的每一位。傳輸速率可以設(shè)置為1200、2400、4800、9600、19200、38400、57600、115200。字符幀格式為一個起始位、7或8個數(shù)據(jù)位、一個奇/偶校驗位或者無校驗位、一個停止位。字符傳輸從最低位開始,空閑線高電平、起始
2、位低電平、停止位高電平。字符傳輸時間取決于波特率。數(shù)據(jù)發(fā)送可以是連續(xù)的也可以是斷續(xù)的。所謂連續(xù)的數(shù)據(jù)發(fā)送,是指在一個字符格式的停止位之后,立即發(fā)送下一個字符的起始位,之間沒有空閑線時間。而斷續(xù)的數(shù)據(jù)發(fā)送,是指當(dāng)一個字符幀發(fā)送后,總線維持空閑的狀態(tài),新字符起始位可以在任意時刻開始發(fā)送,即上一個字符的停止位和下一個字符的起始位之間有空閑線狀態(tài)。示例:用PLC連續(xù)的發(fā)送兩個字符(16#55和16#EE)(程序如圖3和圖4),通過示波器測量CPU通訊端口管腳3/8之間的電壓,波形如下圖1.:示例說明:16進制的16
3、#55換算成2進制等于2#01010101,16進制的16#EE換算成2進制等于2#11101110。如圖所示,當(dāng)數(shù)據(jù)線上沒有字符發(fā)送時總線處于空閑狀態(tài)(高電平),當(dāng)PLC發(fā)送第一個字符16#55時,先發(fā)送該字符幀的起始位(低電平),再發(fā)送它的8個數(shù)據(jù)位,依次從數(shù)據(jù)位的最低位開始發(fā)送(分別為1、0、1、0、1、0、1、0),接著發(fā)送校驗位(高電平或低電平或無)和停止位(高電平)。因為本例中PLC連續(xù)的發(fā)送兩個字符,所以第一個字符幀的停止位結(jié)束后便立即發(fā)送下一個字符幀的起始位,之間數(shù)據(jù)線沒有空閑狀態(tài)。假如PL
4、C斷續(xù)的發(fā)送這兩個字符,那么當(dāng)PLC發(fā)送完第一個字符幀的停止位后,數(shù)據(jù)線將維持一段時間空閑狀態(tài),再發(fā)送下一個字符幀。字符傳輸?shù)臅r間取決于波特率,如果設(shè)置波特率為9.6k,那么傳輸一個字符幀中的一位用時等于1/9600*1000000=104us,如果這個字符幀有11位,那么這個字符幀的傳輸時間等于11/9600*1000=1.145ms.通訊口初始化SMB30(對于端口0)和SMB130(對于端口1)被用于選擇波特率和校驗類型。SMB30和SMB130可讀可寫。見下圖2.圖2.特殊存儲器字節(jié)SMB30/SM
5、B130示例:定義端口0為自由口模式,9600波特率,8位數(shù)據(jù)位,偶校驗,程序如下圖3.:圖3.通訊口初始化程序發(fā)送數(shù)據(jù)發(fā)送指令XMT能夠發(fā)送一個字節(jié)或多個字節(jié)的緩沖區(qū),最多為255個。使用邊沿觸發(fā)。發(fā)送緩沖區(qū)格式:第一個字節(jié)為字符個數(shù),其后為發(fā)送的信息字符。示例:如果PLC連續(xù)發(fā)送2個字符16#55和16#EE,程序如下圖4.:圖4.發(fā)送指令程序示例說明:PLC通過數(shù)據(jù)塊寫入數(shù)據(jù)。XMT指令中TBL緩沖區(qū)首地址VB200寫入發(fā)送字符的個數(shù),VB201和VB202分別寫入發(fā)送字符。通訊口波形圖如圖1.判斷發(fā)
6、送完成的方法:方法一:發(fā)送完成中斷。通過連接中斷服務(wù)程序到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的最后一個字符時,則會產(chǎn)生一個中斷。對通訊口0為中斷事件9,對通訊口1為中斷事件26。連接中斷程序到中斷事件示例如下圖5.:圖5.建立發(fā)送完成中斷的程序方法二:發(fā)送空閑位。當(dāng)port0發(fā)送空閑時,SM4.5=1。當(dāng)port1發(fā)送空閑時,SM4.6=1.示例:如果PLC斷續(xù)的發(fā)送2個字符16#55和16#EE.方法一:利用發(fā)送完成中斷,在主程序中建立中斷事件,執(zhí)行XMT發(fā)送16#55,發(fā)送完成后,進入發(fā)送完成中斷程序中,
7、執(zhí)行XMT發(fā)送16#EE。波形圖如圖6.圖6.字符波形圖方法二:利用發(fā)送空閑位。當(dāng)執(zhí)行XMT發(fā)送完16#55后,利用SM4.5/4.6的上升沿(確保發(fā)送的字符幀發(fā)送完成),往XMT的TBL緩沖區(qū)寫入新字符16#EE,并再次觸發(fā)發(fā)送。波形圖如圖7.圖7.字符波形圖兩種方法均斷續(xù)發(fā)送字符,即兩個字符之間有空閑狀態(tài)。注意:由于SM4.5/4.6的使用受程序掃描周期的影響,編程中推薦使用發(fā)送完成中斷。Break斷點Break狀態(tài):持續(xù)以當(dāng)前波特率傳輸16位數(shù)據(jù),且一直維持“0”狀態(tài)。產(chǎn)生方式:把字符數(shù)設(shè)置為0并執(zhí)行
8、XMT指令,可以產(chǎn)生一個Break狀態(tài)。Break用途:可以作為接收的起始條件。示例:通過XMT指令發(fā)送一個Break斷點。偶校驗,8個數(shù)據(jù)位,9.6K。程序如下圖8.:圖8.發(fā)送一個斷點的程序Break狀態(tài)的波形圖如下圖9.圖9.一個斷點波形圖如果通過接收方為上位機或者S7-200PLC,那么它們接收到的字符為16#00.那么通過發(fā)送一個Break斷點接收到的16#00與發(fā)送一個字符幀16#00有什么不同呢?B