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

📄 plc_public.h

📁 以前做的一个仿PLC程序
💻 H
字号:
/*******************************PLC_PUBLIC.H****************************************
*LUHEDING
*2009-09-08
*V1.0
*
******************************************************************************/
#ifndef  PLC_PUBLIC_H
#define  PLC_PUBLIC_H
#include "LPC_1768.H"
#include "PLC_CONF.H"
#include "Drive.H"
/******************************************************************************/
typedef unsigned char  uint8;   /* 无符号8位整型变量    */
typedef signed   char  int8;    /* 有符号8位整型变量	*/
typedef unsigned short uint16;  /* 无符号16位整型变量   */
typedef signed   short int16;   /* 有符号16位整型变量   */
typedef unsigned int   uint32;  /* 无符号32位整型变量   */
typedef signed   int   int32;   /* 有符号32位整型变量   */ 
typedef unsigned long  u32;
typedef unsigned short u16;
typedef unsigned char  u8;
/******************************************************************************/
extern char  	PLC_UART_BUFFER[0X8F]; 	    //接收缓存	 BUFFER
extern char  	PLC_UART_T_BUFFER[0x8F]; 	//发送缓存
extern uint8 	PLC_UART_RECEIVE_CNT;		//接收计数
extern uint8 	PLC_UART_T_CNT;		//发送计数
extern uint8    UART_COUNT,UART_COUNT2;
extern unsigned char MyD_Int9;//,MyD_Int22;
/******************************************************************************/
extern u32 		PLC_PC;		 //PLC程序指针
extern uint16 	PLC_TEMP1,PLC_TEMP2,PLC_CMD;
extern uint8  	PLC_ACC_BIT,PLC_MPS_BIT;//运算栈及分线栈
extern uint16 	PLC_RUN_TIME; // 扫描时间
extern uint16   PLC_ERR_PC;	 //PLC出错步
extern uint8    RUN_BIT;
/******************************************************************************/
#define PLC_PROG_B_START_ADD  	0x2007E000 	 			//程序写入开始地址
#define PLC_PROG_B_END_ADD    	0x20081FFF 	 			//程序写入结束地址
extern uint8 BOT_BIT;

extern void delayMs(uint8_t timer_num, uint32_t delayInMs);
extern uint32_t init_timer(uint8_t timer_num, uint32_t timerInterval );
extern void enable_timer(uint8_t timer_num );
extern void disable_timer(uint8_t timer_num );
extern void reset_timer( uint8_t timer_num );
extern volatile int timer0_counter;
extern void bod_init (void);

extern void PLC_END_PROG(void);
/******************************************************************************/
extern const uint8 hex[256];
extern const uint8 asc[16];
/******************************************************************************/
extern const uint8 PLC_BIT_OR[];
extern const uint8 PLC_BIT_AND[];
extern const uint8 PROG_CODE[];
/******************************************************************************/
#define PLC_RAM8(x)    (*(u8*)(u32)(x))					//字节方式	R/W RAM	R ROM
#define PLC_RAM16(x)   (*(u16*)(u32)(x))				//半字方式	R/W RAM	R ROM
//#define PLC_RAM32(x)   (*(u32*)(u32)(x))				//字方式	R/W RAM	R ROM
/******************************************************************************/
#define PLC_R_START_ADD  		0x10001000				//PLC_RAM开始地址
#define PLC_R_END_ADD       	0x10006FFF			    //PLC_RAM结束地址0X7E7E

#define PLC_PROG_START_ADD  	0x0003FFA4 	 			//ROM开始地址
#define PLC_PROG_END_ADD    	0x00043FFF 	 			//ROM结束地址

#define PLC_T_START_ADD			PLC_R_START_ADD+0x0800	//T计时器当前值开始地址
#define PLC_C_START_ADD			PLC_R_START_ADD+0x0A00	//C计时器当前值开始地址
#define PLC_C16_START_ADD		PLC_R_START_ADD+0x0A00	//C16位计数器当前值开始地址
#define PLC_C32_START_ADD		PLC_R_START_ADD+0x0C00	//C32位计数器当前值开始地址
#define PLC_D8000_START_ADD		PLC_R_START_ADD+0x0E00	//D8000-D8255当前值开始地址
#define PLC_D_START_ADD			PLC_R_START_ADD+0x1000	//D0-D999当前值开始地址	 0x1000-0x17CF
#define PLC_D1000_START_ADD		PLC_R_START_ADD+0x17D0	//D1000-D7999当前值开始地址

//#define PLC_O_R_START_ADD		PLC_R_START_ADD+0x0200	//保存线圈旧值
//#define PLC_CT_C_START_ADD	PLC_R_START_ADD+0x0400	//C T COIL 线圈

//#define PLC_Comm_Rx	            PLC_R_START_ADD+0x5B00	//通信命令(接收)缓存
//#define PLC_Comm_Tx	            PLC_R_START_ADD+0x5B40	//通信命令(接收)缓存

#define PLC_Ins1400_S_Add		PLC_R_START_ADD+0x5D00	//E10 1400配置开始地址
#define PLC_Ins1790_S_Add		PLC_R_START_ADD+0x5B90	//E10 1790配置开始地址
/******************************************************************************/
#define PLC_BIT_TEST(x)		(PLC_RAM8(PLC_R_START_ADD+((x)/8)) 			& PLC_BIT_OR[(x)%8])
#define PLC_BIT_ON(x)		(PLC_RAM8(PLC_R_START_ADD+((x)/8))			|=PLC_BIT_OR[(x)%8])
#define PLC_BIT_OFF(x)		(PLC_RAM8(PLC_R_START_ADD+((x)/8))			&=PLC_BIT_AND[(x)%8])
//#define PLC_O_BIT_TEST(x)	(PLC_RAM8(PLC_R_START_ADD+0x0200+((x)/8)) 	& PLC_BIT_OR[(x)%8])

//#define PLC_T_C_BIT_TEST(x)	(PLC_RAM8(PLC_R_START_ADD+0x04C0+((x)/8)) 	& PLC_BIT_OR[(x)%8])
//#define PLC_T_OUT_BIT_ON(x)	(PLC_RAM8(PLC_R_START_ADD+0x00C0+((x)/8))	|=PLC_BIT_OR[(x)%8])
//#define PLC_T_OUT_BIT_OFF(x)(PLC_RAM8(PLC_R_START_ADD+0x00C0+((x)/8))	&=PLC_BIT_AND[(x)%8])
//#define PLC_T_C_BIT_ON(x)	(PLC_RAM8(PLC_R_START_ADD+0x04C0+((x)/8))	|=PLC_BIT_OR[(x)%8])
//#define PLC_T_C_BIT_OFF(x)	(PLC_RAM8(PLC_R_START_ADD+0x04C0+((x)/8))	&=PLC_BIT_AND[(x)%8])

//#define PLC_C_C_BIT_TEST(x)	(PLC_RAM8(PLC_R_START_ADD+0x05C0+((x)/8)) 	& PLC_BIT_OR[(x)%8])
//#define PLC_C_OUT_BIT_ON(x)	(PLC_RAM8(PLC_R_START_ADD+0x01C0+((x)/8))	|=PLC_BIT_OR[(x)%8])
//#define PLC_C_OUT_BIT_OFF(x)(PLC_RAM8(PLC_R_START_ADD+0x01C0+((x)/8))	&=PLC_BIT_AND[(x)%8])
//#define PLC_C_C_BIT_ON(x)	(PLC_RAM8(PLC_R_START_ADD+0x05C0+((x)/8))	|=PLC_BIT_OR[(x)%8])
//#define PLC_C_C_BIT_OFF(x)	(PLC_RAM8(PLC_R_START_ADD+0x05C0+((x)/8))	&=PLC_BIT_AND[(x)%8])

#define PLC_X_BIT_ON(x)		(PLC_RAM8(PLC_R_START_ADD+0x0080+((x)/8))	|=PLC_BIT_OR[(x)%8])
#define PLC_X_BIT_OFF(x)	(PLC_RAM8(PLC_R_START_ADD+0x0080+((x)/8))	&=PLC_BIT_AND[(x)%8])
#define PLC_Y_C_BIT_TEST(x)	(PLC_RAM8(PLC_R_START_ADD+0x00A0+((x)/8)) 	& PLC_BIT_OR[(x)%8])

/******************************************************************************/
extern void   PLC_UART_CMD(void);
extern void   PLC_UART_HANDLE(void); 
extern void   PLC_UART_SEND(char DATA);

extern void   PLC_DATA_RESET(void);
extern void   PLC_PROG_RUN(void);
extern void   PLC_T_COUNT(void);
extern void	  UART0_Init(void);
extern void	  time0_init(void);

extern void	  MyD_IO_INIT(void);
extern void	  MyD_I_INPUT(void);
extern void	  PLC_IO_BREAK(void);
extern void	  PLC_RESET_RAM(void);
extern void   PLC_PROG_TEST(void);
extern void   PLC_PROG_ERROR(uint8 err_id);
extern uint16 PLC_DATA16PC_READ(uint32 pc);
extern void   PLC_DATA16PC_WRITE(uint32 pc,uint16 w_data);
#endif   
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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