熱情、耐心、真誠的服務(wù)與支持
一、自由口通信基本概念
1、自由口通信概述
UN-120L/200CPU的通訊口支持RS485接口標(biāo)準(zhǔn)。采用正負(fù)兩根信號(hào)線作為傳輸線路。
工作模式采用串行半雙工形式,在任意時(shí)刻只允許由一方發(fā)送數(shù)據(jù),另一方接收數(shù)據(jù)。
數(shù)據(jù)傳輸采用異步方式,傳輸?shù)膯挝皇亲址瞻l(fā)雙方以預(yù)先約定的傳輸速率,在時(shí)鐘的作用下,傳送這個(gè)字符中的每一位。
傳輸速率可以設(shè)置為1200、2400、4800、9600、19200、38400、57600、115200。
字符幀格式為一個(gè)起始位、7或8個(gè)數(shù)據(jù)位、一個(gè)奇/偶校驗(yàn)位或者無校驗(yàn)位、一個(gè)停止位。
字符傳輸從最低位開始,空閑線高電平、起始位低電平、停止位高電平。字符傳輸時(shí)間取決于波特率。
數(shù)據(jù)發(fā)送可以是連續(xù)的也可以是斷續(xù)的。所謂連續(xù)的數(shù)據(jù)發(fā)送,是指在一個(gè)字符格式的停止位之后,立即發(fā)送下一個(gè)字符的起始位,之間沒有空閑線時(shí)間。而斷續(xù)的數(shù)據(jù)發(fā)送,是指當(dāng)一個(gè)字符幀發(fā)送后,總線維持空閑的狀態(tài),新字符起始位可以在任意時(shí)刻開始發(fā)送,即上一個(gè)字符的停止位和下一個(gè)字符的起始位之間有空閑線狀態(tài)。
示例:用PLC連續(xù)的發(fā)送兩個(gè)字符(16#55和16#EE)(程序如圖3和圖4),通過示波器測量CPU通訊端口管腳3/8之間的電壓,波形如下圖:
應(yīng)用自由口通信首先要把通信口定義為自由口模式,同時(shí)設(shè)置相應(yīng)的通信波特率和上述通信格式。用戶程序通過特殊存儲(chǔ)器SMB30(對(duì)端口0)、SMB130(對(duì)端口1)控制通信口的工作模式, CPU通信口工作在自由口模式時(shí),通信口就不支持其他通信協(xié)議(比如PPI),此通信口不能再與編程軟件Micro/WIN通信。CPU停止時(shí),自由口不能工作,Micro/WIN就可以與CPU通信。
3、發(fā)送和接收指令
XMT(發(fā)送)指令的使用比較簡單。RCV(接收)指令所需要的控制稍多一些。
RCV指令的基本工作過程為:
1.在邏輯條件滿足時(shí),啟動(dòng)(一次)RCV指令,進(jìn)入接收等待狀態(tài)
2.監(jiān)視通信端口,等待設(shè)置的消息起始條件滿足,然后進(jìn)入消息接收狀態(tài)
3.如果滿足了設(shè)置的消息結(jié)束條件,則結(jié)束消息,然后退出接收狀態(tài)
所以,RCV指令啟動(dòng)后并不一定就接收消息,如果沒有讓它開始消息接收的條件,就一直處于等待接收的狀態(tài);如果消息始終沒有開始或者結(jié)束,通信口就一直處于接收狀態(tài)。這時(shí)如果嘗試執(zhí)行XMT指令,就不會(huì)發(fā)送任何消息。
所以確保不同時(shí)執(zhí)行XMT和RCV非常重要,可以使用發(fā)送完成中斷和接收完成中斷功能,在中斷程序中啟動(dòng)另一個(gè)指令。
4、字符接收中斷
UN-120L/200CPU提供了通信口字符接收中斷功能,通信口接收到字符時(shí)會(huì)產(chǎn)生一個(gè)中斷,接收到的字符暫存在特殊存儲(chǔ)器SMB2中。通信口Port0和Port1共用SMB2,但兩個(gè)口的字符接收中斷號(hào)不同。
每接收到一個(gè)字符,就會(huì)產(chǎn)生一次中斷。對(duì)于連續(xù)發(fā)送消息,需要在中斷服務(wù)程序中將單個(gè)的字符排列到用戶規(guī)定的消息保存區(qū)域中。實(shí)現(xiàn)這個(gè)功能可能使用間接尋址比較好。
二、自由口通信使用指南
1、 通訊口初始化
SMB30(對(duì)于端口0)和SMB130(對(duì)于端口1)被用于選擇波特率和校驗(yàn)類型。SMB30和SMB130可讀可寫。見如下圖:
表1.特殊存儲(chǔ)器字節(jié)SMB30/SMB130
示例:定義端口0為自由口模式,9600波特率,8位數(shù)據(jù)位,無校驗(yàn),程序如下圖:
2、發(fā)送數(shù)據(jù):
1、發(fā)送指令XMT能夠發(fā)送一個(gè)字節(jié)或多個(gè)字節(jié)的緩沖區(qū),最多為255個(gè)。使用邊沿觸發(fā)。
發(fā)送緩沖區(qū)格式:第一個(gè)字節(jié)為字符個(gè)數(shù),其后為發(fā)送的信息字符。
示例:如果PLC連續(xù)發(fā)送2個(gè)字符16#55和16#EE,程序如下圖:
2、判斷發(fā)送完成的方法
方法一:發(fā)送完成中斷。通過連接中斷服務(wù)程序到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的最后一個(gè)字符時(shí),則會(huì)產(chǎn)生一個(gè)中斷。對(duì)通訊口0為中斷事件9,對(duì)通訊口1為中斷事件26。連接中斷程序到中斷事件示例如下圖:
3、接收數(shù)據(jù)
接收指令RCV能夠接收一個(gè)字節(jié)或多個(gè)字節(jié)的緩沖區(qū),最多為255個(gè)。使用邊沿觸發(fā)或第一個(gè)掃描周期觸發(fā)。
接收緩沖區(qū)格式:第一個(gè)字節(jié)表示接收的字符個(gè)數(shù),其后為接收的信息字符。
RCV使能會(huì)將TBL緩沖區(qū)中的字符個(gè)數(shù)清零。要先定義接收開始條件和接收結(jié)束條件:
接收信息控制字如下圖:
示例:如果通過串口軟件發(fā)送4個(gè)字符依次為16#02 、16#55、16#EE、16#0A給PLC,接收條件:起始字符檢測,接收結(jié)束條件:結(jié)束字符檢測,PLC的接收程序及監(jiān)控信息表如下圖:
監(jiān)控接收信息狀態(tài)表:
查看接收信息完成程序
連接中斷程序:
中斷子程序:
接收信息程序:
注:1、本例程為只接收一次,如需一直接收信息,用SM0.0一直掃描接收指令。
2、控制字SMB94必須寫入個(gè)數(shù)值,否則無法接收到信息。