官术网_书友最值得收藏!

1.1 三菱PLC特殊功能模塊與通信協議

1.1.1 FX2N系列PLC的特殊功能模塊

現代工業控制給PLC提出了許多新的課題,如果用通用I/O模塊來解決,在硬件方面費用太高,在軟件方面編程相當麻煩,某些控制任務甚至無法用通用I/O模塊來完成。為了增強PLC的功能,擴大其應用范圍,PLC廠家開發了品種繁多的特殊用途I/O模塊,包括帶微處理器的智能I/O模塊。

1.特殊功能模塊的分類

不斷開發各種具有特殊功能的模塊,是當代PLC區別于傳統PLC的重要標志之一。隨著技術的進一步發展,PLC的應用領域正在日益擴大,除傳統的順序控制以外,PLC正在向過程控制、位置控制等方向延伸與發展。

為了擴大應用范圍,在PLC中,經常將過程控制、位置控制等場合所需要的特殊控制功能集成于統一的模塊內。模塊可以直接安裝于PLC的基板上,也可以與PLC基本單元的擴展接口進行連接,以構成PLC系統的整體,這樣的模塊被稱為“特殊功能模塊”。

特殊功能模塊根據不同的用途,其內部組成與功能相差很大。部分特殊功能模塊(如位置控制模塊)既可以通過PLC進行控制,也可以獨立使用,并且還可利用PLC的I/O模塊進行輸入輸出點的擴展。模塊本身具有獨立的處理器(CPU)、存儲器等組件,也可以進行獨立的編程,其性能與獨立的控制裝置相當。

當前,PLC的特殊功能模塊大致可以分為A/D、D/A轉換類、溫度測量與控制類、脈沖計數與位置控制類、網絡通信類這4大類。模塊的品種與規格根據PLC型號與模塊用途的不同而不同,在部分PLC上可以多達數十種。

1)A/D、D/A轉換類

A/D、D/A轉換類功能模塊包括模擬量輸入模塊(A/D轉換)、模擬量輸出模塊(D/A轉換)兩類。根據數據轉換的輸入/輸出點數(通道數量)、轉換精度(轉換位數、分辨率)等的不同,有多種規格可以供選擇。

A/D轉換功能模塊的作用是將來自過程控制的傳感器輸入信號,如電壓、電流等連續變化的物理量(模擬量)直接轉換為一定位數的數字量信號,以供PLC進行運算與處理。

D/A轉換功能模塊的作用是將PLC內部的數字量信號轉換為電壓、電流等連續變化的物理量(模擬量)輸出。它可以用于變頻器、伺服驅動器等控制裝置的速度、位置控制輸入,也可以用來作為外部儀表的顯示。

2)溫度測量與控制類

溫度測量與控制類功能模塊包括溫度測量與溫度控制兩類。根據測量輸入點數(通道數量)、測量精度、檢測元件類型等的不同,有多種規格可以供選擇。

溫度測量功能模塊的作用是對過程控制的溫度進行測量與顯示,它可以直接連接熱電偶、鉑電阻等溫度測量元件,并將來自過程控制的溫度測量輸入信號,轉換為一定位數的數字量,以供PLC運算、處理使用。

溫度控制功能模塊的作用是將來自過程控制的溫度測量輸入與系統的溫度給定信號進行比較,并通過參數可編程的PID(比例積分微分)調節與模塊的自動調諧功能,實現溫度的自動調節與控制。模塊可以連接熱電偶、鉑電阻等溫度測量元件,并輸出對應的溫度控制信號(觸點輸出、晶體管輸出等),以控制加熱器的工作狀態。

3)脈沖計數與位置控制類

脈沖計數與位置控制類功能模塊包括脈沖計數、位置控制兩類。根據脈沖輸入點數(通道數量)、頻率,控制軸數等的不同,有多種規格可以供選擇。

脈沖計數功能模塊用于速度、位置等控制系統的轉速、位置測量,對來自編碼器、計數開關等的輸入脈沖信號進行計數,從而獲得實際控制系統的轉速、位置的實際值,以供PLC運算、處理使用。

位置控制功能模塊可以實現自動定位控制,模塊可以將PLC內部的位置給定值轉換為對應的位置脈沖輸出,并通過改變輸出脈沖的數量與頻率,達到改變速度與位置的目的。脈沖輸出的形式可以是差動輸出、集電極開路晶體管輸出或者通過SSCNET高速總線輸出,連接的驅動器可以是步進電機驅動器或交流伺服驅動器,但驅動器必須具有位置控制功能,并且能夠直接接受位置脈沖輸入信號或是總線信號。

4)網絡通信類

網絡通信類功能模塊包括串行通信、遠程I/O主站、AS-i主站、Ethernet網絡連接、MELSEC NET/H網絡連接、CC-Link網絡等。根據不同的網絡與連接線的形式,有多種規格可以供選擇。

2.特殊功能模塊的使用與編程

在PLC控制系統中,特殊功能模塊一般作為PLC的擴展單元使用,模塊的控制與檢測需要通過PLC的程序進行。

為了能夠方便地實現PLC對特殊功能模塊的控制,并減少應用指令的條數,統一應用指令的格式,在三菱PLC的特殊功能模塊中設置了專門用于PLC與模塊間進行信息交換的緩沖存儲器(Buffer Memory,BFM)。緩沖存儲器數據中包括了模塊控制信號位、模塊參數等控制條件,以及模塊的工作狀態信息、運算與處理結果、出錯信息等內容。

PLC對模塊的控制,只需要通過PLC的數據輸出(TO)指令(FNC79)在模塊緩沖存儲器的對應控制數據位中寫入控制信號即可。同樣PLC對模塊的狀態檢測,也只需要通過PLC的數據閱讀(FROM)指令(FNC78)讀出對應的模塊緩沖存儲器數據即可。

因此,對于所有的特殊功能模塊,PLC的編程事實上只是不斷利用PLC的TO與FROM指令對模塊緩沖存儲器進行讀/寫操作而已。為此,正確使用PLC的TO與FROM指令,是特殊功能模塊編程的前提條件。

1)FROM指令

PLC的FROM指令的作用是將特殊功能模塊緩沖存儲器的內容讀入到PLC中。指令的功能代號為FNC78,指令格式如下:

指令中各元件、操作數代表的意義依次如下。

X0:指令執行啟動條件,當X0為“1”時,執行本指令。啟動觸點可以是輸入X□□、輸出Y□□、內部繼電器M□□等。

DFROMP指令代碼,其中FROM為基本指令代碼,代表特殊功能模塊緩沖存儲器。

閱讀指令,帶“□”的前綴D與后綴P可以根據情況選擇使用,可有可無,前綴D表示32位操作指令,后綴P代表觸點上升沿驅動。各種組合所代表的意義如下:

? FROM(無前綴D與后綴P):利用觸點X0啟動的16位數據閱讀指令;

? DFROM(有前綴D,無后綴P):利用觸點X0啟動的32位數據閱讀指令;

? ROMP(無前綴D,有后綴P):利用觸點X0的上升沿啟動的16位數據閱讀指令;

? FROMP(有前綴D,有后綴P):利用觸點X0的上升沿啟動的32位數據閱讀指令。

K1:模塊地址常數,用來選擇與指定特殊功能模塊。如在FX系列PLC中,從基本單元開始,依次向右的第1、2、3……個特殊功能模塊,對應的模塊地址依次為K1、K2、K3……,在指令的這一區域只能輸入常數K□。

K29:模塊緩沖存儲器的數據地址常數(數據源),K29代表模塊緩沖存儲器的參數BFM#29。在指令的這一區域只能輸入常數K□,具體參數號決定于指令需要閱讀的內容。

K4M0:數據在PLC中的存儲位置指定(目標位置)。K4代表需要閱讀的二進制數位數,以4位(bit)二進制數為單位,K4代表16位,允許輸入的值為K1~K8。M0代表數據在PLC中的存儲區域的首地址,在16位數據閱讀時,若輸入M0,代表讀入的數據存儲于PLC的內部繼電器M0~M15中。存儲位置也可以是16位數據寄存器D(常用),這時不需要前綴K4。

K1:需要傳送的點數,采用FROM、FROMP格式時,以16位二進制數為單位,K1代表閱讀16點,K2代表32點等。采用DFROM、DFROMP格式時,以32位二進制數為單位,K1代表閱讀32點,K2代表64點等。允許輸入的值為K1~K32767。

例如,對于如圖1-1所示的各指令,其意義分別如下。

指令①的作用是:當X0為“1”時,將安裝于基本單元右側的第1個特殊功能模塊的緩沖存儲器的參數BFM#29讀入到PLC的M0~M15的16點內部繼電器中。

圖1-1 FROM指令使用意義

指令②的作用是:在X0為“1”的瞬間,利用X0的上升沿,將安裝于基本單元右側的第1個特殊功能模塊的緩沖存儲器的參數BFM#29讀入到PLC的M0~M15的16點內部繼電器中。

指令③的作用是:當X0為“1”時,將安裝于基本單元右側的第1個特殊功能模塊的緩沖存儲器的參數BFM#29讀入到PLC的16位數據存儲器D0中。

指令④的作用是:當X0為“1”時,將安裝于基本單元右側的第1個特殊功能模塊的緩沖存儲器的參數BFM#29、BFM#30讀入到PLC的16位數據存儲器D0、D1中(32位閱讀指令)。

指令⑤的作用是:當X0為“1”時,將安裝于基本單元右側的第1個特殊功能模塊的緩沖存儲器的參數BFM#29、BFM#30讀入到PLC的16位數據存儲器D0、D1中(16位閱讀指令,但傳送點數為連續32點)。

指令⑥的作用是:當X0為“1”時,將安裝于基本單元右側的第1個特殊功能模塊的緩沖存儲器的參數BFM#29、BFM#30、BFM#31、BFM#32讀入到PLC的16位數據存儲器D0、D1、D2、D3中(32位閱讀指令,傳送點數為連續64點)。

2)TO指令

TO指令的作用是將PLC中指定的內容寫入特殊功能模塊的緩沖存儲器中。指令的功能代號為FNC79,指令格式如下:

指令中各元件、操作數代表的意義依次如下。

X0:指令執行啟動條件。

DTOP:指令代碼,其中TO為基本指令代碼,代表特殊功能模塊緩沖存儲器寫入指令,前綴D表示32位操作指令,后綴P代表觸點上升沿驅動。

K1:模塊地址常數,用來選擇與指定特殊功能模塊。

K29:模塊緩沖存儲器的數據地址常數,在TO指令中為目標位置,K29代表模塊緩沖存儲器的參數BFM#29。

K4M0:源數據在PLC中的存儲位置指定。K4代表需要寫入的二進制數位數,以4位(bit)二進制數為單位,K4代表16位,允許輸入的值為K1~K8。MO代表源數據在PLC中的存儲區域的首地址。源數據也可以是16位數據寄存器D(常用),這時不需要前綴K4。

K1:需要傳送的點數,允許輸入的值為K1~K32767。

指令中各操作數的含義和要求與FROM指令一致。

3.四通道A/D轉換模塊FX2N-4AD

三菱FX2N-4AD可將外部輸入的4點(通道)模擬量(模擬電壓或電流)轉換為PLC內部處理需要的數字量。FX2N-4AD的模擬量輸入可以是雙極性的,轉換結果為12位帶符號的數字量。

1)性能規格

三菱FX2N-4AD四通道A/D轉換模塊的主要性能參數見表1-1。

表1-1 三菱FX2N-4AD四通道A/D轉換模塊的主要性能參數

2)模塊連接

三菱FX2N-4AD模塊通過擴展電纜與PLC基本單元或擴展單元相連接,通過PLC內部總線傳送數字量并且需要外部提供DC 24V電源輸入。

外部模擬量輸入及DC 24V電源與模塊間的連接要求如圖1-2所示。

3)輸出特性

三菱FX2N-4AD模塊的A/D轉換輸出特性如圖1-3所示,4通道的輸出特性可以不同。

模塊的最大轉換位數為12位,首位為符號位,對應的數字量輸出范圍為-2048~2047。同樣,為了計算方便,通常情況下將最大模擬量輸入(DC 10V或20mA)所對應的數字量輸出設定為2000(DC 10V)或1000(20mA)。

圖1-2 外部模擬量輸入及DC 24V電源與模塊間的連接

圖1-3 三菱FX2N-4AD模塊的A/D轉換輸出特性

4)編程與控制

三菱FX2N-4AD模塊只需要通過PLC的TO指令(FNC79)寫入轉換控制指令,利用FROM指令(FNC78)讀入轉換結果即可。

FX2N-4AD常用的參數如下。

(1)轉換結果。

轉換結果數據在模塊緩沖存儲器中的存儲地址如下:

BFM#5:通道1的轉換結果數據(采樣平均值);

BFM#6:通道2的轉換結果數據(采樣平均值);

BFM#7:通道3的轉換結果數據(采樣平均值);

BFM#8:通道4的轉換結果數據(采樣平均值);

BFM#9~#12:依次為通道1~4轉換結果數據(當前采樣值)。

(2)控制信號。

A/D轉換的控制信號在模塊緩沖存儲器中的定義如下。

BFM#0:通道選擇與控制字:

“0”:通道模擬量輸入為-10~+10V直流電壓;

“1”:通道模擬量輸入為+4~+20mA直流電流;

“2”:通道模擬量輸入為-20~+20mA直流電流;

“3”:通道關閉。

BFM#1~#4:分別為通道1~4的采樣次數設定。

BFM#15:通道采樣速度設定:

“0”:15ms/通道;

“1”:6ms/通道。

BFM#20:通道控制數據初始化:

“0”:正常設定;

“1”:恢復出廠默認數據。

BFM#21:通道調整允許設定:

“01”:允許改變參數調整增益、偏移量的設定;

“10”:禁止調整增益、偏移量。

(3)模塊工作狀態輸出。

FX2N-4AD可以通過讀出內部參數檢查模塊的工作狀態。A/D工作狀態信號在模塊緩沖存儲器中的定義如下。

BFM#29:模塊工作狀態信息。以二進制數位的狀態表示,具體如下。

bit0:“1”為模塊存在報警,報警原因由BFM#29bit1~bit39表示(BFM#29bitl~bit39任何一位為“1”,本位總是為“1”);“0”為模塊正常工作。

bit1:“1”為模塊偏移/增益調整錯誤;“0”為模塊偏移/增益調整正確。

bit2:“1”為模塊輸入電源錯誤;“0”為模塊電源正常。

bit3:“1”為模塊硬件不良;“0”為模塊硬件正常。

bit10:“1”為數字量超過允許范圍;“0”為數字量輸出正常。

bit11:“1”為采樣次數超過允許范圍;“0”為采樣次數設定正常。

bit12:“1”為增益、偏移量的調整被參數禁止;“0”為增益、偏移量的調整允許。

BFM#30:模塊ID號。FX2N-4AD模塊的ID號為2010。

BFM#23:偏移調整。

BFM#24:增益調整。

5)編程實例

啟動并讀出通道1、通道2的直流-10~10V模擬量轉換數據的PLC控制程序,如圖1-4所示。

6)注意事項

(1)三菱FX2N-4AD通過雙絞線屏蔽電纜來連接。電纜應遠離電源線或其他可能產生電氣干擾的電線。

(2)如果輸入有電壓波動,或在外部接線中有電氣干擾,可以在Vin和COM之間接一個平滑電容器(0.1~0.47μF/25V)。

(3)如果使用電流輸入,則必須連接V+和I-端子。

(4)如果存在過多的電氣干擾,需要將電纜屏蔽層與FG端連接,并連接到FX2N-4AD的接地端。

(5)連接FX2N-4AD的接地端與主單元的接地端。可行的話,在主單元使用3級接地。

圖1-4 FX2N-4AD編程實例

1.1.2 三菱PLC編程口通信協議

三菱PLC有串口(RS-232C、RS-485)通信協議,功能很強,但較復雜,其內容可參閱它的說明書(如FX通信用戶手冊)。三菱還有編程口通信協議,也可用于RS-232C口。現對編程口通信協議作簡要介紹。

1.命令幀格式

圖1-5所示為FX協議發送通信命令幀格式。

圖1-5 FX協議發送通信命令幀格式

此幀格式中各個部分的含義如下。

STX為開始字符,其ASCII碼十六進制數值為02H。

CMD為命令碼,命令碼有讀或寫等,占1字節。讀ASCII碼為30H,寫ASCII碼為31H。讀、寫的對象可以是FX的數據區。

ADDR為起始地址,十六進制數表示,占4字節,不足4字節高位補0。

NUM為讀或寫的字節數,十六進制數表示,占2字符,不足2字符高位補0,最多可以讀、寫64字節的數據。讀可以為奇數字節,而寫必須為偶數字節。

DATA為寫數據,在此填入要寫的數據,每字節兩個字符。如字數據,則低字節在前,高字節在后。用十六進制數表示,所填的數據個數應與NUM指定的數相符。

ETX為結束字符,其ASCII碼十六進制數值為03H。

SUM為累加和,從命令碼開始到結束字符(包含結束字符)的各個字符的ASCII碼,進行十六進制數累加。累加和超過兩位數時,取它的低兩位,不足兩位時高位補0,也用十六進制數表示。其計算公式為

SUM=CMD+ADDR+NUM+DATA1+DATA2+…+ETX

2.響應幀格式

響應幀格式與所發的命令相關。

對寫命令:如寫成功,則應答ACK,一個字符,其ASCII碼的值是06H;如寫失敗,則應答NAK,一個字符,其ASCII碼的值為15H。

對讀命令:如讀失敗,也是應答NAK。如成功,其響應幀格式如圖1-6所示。

圖1-6 FX協議讀命令響應幀格式

DATA1、DATA2……為讀出的數據,字節個數由命令幀格式中的NUM決定。

讀數據或寫數據總是低字節在前,高字節在后。如按字處理此數據,必須作相應處理。最多可以讀取64字節的數據。

3.地址計算

協議中地址ADDR的計算比較復雜,各個數據區算法都不同,分別說明如下。

1)對于D區

如地址ADDR小于8000,則

ADDR=1000H+ADDR0×2 (ADDR0為實際地址值,200~1023)

如ADDR大于等于8000,則

ADDR=0E00H+(ADDR0-8000)×2

如寄存器D100的地址算法:100×2為200,十進制數200轉成十六進制數是C8H,C8H+1000H是10C8H,10C8H再轉成ASCII碼為31 30 43 38,即ADDR=31 30 43 38。

2)對于C區

(1)對于C區(字或雙字)。

如地址ADDR小于200,則

ADDR=0A00H+ADDR0×2

如ADDR大于等于200(為可雙字逆計數器),則

ADDR=0C00H+(ADDR0-200)×4 (ADDR0從200~255)

(2)對于C區(位)。

如地址ADDR小于200,則

ADDR=01C0H+ADDR0×2

3)對于T區

(1)對于T區(字)。

ADDR=0800H+ADDR×2 (ADDR0從0~255)

(2)對于T區(位)。

ADDR=00C0H+ADDR×2 (ADDR0從0~255)

4)對于M區

如地址ADDR小于8000,則

ADDR=0100H+ADDR0/8 (ADDR0從0~3071)

如ADDR大于等于8000,則

ADDR=01E0H+(ADDR0-8000)/8

5)對于Y區

要先把地址轉換成十進制數,再按下式計算。

ADDR=00A0H+ADDR0/8 (ADDR0從0~最大輸出點數)

6)對于X區

要先把地址轉換成十進制數,再按下式計算。

ADDR=0080H+ADDR0/8 (ADDR0從0~最大輸入點數)

7)對于S區

ADDR=ADDR0/8 (ADDR0從0~899)

表1-2所示為三菱FX系列PLC用于讀寫時X、Y、S、C區的位地址表。

表1-2 三菱FX系列PLC用于讀寫時X、Y、S、C區的位地址表

表1-3所示為三菱FX系列PLC用于讀寫時T、M、D區的位地址表。

表1-3 三菱FX系列PLC用于讀寫時T、M、D區的位地址表

4.強制置位與復位

圖1-7所示為FX協議強制置位與復位命令幀格式。

圖1-7 FX協議強制置位與復位命令幀格式

此幀格式中各部分的含義如下。

STX為開始字符,其ASCII碼十六進制數值為02H。

CMD為命令碼,命令碼有讀或寫,占1字節。強制置位ASCII碼為37H,強制復位ASCII碼為38H。其對象為位數據區。

ADDR為地址,十六進制數表示,占4字節,不足4字節高位補0。

ETX為結束字符,其ASCII碼十六進制數值為03H。

SUM為累加和,從命令碼開始到結束字符(包含結束字符)的各個字符的ASCII碼,進行十六進制數累加。累加和超過兩位數時,取它的低兩位,不足兩位時高位補0,也用十六進制數表示。

累加和計算公式為SUM = CMD+ADDR+ETX。

表1-4所示為用于強制置位與復位時的位地址。

表1-4 強制置位與復位時的位地址

表1-5所示為用于三菱FX2N-32MR PLC強制置位與復位時的位地址。

表1-5 三菱FX2N-32MR PLC強制置位與復位時的位地址

地址具體表達時是后兩位先送,其次為前兩位。按照這個表與規則,如實際地址Y000,其計算地址為0500,ASCII碼值為30 35 30 30;而表達此地址為0005,發送指令的ASCII碼值為30 30 30 35。這種地址表達,與字讀寫是不同的。

5.讀寫指令示例

【例1】 讀取PLC的D10、D11數據。D10實際值為ABCD,D11實際值為EF89。

發送讀指令的獲取過程如下。

開始字符STX:02H。

命令碼CMD(讀):0,ASCII碼值為30H。

起始地址:10×2為20,轉成十六進制數為14H,則

ADDR=1000H+14H=1014H(其ASCII碼值為31H 30H 31H 34H)

字節數NUM:4,ASCII碼值為30H 34H。

結束字符EXT:03H。

累加和SUM:30H+31H+30H+31H+34H+30H+34H+03H=15DH。

累加和超過兩位數時,取它的低兩位,即SUM為5DH,5DH的ASCII碼值為35H 44H。

對應的讀命令幀格式為02 30 31 30 31 34 30 34 03 35 44

PLC接收到此命令,如未正確執行,則返回NAK碼(15H)。如正確執行返回應答幀如下:

02 43 44 41 42 38 39 45 46 03 46 44

D10實際值為ABCD,用ASCII碼值表示為41 42 43 44,在返回的應答幀中低字節在前,高字節在后,即43 44 41 42;D11實際值為EF89,用ASCII碼值表示為45 46 38 39,在返回的應答幀中低字節在前,高字節在后,即38 39 45 46。(因為NUM=04H,所以返回2個數據)

【例2】 從PLC的D123開始讀取4字節數據。D123中的數據為3584。

發送讀指令的獲取過程如下:

開始字符STX:02H。

命令碼CMD(讀):0,ASCII碼值為30H。

起始地址:123×2為246,轉成十六進制數為F6H,則

ADDR=1000H+F6H=10F6H(其ASCII碼值為31H 30H 46H 36H)

字節數NUM:2,ASCII碼值為30H 32H。02H表示往1個寄存器發送數值,04H表示往2個寄存器發送數值,依此類推。

結束字符EXT:03H。

累加和SUM:30H+31H+30H+46H+36H+30H+32H+03H=172H。

累加和超過兩位數時,取它的低兩位,即SUM為72H,72H的ASCII碼值為37H 32H。

對應的讀命令幀格式為02 30 31 30 46 36 30 32 03 37 32

PLC接收到此命令,如未正確執行,則返回NAK碼(15H)。如正確執行返回應答幀如下:

02 38 34 33 35 03 44 36

D123中的數據為3584,用ASCII碼值表示為33 35 38 34,在返回的應答幀中低字節在前,高字節在后,即38 34 33 35。(因為NUM=02H,所以返回1個數據)

【例3】 向PLC的D0、D1寫4字節。要求寫給D0的數為1234,寫給D1的數為5678。

發送寫指令的獲取過程如下。

開始字符STX:02H。

命令碼CMD(寫):1,ASCII碼值為31H。

起始地址

ADDR=1000H+0×2=1000H(其ASCII碼值為31H 30H 30H 30H)

字節數NUM:4,ASCII碼值為30H 34H。

數據DATA(低字節在前,高字節在后):寫給D0的數為3 (33H) 4 (34H) 1 (31H) 2 (32H);寫給D1的數為7 (37H) 8 (38H) 5 (35H) 6 (36H)。

結束字符EXT:03H。

累加和SUM:

31H+31H+30H+30H+30H+30H+34H+33H+34H+31H+32H+37H+38H+35H+36H+03H=2FDH。

累加和超過兩位數時,取它的低兩位,即SUM為FDH,FDH的ASCII碼值為46H 44H。

對應的寫命令幀格式為

02 31 31 30 30 30 30 34 33 34 31 32 37 38 35 36 03 46 44

PLC接收到此命令,如正確執行,則返回ACK碼(06H),否則返回NAK碼(15H)。

【例4】 向D123開始的兩個存儲器中寫入1234和ABCD。

發送寫指令的獲取過程如下。

開始字符STX:02H。

命令碼CMD(寫):1,ASCII碼值為:31H。

起始地址:123×2為246,轉成十六進制數為F6H,則

ADDR=1000H+F6H=10F6H(其ASCII碼值為31H 30H 46H 36H)

字節數NUM:4,ASCII碼值為30H 34H。

數據DATA(低字節在前,高字節在后):寫給D123的數為3 (33H) 4 (34H) 1 (31H) 2 (32H) C (43H) D (44H) A (41H) B (42H)。

結束字符EXT:03H。

累加和SUM:

31H+31H+30H+46H+36H+30H+34H+33H+34H+31H+32H+43H+44H+41H+42H+03H=349H。

累加和超過兩位數時,取它的低兩位,即SUM為49H,49H的ASCII碼值為34H 39H。

對應的寫命令幀格式為

02 31 31 30 46 36 30 34 33 34 31 32 43 44 41 42 03 34 39

PLC接收到此命令,如正確執行,則返回ACK碼(06H),否則返回NAK碼(15H)。

【例5】 從PLC的X10~X17讀取1字節數據,反映X10~X17的狀態信息。

發送讀指令的獲取過程如下。

開始字符STX:02H。

命令碼CMD(讀):0,ASCII碼值為30H。

寄存器X10~X17的位地址為0081H,其ASCII碼值為30H 30H 38H 31H。

字節數NUM:1,ASCII碼值為30H 31H。

結束字符EXT:03H。

累加和SUM:30H+30H+30H+38H+31H+30H+31H+03H=15DH。

累加和超過兩位數時,取它的低兩位,即SUM為5DH,5DH的ASCII碼值為35H 44H。

因此,對應的讀命令幀格式為

02 30 30 30 38 31 30 31 03 35 44

PLC接收到命令,如正確執行返回應答幀,如“02 38 31 03 36 43”。返回的應答幀中黑體字“38 31”表示X10~X17的狀態,其十六進制數為81,81的二進制數為10000001,表明觸點X10和X17閉合,X11~X16觸點斷開。如未正確執行,則返回NAK碼(15H)。

同理,可以讀取寄存器X0~X7的數據,其位地址為0080H,對應的讀命令幀格式為

02 30 30 30 38 30 30 31 03 35 43

PLC接收到命令,如正確執行返回應答幀,如“02 30 34 03 36 37”。返回的應答幀中黑體字“30 34”表示X0~X7的狀態,其十六進制數為04,04的二進制數為00000100,表明觸點X2閉合,其他觸點斷開。

【例6】 將PLC的Y10,Y17置位成1,再復位成0。

發送寫指令的獲取過程如下。

開始字符STX:02H。

命令碼CMD(寫):1,ASCII碼值為31H。

寄存器Y10~Y17的位地址為00A1H,其ASCII碼值為30H 30H 41H 31H。

字節數NUM:2,ASCII碼值為30H 32H。

將PLC的Y10,Y17置位成1, 其狀態值為10000001,轉換為十六進制數為81,其ASCII碼值為38H 31H 30H 30H。

結束字符EXT:03H。

累加和SUM:31H+30H+30H+41H+31H+30H+32H+38H+31H+30H+30H+03H=231H。

累加和超過兩位數時,取它的低兩位,即SUM為31H,31H的ASCII碼值為:33H 31H。

因此,對應的寫命令幀格式為

02 31 30 30 41 31 30 32 38 31 30 30 03 33 31

PLC接收到命令,如正確執行返回應答幀06H,繼電器Y10和Y17閉合,對應指示燈亮。如未正確執行,則返回NAK碼(15H)。

將PLC的Y10,Y17復位成0, 其狀態值為00000000,轉換為十六進制數為00,其ASCII碼值為30H 30H 30H 30H。

累加和SUM:31H+30H+30H+41H+31H+30H+32H+30H+30H+30H+30H+03H=228H。

累加和超過兩位數時,取它的低兩位,即SUM為28H,28H的ASCII碼值為32H 38H。

因此,對應的寫命令幀格式為

02 31 30 30 41 31 30 32 30 30 30 30 03 32 38

PLC接收到命令,如正確執行返回應答幀06H,繼電器Y10和Y17斷開,對應指示燈滅。如未正確執行,則返回NAK碼(15H)。

同理,將PLC的Y0,Y7置位成1,其位地址為00A0H,對應的寫命令幀格式為

02 31 30 30 41 30 30 32 38 31 30 30 03 33 30

將PLC的Y0,Y7復位成0,其位地址為00A0H,對應的寫命令幀格式為

02 31 30 30 41 30 30 32 30 30 30 30 03 32 37

【例7】 將Y10位強制置位成1,再強制復位成0。

發送寫指令的獲取過程如下。

開始字符STX:02H。

命令碼CMD:強制置位為7,ASCII碼為37H;強制復位為8,ASCII碼為38H。

地址:實際地址為Y10,計算地址為0508,因后兩位先送,前兩位后送,則表達地址為0805,其ASCII碼值為30H 38H 30H 35H。

結束字符EXT:03H。

強制置位的累加和SUM:37H+30H+38H+30H+35H+03H=107H,累加和超過兩位數時,取它的低兩位,即SUM為07H,07H的ASCII碼值為30H 37H。

強制復位的累加和SUM:38H+30H+38H+30H+35H+03H=108H,累加和超過兩位數時,取它的低兩位,即SUM為08H,08H的ASCII碼值為30H、38H。

對應的強制置位寫命令幀格式為02 37 30 38 30 35 03 30 37。

對應的強制復位寫命令幀格式為02 38 30 38 30 35 03 30 38。

PLC接收到此命令,如正確執行,則返回ACK碼(06H),否則返回NAK碼(15H)。

主站蜘蛛池模板: 新兴县| 涿州市| 石林| 沙河市| 布尔津县| 青龙| 镇雄县| 安丘市| 扎赉特旗| 襄汾县| 罗定市| 和平县| 嵩明县| 伊宁市| 舒城县| 海盐县| 潼关县| 阜新| 镇远县| 久治县| 广河县| 绩溪县| 屏南县| 浦东新区| 赤峰市| 库伦旗| 临夏市| 林芝县| 清远市| 承德县| 贺兰县| 延长县| 双鸭山市| 伊吾县| 泸溪县| 朝阳市| 隆德县| 运城市| 禄丰县| 奉化市| 乌兰浩特市|