時(shí)間:2018-01-10 11:07:31來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載
1引言
現(xiàn)場(chǎng)設(shè)備層中的設(shè)備種類(lèi)繁多,有傳感器、啟動(dòng)器、驅(qū)動(dòng)器、I/O部件、變送器、閥門(mén)等等,當(dāng)然也包括現(xiàn)場(chǎng)檢測(cè)儀器儀表設(shè)備。PLC是現(xiàn)場(chǎng)設(shè)備控制層不可缺少的部分,已經(jīng)非常普及,如何簡(jiǎn)便地實(shí)現(xiàn)與PLC的交互已經(jīng)成為眾多廠商新的競(jìng)爭(zhēng)戰(zhàn)場(chǎng)。由此產(chǎn)生了人機(jī)界面等軟件產(chǎn)品,這些產(chǎn)品的出現(xiàn)簡(jiǎn)化了對(duì)PLC的控制、操作,使PLC的應(yīng)用更加方便;但也有其共同的缺點(diǎn),價(jià)格普遍偏高和可二開(kāi)發(fā)性較差。VB作為“原始”的編程語(yǔ)言在這兩方面無(wú)疑有著明顯優(yōu)勢(shì)的,本文結(jié)合一個(gè)簡(jiǎn)單的案例,用比較基礎(chǔ)的概念討論如何通過(guò)VB實(shí)現(xiàn)PC與PLC之間的通信問(wèn)題,這對(duì)剛涉步控制領(lǐng)域的工程師或許是有幫助的。在現(xiàn)場(chǎng)設(shè)備層中各式各樣的設(shè)備都可以和計(jì)算機(jī)聯(lián)機(jī),而最簡(jiǎn)單的自動(dòng)化聯(lián)機(jī)方式就是使用串行通信,VB提供了串行通信控件可以讓開(kāi)發(fā)者開(kāi)發(fā)出串行通信的系統(tǒng)程序,以下是對(duì)相關(guān)問(wèn)題的粗略討論。
2串行通信基本概念
數(shù)據(jù)通訊中有兩種類(lèi)型的通信形式,即并行通信(ParallelCommunication)和串行通信(SerialCommunication)。例如,如果有8位數(shù)據(jù)需要傳送,那么并行通信一次就可以完成8位的傳輸量;而串行一次只能傳送1位。圖1表示了兩種不同的通信模式,常用的串行通信也有兩種,分別為RS-232和RS-485。
2.1RS-232串行通信
RS-232的信號(hào)準(zhǔn)位是參考地線而言的,如圖2所示。相對(duì)于參考接地端1傳輸端傳送數(shù)據(jù);接收端則相對(duì)于參考接地端2復(fù)現(xiàn)出傳送端的傳送的數(shù)據(jù)。
2.2RS-485串行通信
RS-485的信號(hào)被傳送出去時(shí)會(huì)分成正負(fù)兩條線路,當(dāng)?shù)竭_(dá)接收端后,在將信號(hào)相減還原成原來(lái)的信號(hào);如果將原始的信號(hào)表示成(DT),而被分成的信號(hào)分別標(biāo)示成(D+)及(D-),則DT=(D+)-(D-)。同理,接收端在接收到信號(hào)后,也依據(jù)上式還原成原來(lái)的樣子。如果線路受到干擾,兩條線路的信號(hào)分別為(D+)+Noise與(D-)+Noise。接收端還原信號(hào)為(DT)=[(D+)+Noise]-[(D-)+Noise],與先前結(jié)果一樣,所以RS-485可以有效的防止噪聲的干擾。
3VB的基本概念
VB(VisualBasic)是微軟的窗口軟件,提供了很多接口成員,對(duì)象、屬性、事件、方法就是4個(gè)重要的接口,VB提供了許多常用的控件。
3.1卷標(biāo)控件
3.2按鈕控件
3.3定時(shí)器控件
VB提供了大量的控件,在此不再多述。
4基于MScomm控件的串行通信
要完成VB與PLC等設(shè)備的串行通信要用到MScomm控件,在此有必要對(duì)該控件作較詳細(xì)的說(shuō)明。Mscomm是一個(gè)非標(biāo)準(zhǔn)控件,需要要手動(dòng)添加許多項(xiàng)目,其步驟如下。
1)選擇菜單的【工程】
2)選擇【部件】
4.1MODBUSASCII
Modbus分為ASCII和RTU兩種,ASCII采用的格式和校驗(yàn)相對(duì)簡(jiǎn)單,本文采用ASCII格式,并僅對(duì)使用的功能碼進(jìn)行說(shuō)明,更多的信息,請(qǐng)參看協(xié)議的詳細(xì)說(shuō)明。
1)通信格式
LRC算法:ADRH+CMDH+DATAH,然后取2的補(bǔ)碼。
2)功能碼
05,寫(xiě)入線圈
01,讀線圈狀態(tài)
06,寫(xiě)入單個(gè)字寄存器
4.2VB與PLC通信的實(shí)現(xiàn)
以下舉例說(shuō)明現(xiàn)場(chǎng)設(shè)備與PLC通信的實(shí)現(xiàn)。
1)控制要求:控制PLC的起動(dòng)、停止,并顯示運(yùn)行狀態(tài)(綠色為運(yùn)行,紅色為停止);能夠用交替型按鈕控制Y0,Y1,并用指示燈顯示Y0,Y1狀態(tài)(綠色為運(yùn)行,紅色為停止);能夠?qū)256,D512兩個(gè)寄存器進(jìn)行數(shù)值寫(xiě)入的操作。
2)實(shí)現(xiàn)思路:PLC起動(dòng)停止的標(biāo)志位為M1072,查DVP協(xié)議,知道地址為H0C30,按功能碼01操作;同樣Y0,Y1的地址分別為H0500,H0501。寫(xiě)入FF00為ON,0000為OFF,按功能碼05操作;D256,D512地址分別為H1100,H1200,按功能碼06操作即可。
3)VB接口
用按鈕控制PLC的起動(dòng)停止,Y0、Y1的ON/OFF及D256、D512寫(xiě)完數(shù)據(jù)的發(fā)送;用Shape組件做指示燈,表示PLC的運(yùn)行狀態(tài)和Y的狀態(tài);用timer組件不停的讀取M1072的狀態(tài),以判斷PLC的運(yùn)行情況;用MScomm控件實(shí)現(xiàn)PC與PLC的通信。
4)編程實(shí)現(xiàn)的代碼構(gòu)成
(1)LRC算法校驗(yàn)的實(shí)現(xiàn)
PublicFunctionLRC(strAsString)AsString
c=0
l=Len(str)
Forc=c+1Tol
c_data=Mid$(str,c,2)
d_lrc=d_lrc+Val("&H"+c_data)
c=c+1
Nextc
Ifd_lrc>&HFFThen
d_lrc=d_lrcMod&H100
EndIf
h_lrc=Hex(&HFF-d_lrc+1)
IfLen(h_lrc)>2Then
h_lrc=Mid(h_lrc,Len(h_lrc)-1,2)
EndIf
LRC=h_lrc
EndFunction
(2)運(yùn)行的開(kāi)始就判斷PLC的狀態(tài)并設(shè)置標(biāo)志位
'初次運(yùn)行打開(kāi)串口,并顯示PLC運(yùn)行狀態(tài)
PrivateSubForm_Load()
Dims1AsString
Dims2AsString
Dims22AsString
Dims3AsString
Dims4AsString
MSComm1.PortOpen=True
s2="01010C300001"
s22=LRC(s2)
s1=":"+s2+s22+Chr$(13)+Chr$(10)
MSComm1.Output=s1
s3=MSComm1.Input
s4=Mid$(s,6,8)
Ifs4="0C30FF00"Then
plc=1'PLC為運(yùn)行標(biāo)志
Else
plc=0'PLC為停止標(biāo)志
EndIf
EndSub
(3)下面一段為用指示燈表示PLC的運(yùn)行狀態(tài)
PrivateSubTimer5_Timer()
Dims1AsString
Dims2AsString
Dims22
Dims3AsString
Dims4AsString
s2="01010C300001"
s22=LRC(s2)
s1=":"+s2+s22+Chr$(13)+Chr$(10)
MSComm1.Output=s1
s3=MSComm1.Input
s4=Mid$(s3,8,2)
Ifs4="31"Then
plc=1'PLC為運(yùn)行標(biāo)志
Else:Ifs4="30"Thenplc=0'PLC為停止標(biāo)志
EndIf
Ifplc=1Then
Label2.Caption="PLC正在運(yùn)行......"
Shape1.FillColor=RGB(0,255,0)'green
Else
Label2.Caption="PLC已經(jīng)停止"
Shape1.FillColor=RGB(255,0,0)'red
EndIf
EndSub
(4)PLC的起動(dòng)與停止
'起動(dòng)PLC
PrivateSubstart_Click()
DimstroutAsString
Timer5.Enabled=False
str="00050C30FF00"'M1072為PLC起動(dòng)停止標(biāo)志位。查地址表,M1072為OC30.FF00為置
ON,0000為置OFF。
'以上都是固定格式,要牢記。
LRCC=LRC(str)'計(jì)算str的lrc校驗(yàn)碼。
strout=":"+str+LRCC+Chr$(13)+Chr$(10)'欲傳送之?dāng)?shù)據(jù)。13為D,10為A
MSComm1.Output=strout
Timer5.Enabled=True
EndSub
'停止PLC
PrivateSubstop_Click()
DimstroutAsString
Timer5.Enabled=False
str="00050C300000"
LRCC=LRC(str)
strout=":"+str+LRCC+Chr$(13)+Chr$(10)
MSComm1.Output=strout
Timer5.Enabled=True
EndSub
Y0、Y1的ON/OFF與PLC起動(dòng)/停止的控制方式相同,指示燈的表示方式也相同。D256,D512數(shù)據(jù)寫(xiě)入的操作類(lèi)似,限于篇幅其它代碼就不再列出了。
5結(jié)束語(yǔ)
VB語(yǔ)言易于編程使用,為與串行設(shè)備的通信提供了很大的方便。臺(tái)達(dá)PLC采用標(biāo)準(zhǔn)的目前廣為流行的MODBUS協(xié)議,為實(shí)現(xiàn)PLC與監(jiān)控計(jì)算機(jī)的通信提供了簡(jiǎn)化的平臺(tái)。由于臺(tái)達(dá)所有的機(jī)電產(chǎn)品都支持MODBUS協(xié)議,所以,掌握了VB與PLC通信過(guò)程,也就等于掌握了PC與臺(tái)達(dá)所有機(jī)電產(chǎn)品的通信。
標(biāo)簽:
中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>新品發(fā)布:CD300系列總線型伺服驅(qū)動(dòng)器
2024-10-31
2024-10-31
2024-10-31
新勢(shì)能 新期待|維智B1L直線伺服驅(qū)動(dòng)器
2024-10-31
纖薄之間,化繁為簡(jiǎn)|合信全新simple系...
2024-10-29
2024-10-18
推薦專題
更多>