{------------------------------------------------------------------------------}
|
{ÏîÄ¿Ãû³Æ£ºactuatorlib¶¯Ì¬¿â }
|
{µ¥ÔªÃû³Æ£ºactuatorlib.pas }
|
{°æ±¾°æ´Î£º3.2.1 }
|
{¹¦ÄÜÃèÊö£º»ùÓÚÁ¸Ê³Ë®·ÖÒÇActuatorÇý¶¯·â×°µÄ Dll½Ó¿ÚͨѶ¿â }
|
{½¨Á¢ÈÕÆÚ£º2023-10-27 }
|
{ÐÞ¸ÄÐ޸ģº2025-01-20 }
|
{°æÈ¨ËùÓУºÀîÁ¼Í¥ liangtingli@outlook.com }
|
{------------------------------------------------------------------------------}
|
|
unit ActuatorLib;
|
|
interface
|
|
//¾²Ì¬ÉùÃ÷ lib¿â
|
const
|
actuator_dll = 'core\Actuator.dll'; {×Ô¶¨Òå¿â}
|
|
//PLCÖ¸Áî´úÂë
|
const
|
PLC_READY_GRAIN = $01; //Á¸ÖÖ×¼±¸ÃüÁî´úÂ루Á¸ÖÖÒÑÐ޸ģ©
|
PLC_READY_FINISH = $02; //·µ»Ø×¼±¸Íê³É
|
PLC_DETECT_START = $03; //¼ì²âÆô¶¯ÃüÁî
|
PLC_DETECT_FINISH = $04; //·µ»Ø¼ì²âÍê±Ï
|
PLC_DEVICE_WR_RESET = $FE; //É豸ˮ·ÖÒǸ´Î»ÃüÁî
|
PLC_DEVICE_WR_FAULT = $FF; //·µ»ØË®·ÖÒǹÊÕÏ´úÂë
|
|
//WRË®·ÖÒÇÖ¸Áî´úÂë
|
const
|
WR_READY = $01; //Ë®·ÖÒÇ×¼±¸Ö¸Áî
|
WR_DETECT = $02; //Ë®·ÖÒǼì²âÖ¸Áî
|
WR_VERIFY = $03; //Ë®·ÖÒÇУÑéÖ¸Áî
|
WR_RESET = $04; //Ë®·ÖÒǸ´Î»Ö¸Áî
|
WR_GOODS = $05; //Á¸ÖÖ±ä¸üÖ¸Áî
|
|
WR_VALV01 = $07; //ÉÏ·§ÃÅ¿ª
|
WR_VALV02 = $08; //ÉÏ·§ÃŹØ
|
WR_VALV03 = $09; //Ï·§ÃÅ¿ª
|
WR_VALV04 = $0A; //Ï·§ÃŹØ
|
WR_VALV05 = $0B; //Ë«·§ÃÅ¿ª
|
WR_VALV06 = $0C; //Ë«·§ÃŹØ
|
WR_VIBRATE_01 = $0D; //Õñ¶¯¿ª
|
WR_VIBRATE_02 = $0E; //Õñ¶¯¹Ø
|
|
|
{¶¨Òå Dllº¯Êýµ÷ÓÃÉêÃ÷}
|
//´´½¨³õʼ»¯¿Í»§PLCÉ豸¾ä±úctx
|
//strIp: IPµØÖ·
|
//nPort: ÍøÂç¶Ë¿Ú
|
//ACTUATOR_API void* CreatePlcDevice(const char* strIp, int nPort);
|
function CreatePlcDevice(strIp:PChar; nPort:Integer):Pointer; stdcall; external actuator_dll;
|
|
//´´½¨Ë®·ÖÒǾä±úctx
|
//szSerialPort: ´®¿ÚÃû
|
//baud: ²¨ÌØÂÊ
|
//parity: УÑéÀàÐÍ
|
//data_bit: Êý¾Ýλ
|
//stop_bit: ֹͣλ
|
//ACTUATOR_API void* CreateWrDevice(const char* szSerialPort, int baud, char parity, int data_bit, int stop_bit);
|
function CreateWrDevice(szSerialPort:PChar; baud:Integer; parity:Char; data_bit:Integer; stop_bit:Integer):Pointer; stdcall; external actuator_dll;
|
|
//Á¬½Ó¿Í»§É豸»òË®·ÖÒÇ×°ÖÃ
|
//ctxDev : É豸¾ä±ú
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int ConnectDevice(void* ctxDev);
|
function ConnectDevice(ctxDev:Pointer):Integer; stdcall; external actuator_dll;
|
|
//»ñȡ״̬»òÁ¸ÖÖ¸ü¸ÄÐÅÏ¢
|
//ctxDev : É豸¾ä±ú
|
//nState £º×´Ì¬×Ö£¬ÈçÏÂ״̬²»»áÖØ¸´
|
// 0x01: Á¸ÖÖÒÑÐÞ¸Ä
|
// 0x03: ¿ªÊ¼²âÊÔ
|
// 0xFE: ¸´Î»ÃüÁÓÅÏȼ¶×î¸ß
|
// ÆäËû£º ΪдÈë״̬
|
//nGoodType: Á¸ÖÖ±àºÅ
|
// 0x01: СÂó,
|
// 0x02: Ë®µ¾
|
// 0x03: »Æ¶¹
|
// 0x04: ÓñÃ×
|
//·µ»ØÖµ£º´ÓÈë²Î·µ»Ø ״̬×Ö¡¢Á¸ÖÖ±àºÅ¡¢Ö´Ðнá¹û(СÓÚ0--´íÎó)
|
//ACTUATOR_API int ReadState(void* ctxDev, unsigned short* nState, unsigned short* nGrainType);
|
function ReadState(ctxDev:Pointer; nState:PWord; nGrainType:PWord):Integer; stdcall; external actuator_dll;
|
|
//д»Ø×´Ì¬
|
//ctxDev : É豸¾ä±ú
|
//nState £º×´Ì¬×Ö£¬ÈçÏÂ״̬²»»áÖØ¸´
|
// 0x02: ×¼±¸ÒÑÍê³É
|
// 0x04: ¼ì²âÍê³É
|
// 0xFF: Ë®·ÖÒǹÊÕÏ
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int WriteState(void* ctxDev, unsigned short nState);
|
function ResponseState(ctxDev:Pointer; nState:Word):Integer; stdcall; external actuator_dll;
|
|
//»Ø´«¼ì²âÊý¾Ý
|
//ctxDev : É豸¾ä±ú
|
//nDatas £ºÊý×飬Êý¾Ý˳ÐòÈçÏÂ
|
// Á¸ÖÖ±àÂë
|
// º¬Ë®ÂÊ£¬ È¡Õû = ÔÖµ*100
|
// ÈÝÖØ±È£¬ È¡Õû = ÔÖµ*100
|
//nSize : Êý¾Ý¸öÊý
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int UploadData(void* ctxDev, unsigned short* nDatas, unsigned short nSize = 3);
|
function UploadData(ctxDev:Pointer; nDatas:PWord; nSize:Word=3):Integer; stdcall; external actuator_dll;
|
|
//Ï·¢ÃüÁîÐÅÏ¢
|
//ctxDev : É豸¾ä±ú
|
//nCmdType £ºÃüÁî×Ö£¬ÈçÏÂÃèÊö
|
// 0x01: Á¸ÖÖÒÑÐÞ¸Ä
|
// 0x02: ¿ªÊ¼²âÊÔ
|
// 0x03: У׼ÃüÁ¼´Îª±ê¶¨Ò³Ãæ¼ì²â°´Å¥ÃüÁ
|
//nGoodType: Á¸ÖÖ±àºÅ
|
// 0x01: СÂó,
|
// 0x02: Ë®µ¾
|
// 0x03: »Æ¶¹
|
// 0x04: ÓñÃ×
|
// µ±nCmdType Ϊ0x02£¬0x03ʱ£¬²»Óÿ¼ÂÇÁ¸ÖÖ±àºÅ
|
// nResponseSeconds: ÏìӦʱ¼ä£¬ÒÔÃë¼ÆËã
|
// nResponseUSeconds: ÏìӦʱ¼ä£¬ÒÔ΢Ãî¼ÆË㣬ÈôСÓÚÃ룬ȫ²¿ÓÃ΢Ãî±íʾ¡£
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int SendCommands(void* ctxDev, unsigned short nCmdType, unsigned short nGrainType = 0, unsigned int nResponseSeconds = 0, unsigned int nResponseUSeconds = 500000);
|
function SendCommands(ctxDev:Pointer; nCmdType:Word; nGrainType:Word=0; nResponseSeconds:Integer=20; nResponseUSeconds:Integer=0):Integer; stdcall; external actuator_dll;
|
|
//¸´Î»ÃüÁî
|
//ctxDev : É豸¾ä±úÖ¸Õë
|
//·µ»ØÖµ£ºÎÞ£¬
|
//ACTUATOR_API int __stdcall ResetCommand(void* ctxDev);
|
function ResetCommand(ctxDev:Pointer):Integer;stdcall; external actuator_dll;
|
|
//Ï·¢²ÎÊý
|
//ctxDev : É豸¾ä±ú
|
//nStartFreq £ºÆðʼƵÂÊ
|
//nStopFreq £º ÖÕֹƵÂÊ
|
//nStepFreq £º ²½³¤
|
//nDecayCode £ºË¥¼õÂë
|
//nAscValid £º ASC ÄÚ²¿/ÍⲿÓÐЧ£¬ ȡֵΪ 0£ºÄÚ²¿ÓÐЧ£¬ 1£ºÍⲿÓÐЧ
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int WriteParams(void* ctxDev, unsigned short nStartFreq, unsigned short nStopFreq,
|
// unsigned short nStepFreq, unsigned short nDecayCode, unsigned short nAscValid);
|
function WriteParams(ctxDev:Pointer; nStartFreq,nStopFreq,nStepFreq,nDecayCode,nAscValid:Word):Integer; stdcall; external actuator_dll;
|
|
//¶ÁÈ¡¼ì²âÐÅÏ¢
|
//ctxDev : É豸¾ä±ú
|
//nDatas £ºÊý×飬Êý¾Ý˳ÐòÈçÏÂ
|
// µçѹֵ
|
// ÖØÁ¿ /100
|
// ÎÂ¶È /100
|
// ʪ¶È /100
|
// nSize : ¶ÁÈ¡4¸ö¼Ä´æÆ÷
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int ReadDatas(void* ctxDev, unsigned short* nDatas, unsigned short nSize = 4);
|
function ReadDatas(ctxDev:Pointer; nDatas:PWord; nSize:Word=4):Integer; stdcall; external actuator_dll;
|
|
//¶ÁȡɨƵֵ,ÆäʵΪµçƽֵ£¬
|
//ctxDev : É豸¾ä±ú
|
//nVcc £ºµçƽֵָÕë
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int ReadVcc(void* ctxDev, unsigned short* nVcc);
|
function ReadVcc(ctxDev:Pointer; nVcc:PWord):Integer; stdcall; external actuator_dll;
|
function ReadWeight(ctxDev:Pointer; nWg:PWord):Integer; stdcall; external actuator_dll;
|
function CalcValue(nDValue:Word; Coef0,Coef1,Coef2,Coef3,Coef4:double):double; stdcall; external actuator_dll;
|
|
//Ïú»ÙË®·ÖÒÇ»òPLCÉ豸
|
//ctxDev : É豸¾ä±úÖ¸Õë
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int DestroyDevice(void* ctxDev);
|
function DestroyDevice(ctxDev:Pointer):Integer; stdcall; external actuator_dll;
|
|
//¶Ï¿ªË®·ÖÒÇ»òPLCÉ豸Á¬½Ó
|
//ctxDev : É豸¾ä±úÖ¸Õë
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int __stdcall Disconnect(void* ctxDev)
|
function Disconnect(ctxDev:Pointer):Integer; stdcall; external actuator_dll;
|
|
|
//Ëã·¨º¯Êý
|
//x Ϊ²âÁ¿Öµ
|
//y Ϊʵ¼ÊÖµ
|
//n ΪÄâºÏ´ÎÊý
|
//nSampleNumber Ñù±¾ÊýÁ¿
|
//·µ»ØÖµ£ºÐ¡ÓÚ0 ±íʾ ´íÎó£¬
|
//ACTUATOR_API int Linearize(float x[], float y[], double Coefficient[], const int n = 2, const int nSampleNumber = 5);
|
function Linearize(x,y:PSingle; Coefficient:PDouble; n:integer=2; nSampleNumber:integer=5):Integer; stdcall; external actuator_dll;
|
//ACTUATOR_API int __stdcall PolyNomialFit(double x[], double y[], double Coefficient[], const int nDegree = 3, const int nSampleNumber = 5);
|
function PolyNomialFit(x,y:PDouble; Coefficient:PDouble; n:integer=2; nSampleNumber:integer=5):Integer; stdcall; external actuator_dll;
|
|
//¶Á¹Ì¼þ°æ±¾ºÅ
|
function ReadVersion(ctxDev:Pointer; Version:PWord; nSize:Word=2):Integer; stdcall; external actuator_dll;
|
|
implementation
|
|
end.
|