本發(fā)明涉及計算機應用技術(shù)領(lǐng)域,具體地說是一種實現(xiàn)ERP系統(tǒng)與機床設(shè)備通信并采集數(shù)據(jù)的裝置。
背景技術(shù):
在ERP業(yè)務(wù)系統(tǒng)中根據(jù)尤其在生產(chǎn)管理、車間管理等模塊,需要結(jié)合機床設(shè)備運行數(shù)據(jù)實現(xiàn)計劃的輔助排產(chǎn)與分析計劃安排是否合理,是否超過設(shè)備負荷;在工人加工過程中,需要先將設(shè)備數(shù)據(jù)記錄并手動錄入ERP系統(tǒng)中,ERP系統(tǒng)不具備與硬件設(shè)備直接聯(lián)網(wǎng)取數(shù)的能力。
在不同車間中,有來自不同生產(chǎn)廠家的機床設(shè)備,硬件設(shè)備。不同設(shè)備的驅(qū)動程序差異大,不同取數(shù)方法參數(shù)也不近相同,針對不同設(shè)備的取數(shù),不同取數(shù)方式,如實時采集、狀態(tài)變動采集,定時采集等需開發(fā)不同技術(shù)接口,ERP系統(tǒng)需單獨開發(fā)程序,工作量大且不可復用。
技術(shù)實現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種實現(xiàn)ERP系統(tǒng)與機床設(shè)備通信并采集數(shù)據(jù)的裝置,實現(xiàn)驅(qū)動DLL的運行時動態(tài)引用,實現(xiàn)對不同設(shè)備的單獨實現(xiàn),封裝成基于TCP/IP統(tǒng)一的對外接口,ERP系統(tǒng)可直接通過網(wǎng)絡(luò)編程進行接口取數(shù)而不用考慮取數(shù)細節(jié)。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
一種實現(xiàn)ERP系統(tǒng)與機床設(shè)備通信并采集數(shù)據(jù)的裝置,包括通過反射、泛型技術(shù)實現(xiàn)驅(qū)動DLL動態(tài)導入,基于TCP\IP協(xié)議的網(wǎng)絡(luò)傳輸方式,運用數(shù)據(jù)序列化算法將數(shù)據(jù)序列化為XML或JSON數(shù)據(jù)交互,支持不同類型的接口方式,可通過配置ERP系統(tǒng)以及硬件設(shè)備的取數(shù)要求,結(jié)合配置文件中的工作模式項,通過調(diào)用不同的創(chuàng)建方法,創(chuàng)建不同的對象實例,實現(xiàn)系統(tǒng)不同的取數(shù)方式與工作方式,支持對設(shè)備取數(shù)的多種運行要求;
通過以下步驟實現(xiàn)通訊和數(shù)據(jù)采集:
包括非托管DLL導入函數(shù),實現(xiàn)運行時動態(tài)導入機床驅(qū)動DLL的程序;
將設(shè)備數(shù)據(jù)序列化為可識別的XML與JSON數(shù)據(jù);
實現(xiàn)接口編程;
讀取配置信息,并根據(jù)配置信息加載對象;
執(zhí)行程序,通過配置文件配置對象信息以不同工作模式運行。
進一步的,實現(xiàn)接口編程,支持不同類型的接口方式,包括Web service,Socket Server,Socket Client三種工作模式。
進一步的,配置信息包括實體對象、業(yè)務(wù)對象、數(shù)據(jù)訪問對象,程序運行模式。
進一步的,通過DLLIMPORT在運行時導入非托管的驅(qū)動DLL,支持DLL文件運行時更新或替換。
本裝置可通過配置與動態(tài)DLL導入實現(xiàn)對不同生產(chǎn)廠家的基于串口的機床設(shè)備通訊;經(jīng)過對數(shù)據(jù)進行封裝、序列化后可通過基于TCP\IP協(xié)議的數(shù)據(jù)接口實現(xiàn)與外部系統(tǒng)進行數(shù)據(jù)交互;基于不同ERP系統(tǒng)取數(shù)要求,本裝置可提供Web service接口訪問,可作為Socket服務(wù)端與ERP系統(tǒng)Socket客戶端程序交互,也可作為Socket客戶端與ERP系統(tǒng)Socket服務(wù)端交互;本裝置基于對不同平臺友好的XML或JSON作為數(shù)據(jù)載體,可支持基于不同技術(shù)平臺架構(gòu)的ERP系統(tǒng)。
本發(fā)明的一種實現(xiàn)ERP系統(tǒng)與機床設(shè)備通信并采集數(shù)據(jù)的裝置和現(xiàn)有技術(shù)相比,具有以下有益效果:
統(tǒng)一了對象實例創(chuàng)建、動態(tài)創(chuàng)建的方法,統(tǒng)一了不同設(shè)備相同的取數(shù)方法;
對Web service,Socket Server,Socket Client三種工作模式進行支持,可根據(jù)配置以任意一種模式進行運行,滿足不同取數(shù)要求;
提供系統(tǒng)擴展便利方式,可單獨部署,也可與現(xiàn)有產(chǎn)品集成;
接口實現(xiàn)與對象實例創(chuàng)建融合;
調(diào)用實現(xiàn)簡單易用;通過配置即可運行,降低了編程的復雜度,進而提高了編程的效率;
可良好解決ERP系統(tǒng)中對硬件數(shù)據(jù)進行取數(shù)的需求,通過標準接口技術(shù)同ERP系統(tǒng)原有功能的整合,ERP開發(fā)人員對串口設(shè)備的取數(shù),可基于本裝置通過配置或簡單編碼實現(xiàn),而無需自己實現(xiàn)全部相關(guān)代碼。
具體實施方式
下面結(jié)合具體實施例對本發(fā)明作進一步說明。
一種實現(xiàn)ERP系統(tǒng)與機床設(shè)備通信并采集數(shù)據(jù)的裝置,包括通過反射、泛型技術(shù)實現(xiàn)驅(qū)動DLL動態(tài)導入,基于TCP\IP協(xié)議的網(wǎng)絡(luò)傳輸方式,運用數(shù)據(jù)序列化算法將數(shù)據(jù)序列化為XML或JSON數(shù)據(jù)交互,支持不同類型的接口方式,可通過配置ERP系統(tǒng)以及硬件設(shè)備的取數(shù)要求,結(jié)合配置文件中的工作模式項,通過調(diào)用不同的創(chuàng)建方法,創(chuàng)建不同的對象實例,實現(xiàn)系統(tǒng)不同的取數(shù)方式與工作方式,支持對設(shè)備取數(shù)的多種運行要求;
通過以下步驟實現(xiàn)通訊和數(shù)據(jù)采集:
包括非托管DLL導入函數(shù),實現(xiàn)運行時動態(tài)導入機床驅(qū)動DLL的程序;
將設(shè)備數(shù)據(jù)序列化為可識別的XML與JSON數(shù)據(jù);
實現(xiàn)接口編程;
讀取配置信息,并根據(jù)配置信息加載對象;
執(zhí)行程序,通過配置文件配置對象信息以不同工作模式運行。
其中,支持不同類型的接口方式,包括Web service,Socket Server,Socket Client三種工作模式;
配置信息包括實體對象、業(yè)務(wù)對象、數(shù)據(jù)訪問對象,程序運行模式;
通過DLLIMPORT在運行時導入非托管的驅(qū)動DLL,支持DLL文件運行時更新或替換。
1、根據(jù)IEquipConnectBase接口對驅(qū)動DLL進行動態(tài)導入,
public interface IEquipConnectBase
{
/// <summary>
/// 打開連接
/// </summary>
/// <typeparam name="OpenParameter">參數(shù)類型</typeparam>
/// <param name="paramerer">參數(shù)對象</param>
void OpenConnect();
/// <summary>
/// 關(guān)閉連接
/// </summary>
/// <typeparam name="OpenParameter">參數(shù)類型</typeparam>
/// <param name="paramerer">參數(shù)對象</param>
void CloseConnect(OpenParameter paramerer);
/// <summary>
/// 獲取設(shè)備狀態(tài)
/// </summary>
/// <returns></returns>
string GetEquipState();
/// <summary>
/// 根據(jù)設(shè)備ID獲取設(shè)備當前參數(shù)
/// </summary>
/// <param name="ID">設(shè)備ID</param>
Equip1 GetEquipInformationByID(string ID);
/// <summary>
/// 根據(jù)指令獲取設(shè)備特定數(shù)據(jù)
/// </summary>
/// <param name="CommandString">指令</param>
/// <returns></returns>
object GetDataByCommand(string CommandString);
}
2、 DLL動態(tài)導入與方法實現(xiàn),
public static class Equip1Function
{
[DllImport(@"E:\EquipDLL\hfrdapi.dll")]
static extern void GetEquipInfo (int dwMilliseconds);
public static object GetEquipInfo()
{
int status;
byte mode = 0x60;
byte secnr = 0x00;
byte[] dataBuffer = new byte[256];
mode = 0x61; //密鑰
TyA_CS_Authentication2(g_hDevice, mode, (byte)(secnr * 4), ToDigitsBytes("FFFFFFFFFFFF"));
for (int i = 0; i < 4; i++)
{
int j;
byte cLen = 0;
status = TyA_CS_Read(g_hDevice, (byte)((secnr * 4) + i), dataBuffer, ref cLen);
if (status != 0 || cLen != 16)
{
return null;
}
byte[] bytesData = new byte[16];
for (j = 0; j < bytesData.Length; j++)
bytesData[j] = Marshal.ReadByte(dataBuffer, j);
}
return dataBuffer;
}
}
3、Socket服務(wù)端配置實現(xiàn),
啟動服務(wù)端程序后,裝置對外提供Socket服務(wù)監(jiān)聽,可針對服務(wù)端接口開發(fā)Socket客戶端,實現(xiàn)設(shè)備數(shù)據(jù)的取數(shù)。
應用場景:
設(shè)備數(shù)據(jù)的按需取數(shù),如實時獲取設(shè)備主軸轉(zhuǎn)速,溫度等運行參數(shù)。
4、Socket客戶端配置實現(xiàn),
業(yè)務(wù)系統(tǒng)可根據(jù)接口開發(fā)Socket服務(wù)端,本裝置作為Socket客戶端與服務(wù)端進行連接,當設(shè)備數(shù)據(jù)發(fā)生變化時,裝置自動向服務(wù)端發(fā)送設(shè)備變更數(shù)據(jù)。
應用場景:
用于設(shè)備運行狀態(tài)的監(jiān)聽。
5、設(shè)備信息類與序列化,
public class EquipInfor
{
public string EquipState;//設(shè)備狀態(tài)
public string Temperature;//溫度
public double RunSpeed;//主軸轉(zhuǎn)速
}
序列化后的Json數(shù)據(jù)
{"EquipState":"運行","Temperature":"45℃","RunSpeed":3500.0}
序列化后的XML數(shù)據(jù)
<xml version="1.0">
<EquipInfor xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EquipState>運行</EquipState>
<Temperature>45℃</Temperature>
<RunSpeed>3500</RunSpeed>
</EquipInfor>
通過上面具體實施方式,所述技術(shù)領(lǐng)域的技術(shù)人員可容易的實現(xiàn)本發(fā)明。但是應當理解,本發(fā)明并不限于上述的具體實施方式。在公開的實施方式的基礎(chǔ)上,所述技術(shù)領(lǐng)域的技術(shù)人員可任意組合不同的技術(shù)特征,從而實現(xiàn)不同的技術(shù)方案。
除說明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。