1. 程式人生 > >上位機操作三菱PLC指令規範 轉載

上位機操作三菱PLC指令規範 轉載

通訊程式設計在自動化系統的應用越來越廣泛,例如plc與操作介面的資料交換,通過通訊對變頻器的控制,plc的連網等等。
要想實現plc的通訊程式設計,首先所選的plc必須有強大的通訊能力,就是說plc的作業系統能夠支援多種通訊格式,通常一種品牌的plc如果能夠提供給使用者更多的程式設計自由度,那麼這種品牌的技術開發能力就越強大,大多數品牌只能提供固定格式的通訊格式或協議,這就大大侷限了plc與其他智慧裝置的資料交換。
我們的plc產品具有RS232和光電隔離的RS485兩個自由通訊口,兩個通訊口可以同時收發資料,幾乎可以適應所有通訊格式,可以提供CRC和BCC等多種校驗方式。
以一臺PLC通過485通訊控制多個某品牌的變頻器為例:

如果該變頻器的波特率是9600b/s,8個數據位,奇校驗,1個停止位。那麼首先必須在plc的嵌入C視窗的初始化程式碼區程式設計一個通訊口設定語句:Set485Port(9600,o,8,1);僅僅一個語句就完成了對485通訊口的程式設計。
由於485通訊必須設定主從關係,這裡是plc控制多臺變頻器,所以plc必須設定為主,因此還需在初始化程式碼區增加一個地址和主從設定語句:SetAddress(1,MASTER);事實上,對於主控制器來說,地址已經失去意義。
 通訊口已經設定完畢,下面就是如何根據要求將資料傳送給變頻器。
   例如一組8位元組控制資料如下所示:
   01h ---->變頻器編號
   03h ---->命令

   21h ---->兩位元組引數地址
   02h
   00h ---->兩位元組引數
   02h
   CRC --->兩位元組CRC校驗馬
   CRC 

   PLC程式:
   Set485TBAddPointer(0);
   AddNumberTo485TB(0x1);
   AddNumberTo485TB(0x3);
   AddNumberTo485TB(0x21);
   AddNumberTo485TB(0x2);
   AddNumberTo485TB(0x0);
   AddNumberTo485TB(0x2);
   AddCRCTo485TB();
   Start485Transmit();

三菱FX系列PLC程式設計口通訊協議總覽
該協議實際上適用於PLC程式設計埠以及 FX-232AW 模組的通訊。感謝網友visualboy提供。
通訊格式:
命令 命令碼 目標裝置 
DEVICE READ CMD "0" X,Y,M,S,T,C,D 
DEVICE WRITE CMD "1" X,Y,M,S,T,C,D 
FORCE ON CMD " 7" X,Y,M,S,T,C 
FORCE OFF CMD "8" X,Y,M,S,T,C 
傳輸格式: RS232C
波特率: 9600bps
奇偶: even
校驗: 累加方式(和校驗)
字元: ASCII 
16進位制程式碼: 
ENQ 05H 請求 
ACK 06H PLC正確響應 
NAK 15H PLC錯誤響應 
STX 02H 報文開始 
ETX 03H 報文結束 

幀格式:
STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower) 
例子:
STX ,CMD ,ADDRESS, BYTES, ETX, SUM
02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H
SUM=CMD+......+ETX;
30h+31h+30h+46h+36h+30h+34h+03h=74h;
累加和超過兩位取低兩位
命令格式
1、 DEVICE READ(讀出軟裝置狀態值)
計算機向PLC傳送:
始 命令 首地址 位數 終 和校驗
STX CMD GROUP ADDRESS BYTES ETX SUM
例子:從D123開始讀取4個位元組資料
02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h
地址演算法:address=address*2+1000h
再轉換成ASCII
31h,30h,46h,36h
PLC返回
STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
注:最多可以讀取64個位元組的資料
例子:從指定的儲存器單元讀到3584這個資料
02h 33h 35h 38h 34h 03h 44h,36h

2、DEVICE WRITE(向PLC軟裝置寫入值)
始 命令 首地址 位數 資料 終 和校驗
STX CMD GROUP ADDRESS BYTES 1ST DATA 2ND DATA ...... LAST DATA ETX SUM
例子:向D123開始的兩個儲存器中寫入1234,ABCD
02h 31h 31h,30h,46h,36h 30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 34h,39h
PLC返回
ACK (06H) 接受正確
NAK (15H) 接受錯誤

3、位裝置強制置位/復位
FORCE ON置位
始 命令 地址 終 和校驗
STX CMD ADDRESS ETX SUM
02h 37h address 03h sum
FORCE OFF復位
始 命令 地址 終 和校驗
STX CMD ADDRESS ETX SUM
02h 38h address 03h sum

PLC返回
ACK(06H) 接受正確
NAK(15H) 接受錯誤
裝置強制中的地址公式:Address=Address/8+100h

說明:
1.幀中的BYTES表示需要讀取或者寫入的位元組數。
2.地址演算法上有說明。
3.累加和是從STX後面一個位元組開始累加到ETX的和。

三菱FX系列PLC特殊暫存器地址計算方式
網友反應,網上提供的暫存器地址計算方法(ADDRESS=ADDRESS*2+1000H)不適合D8000以上的特殊暫存器!小弟不自量力地進行一番探究,終於找到了計算方法,好東西不敢獨自享用,希望對大家有用啦.
特殊暫存器地址計算:
(address-8000)*2+E00H;
例:
D8000為:(8000-8000)*2+E00H=E00H;
D8001為:(8001-8000)*2+E00H=E02H;
D8255為:(8255-8000)*2+E00H=1FEH;
三菱FX系列PLC程式設計口通訊原始碼
fx_comm.h 
FX系列PLC四種通訊模式的特性
  首先講講FX系列PLC的通訊方式。
  FX系列PLC根據使用的通訊模組與協議不同,分為以下四種通訊模式:
  1、PLC的N:N通訊方式
  2、PLC雙機並聯通訊方式
  3、PLC與計算機專有協議通訊方式(無須梯形圖,電腦直接讀寫操縱PLC) 
  4、PLC與計算機無協議通訊方式(梯形圖RS指令方式,可自定義通訊協議) 
  以下將詳細列出各通訊模式的特性:
  N:N網路 PLC並聯 專用協議計算機連線 無協議通訊
傳輸標準 RS485 RS485/RS422 RS485/RS422或RS232
傳輸距離 500m RS485/RS422:500mRS232:15m
連線數量 8站 1:1 1:N(N<=16) 1:1
通訊方式 半雙工 FX,FX2c,FXon:半雙工FX2n: 全雙工
資料長度 固定 7bit/8bit
校驗  無/奇/偶
停止位  1bit/2bit
波特率 38400bps 19200bps 300/600/1200/2400/4800/9600/19200
頭字元 固定 無/有效
尾字元  
控制線 ------ 
協議 --- 格式1/格式4 無
和校驗 固定 無/有效 
適用機型 FX2n,FXon FX2n,FX,FX2c FX2n,FXon,FX,FX2c
FX系列PLC專用協議通訊指令一覽
 以下將詳細列出PLC專用協議通訊的指令:
指令 註釋  
BR 以1點為單位,讀出位元件的狀態  
WR 以16點為單位,讀出位元件的狀態,或以1字為單位,讀出字元件的值  
BW 以1點為單位,寫入位元件的狀態  
WW 以16點為單位,寫入位元件的狀態,或以1字為單位,寫入值到字元件  
BT 以1點為單位,SET/RESET 位元件  
WT 以16點為單位,SET/RESET 位元件,或寫入值到字元件  
RR 控制PLC執行RUN  
RS 控制PLC停止STOP  
PC 讀出PLC裝置型別  
TT 連線測試  
注:位元件包括X,Y,M,S以及T,C的線圈等;
  字元件包括D,T,C,KnX,KnY,KnM等。
FX系列PLC專用協議通訊指令格式詳解
 約定說明:
     ENQ為請求標誌,ASCII值5,VB中以chr(5)表示;
ACK為正確標誌,ASCII值6,VB中以chr(6)表示; 
 STX為請求標誌,ASCII值2,VB中以chr(2)表示;
 EXT為請求標誌,ASCII值3,VB中以chr(3)表示; 
 表格中紅色字為需要求和效驗的部分;
 和效驗為每一項的ASCII值的總和轉換成十六進位制後區低兩位;
 站號、PLC號、元件數量、和效驗都是以十六進位制表示;
 等待延時為0-150毫秒,以十六進位制0H-FH表示,如100ms為AH。
 1、批量讀出位元件--BR指令
    格式:
1 2 3 4 5 6 7 8             15 16 17
PC側: ENQ 站號 PLC號 BR 延時 首地址 數量 和效驗       ACK 站號 PLC號
PLC側:         STX 站號 PLC號 資料 EXT 和效驗   
                9 10 11 12 13 14      
   [注] 上述中:1、"PLC號"系統預設為"FF";2、"首地址 "應以十進位制表示,如首地址"X0018"表示從X暫存器的第18地址單元開始讀取I/O量;3、"數量"表示讀取的I/O量個數;4、"和效驗"是指從"站號"到"數量"之間的各程式碼的ASCII碼的累加和;5、PLC側的響應碼中"和效驗"是指從"站號"到"EXT"之間的各程式碼的ASCII碼的累加和。6、可以讀出"X"、"Y"和"M"暫存器的內容。
例如:要讀出站號為0的Fx2n系列PLC的X00到X08共9點的狀態值,延時100ms,假設採用Communication Format(D8120)的Format 1 方式::
注  釋: 請求 站號 PLC號 命令 延時 元件首地址 元件數量 和效驗
代  碼: ENQ 0 0 F F B R A X 0 0 0 0 0 9 4 2
ASCII碼: 05H 30H 30H 46H 46H 42H 52H 41H 58H 30H 30H 30H 30H 30H 35H 34H 32H
  您只要將以上蘭色部分的程式碼以字串形式(VB中可以表示為CHR(5)&" 00FFBRAX00000942")傳送到PLC,就會有正確的迴應資訊,如下: 
注 釋: 頭 站號 PLC號 元件首地址 尾 和效驗
代 碼: STX 0 0 F F 0 0 1 1 0 1 1 0 1 EXT 0 5
ASCII碼: 02H 30H 30H 46H 46H 30H 30H 31H 31H 30H 31H 31H 30H 31H 03H 30H 35H
  若傳送碼有誤,則有以下回應:
注 釋: 頭 站號 PLC號 和效驗
代 碼: NAK 0 0 F F 0 6
ASCII碼: 15H 30H 30H 46H 46H 30H 36H
2、批量讀出字元件--WR指令
  格式:
1 2 3 4 5 6 7 8             15 16 17
PC側: ENQ 站號 PLC號 WR 延時 首地址 數量 和效驗       ACK 站號 PLC號
PLC側:         STX 站號 PLC號 資料 EXT 和效驗   
                9 10 11 12 13 14      
  該命令使用方法與1(BR)命令相同,不再贅述。
  3、批量寫入位元件--BW指令
  格式:
1 2 3 4 5 6 7 8 9      
PC側: ENQ 站號 PLC號 BW 延時 首地址 數量 寫入值 和效驗   
PLC側:           ACK 站號 PLC號
                  10 11 12
  4、批量寫入字元件--WW指令(M暫存器100單元置"1")
  格式:01FFWWAM01000100010C
1 2 3 4 5 6 7 8 9      
PC側: ENQ 站號 PLC號 WW 延時 首地址 數量 寫入值 和效驗   
PLC側: 05H 01 FF  A M0100 01 0001  0C ACK 站號 PLC號
                  10 11 12

FX2系列的PLC與上位機的通訊
摘要:對FX2系列的PLC與上拉機的通訊實現,提出了一種價格低、體積小的介面方案,討論了其硬體和軟體的設計思想,該介面裝置與控制室和實驗室環境下執行可靠。
關鍵詞:上位機 通訊 介面 可程式設計控制器
PLC作為一種高效能的控制裝置,在分散式系統中得到了越來越廣泛的應用。在這種控制方式中,上位監控機系統是其中重要的組成部分。PLC可以多種方式如直接採用現有的組態監控軟體與上位監迭機通訊,但針對小規模的控制系統,找到一種高效能價格比的通訊方法,具有積極的實際意義。本文就日本三菱公司生產的FX2可程式設計控制器與PC機通訊方式的實現,從軟、硬體兩個方面來說明這個問題。
1 通訊裝置的硬體描述
  PLC與PC機之間實現通道,可使二者互補功能上的不足,PLC用於控制方面既方便又可靠,而PC機在圖形顯示、資料處理、列印報表以及中文顯示等方面有很強的功能。因此,各PLC製造廠家紛紛開發了適用於本公司的各種型號PLC與PC機通訊的介面模組。三菱公司開發的FX-232AW介面模組用於FX2系列PLC與計算機通訊。還有與乙太網連線的介面模組AJ71E71、與MAP網連線的介面模組AJ71M51-S1、與FAIS MAP網連線的介面模組AJ71M51M1等。不同的通訊方式,有著不同的成本價格和不同的適用範圍。在此介紹一種通過PC機的RS-232口與PLC進行通訊的實現方法。
  FX2系列PLC的程式設計介面採用RS-422標準,而計算機的序列口採用RS-232標準。因此,作為實現PLC計算機通訊的介面電路,必須將RS-422標準轉換成RS-232標準。
  RS-232與RS-422標準在訊號的傳送、邏輯電平均不相同。
  RS-232採用單端接收器和單端傳送器,只用一根訊號線來傳送資訊,並且根據該訊號線上電平相對於公共的訊號地電平的大小來決定邏輯的“1”(-3~-15V)和“0”(+3~+15V);
  RS-422標準是一種以平衡方式傳輸的標準,即雙端傳送和雙端接收,根據兩條傳輸線之間的電位差值來決定邏輯狀態。RS-422電路由傳送器、平衡連線電纜、電纜終端負載和接收器組成。它通過平衡傳送器和差動接收器將邏輯電平和電位差之間進行轉換(+2V表示“0”,-2V表示“1”)。
  選用MAXIM公司的MAX202實現RS-232與TTL之間的電平轉換。MAX202內部有電壓倍增電路和轉換電路,僅需+5V電源就可工作,使用十分方便;選用MAX490實現RS-485與TTL之間的轉換。每片MAX490有一對傳送器/接收器,由於通訊採用全雙工方式,故需兩片MAX490,另外只需外接4只電容即可。
  PLC的RS-422介面配接DB-25型聯結器,而PC機一般用DB-9型聯結器。硬體電路圖如圖1所示。
  將RS-232的RS、CS短接,這樣對計算機發送資料來說,PLC總是處於就緒狀態。也就是說,計算機在任何時候都可以將資料送到PLC內。又由於DR、ER交叉連線,因此,對計算機接收資料來說,必須等待至PLC處於準備就緒狀態。
  2 通訊裝置的軟體描述
  2.1 FX2系列PLC與計算機之間通訊協議
  FX2系列PLC與計算機之間的通訊採用RS-232標準,其傳輸速率固定為9600bps,奇偶校驗位採用偶校驗。資料格式如圖2所示。資料以幀為單位傳送和接收。一個多字元幀由力所示的五部分組成,其中和校驗值是將命令碼ETX之間的的呢字元的ASCII碼(十六進位制數)相加,取得所得和的最低二位數。STX和ETX分別表示該字元幀的起始標起和結束標誌。
  FX2系列與計算機之間的通訊是以主機發出的初始命令,PLC對其作出響應的方式進行通訊的。共有0、1、7、8四種命令,上位機實現對PLC的讀寫和強行置位。通過ENQ、ACK和NAK,上位機協調與PLC的通訊應答。
  2.2 通訊過程
  採用Bland C編寫主機與PLC的通訊程式。首先必須對COM1口進行初始化,波特率為9600bps,奇偶校驗位採用偶校驗,七位有效資料。通訊的初始化檢測過程如圖4所示。當計算機接收到來自PLC的應答字元ACK後,就可以進入資料通訊了。通訊的時序圖如圖5所示。
  計算機可對PLC內各軟裝置進行讀、寫和強制ON/OFF操作。除開PLC的計時器和計數器的設定值採用常數時,以及檔案暫存器內的資料,FX2系列PLC的所有開關量輸入、輸出以及各軟體裝置對計算機都是透明的。其操作時的多字元幀的格式如圖3所示。但不同的操作在“多個字元”項內有所不同。例如,計算機對PLC的軟裝置Y20~Y37進行讀操作,查裝置地址表為00A2,讀取2位元組資料。其狀態如圖6(a)所示,主機發出的命令格式如圖6(b)所示,PLC返回的資訊如圖6(c)所示。
  如傳送的命令有錯誤,PLC返回NAK訊號,本次操作失敗,重新進行。
  為了保證主機與PLC的通訊準確無誤,上位機也必須按通訊協議進行和校。如接收的資訊有誤,則重新讀取。如重複3次仍不行,則顯示錯誤資訊。
  使用C語言很容易實現以上程式設計。
  主機還可向PLC寫資料,進行單點的強近置位和復位。
  對於執行在控制和實驗室環境飛速下本方案執行可靠、價效比高、體積小、但是對於通訊距離長,環境惡劣的發問,需加光電隔離等措施。

1、將常數10寫入資料單元D20
CHR(2)11 028 02 0A00 CHR(3)32
2、將常數0寫入資料單元D8014
CHR(2)10 E1C 02 0000 CHR(3)3F
3、對開關量X1置位
CHR(2)7 01 04 CHR(3)FF
4、對開關量X1復位
CHR(2)8 01 04 CHR(3)00
5、對定時器T0線圈置位
CHR(2)7 00 06 CHR(3)00
6、對開關量Y10復位
CHR(2)8 08 05 CHR(3)08
7、對輔助線圈M500置位
CHR(2)7 F4 09 CHR(3)1D