⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link.h

📁 profibus TO RS485 profibus TO RS485
💻 H
字号:
//一些地址定义
//#define DPRAM_BAS_ADDR 0x8000  //栈数据的首地址
#define DPRAM_TRANS_LIST_ADDR 0x100
#define DPRAM_DATA_ADDR 0x500
#define DPRAM_BASE_ADDR 0x8000

//一些常用标志的定义
#define uchar unsigned char
#define uint unsigned int
#define TRUE_485	0xaa
#define	FALSE_485	0x55

//一些载取位的定义
#define INOUT_BIT	0x01
#define REGION_FLAG_BIT	0x80
#define STATION_SPEED_BIT	0x40
#define STATION_ROUT_NUM_BIT	0x38
#define STATION_WORD_LEN_BIT	0x06

#define IO_IN	0x00
#define IO_OUT 0x01

#define LINK_ERR   0x00
#define PARAM_COM  0x01
#define EXA_COM 0x02


#define	EXIST_NEXT_REGION 	0x00
#define LAST_REGION		0x80

//一些键的定义
//sbit HW_WATCHDOG_TRIGGER  = P3^5;sbit HW_WATCHDOG_TRIGGER  =    P3^5;

#define RESERVED 0X0
#define CONFIRM 0X02


/********************************************************/

//波特率定义
#define RESERVED 0X0
//系统状态定义
#define RESET_STATE		0x01

#define WAIT_PRM_STATE	0x02
#define PARAM_STATE		0x03
#define WORK_STATE		0x04
#define EX_STATE		0x05

/*#define OPERATION_STATE	0x01
#define STOP_STATE	0x02
#define CLEAR_STATE	0x03
#define FREEZE_STATE	0x04
#define SYNC_STATE	0x05
#define CONFIRM_STATE	0x06
#define DATA_EX_STATE	0x07
#define DIAG_STATE	0x08
#define PRM_STATE_485	0x09
#define	FIND_STATE	0x55
#define	LOAD_CH_STATE	0x0c
#define	LONG_FRAME_H_STATE	0x0d
#define	LONG_FRAME_END_STATE	0x0e
#define	LONG_FRAME_MID_STATE	0x0f
#define	SA_FRAME_STATE		0x10
#define	EX_FC_STATE		0x11
#define	UNLOAD_CH_STATE		0x12
#define	LOAD_MODEL_STATE	0x13
#define	UNLOAD_MODEL_STATE	0x14
#define	ASK_CONFIRM_STATE	0x15


/********************************************************/
struct  LINK_DATA_BUF
{
        uchar   interface_flag;           //接口标志
	uchar* 	p_prm_tol_ptr;		//参数化数据指针
	uchar* 	p_out_tol_ptr;		//输出数据指针
	uchar* 	p_in_tol_ptr;			//输入数据指针
	uchar* 	p_diag_tol_ptr;		//诊断信息指针
};

 typedef struct DPRAM485						//dpram 数据结构
{
	uchar station_num;			//sys从站的总数
	uchar pc_com;						//link 给Sys_master命令
	uchar pc_com_sig;				//link 给Sys_master命令旗语

	uchar mcu_com;					//sys_master给link的命令
	uchar mcu_com_sig;			//上行命令旗语

	uchar uc_hand_shake;		//握手标志

	uchar uc_link485_life_counter;  //sys_master 的存活标志
	uchar uc_link_life_counter;			//link的存活标志

	uchar pc_s_sig_list [124];		//pc的互斥标志
	uchar mcu_s_sig_list [124];		//mcu的互斥标志
	struct TRANS_LIST							//从站数据传输列表
	{
		uchar		station_addr;				//站地址
		uint 		base_addr;					//站数据的基地址
		uchar		prm_len;						//参数化数据的长度
		uchar		out_len;						//输出数据的长度
		uchar		in_len;							//输入数据的长度
		uchar		diag_len;						//诊断数据的长度
	}trans_list[124];
        uchar datum [2960];									//数据区
};

/************************************************************/
struct SLA_DATA_CONSTRUCT	//主站及从站数据结构
{
	uchar  station_addr;		//从站类型
/******从站数据结构*******/
	uchar* prm_ptr; //配置数据起始地址
	uchar* out_ptr;		//从站输出数据的起始地址
	uchar* in_ptr;       //从站输入数据的起始地址
	uchar* diag_ptr;		//从站诊断数据的起始地址
	uchar  prm_len;  //配置数据长度
	uchar  out_len;	//从站输出字节数
	uchar  in_len;		//从站输入字节数
	uchar  diag_len;	//从站输出字节数
};


void update_data(struct LINK_DATA_BUF *p_link_data_buf);
void update_sys_command(void);//命令处理
void update_prm_data(struct LINK_DATA_BUF *p_link_data_buf);//更新参数化区
void update_in_data(void);//更新输入数据区
void update_out_data(void);					//更新输出数据区
void update_diag_data(void);
void shake_hand(struct LINK_DATA_BUF *p_link_data_buf);
void cal_dpram_addr(struct LINK_DATA_BUF *p_link_data_buf);
void init_master_station(void);	//初始化主站
void clear_dpram(void);
uint byte_reverse(uint convert_word);
void delay(uint delay_count);
void system_state_deal(uchar *p_link_data_buf);				//处理系统命令(即系统的状态机处理)
void write_command(uchar uc_link_command);
uchar juge_command();
uchar link485_life_juge(void);
void EE_wren_cmd(void);
void EE_wrdi_cmd(void);
void EE_wrsr_cmd(uchar uc_reset_time);
uchar EE_rdsr_cmd (void);
void EE_byte_write(uchar uc_EE_data,uint ui_EE_address);
uchar EE_byte_read(uint ui_EE_address);
void EE_rst_wdog (void) ;
void EE_wip_poll(void);
void  EE_out_byte(uchar uc_EE_data) ;
void dpram_interface_prog_init(void);
uchar EE_input_byte(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -