Rev 1 | Blame | Compare with Previous | Last modification | View Log | Download
/****************************************************************************//* Copyright (C) Siemens AG 1995 All Rights Reserved. *//****************************************************************************//* *//* version: @(#1)SAPI_S7.H V 1.00 *//* *//* This header file contains all defines, typedefinitions and prototypings *//* for using the S7 library of Siemens AG. It is the only file that must *//* be included in all source files of user applications that use S7 *//* calls. *//* *//* For standard calling convention use define S732STD_DLL. *//* *//****************************************************************************/#ifndef SAPI_S7_H#define SAPI_S7_H#pragma warning(disable : 4996)/*+-------------------------------------------------------------------+| returncodes for S7 calls |+-------------------------------------------------------------------+*//******* Important messages *****************************/#define S7_OK 0#define S7_ERR_RETRY (-1)#define S7_ERR (-2)#define S7_NO_MSG 0#define S7_UNKNOWN_MSG 1/*+-------------------------------------------------------------------+| IEC errors |+-------------------------------------------------------------------+*/#define S7_ERR_IEC_NO 0#define S7_ERR_IEC_LOWER_LAYER 1#define S7_ERR_IEC_NEG_RESPONSE 2#define S7_ERR_IEC_INVALID_REF 3#define S7_ERR_IEC_DATA_TYPE_MISMATCH 4#define S7_ERR_IEC_RESET_RECEIVED 5#define S7_ERR_IEC_RECEIVER_DISABLED 6#define S7_ERR_IEC_PARTNER_IN_WRONG_STATE 7#define S7_ERR_IEC_NO_ACCESS_TO_REM_OBJECT 8#define S7_ERR_IEC_RECEIVER_OVERRUN 9/*+-------------------------------------------------------------------+| detailed errors |+-------------------------------------------------------------------+*//******** general errors *******************************************/#define S7_ERR_NO_ERROR 0#define S7_ERR_UNKNOWN_ERROR 1#define S7_ERR_WRONG_CP_DESCR 2#define S7_ERR_NO_RESOURCE 3#define S7_ERR_INVALID_PARAMETER 7#define S7_ERR_TOO_LONG_DATA 8#define S7_ERR_TOO_MANY_DLL_USERS 9/******** invalid service ******************************************/#define S7_ERR_WRONG_IND_CNF 10#define S7_ERR_SERVICE_NOT_SUPPORTED 11/******** invalid communication reference (cref) or connection name */#define S7_ERR_INVALID_CREF 20#define S7_ERR_CONN_NAME_NOT_FOUND 23#define S7_ERR_NO_LDB_XDB_FILE 25/******** invalid order_id **************************************/#define S7_ERR_INVALID_ORDERID 30#define S7_ERR_ORDERID_USED 31/******** invalid r_id ******************************************/#define S7_ERR_INVALID_R_ID 40#define S7_ERR_R_ID_USED 41#define S7_ERR_NO_R_ID 42/******** invalid object *******************************************/#define S7_ERR_OBJ_UNDEFINED 50#define S7_ERR_OBJ_ATTR_INCONSISTENT 51#define S7_ERR_OBJ_ACCESS_DENIED 53/******** invalid data transfer ************************************/#define S7_ERR_INVALID_DATA_SIZE 80#define S7_ERR_RECEIVE_BUFFER_FULL 81#define S7_ERR_INVALID_DATARANGE_OR_TYPE 82#define S7_ERR_INVALID_SEGMENT 83/******** controller or CMI or FW problems *************************/#define S7_ERR_FW_ERROR 90/******** s7_mini_db_set() / s7_mini_db_get() errors ***************/#define S7_ERR_MINI_DB_TYPE 100#define S7_ERR_MINI_DB_VALUE 101/******** multi user errors ****************************************/#define S7_ERR_SERVICE_VFD_ALREADY_USED 112#define S7_ERR_SERVICE_CONN_ALREADY_USED 113/******** connection handling **************************************/#define S7_ERR_CONN_ABORTED 120#define S7_ERR_INVALID_CONN_STATE 121#define S7_ERR_MAX_REQ 122#define S7_ERR_CONN_CNF 123/******** state of cyclic read *************************************/#define S7_ERR_INVALID_CYCL_READ_STATE 130/******** SINEC problems *******************************************/#define S7_ERR_INSTALL 140#define S7_ERR_INTERNAL_ERROR 141#define S7_ERR_NO_SIN_SERV 142#define S7_ERR_NO_LICENCE 143/******** symbolic address problems ********************************/#define S7_ERR_SYMB_ADDRESS 150#define S7_ERR_SYMB_ADDRESS_INCONSISTENT 151/******** remote block problems ************************************/#define S7_ERR_REM_BRCV 160#define S7_ERR_REM_BSEND 161#define S7_ERR_REM_BSEND_CANCEL 162#define S7_ERR_REM_DATABASE_TOO_SMALL 163/******** pmc problems ********************************************/#define S7_ERR_NO_RCV_BLOCK 170/*+-------------------------------------------------------------------+| defines for s7_mini_db_set, s7_mini_db_get |+-------------------------------------------------------------------+*//* for trace target (type and values) */#define S7_MINI_DB_TRACE_TARGET 0 /* type */#define S7_TRACE_TARGET_BUFFER "0" /* value */#define S7_TRACE_TARGET_NEW_FILE "1" /* value */#define S7_TRACE_TARGET_OLD_FILE "2" /* value */#define S7_TRACE_TARGET_CONSOLE "3" /* value *//* for trace select (type and values) */#define S7_MINI_DB_TRACE_SELECT 1 /* type */#define S7_TRACE_SELECT_ADMIN_SERVICES "1" /* value */#define S7_TRACE_SELECT_CONN_SERVICES "2" /* value */#define S7_TRACE_SELECT_CRL_SERVICES "4" /* value */#define S7_TRACE_SELECT_OD_SERVICES "8" /* value */#define S7_TRACE_SELECT_VAR_SERVICES "16" /* value */#define S7_TRACE_SELECT_VFD_SERVICES "32" /* value */#define S7_TRACE_SELECT_DE2_SERVICES "64" /* value */#define S7_TRACE_SELECT_CYCL_VAR_SERVICES "128" /* value */#define S7_TRACE_SELECT_RECEIVE_SERVICES "256" /* value */#define S7_TRACE_SELECT_OTHER_SERVICES "512" /* value */#define S7_TRACE_SELECT_PBK_SERVICES "1024" /* value */#define S7_TRACE_SELECT_PMC_SERVICES "2048" /* value */#define S7_TRACE_SELECT_ALL "65535" /* value *//* for trace depth (type and values) */#define S7_MINI_DB_TRACE_DEPTH 2 /* type */#define S7_TRACE_DEPTH_OFF "0" /* value */#define S7_TRACE_DEPTH_USER "1" /* range "1" to "99" *//* can be used by *//* user */#define S7_TRACE_DEPTH_EXCEPT "100" /* value */#define S7_TRACE_DEPTH_INTERFACE "101" /* value */#define S7_TRACE_DEPTH_OTHER "102" /* value */#define S7_TRACE_DEPTH_LIB0 "103" /* value for internal *//* use only */#define S7_TRACE_DEPTH_LIB0_PDU "104" /* value for internal *//* use only */#define S7_TRACE_DEPTH_S7_BUF S7_TRACE_DEPTH_LIB0#define S7_TRACE_DEPTH_SCP_BUF S7_TRACE_DEPTH_LIB0_PDU/* for trace maxFiles and maxLines */#define S7_MINI_DB_TRACE_MAXFILES 99 /* type */#define S7_MINI_DB_TRACE_MAXLINES 32768 /* type *//* for trace filename (type only) */#define S7_MINI_DB_TRACE_FILENAME 3 /* type *//* for number of trace lines (type only) */#define S7_MINI_DB_TRACE_NO_LINES 4 /* type *//* for initiate request (type only) */#define S7_MINI_DB_INIT_REQ_AMQ_CALLING 10 /* only set value */#define S7_MINI_DB_INIT_REQ_AMQ_CALLED 11 /* only set value */#define S7_MINI_DB_INIT_REQ_PDU_SIZE 12 /* only set value *//* for initiate response (type only) */#define S7_MINI_DB_INIT_RSP_AMQ_CALLING 20 /* only set value */#define S7_MINI_DB_INIT_RSP_AMQ_CALLED 21 /* only set value */#define S7_MINI_DB_INIT_RSP_PDU_SIZE 22 /* only set value *//* for initiate indication (type only) */#define S7_MINI_DB_INIT_IND_AMQ_CALLING 50 /* only get value */#define S7_MINI_DB_INIT_IND_AMQ_CALLED 51 /* only get value */#define S7_MINI_DB_INIT_IND_PDU_SIZE 52 /* only get value *//* for initiate confirmation (type only) */#define S7_MINI_DB_INIT_CNF_AMQ_CALLING 30 /* only get value */#define S7_MINI_DB_INIT_CNF_AMQ_CALLED 31 /* only get value */#define S7_MINI_DB_INIT_CNF_PDU_SIZE 32 /* only get value *//* for any message */#define S7_MINI_DB_RESPONSE_CODE 40 /* only get value */#define S7_MINI_DB_ERROR_CLASS 41 /* only get value */#define S7_MINI_DB_ERROR_CODE 42 /* only get value *//* for connection establishment */#define S7_MINI_DB_NEGOTIATION_OPTIONS 60 /* only set value */#define S7_MINI_DB_PERSISTANCE_COUNT 61 /* only set value */#define S7_MINI_DB_ABORT_TIMEOUT 62 /* only set value *//* for reading library version (type only) */#define S7_MINI_DB_VERSION 70 /* only get value *//*+-------------------------------------------------------------------+| general defines |+-------------------------------------------------------------------+*//* max. length of names */#define S7_MAX_NAMLEN 32#define S7_MAX_DEVICELEN 128/* max. length of names in xdb file */#define MAX_NO_OF_XDB_APPL 32 /* maximum number of applictions in xdb file */#define LEN_APPL_NAME 32 /* string length of application name */#define LEN_CP_NAME 256 /* string length of cp name */#define LEN_CONN_NAME 32 /* string length of connection name *//* max. length of address */#define S7_MAX_ADDRESSLEN 32/* max. length of buffer */#define S7_MAX_BUFLEN 256#define MAX_BSEND_BRCV_DATA 65534/* defines for selection of data base file */#define NO_FILE 0#define LDB_FILE 1#define XDB_FILE 2/* special defines for xdb files */#define ADMIN_XDB_FILENAME ".XDB"#define ADMIN_xdb_FILENAME ".xdb"#define SCP_PATH_VM "VM/"#define TYPE_REFERENCE 0#define TYPE_ASCII_STRING 1/* defines for access */#define S7_ACCESS_NAME 1#define S7_ACCESS_SYMB_ADDRESS 2#define S7_ACCESS_ADDRESS 3/* defines for storage_mode */#define S7_MEMORY 0#define S7_FILE 1/* defines for logical states */#define S7_STATE_CHANGES_ALLOWED 0/* defines for physical states */#define S7_OPERATIONAL 0x10#define S7_NEEDS_COMMISSIONING 0x13/* defines for initiate_rsp */#define S7_ACCEPT 1#define S7_NON_ACCEPT 0/* defines for result */#define S7_RESULT_OK 0x00ff#define S7_RESULT_HW_ERROR 0x0001#define S7_RESULT_OBJ_ACCESS_DENIED 0x0003#define S7_RESULT_OBJ_ADDRESS_INVALID 0x0005#define S7_RESULT_OBJ_TYPE_NOT_SUPPORTED 0x0006#define S7_RESULT_OBJ_TYPE_INCONSISTENT 0x0007#define S7_RESULT_OBJ_NOT_EXISTS 0x000a/*+-------------------------------------------------------------------+| defines for services |+-------------------------------------------------------------------+*//* initiate, abort */#define S7_INITIATE_CNF 0x0101#define S7_INITIATE_IND 0x0102#define S7_ABORT_IND 0x0103#define S7_AWAIT_INITIATE_CNF 0x0104/* VFD */#define S7_VFD_STATE_CNF 0x0201#define S7_VFD_USTATE_IND 0x0202/* variables */#define S7_READ_CNF 0x0301#define S7_WRITE_CNF 0x0302#define S7_MULTIPLE_READ_CNF 0x0303#define S7_MULTIPLE_WRITE_CNF 0x0304/* cyclic variables */#define S7_CYCL_READ_ABORT_IND 0x0401#define S7_CYCL_READ_DELETE_CNF 0x0402#define S7_CYCL_READ_IND 0x0403#define S7_CYCL_READ_INIT_CNF 0x0404#define S7_CYCL_READ_START_CNF 0x0405#define S7_CYCL_READ_STOP_CNF 0x0406/* PBK variables */#define S7_BSEND_CNF 0x0601#define S7_BRCV_IND 0x0602#define S7_BRCV_CANCEL_IND 0x0603#define S7_BRCV_STOP 0x0604/* PMC variables */#define S7_REGISTER_MSG_INIT_CNF 0x4401#define S7_CANCEL_MSG_STOP_CNF 0x4402#define S7_SCAN_IND 0x4403#define S7_ALARM_IND 0x4404/*+-------------------------------------------------------------------+| typedefinitions |+-------------------------------------------------------------------+*//* The following typedefinitions are necessary for using S7 library. *//* Including other header files in user applications using the same *//* typedefinitions results in compiler errors or warnings. To avoid *//* these warnings or errors the basic typedefinitions of the S7 *//* library can be switched off. */#ifndef S7_BASIC_TYPES/* basic types */typedef char int8; /* signed char */typedef unsigned char ord8; /* unsigned char */typedef short int int16; /* signed short integer */typedef unsigned short int ord16; /* unsigned short integer */typedef long int32; /* signed long integer */typedef unsigned long ord32; /* unsigned long integer */#endifstruct S7_READ_PARA{ord16 access;char var_name[S7_MAX_NAMLEN+2];ord16 index;ord16 subindex;ord16 address_len;ord8 address[S7_MAX_ADDRESSLEN];};struct S7_WRITE_PARA{ord16 access;char var_name[S7_MAX_NAMLEN+2];ord16 index;ord16 subindex;ord16 address_len;ord8 address[S7_MAX_ADDRESSLEN];ord16 var_length;ord8 value[S7_MAX_BUFLEN];};/*+-------------------------------------------------------------------+| Prototypings for S7 calls |+-------------------------------------------------------------------+*//* define for using DLL (only for Windows 3.xx) */#ifdef S732STD_DLL#define S7_FAR_PASCAL _stdcall#define S7_FAR_DATA#else#ifdef S7_DLL#define S7_FAR_PASCAL far pascal#define S7_FAR_DATA far#else#define S7_FAR_PASCAL#define S7_FAR_DATA#endif#endif#ifdef __cplusplusextern "C"{#endifint32 S7_FAR_PASCAL s7_abort(ord32 cp_descr,ord16 cref);int32 S7_FAR_PASCAL s7_await_initiate_req(ord32 cp_descr,ord16 cref);int32 S7_FAR_PASCAL s7_cycl_read(ord32 cp_descr,ord16 cref,ord16 orderid,ord16 cycl_time,ord16 number,struct S7_READ_PARAS7_FAR_DATA *read_para_array);int32 S7_FAR_PASCAL s7_cycl_read_delete_req(ord32 cp_descr,ord16 cref,ord16 orderid);int32 S7_FAR_PASCAL s7_cycl_read_init_req(ord32 cp_descr,ord16 cref,ord16 orderid,ord16 cycl_time,ord16 number,struct S7_READ_PARAS7_FAR_DATA *read_para_array);int32 S7_FAR_PASCAL s7_cycl_read_start_req(ord32 cp_descr,ord16 cref,ord16 orderid);int32 S7_FAR_PASCAL s7_cycl_read_stop_req(ord32 cp_descr,ord16 cref,ord16 orderid);void S7_FAR_PASCAL s7_discard_msg(void);int32 S7_FAR_PASCAL s7_get_abort_ind(void);int32 S7_FAR_PASCAL s7_get_await_initiate_cnf(void);int32 S7_FAR_PASCAL s7_get_conn(ord32 cp_descr,ord16 index,ord16 S7_FAR_DATA *number_ptr,ord16 S7_FAR_DATA *cref_ptr,char S7_FAR_DATA *conn_name);int32 S7_FAR_PASCAL s7_get_cref(ord32 cp_descr,char S7_FAR_DATA *conn_name,ord16 S7_FAR_DATA *cref_ptr);int32 S7_FAR_PASCAL s7_get_cycl_read_abort_ind(void);int32 S7_FAR_PASCAL s7_get_cycl_read_delete_cnf(void);int32 S7_FAR_PASCAL s7_get_cycl_read_ind(void S7_FAR_DATA *od_ptr,ord16 S7_FAR_DATA *result_array,ord16 S7_FAR_DATA *var_length_array,void S7_FAR_DATA *value_array);int32 S7_FAR_PASCAL s7_get_cycl_read_init_cnf(void);int32 S7_FAR_PASCAL s7_get_cycl_read_start_cnf(void);int32 S7_FAR_PASCAL s7_get_cycl_read_stop_cnf(void);int32 S7_FAR_PASCAL s7_get_device(ord16 index,ord16 S7_FAR_DATA *number_ptr,char S7_FAR_DATA *dev_name);int32 S7_FAR_PASCAL s7_get_initiate_cnf(void);int32 S7_FAR_PASCAL s7_get_initiate_ind(void);int32 S7_FAR_PASCAL s7_get_multiple_read_cnf(void S7_FAR_DATA *od_ptr,ord16 S7_FAR_DATA *result_array,ord16 S7_FAR_DATA *var_length_array,void S7_FAR_DATA *value_array);int32 S7_FAR_PASCAL s7_get_multiple_write_cnf(ord16 S7_FAR_DATA *result_array);int32 S7_FAR_PASCAL s7_get_read_cnf(void S7_FAR_DATA *od_ptr,ord16 S7_FAR_DATA *var_length_ptr,void S7_FAR_DATA *value_ptr);int32 S7_FAR_PASCAL s7_get_vfd(char S7_FAR_DATA *dev_name,ord16 index,ord16 S7_FAR_DATA *number_ptr,char S7_FAR_DATA *vfd_name);int32 S7_FAR_PASCAL s7_get_vfd_state_cnf(ord16 S7_FAR_DATA *log_state_ptr,ord16 S7_FAR_DATA *phy_state_ptr,ord8 S7_FAR_DATA *local_detail_ptr);int32 S7_FAR_PASCAL s7_get_vfd_ustate_ind(ord16 S7_FAR_DATA *log_state_ptr,ord16 S7_FAR_DATA *phy_state_ptr,ord8 S7_FAR_DATA *local_detail_ptr);int32 S7_FAR_PASCAL s7_get_write_cnf(void);int32 S7_FAR_PASCAL s7_init(char S7_FAR_DATA *cp_name,char S7_FAR_DATA *vfd_name,ord32 S7_FAR_DATA *cp_descr_ptr);int32 S7_FAR_PASCAL s7_initiate_req(ord32 cp_descr,ord16 cref);int32 S7_FAR_PASCAL s7_initiate_rsp(ord32 cp_descr,ord16 cref,ord16 accept);const char S7_FAR_DATA * S7_FAR_PASCAL s7_last_iec_err_msg(void);ord16 S7_FAR_PASCAL s7_last_iec_err_no(void);const char S7_FAR_DATA * S7_FAR_PASCAL s7_last_detailed_err_msg(void);ord16 S7_FAR_PASCAL s7_last_detailed_err_no(void);const char S7_FAR_DATA * S7_FAR_PASCAL s7_mini_db_get(ord16 type);int32 S7_FAR_PASCAL s7_mini_db_set(ord16 type, char S7_FAR_DATA *value);int32 S7_FAR_PASCAL s7_multiple_read_req(ord32 cp_descr,ord16 cref,ord16 orderid,ord16 number,struct S7_READ_PARAS7_FAR_DATA *read_para_array);int32 S7_FAR_PASCAL s7_multiple_write_req(ord32 cp_descr,ord16 cref,ord16 orderid,ord16 number,struct S7_WRITE_PARAS7_FAR_DATA *write_para_array,void S7_FAR_DATA *od_ptr);int32 S7_FAR_PASCAL s7_read_req(ord32 cp_descr,ord16 cref,ord16 orderid,struct S7_READ_PARAS7_FAR_DATA *read_para_ptr);int32 S7_FAR_PASCAL s7_receive(ord32 cp_descr, ord16 S7_FAR_DATA *cref_ptr,ord16 S7_FAR_DATA *orderid_ptr);int32 S7_FAR_PASCAL s7_set_window_handle_msg(ord32 cp_descr,ord32 hWnd,ord32 msgID);#define s7_set_window_handle_msg(a,b,c) s7_set_window_handle_msg(a, \(ord32)(b), \c)int32 S7_FAR_PASCAL s7_shut(ord32 cp_descr);void S7_FAR_PASCAL s7_trace(char S7_FAR_DATA *msg);int32 S7_FAR_PASCAL s7_vfd_state_req(ord32 cp_descr,ord16 cref,ord16 orderid);int32 S7_FAR_PASCAL s7_write_req(ord32 cp_descr,ord16 cref,ord16 orderid,struct S7_WRITE_PARA S7_FAR_DATA *write_para_ptr,void S7_FAR_DATA *od_ptr);void S7_FAR_PASCAL s7_write_trace_buffer(char S7_FAR_DATA *filename);int32 S7_FAR_PASCAL s7_bsend_req( ord32 cp_descr,ord16 cref,ord16 orderid,ord32 r_id,void *buffer_ptr,ord32 buffer_len);int32 S7_FAR_PASCAL s7_get_bsend_cnf(void);int32 S7_FAR_PASCAL s7_brcv_init( ord32 cp_descr,ord16 cref,ord32 r_id);int32 S7_FAR_PASCAL s7_get_brcv_ind( void *buffer_ptr,ord32 buffer_len,ord32 *r_id_ptr,ord32 *rec_buffer_len_ptr);int32 S7_FAR_PASCAL s7_brcv_stop( ord32 cp_descr,ord16 cref,ord32 r_id);int32 S7_FAR_PASCAL s7_register_msg_init_req( ord32 cp_descr,ord16 cref,ord16 orderid,ord8 fct_code);int32 S7_FAR_PASCAL s7_get_register_msg_init_cnf(void);int32 S7_FAR_PASCAL s7_cancel_msg_stop_req( ord32 cp_descr,ord16 cref,ord16 orderid,ord8 fct_code);int32 S7_FAR_PASCAL s7_get_cancel_msg_stop_cnf(void);int32 S7_FAR_PASCAL s7_get_scan_ind( void *buffer_ptr,ord32 buffer_len,struct time_stamp_ptr **time_stamp_ptr,ord8 *no_scan_objects_ptr,ord8 **start_add_scan_objects_ptr,ord32 **required_buffer_len_ptr);int32 S7_FAR_PASCAL s7_get_alarm_ind( void *buffer_ptr,ord32 buffer_len,ord32 *EV_ID_ptr,ord32 *time_stamp_ptr,ord8 *event_state_ptr,ord8 *state_ptr,ord32 *ack_state_ptr,ord8 *no_add_value_ptr,ord32 *start_add_add_value_ptr);#ifdef __cplusplus}#endif#endif/****************************************************************************//* Copyright (C) Siemens AG 1995 All Rights Reserved. *//****************************************************************************/