📄 output.c
字号:
#include <SM89516A.h>
#include <string.h>
#include <math.h>
#include "MyRam.h"
#include "ComRam.h"
#define uchar unsigned char
#define uint unsigned int
/**************************************公共RAM区地址分配*****************************************/
//公共RAM区从机采集数据包存储开始地址.
#define ComSlaveDataStart1 0x0000 //000H~2FFH 公共RAM区从机1的数据的开始地址.
#define ComSlaveLenAdd1 0x02FE //公共RAM区从机1数据字节数的存贮地址.
#define ComSlaveDataStart2 0x0300 //300H~5FFH 公共RAM区从机2的数据的开始地址.
#define ComSlaveLenAdd2 0x05FE //公共RAM区从机2数据字节数的存贮地址。
#define ComSlaveDataStart3 0x0600 //600H~8FFH 公共RAM区从机3的数据的开始地址.
#define ComSlaveLenAdd3 0x08FE //公共RAM区从机3数据字节数的存贮地址。
#define ComSlaveDataStart4 0x0900 //900H~BFFH 公共RAM区从机4的数据的开始地址.
#define ComSlaveLenAdd4 0x0BFE //公共RAM区从机4数据字节数的存贮地址。
#define ComSlaveDataStart5 0x0C00 //C00H~EFFH 公共RAM区从机5的数据的开始地址.
#define ComSlaveLenAdd5 0x0EFE //公共RAM区从机5数据字节数的存贮地址。
/*******从机的报警区********/
#define ComAlarmStart1 0x1000 //1000H-10FDH 公共RAM区从机1报警的起始地址。
#define ComAlarmLenAdd1 0x10FE //10FEH-10FFH 公共RAM区从机1报警数据总长度的存储地址。
#define ComAlarmStart2 0x1100 //1100H-10FDH 公共RAM区从机2报警的起始地址。
#define ComAlarmLenAdd2 0x11FE //11FEH-11FFH 公共RAM区从机2报警数据总长度的存储地址。
#define ComAlarmStart3 0x1200 //1200H-12FDH 公共RAM区从机3报警的起始地址。
#define ComAlarmLenAdd3 0x12FE //12FEH-12FFH 公共RAM区从机3报警数据总长度的存储地址。
#define ComAlarmStart4 0x1300 //1300H-13FDH 公共RAM区从机4报警的起始地址。
#define ComAlarmLenAdd4 0x13FE //13FEH-13FFH 公共RAM区从机4报警数据总长度的存储地址。
#define ComAlarmStart5 0x1400 //1400H-14FDH 公共RAM区从机5报警的起始地址。
#define ComAlarmLenAdd5 0x14FE //14FEH-14FFH 公共RAM区从机5报警数据总长度的存储地址。
//公共RAM区从机命令数据包存放开始地址.
#define ComOrderStart 0x1500 //1500H~4FFFH 公共RAM区发给从机命令的起始地址。
#define ComLenOrder 0x4FFE //公共RAM区从机命令字节数的存贮RE认为》256N。
#define ComNewOrderFlag 0x4FFD //公共RAM区有新从机命令的标识位。
//公共RAM区从机时间命令数据包存放开始地址.
#define ComTimeStart 0x5000 //5000H~50FFH 公共RAM区日期和时间的其实地址。
#define ComLenTimer 0x50FE //公共RAM区时间字节数存贮地址。
//公共RAM区输出数据包存放开始地址.
#define ComOutputStart 0x5100 //5100H~6FFFH 公共RAM区发给输出单片机的起始地址。
#define ComLenOutput 0x6FFE //公共RAM区输出字节数存贮地址。
//公共RAM区从机使能数据包存放开始地址.
#define ComSlaveEnable 0x7500 //公共RAM区从机使能数据包存贮地址.
#define ComLenSlaveEnable 0x7510 //公共RAM区从机使能数据包状态标识存贮地址.
#define ComSlaveEnableNewFlag 0x7511 //公共RAM区从机使能数据包状态标识存贮地址.
/**************************************公共RAM区地址分配*****************************************/
/**************************************自己的RAM区地址分配************************************************/
#define MyDataStart1 0x0000 // 0000H-02FFH 从机1的数据的开始
#define MyDataLenAdd1 0x02FE //从机1数据字节数的存贮地址
#define MyOrderStart 0x0300 // 0300H-09FFH 从机命令的起始地址
#define MyOrderLen 0x09FE //从机命令字节数的
//外设1的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define WsChannelParaLen 0x0B //每个通道参数存储的长度。依次为每个通道的最大值(2Bytes),最小值(2Bytes),超高报警
//号(2Bytes),超低报警号(2Bytes),通道使能,(1Bytes),超高报警动作号(1Bytes),超低报警动作号(1Bytes)。
//如果已知外设i ,通道j,则对应存储的位置为: 1000H +(i-1) *100H+ j *10H。
#define Ws1channel1 0x1000 //1000H-100FH
#define Ws1channel2 0x1010 //1010H-101FH
#define Ws1channel3 0x1020 //1020H-102FH
#define Ws1channel4 0x1030
#define Ws1channel5 0x1040
#define Ws1channel6 0x1050
#define Ws1channel7 0x1060
#define Ws1channel8 0x1070
#define Ws1channel9 0x1080
#define Ws1channel10 0x1090
#define Ws1channel11 0x10A0
#define Ws1channel12 0x10B0
#define Ws1channel13 0x10C0
#define Ws1channel14 0x10D0
#define Ws1channel15 0x10E0
#define Ws1channel16 0x10F0
//外设2的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws2channel1 0x1100
#define Ws2channel2 0x1110
#define Ws2channel3 0x1120
#define Ws2channel4 0x1130
#define Ws2channel5 0x1140
#define Ws2channel6 0x1150
#define Ws2channel7 0x1160
#define Ws2channel8 0x1170
#define Ws2channel9 0x1180
#define Ws2channel10 0x1190
#define Ws2channel11 0x11A0
#define Ws2channel12 0x11B0
#define Ws2channel13 0x11C0
#define Ws2channel14 0x11D0
#define Ws2channel15 0x11E0
#define Ws2channel16 0x11F0
//外设3的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws3channel1 0x1200
#define Ws3channel2 0x1210
#define Ws3channel3 0x1220
#define Ws3channel4 0x1230
#define Ws3channel5 0x1240
#define Ws3channel6 0x1250
#define Ws3channel7 0x1260
#define Ws3channel8 0x1270
#define Ws3channel9 0x1280
#define Ws3channel10 0x1290
#define Ws3channel11 0x12A0
#define Ws3channel12 0x12B0
#define Ws3channel13 0x12C0
#define Ws3channel14 0x12D0
#define Ws3channel15 0x12E0
#define Ws3channel16 0x12F0
//外设4的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws4channel1 0x1300
#define Ws4channel2 0x1310
#define Ws4channel3 0x1320
#define Ws4channel4 0x1330
#define Ws4channel5 0x1340
#define Ws4channel6 0x1350
#define Ws4channel7 0x1360
#define Ws4channel8 0x1370
#define Ws4channel9 0x1380
#define Ws4channel10 0x1390
#define Ws4channel11 0x13A0
#define Ws4channel12 0x13B0
#define Ws4channel13 0x13C0
#define Ws4channel14 0x13D0
#define Ws4channel15 0x13E0
#define Ws4channel16 0x13F0
//外设5的通道的参数保存地址。外设为7017则只用前8个通道,外设为7053则用16个通道。
#define Ws5channel1 0x1400
#define Ws5channel2 0x1410
#define Ws5channel3 0x1420
#define Ws5channel4 0x1430
#define Ws5channel5 0x1440
#define Ws5channel6 0x1450
#define Ws5channel7 0x1460
#define Ws5channel8 0x1470
#define Ws5channel9 0x1480
#define Ws5channel10 0x1490
#define Ws5channel11 0x14A0
#define Ws5channel12 0x14B0
#define Ws5channel13 0x14C0
#define Ws5channel14 0x14D0
#define Ws5channel15 0x14E0
#define Ws5channel16 0x14F0
//外设报警区域。
#define Ws1Alarm 0x1500 //1500H-151FH
#define Ws1AlarmLen 0x151F
#define Ws2Alarm 0x1520 //1520H-153FH
#define Ws2AlarmLen 0x153F
#define Ws3Alarm 0x1540 //1540H-155FH
#define Ws3AlarmLen 0x155F
#define Ws4Alarm 0x1560 //1560H-157FH
#define Ws4AlarmLen 0x157F
#define Ws5Alarm 0x1580 //1580H-15AFH
#define Ws5AlarmLen 0x15AF
//从机默认参数保存地址。
#define MySlaveParaStart 0x1600 //1600H--1610H
/**************************************自己的RAM区地址分配************************************************/
/**********************************************数据包*****************************************************/
//数据包标识。
#define StartFlag 0x2A
#define CmdWs 0xA1
#define CmdSlave 0xA2
#define CmdTime 0xA3
#define CmdAlarm 0xA4
#define CmdWsControl 0xA5
#define CmdSendSlave 0xB1
//数据包长度。
#define LenCmdWs 0x10 //已改成16字节
#define LenCmdSlave 0x08
#define LenCmdTime 0x09
#define LenCmdAlarm 0x04
#define LenCmdWsControl 0x05 /* 需修正*/
#define LenCmdSendSlave 0x07 //向上位机发送的数据包的字节数
/**********************************************数据包*****************************************************/
/**********************************************外设信息***************************************************/
//外设地址信息。
#define WsAddress1 0x01 //起始地址从01开始
#define WsAddress2 0x02
#define WsAddress3 0x03
#define WsAddress4 0x04
#define WsAddress5 0x05
//外设类型信息。
#define WsType1 0x01 //7017
#define WsType2 0x02 //7053
//外设通道信息。
#define Channel1 0x00 //起始地址从00开始
#define Channel2 0x01
#define Channel3 0x02
#define Channel4 0x03
#define Channel5 0x04
#define Channel6 0x05
#define Channel7 0x06
#define Channel8 0x07
#define Channel9 0x08
#define Channel10 0x09
#define Channel11 0x0A
#define Channel12 0x0B
#define Channel13 0x0C
#define Channel14 0x0D
#define Channel15 0x0E
#define Channel16 0x0F
//外设数据长度信息。
#define LenRecvWsType1 0x38 //外设类型1的数据长度
#define LenRecvWsType2 0x04 //外设类型2的数据长度
/**********************************************外设信息***************************************************/
/**********************************************从机信息***************************************************/
//从机编号信息。
#define SlaveCode1 0x01 //从机1编号。
#define SlaveCode2 0x02 //从机2编号。
#define SlaveCode3 0x03 //从机3编号。
#define SlaveCode4 0x04 //从机4编号。
#define SlaveCode5 0x05 //从机5编号。
uchar SlaveCode = SlaveCode1; //当前从机编号。
//从机数据存储最大长度。
#define DataLen7053 560 //7053数据存储最大长度。
#define DataLen7017 280 //7017数据存储最大长度。
//从机串口信息。
#define InitState 0 //开始接收状态。
#define DataState 1 //数据接收状态。
#define SlaveStartFlag 0x3E //数据开始标志。
uchar n = 1; //当前处理的外设编号。
uchar FlagWsSend[5]={0,0,0,0,0}; //从机外设的数据返回状态。
char RecvDataCount=-1; //接收外设数据的计数器。
uint TimeCount = 0; //串口通讯的计数器。
uchar RecvState= InitState; //接收的状态,初始化为初始化接收状态。
uchar RecvDataSize; //接收外设数据的长度。
//从机参数信息。
#define SlaveParaLen 0x05 //从机默认参数长度。
uchar BodeRate; //从机与外设通讯的波特率。
uchar WsNumber; //从机的外设个数。
uint ReadDataRate; //读取外设数据的时间间隔。
uchar WsType; //外设的类型。
/**********************************************从机信息***************************************************/
/**************************************拷贝数据最大长度定义**************************************/
#define MaxOrderLen 0x6FD
#define MaxSlaveDataLen 0x230
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -