在工業(yè)生產(chǎn)中,人們常常面臨著數(shù)據(jù)采集與管理。作為工廠自動(dòng)化的三大支柱可編程控制器 plc(programmable logic controller),由于其安全可靠,廣泛的用于數(shù)據(jù)采集與控制。生產(chǎn)過程中,要監(jiān)視plc內(nèi)部的數(shù)據(jù)與運(yùn)行狀況,選用市場(chǎng)上的人機(jī)界面或組態(tài)軟件,雖然功能豐富,但大都價(jià)格昂貴,在一些中小規(guī)模的生產(chǎn)場(chǎng)合,人們希望能自己用高級(jí)語言開發(fā)一個(gè)簡(jiǎn)易實(shí)用的通信程序。使用visual basic 6.0,開發(fā)串行通信程序時(shí),有兩種方法,一種是用windows api函數(shù),另一種是用vb支持的通信控件 mscomm。以下介紹使用通信控件方式實(shí)現(xiàn)通訊
1.硬件
采用sc-09編程電纜,連接pc串口與plc編程口實(shí)現(xiàn)通訊。
2.plc編程口的通信協(xié)議簡(jiǎn)介
通信格式:
波特率9600,偶校驗(yàn),8位數(shù)據(jù)位,一位停止位。 具體請(qǐng)參考有關(guān)資料,以下舉例說明其通訊格式
1)、device read(讀出軟設(shè)備狀態(tài)值)
計(jì)算機(jī)向plc發(fā)送:
3.具體程序說明
mscomm控件簡(jiǎn)介用來提供簡(jiǎn)單的串行端口通信功能,也可以用來創(chuàng)建功能完備、事件驅(qū)動(dòng)的高級(jí)通信工具。mscomm控件提供了一系列標(biāo)準(zhǔn)通信命令的使用界面。使用它可以建立與串行端口的連接,通過串行端口再連接到其它設(shè)備(如調(diào)制解調(diào)器、plc),發(fā)出命令,交換數(shù)據(jù),以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯(cuò)誤。
數(shù)據(jù)讀與寫采用函數(shù)input和output
(1)窗口加載程序
private sub form_load()
mscomm1.commport = 1 ‘選擇com1口
mscomm1.settings = 9600,e,7,1
if mscomm1.portopen=false then mscomm1.portopen=true
end sub
(2)數(shù)據(jù)讀取子程序:
public function getdata(byval startaddress as string, byval getbytes as integer, byval hex_bytes as string) as string
mscomm1.inputlen = getbytes * 2 + 4
mscomm1.output = stx + cmd_read + startaddress + hex_bytes + etx + getsumchk(cmd_read + startaddress + hex_bytes + etx)
‘傳送數(shù)據(jù)組成:起始符+命令+首地址+數(shù)據(jù)位+結(jié)束符+和檢驗(yàn)碼
getdata = mscomm1.input
mscomm1.inbuffercount = 0
mscomm1.inputlen = 0
end function