發布日期:2022-04-26 點擊率:56 品牌:歐姆龍_Omron
1 導言
在工業操控范疇中,plc作為一種安穩牢靠的操控器得到廣泛的運用。但它也有本身的一些缺陷,即數據的核算處理和處理才調較弱,不能給用戶供應超卓的界面等。而核算機剛好能抵償plc的短少,它不光有很強的數據處理和處理才調,并且能給用戶供應十分美麗而又易于操作的界面。將plc與核算機聯絡,可使系統抵達既能及時地搜集、存儲數據,又可處理和運用好數據,兩者聯絡的要害是plc與核算機之間的通訊。這篇文章以omron公司的cpmia小型plc為例,詳細的談論了plc與核算機通訊的原理和用vb怎樣完畢plc與核算機的通訊。
2 通行原理與辦法
上位機要可以經過plc監控底層設備的狀況,就要完畢上位機與plc間的通訊,通常工業操控中都是選用rs232c完畢。上位機首要向plc發送查詢數據的指令(實習上是查詢plc中端子的狀況和dm區的值等),plc接納了上位的指令后,進行校驗(fcs校驗碼),看其是不是精確,假定精確,則向上位機傳送數據(包含首尾校驗字節)。不然,plc回絕向上位機傳送數據。上位接納到plc傳送的數據,也要區別精確與否,假定精確,則接納,不然,回絕接納。
因為cpm1a沒有供應串行通訊口,咱們運用其供應的外設端口完畢通訊。plc與核算機之間的聯接是經過omron供應的專用電纜cqm1-cif01來完畢的,其硬件聯接圖如圖1所示。
3 plc與核算機間的通訊規約
核算機與plc間的通訊是以“幀”為單位進行的,并且在通訊的進程中,核算機具有更高的優先級。首要,核算機向plc宣告指令幀,然后,plc作出照料,向核算機發送回照料幀。其間指令幀和照料幀的格局如下:
(1) 指令幀格局。為了便當核算機和plc的通訊,cpm1a對在核算機聯接通訊中溝通的指令和照料規矩了相應的格局。當核算機發送一個指令時,指令數據主預備格局如圖2所示。
其間@放在首位,標明以@開端,設備號為上位機辨認所聯接的plc的設備號。辨認碼為指令代碼,用來設置用戶期望上位機完畢的操作,fcs為幀查驗代碼,一旦通訊犯錯,經過核算fcs可以及時發現。完畢符為“*”和cr回車符,標明指令完畢。
(2) 照料幀格局。由plc宣告的對應于指令格局的照料幀格局如圖3所示。
其間,失常碼可以斷定核算機發送的指令是不是精確施行。其它的與正文中的含義一樣。正文僅在有讀出數據時有回來。
4 通訊程序的方案
為了充沛運用核算機數據處理的健旺功用,咱們可以選用核算機有優先權的辦法,在核算機上編寫程序來完畢核算機與plc的通訊, 核算機向plc宣告指令主張通訊,plc自動回來照料。這篇文章中選用vb來編寫核算機與plc間的通訊程序。在vb中供應了通訊控件—運用通訊控件(mscomm),完畢經過串行端口傳送和承受的功用。
下面介紹mscomm控件的特征:
*commport:設定通訊聯接端口代號,程序有必要指定所要運用的串行端標語,WINOOWs系統運用所設定的端口與外界通訊。
*portopen:設定通訊口狀況,若為真,通訊端口翻開,不然封閉。
*settings:設定通訊口參數,其格局是"bbbb,p
,d,s",其間bbbb為通訊速率(波特率),p為通訊查看辦法(奇偶校驗), d 為數據位數,s為接連位數,其設定應與plc的設定一同。
*input:將對方傳送至輸入緩沖區的字符讀入到程序。
*output:將字符寫入輸出緩沖區。
*inbuffercount:傳回接納緩沖區中的字符數。
*outbuffercount:傳回輸出緩沖區中的字符數。
*inputlen:設定串行端口讀入字符串的長度。
*inputmode:設定接納數據的辦法。
*rthreshold:設定致使接納作業的字符數。
*commevent:傳回oncomm作業發作時的數值碼
*oncomm作業:不論是過錯或作業發作,都會觸發此作業。
(1) 控件參數的初始化。
初始化程序如下:
mscomm.comport=2 `運用串口com2
mscomm.settings="9600, e, 7, 2" `波特率9600,偶校驗,7位數據位,2位接連位
mscomm.portopen=true `翻注冊訊端口,預備通訊
(2) 核算校驗碼fcs,核算fcs的vb自界說函數如下:
function fcs(byval inputstr as string) as string
dim slen, i, xorresult as integer
dim tempfes as string
slen=len(inputstr) `求輸入字符串長度
xorresult = 0
for i = 1 to slen
xorresult = xorresult xor asc(mid$(inputstr, i, 1)) `按位異或
next i
tempfes=hex$(xorresult) `轉化為16進制
if len(tempfes)=1then tempfes =“0”+tempfes
fcs = tempfes
end function
(3) 核算機與plc通訊程序。
首要是一個自界說函數。
function readdata(byval inputstr as string, byval num as integer) as string
dim outputstr as string
dim instring as string
dim returnstr as string
dim endstring as string
dim fcsstring as string
dim returnfcsstring as string)
mscomm.inbuffercount=0
outputstr=inputstr+fcs(inputstr)+“*” `給出指令幀
mscomm.output=outputstr+chr$(13) `向plc傳送指令幀
do
doevents
loop while mscomm.inbuffercount < 15
instring=mscomm.input `獲取plc的照料幀
`完畢碼區別
endstring = mid$(instring, len(instring) -
num- 5, 2)
if endstring = "13" then
readdata = "error"
exit function
elseif endstring = "14" then
readdata = "error"
exit function
elseif endstring = "15" then
readdata = "error"
exit function
elseif endstring = "18" then
readdata = "error"
exit function
elseif endstring = "a3" then
readdata = "error"
exit function
elseif endstring = "a8" then
readdata = "error"
exit function
end if
`照料幀校驗
endstring = mid$(instring, 1, len(instring) - 4)
returnfcsstring = mid$(instring,len(instring) - 3, 2)
fcsstring = fcs(endstring)
if fcsstring <> returnfcsstring then
readdata = "error"
exit function
end if
returnstr = mid$(instring,
len(instring) - num - 3, num)
readdata = returnstr
end function
從上面程序可以看到,核算機對plc回來的照料幀要進行fcs校驗,并運用失常碼打掃回來的失常數據,這么不光可早年進核算機獲取信息的精確性,并且跋涉了核算機監控的實時性。
5 完畢語
這篇文章介紹的通訊辦法在我校cims研討基地自行研發的一套機電一體化設備中得到施行運用,經實驗作業,證實這種通訊辦法安穩、牢靠,的確是一種十分有用的辦法。將plc與核算機通訊網絡聯接起來,plc作為下位機,核算機作為上位機,構成一個優勢互補的自動操控系統,完畢了“會集處理,松懈操控”。其間各個plc子系統或長途作業站在出產現場對各個被控政策進行操控,運用網絡聯接構成一個plc歸納操控,滿意了現代自動化系統向信息化、網絡化、智能化的過渡。
下一篇: PLC、DCS、FCS三大控
上一篇: MATLAB和Simulink在航