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