PLC

服務(wù)支持

熱情、耐心、真誠的服務(wù)與支持

億維PLC自由口通信詳解

作者:億維自動(dòng)化
發(fā)布時(shí)間:2024.05.13

一、自由口通信基本概

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),通過示波器測(cè)量CPU通訊端口管腳3/8之間的電壓,波形如下圖:

億維PLC自由口通信詳解.jpg

2、自由口通信要點(diǎn)

應(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ā)送)指令的使用比較簡(jiǎn)單。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可讀可寫。見如下圖:

億維PLC自由口通信詳解.jpg

表1.特殊存儲(chǔ)器字節(jié)SMB30/SMB130

示例:定義端口0為自由口模式,9600波特率,8位數(shù)據(jù)位,無校驗(yàn),程序如下圖:

億維PLC自由口通信詳解.jpg

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,程序如下圖:

億維PLC自由口通信詳解.jpg

2、判斷發(fā)送完成的方法

方法一:發(fā)送完成中斷。通過連接中斷服務(wù)程序到發(fā)送結(jié)束事件上,在發(fā)送完緩沖區(qū)中的最后一個(gè)字符時(shí),則會(huì)產(chǎn)生一個(gè)中斷。對(duì)通訊口0為中斷事件9,對(duì)通訊口1為中斷事件26。連接中斷程序到中斷事件示例如下圖:

億維PLC自由口通信詳解.jpg

億維PLC自由口通信詳解.jpg

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é)束條件:

接收信息控制字如下圖:

億維PLC自由口通信詳解.jpg

億維PLC自由口通信詳解.jpg 

示例:如果通過串口軟件發(fā)送4個(gè)字符依次為16#02 、16#55、16#EE、16#0A給PLC,接收條件:起始字符檢測(cè),接收結(jié)束條件:結(jié)束字符檢測(cè),PLC的接收程序及監(jiān)控信息表如下圖:

監(jiān)控接收信息狀態(tài)表:

億維PLC自由口通信詳解.jpg

查看接收信息完成程序

連接中斷程序:

億維PLC自由口通信詳解.jpg

中斷子程序:

億維PLC自由口通信詳解.jpg

接收信息程序:

億維PLC自由口通信詳解.jpg

注:1、本例程為只接收一次,如需一直接收信息,用SM0.0一直掃描接收指令。

2、控制字SMB94必須寫入個(gè)數(shù)值,否則無法接收到信息。

TOP

業(yè)務(wù)咨詢

技術(shù)咨詢

技術(shù)咨詢

4000-300-890