通訊程序設計在自動化系統的應用越來越廣泛,例如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
海藍智能擁有一批理論與實踐經驗豐富的工程技術人員;長期承接自動化工程項目、技術開發、安裝調試和咨詢培訓,為向用戶提供全面的技術支持和高效、快捷的售后服務?,F公司開設多個技術交流群,里面有眾多技術大牛經驗分享,解答疑問。有需要的朋友可以咨詢在線客服或者留下你的聯系方式。