歡迎來到海藍(lán)智能科技有限公司!
通訊程序設(shè)計在自動化系統(tǒng)的應(yīng)用越來越廣泛,例如plc與操作界面的數(shù)據(jù)交換,通過通訊對變頻器的控制,plc的連網(wǎng)等等。
要想實現(xiàn)plc的通訊編程,首先所選的plc必須有強大的通訊能力,就是說plc的操作系統(tǒng)能夠支持多種通訊格式,通常一種品牌的plc如果能夠提供給用戶更多的編程自由度,那么這種品牌的技術(shù)開發(fā)能力就越強大,大多數(shù)品牌只能提供固定格式的通訊格式或協(xié)議,這就大大局限了plc與其他智能設(shè)備的數(shù)據(jù)交換。
我們的plc產(chǎn)品具有RS232和光電隔離的RS485兩個自由通訊口,兩個通訊口可以同時收發(fā)數(shù)據(jù),幾乎可以適應(yīng)所有通訊格式,可以提供CRC和BCC等多種校驗方式。
以一臺PLC通過485通訊控制多個某品牌的變頻器為例:
如果該變頻器的波特率是9600b/s,8個數(shù)據(jù)位,奇校驗,1個停止位。那么首先必須在plc的嵌入C窗口的初始化代碼區(qū)編程一個通訊口設(shè)置語句:Set485Port(9600,o,8,1);僅僅一個語句就完成了對485通訊口的編程。
由于485通訊必須設(shè)定主從關(guān)系,這里是plc控制多臺變頻器,所以plc必須設(shè)置為主,因此還需在初始化代碼區(qū)增加一個地址和主從設(shè)定語句:SetAddress(1,MASTER);事實上,對于主控制器來說,地址已經(jīng)失去意義。
通訊口已經(jīng)設(shè)置完畢,下面就是如何根據(jù)要求將數(shù)據(jù)發(fā)送給變頻器。
例如一組8字節(jié)控制數(shù)據(jù)如下所示:
01h ---->變頻器編號
03h ---->命令
21h ---->兩字節(jié)參數(shù)地址
02h
00h ---->兩字節(jié)參數(shù)
02h
CRC --->兩字節(jié)CRC校驗馬
CRC
PLC程序:
Set485TBAddPointer(0);
AddNumberTo485TB(0x1);
AddNumberTo485TB(0x3);
AddNumberTo485TB(0x21);
AddNumberTo485TB(0x2);
AddNumberTo485TB(0x0);
AddNumberTo485TB(0x2);
AddCRCTo485TB();
Start485Transmit();
三菱FX系列PLC編程口通信協(xié)議總覽
該協(xié)議實際上適用于PLC編程端口以及 FX-232AW 模塊的通信。感謝網(wǎng)友visualboy提供。
通訊格式:
命令 命令碼 目標(biāo)設(shè)備
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進(jìn)制代碼:
ENQ 05H 請求
ACK 06H PLC正確響應(yīng)
NAK 15H PLC錯誤響應(yīng)
STX 02H 報文開始
ETX 03H 報文結(jié)束
幀格式:
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(讀出軟設(shè)備狀態(tài)值)
計算機向PLC發(fā)送:
始 命令 首地址 位數(shù) 終 和校驗
STX CMD GROUP ADDRESS BYTES ETX SUM
例子:從D123開始讀取4個字節(jié)數(shù)據(jù)
02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h
地址算法:address=address*2+1000h
再轉(zhuǎn)換成ASCII
31h,30h,46h,36h
PLC返回
STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM
注:最多可以讀取64個字節(jié)的數(shù)據(jù)
例子:從指定的存儲器單元讀到3584這個數(shù)據(jù)
02h 33h 35h 38h 34h 03h 44h,36h
2、DEVICE WRITE(向PLC軟設(shè)備寫入值)
始 命令 首地址 位數(shù) 數(shù)據(jù) 終 和校驗
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、位設(shè)備強制置位/復(fù)位
FORCE ON置位
始 命令 地址 終 和校驗
STX CMD ADDRESS ETX SUM
02h 37h address 03h sum
FORCE OFF復(fù)位
始 命令 地址 終 和校驗
STX CMD ADDRESS ETX SUM
02h 38h address 03h sum
PLC返回
ACK(06H) 接受正確
NAK(15H) 接受錯誤
設(shè)備強制中的地址公式:Address=Address/8+100h
說明:
1.幀中的BYTES表示需要讀取或者寫入的字節(jié)數(shù)。
2.地址算法上有說明。
3.累加和是從STX后面一個字節(jié)開始累加到ETX的和。
三菱FX系列PLC特殊寄存器地址計算方式
網(wǎng)友反應(yīng),網(wǎng)上提供的寄存器地址計算方法(ADDRESS=ADDRESS*2+1000H)不適合D8000以上的特殊寄存器!小弟不自量力地進(jìn)行一番探究,終於找到了計算方法,好東西不敢獨自享用,希望對大家有用啦.
特殊寄存器地址計算:
(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根據(jù)使用的通信模塊與協(xié)議不同,分為以下四種通信模式:
1、PLC的N:N通信方式
2、PLC雙機并聯(lián)通信方式
3、PLC與計算機專有協(xié)議通信方式(無須梯形圖,電腦直接讀寫操縱PLC)
4、PLC與計算機無協(xié)議通信方式(梯形圖RS指令方式,可自定義通信協(xié)議)
以下將詳細(xì)列出各通信模式的特性:
N:N網(wǎng)絡(luò) PLC并聯(lián) 專用協(xié)議計算機連接 無協(xié)議通信
傳輸標(biāo)準(zhǔn) RS485 RS485/RS422 RS485/RS422或RS232
傳輸距離 500m RS485/RS422:500mRS232:15m
連接數(shù)量 8站 1:1 1:N(N<=16) 1:1
通信方式 半雙工 FX,FX2c,FXon:半雙工FX2n: 全雙工
數(shù)據(jù)長度 固定 7bit/8bit
校驗 無/奇/偶
停止位 1bit/2bit
波特率 38400bps 19200bps 300/600/1200/2400/4800/9600/19200
頭字符 固定 無/有效
尾字符
控制線 ------
協(xié)議 --- 格式1/格式4 無
和校驗 固定 無/有效
適用機型 FX2n,FXon FX2n,FX,FX2c FX2n,FXon,FX,FX2c
FX系列PLC專用協(xié)議通信指令一覽
以下將詳細(xì)列出PLC專用協(xié)議通信的指令:
指令 注釋
BR 以1點為單位,讀出位元件的狀態(tài)
WR 以16點為單位,讀出位元件的狀態(tài),或以1字為單位,讀出字元件的值
BW 以1點為單位,寫入位元件的狀態(tài)
WW 以16點為單位,寫入位元件的狀態(tài),或以1字為單位,寫入值到字元件
BT 以1點為單位,SET/RESET 位元件
WT 以16點為單位,SET/RESET 位元件,或?qū)懭胫档阶衷?/p>
RR 控制PLC運行RUN
RS 控制PLC停止STOP
PC 讀出PLC設(shè)備類型
TT 連接測試
注:位元件包括X,Y,M,S以及T,C的線圈等;
字元件包括D,T,C,KnX,KnY,KnM等。
FX系列PLC專用協(xié)議通信指令格式詳解
約定說明:
ENQ為請求標(biāo)志,ASCII值5,VB中以chr(5)表示;
ACK為正確標(biāo)志,ASCII值6,VB中以chr(6)表示;
STX為請求標(biāo)志,ASCII值2,VB中以chr(2)表示;
EXT為請求標(biāo)志,ASCII值3,VB中以chr(3)表示;
表格中紅色字為需要求和效驗的部分;
和效驗為每一項的ASCII值的總和轉(zhuǎn)換成十六進(jìn)制后區(qū)低兩位;
站號、PLC號、元件數(shù)量、和效驗都是以十六進(jìn)制表示;
等待延時為0-150毫秒,以十六進(jìn)制0H-FH表示,如100ms為AH。
1、批量讀出位元件--BR指令
格式:
1 2 3 4 5 6 7 8 15 16 17
PC側(cè):ENQ 站號 PLC號 BR 延時 首地址 數(shù)量 和效驗ACK 站號 PLC號
PLC側(cè):STX 站號 PLC號 數(shù)據(jù) EXT 和效驗
9 10 11 12 13 14
[注] 上述中:1、"PLC號"系統(tǒng)默認(rèn)為"FF";2、"首地址 "應(yīng)以十進(jìn)制表示,如首地址"X0018"表示從X寄存器的第18地址單元開始讀取I/O量;3、"數(shù)量"表示讀取的I/O量個數(shù);4、"和效驗"是指從"站號"到"數(shù)量"之間的各代碼的ASCII碼的累加和;5、PLC側(cè)的響應(yīng)碼中"和效驗"是指從"站號"到"EXT"之間的各代碼的ASCII碼的累加和。6、可以讀出"X"、"Y"和"M"寄存器的內(nèi)容。
例如:要讀出站號為0的Fx2n系列PLC的X00到X08共9點的狀態(tài)值,延時100ms,假設(shè)采用Communication Format(D8120)的Format 1 方式::
注 釋: 請求 站號 PLC號 命令 延時 元件首地址 元件數(shù)量 和效驗
代 碼: 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")發(fā)送到PLC,就會有正確的回應(yīng)信息,如下:
注 釋: 頭 站號 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
若發(fā)送碼有誤,則有以下回應(yīng):
注 釋: 頭 站號 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側(cè):ENQ 站號 PLC號 WR 延時 首地址 數(shù)量 和效驗 ACK 站號 PLC號
PLC側(cè):STX 站號 PLC號 數(shù)據(jù) EXT 和效驗
9 10 11 12 13 14
該命令使用方法與1(BR)命令相同,不再贅述。
3、批量寫入位元件--BW指令
格式:
1 2 3 4 5 6 7 8 9
PC側(cè):ENQ 站號 PLC號 BW 延時 首地址 數(shù)量 寫入值 和效驗
PLC側(cè):ACK 站號 PLC號
10 11 12
4、批量寫入字元件--WW指令(M寄存器100單元置"1")
格式:01FFWWAM01000100010C
1 2 3 4 5 6 7 8 9
PC側(cè):ENQ 站號 PLC號 WW 延時 首地址 數(shù)量 寫入值 和效驗
PLC側(cè):05H 01 FF A M0100 01 0001 0C ACK 站號 PLC號
10 11 12
FX2系列的PLC與上位機的通信
摘要:對FX2系列的PLC與上拉機的通信實現(xiàn),提出了一種價格低、體積小的接口方案,討論了其硬件和軟件的設(shè)計思想,該接口裝置與控制室和實驗室環(huán)境下運行可靠。
關(guān)鍵詞:上位機 通信 接口 可編程控制器
PLC作為一種高性能的控制裝置,在分布式系統(tǒng)中得到了越來越廣泛的應(yīng)用。在這種控制方式中,上位監(jiān)控機系統(tǒng)是其中重要的組成部分。PLC可以多種方式如直接采用現(xiàn)有的組態(tài)監(jiān)控軟件與上位監(jiān)迭機通信,但針對小規(guī)模的控制系統(tǒng),找到一種高性能價格比的通信方法,具有積極的實際意義。本文就日本三菱公司生產(chǎn)的FX2可編程控制器與PC機通信方式的實現(xiàn),從軟、硬件兩個方面來說明這個問題。
1 通信裝置的硬件描述
PLC與PC機之間實現(xiàn)通道,可使二者互補功能上的不足,PLC用于控制方面既方便又可靠,而PC機在圖形顯示、數(shù)據(jù)處理、打印報表以及中文顯示等方面有很強的功能。因此,各PLC制造廠家紛紛開發(fā)了適用于本公司的各種型號PLC與PC機通信的接口模塊。三菱公司開發(fā)的FX-232AW接口模塊用于FX2系列PLC與計算機通信。還有與以太網(wǎng)連接的接口模塊AJ71E71、與MAP網(wǎng)連接的接口模塊AJ71M51-S1、與FAIS MAP網(wǎng)連接的接口模塊AJ71M51M1等。不同的通信方式,有著不同的成本價格和不同的適用范圍。在此介紹一種通過PC機的RS-232口與PLC進(jìn)行通信的實現(xiàn)方法。
FX2系列PLC的編程接口采用RS-422標(biāo)準(zhǔn),而計算機的串行口采用RS-232標(biāo)準(zhǔn)。因此,作為實現(xiàn)PLC計算機通信的接口電路,必須將RS-422標(biāo)準(zhǔn)轉(zhuǎn)換成RS-232標(biāo)準(zhǔn)。
RS-232與RS-422標(biāo)準(zhǔn)在信號的傳送、邏輯電平均不相同。
RS-232采用單端接收器和單端發(fā)送器,只用一根信號線來傳送信息,并且根據(jù)該信號線上電平相對于公共的信號地電平的大小來決定邏輯的“1”(-3~-15V)和“0”(+3~+15V);
RS-422標(biāo)準(zhǔn)是一種以平衡方式傳輸?shù)臉?biāo)準(zhǔn),即雙端發(fā)送和雙端接收,根據(jù)兩條傳輸線之間的電位差值來決定邏輯狀態(tài)。RS-422電路由發(fā)送器、平衡連接電纜、電纜終端負(fù)載和接收器組成。它通過平衡發(fā)送器和差動接收器將邏輯電平和電位差之間進(jìn)行轉(zhuǎn)換(+2V表示“0”,-2V表示“1”)。
選用MAXIM公司的MAX202實現(xiàn)RS-232與TTL之間的電平轉(zhuǎn)換。MAX202內(nèi)部有電壓倍增電路和轉(zhuǎn)換電路,僅需+5V電源就可工作,使用十分方便;選用MAX490實現(xiàn)RS-485與TTL之間的轉(zhuǎn)換。每片MAX490有一對發(fā)送器/接收器,由于通信采用全雙工方式,故需兩片MAX490,另外只需外接4只電容即可。
PLC的RS-422接口配接DB-25型連接器,而PC機一般用DB-9型連接器。硬件電路圖如圖1所示。
將RS-232的RS、CS短接,這樣對計算機發(fā)送數(shù)據(jù)來說,PLC總是處于就緒狀態(tài)。也就是說,計算機在任何時候都可以將數(shù)據(jù)送到PLC內(nèi)。又由于DR、ER交叉連接,因此,對計算機接收數(shù)據(jù)來說,必須等待至PLC處于準(zhǔn)備就緒狀態(tài)。
2 通信裝置的軟件描述
2.1 FX2系列PLC與計算機之間通信協(xié)議
FX2系列PLC與計算機之間的通信采用RS-232標(biāo)準(zhǔn),其傳輸速率固定為9600bps,奇偶校驗位采用偶校驗。數(shù)據(jù)格式如圖2所示。數(shù)據(jù)以幀為單位發(fā)送和接收。一個多字符幀由力所示的五部分組成,其中和校驗值是將命令碼ETX之間的的呢字符的ASCII碼(十六進(jìn)制數(shù))相加,取得所得和的最低二位數(shù)。STX和ETX分別表示該字符幀的起始標(biāo)起和結(jié)束標(biāo)志。
FX2系列與計算機之間的通信是以主機發(fā)出的初始命令,PLC對其作出響應(yīng)的方式進(jìn)行通信的。共有0、1、7、8四種命令,上位機實現(xiàn)對PLC的讀寫和強行置位。通過ENQ、ACK和NAK,上位機協(xié)調(diào)與PLC的通信應(yīng)答。
2.2 通信過程
采用Bland C編寫主機與PLC的通信程序。首先必須對COM1口進(jìn)行初始化,波特率為9600bps,奇偶校驗位采用偶校驗,七位有效數(shù)據(jù)。通信的初始化檢測過程如圖4所示。當(dāng)計算機接收到來自PLC的應(yīng)答字符ACK后,就可以進(jìn)入數(shù)據(jù)通信了。通信的時序圖如圖5所示。
計算機可對PLC內(nèi)各軟設(shè)備進(jìn)行讀、寫和強制ON/OFF操作。除開PLC的計時器和計數(shù)器的設(shè)定值采用常數(shù)時,以及文件寄存器內(nèi)的數(shù)據(jù),F(xiàn)X2系列PLC的所有開關(guān)量輸入、輸出以及各軟件設(shè)備對計算機都是透明的。其操作時的多字符幀的格式如圖3所示。但不同的操作在“多個字符”項內(nèi)有所不同。例如,計算機對PLC的軟設(shè)備Y20~Y37進(jìn)行讀操作,查裝置地址表為00A2,讀取2字節(jié)數(shù)據(jù)。其狀態(tài)如圖6(a)所示,主機發(fā)出的命令格式如圖6(b)所示,PLC返回的信息如圖6(c)所示。
如傳送的命令有錯誤,PLC返回NAK信號,本次操作失敗,重新進(jìn)行。
為了保證主機與PLC的通信準(zhǔn)確無誤,上位機也必須按通信協(xié)議進(jìn)行和校。如接收的信息有誤,則重新讀取。如重復(fù)3次仍不行,則顯示錯誤信息。
使用C語言很容易實現(xiàn)以上編程。
主機還可向PLC寫數(shù)據(jù),進(jìn)行單點的強近置位和復(fù)位。
對于運行在控制和實驗室環(huán)境飛速下本方案運行可靠、性價比高、體積小、但是對于通信距離長,環(huán)境惡劣的發(fā)問,需加光電隔離等措施。
1、將常數(shù)10寫入數(shù)據(jù)單元D20
CHR(2)11 028 02 0A00 CHR(3)32
2、將常數(shù)0寫入數(shù)據(jù)單元D8014
CHR(2)10 E1C 02 0000 CHR(3)3F
3、對開關(guān)量X1置位
CHR(2)7 01 04 CHR(3)FF
4、對開關(guān)量X1復(fù)位
CHR(2)8 01 04 CHR(3)00
5、對定時器T0線圈置位
CHR(2)7 00 06 CHR(3)00
6、對開關(guān)量Y10復(fù)位
CHR(2)8 08 05 CHR(3)08
7、對輔助線圈M500置位
CHR(2)7 F4 09 CHR(3)1D
海藍(lán)智能擁有一批理論與實踐經(jīng)驗豐富的工程技術(shù)人員;長期承接自動化工程項目、技術(shù)開發(fā)、安裝調(diào)試和咨詢培訓(xùn),為向用戶提供全面的技術(shù)支持和高效、快捷的售后服務(wù)?,F(xiàn)公司開設(shè)多個技術(shù)交流群,里面有眾多技術(shù)大牛經(jīng)驗分享,解答疑問。有需要的朋友可以咨詢在線客服或者留下你的聯(lián)系方式。