數(shù)控銑床Internet遠程控制的一種實現(xiàn)
因特網(wǎng)的分布廣泛使得建設基于因特網(wǎng)的遠程控制系統(tǒng)成為一種可能。基于因特網(wǎng)的遠程控制的特點有以下幾點:
·傳輸通道是因特網(wǎng)。使用的協(xié)議是tcp/ip協(xié)議。因此, 對于采用因特網(wǎng)技術開發(fā)出來的遠程控制技術,可以在采用tcp/ip協(xié)議的網(wǎng)絡上使用, 一般不需要修改。
·系統(tǒng)開發(fā)周期短、充分利用了現(xiàn)有的網(wǎng)絡資源; 維護費用小。
·具有很高的靈活性, 實現(xiàn)了真正的無處不在的遠程控制。
·基于因特網(wǎng)的遠程控制技術是不斷發(fā)展的技術。隨著因特網(wǎng)技術的發(fā)展, 基于因特網(wǎng)的遠程控制技術也在不斷的發(fā)展。
·存在不確定的時延問題。由于網(wǎng)絡有限帶寬和不確定路由造成的大且變化的網(wǎng)絡時延, 網(wǎng)絡阻塞也可能造成的數(shù)據(jù)包丟失。
目前, 基于因特網(wǎng)的機器人控制系統(tǒng)普遍都采用了客戶/服務器(c/s)網(wǎng)絡模型, 通過網(wǎng)絡發(fā)出控制命令。
遠程控制的實現(xiàn)方法
·建立遠程控制的構架, 使的在任何一臺連接到因特網(wǎng)的電腦上都可以通過瀏覽器控制異地數(shù)控銑床的工作狀態(tài)。
·為了實現(xiàn)以上功能, 首先得建立一個本地控制函數(shù), 此函數(shù)功能以動態(tài)鏈接庫形式表現(xiàn)出來。其次,以網(wǎng)頁的形式設計一個控制銑床的頁面。設計一個服務器上運行的servlet, 通過動態(tài)鏈接庫調用本地函數(shù),把遠程控制的命令轉化為控制指令。
筆者用jbuilder建立servlet,接受網(wǎng)頁信息和調用類函數(shù);建立一個本地函數(shù)。用frontpage設計網(wǎng)頁。用c++builder編寫一個本地函數(shù)的動態(tài)鏈接庫dll,它能快速調用advantech驅動軟件包,實現(xiàn)對底層數(shù)字量i/o卡的控制。
系統(tǒng)總體設計
基于internet的數(shù)控銑床的遠程控制系統(tǒng)的結構如圖1所示。這是一個典型的三層b/s結構。

第一層是前臺即瀏覽器。用戶通過瀏覽器訪問該系統(tǒng)而無需安裝任何軟件。 用戶在網(wǎng)頁上輸入控制銑床的運動信息比如:
x軸、y軸、z軸三方向的進給、停止, 主軸的轉動以及停止。
第二層servlet是運行在jbuilder自帶的服務器tomcat4.0上的小程序。servlet負責調用本地函數(shù),并把瀏覽器傳送的信息轉化成本地函數(shù)指令。
第三層是數(shù)控銑床的本地控制系統(tǒng)。本地控制系統(tǒng)執(zhí)行本地函數(shù)的發(fā)出的命令, 并將自己的狀態(tài)返回給本地函數(shù),本地函數(shù)把這些狀態(tài)信息傳遞給servlet。本系統(tǒng)中由bordland c++builder 進行遠程控制,建立了一個dll動態(tài)的鏈接庫,調用本地函數(shù)。本地函數(shù)是jbuilder建立的類函數(shù), 此函數(shù)的功能由dll實現(xiàn)。
數(shù)控教學銑床的工作臺是由步進電機實現(xiàn)控制的。采用信號發(fā)生器發(fā)出的給定脈沖(cp)控制步進電機的旋轉步數(shù),dir的高低電平來控制電機的正反轉。
可以改變脈沖頻率來調節(jié)銑床進給的快慢。
軟件的設計
c++builder撰寫動態(tài)鏈結函式庫dll建立dll專案的方式和一般應用程式大致相同。使用dll有兩種方式:明確呼叫和不明確呼叫。
不明確呼叫即靜態(tài)調用法。該方法是利用鏈結一個記載輸入函式的函式庫檔案(lib), 來進行鏈結, 如此系統(tǒng)會自動將該dll載入,同時在使用完畢后將其釋放, 不必由使用者(也就是呼叫它的函式)來進行載入及釋放的動作。所謂明確呼叫(explicited linked)是使用loadlibrary函式來載入dll。使用freelibrary函式來釋放dll。使用明確呼叫的優(yōu)點在于,可以完全控制該dll的載入及釋放, 最有效地利用系統(tǒng)資源。在本系統(tǒng)中我們采用此種方式:
static{system.loadlibrary(“project9”);} //調用系統(tǒng)加載庫
java與 c++的連接方法
jbuilder是java的開發(fā)工具,而c++builder是c的開發(fā)工具。java連接c++的方法是,先將c++語言所編寫的程序構造成動態(tài)鏈接函數(shù)庫(dll), 再由java程序調用 dll庫中的函數(shù),使得dll庫中函數(shù)被java看作是“方法”(method)。dll我們在前面已經(jīng)介紹過。不過這種方法是直接用其他編程語言所提供,而不是java所編寫, 所以將其方法稱為“原生方法”(native method)。我們采用的是jni方法來進行兩者之間的接口。
javasoft公司提出了jni的標準接口。它使運行于java虛擬機上的java代碼與用其他語言編寫的庫和應用程序能夠相互調用。jni允許本地方法建立、使用和更新java對象,調用java方法和引用java類。也允許java代碼調用c、c++、assembly等語言編成的程序和庫。
實現(xiàn)步驟
開發(fā)環(huán)境: 操作系統(tǒng)為 windows2000平臺java applet的開發(fā)工具為borland jbuilder8,本地方法的開發(fā)工具為bordland c++builder 6。
jni—java native interface specification(java本地接口規(guī)范)jni是一種編程接口,下面將按步驟介紹使用jni的方法。
·ava類中要用本地代碼實現(xiàn)的方法用native修飾, 構造類初始化器裝入實現(xiàn)本地方法的庫。
·譯 java類, 并用javah工具生成 c++語言頭文件, jsvah為jdki1.2帶的一個工具。
·編寫本地代碼并編譯成project5.dll,放入winnt的system32目錄下, 以使java vm能找到這個庫。
servlet rvlet為服務器端的java的小程序,與運行在客戶端的applet程序相對應,他們都是運用java語言編寫的程序。servlet沒有main方法,只有一些特定的方法用于啟動, 執(zhí)行, 和退出。它可以與運行在客戶端的applet程序進行交互,也可以直接與客戶端的html頁面交互。servlet是對支持java的服務器的一般擴充,最常見的用途是擴展web服務器,提供非常安全的、可移植的、易于使用的cgi替代品。servlet完全運行在java虛擬機上,由于在服務器端運行, 因此它不依賴于瀏覽器的兼容性。
在《form》標記中調用servlet。html格式使用戶能在 web頁面(即從瀏覽器)上輸入數(shù)據(jù), 并向 servlet提交數(shù)據(jù)。遠程控制頁面如圖2所示。

結束語
以有代表性的數(shù)控銑床控制機構為研究對象,從理論和實現(xiàn)方法上對基于因特網(wǎng)的遠程控制系統(tǒng)進行了研究。運用c++builder、jbuilder實現(xiàn)了跨平臺的操作,最終完成數(shù)控教學銑床的遠程控制。
文章版權歸西部工控xbgk所有,未經(jīng)許可不得轉載。