📄 ican_define.h
字号:
#ifndef __ICAN_Define_H
#define __ICAN_Define_H
#include "config.h"
/**********iCAN Rev 1.01 命令定义******************
作者:张森
日期:2008年3月31日
*****************************************************/
/****************FuncID(功能码)***********************/
#define write_port 0x01 //写资源
#define read_port 0x02 //读资源
#define slv_to_mas_trigger 0x03 //丛机主动发送数据
#define creat_cnet 0x04 //建立连接
#define del_cnet 0x05 //删除连接
#define reset_sla 0x06 //复位从站
#define check_ID 0x07 //检测MACID
#define err_cnet 0x0f //错误响应
/******************ACK(响应表示位)*******************/
#define iCAN_ACK_enable 0 //需要应答
#define iCAN_ACK_disable 1 //不需要应答
/*******************ErrID(异常响应码)***************/
#define funcID_unexist 0x01 //功能码不存在
#define res_unfound 0x02 //资源不存在
#define cmd_unsupport 0x03 //命令不支持
#define funcID_parameter_unsupport 0x04 //功能码非法
#define cnet_unexist 0x05 //连接不存在
#define operate_impact 0x06 //操作无效
#define flag_err 0x07 //分段传输错误
#define ICAN_SLV_NUM 7 //定义从机数量
//#define ican_sla_Qsize 10 //
#define ican_sla_buf 70
/************************iCAN从站列表结构体*******************************
作者:张森
日期:2008年4月2日
**************************************************************************/
typedef struct tagiCANSLV
{
INT8U SlvID; //从站MacId
INT8U CycTime; //访问间隔(10ms)
INT8U sla_status;//从机状态 0未连接,当主机扫描首先连接,1连接正常,2从机方离线主机空间没有释放,3主机扫描时忽略此站,释放资源
INT8U sla_timeover_cont; //超时计数器
INT8U DILen,*P_DILen; //从站数字量输入长度(byte)
INT8U DOLen,*P_DOLen; //从站数字量输出长度(byte)
INT8U AILen,*P_AILen; //从站模拟量输入长度(byte)
INT8U AOLen,*P_AOLen; //从站模拟量输出长度(byte)
INT8U BUF[ican_sla_buf]; //从站数据缓冲(byte)
}iCANSLV;
/************************iCAN设备描述信息********************************
作者:张森
日期:2008年3月31日
**************************************************************************/
typedef union ICAN_MESS_ID
{
INT32U ICAN_ID_32b; //字操作定义
struct _ICAN_
{
INT32U SourceID :8; //资源地址
INT32U FuncID :4; //功能码
INT32U ACK :1; //响应请求
INT32U DestMACID :8; //目标ID
INT32U SrcMACID :8; //源ID
INT32U RSV_BIT3 :3;
}stcICAN;
}ICANmes,*P_ICANmes;
/************************iCAN从站结构体*******************************
作者:张森
日期:2008年4月8日
**************************************************************************/
typedef struct tagDEVICERCSR
{
INT8U DILen;
INT8U DOLen;
INT8U AILen;
INT8U AOLen;
INT8U U0Len;
INT8U U1Len;
INT8U RsvLen;
INT8U CfgLen;
INT8U *pDIData;
INT8U *pDOData;
INT8U *pAIData;
INT8U *pAOData;
INT8U *pU0Data;
INT8U *pU1Data;
INT8U *pRsvData;
INT8U *pCfgData;
}DEVICERCSR;
/*******************响应标志**********
作者:张森
日期:2008年4月8日
**************************************/
#define ican_read_OK (1)//读ok
#define ican_write_OK (1<<1)//写ok
#define ican_crt_cnet_ok (1<<2) //建立连接ok
#define ican_del_cnet_ok (1<<3)//删除连接ok
#define ican_err_funID_unfound (1<<4)//1功能码不支持 0x01
#define ican_err_sourID_unfound (1<<5)//2资源不存在 2
#define ican_err_cmd_unsupply (1<<6)//3命令不支持:从站在连接状态,只读时写数据 3
#define ican_err_funID_err (1<<7)//4功能码参数非法,格式不对,资源超出范围 4
#define ican_err_cent_unfound (1<<8)//5连接不存在
#define ican_err_operate_impact (1<<9)//6操作无效(对于串口数据)
#define ican_err_flag_err (1<<10)//7分段错误
#define ican_id_exiet (1<<11)//id重复
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -