📄 nais.c
字号:
eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) +
(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
for(i = sIndex; i < eIndex; i++)
{
temp = 0;
Uart_ucSendBuff[6 + (i - sIndex) * 4] = HexToAscii((temp >> 4) & 0x0f);
Uart_ucSendBuff[7 + (i - sIndex) * 4] = HexToAscii((temp >> 0) & 0x0f);
Uart_ucSendBuff[8 + (i - sIndex) * 4] = HexToAscii((temp >> 12) & 0x0f);
Uart_ucSendBuff[9 + (i - sIndex) * 4] = HexToAscii((temp >> 8) & 0x0f);
}
Uart_ACK((eIndex - sIndex) * 4);
}//void Uart_RS(void)
//WS Write timer and counter set value area 写入定时器/计数器目标值
void Uart_WS(void)
{
int i,temp,sIndex,eIndex;
sIndex = (AsciiToHex(Uart_ucReceBuff[6]) * 1000) + (AsciiToHex(Uart_ucReceBuff[7]) * 100) +
(AsciiToHex(Uart_ucReceBuff[8]) * 10) + (AsciiToHex(Uart_ucReceBuff[9]) * 1);
eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) +
(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
for(i = sIndex; i < eIndex; i++)
{
temp = 0;
temp += AsciiToHex(Uart_ucReceBuff[14 + (i - sIndex) * 4]) << 4;
temp += AsciiToHex(Uart_ucReceBuff[15 + (i - sIndex) * 4]) << 0;
temp += AsciiToHex(Uart_ucReceBuff[16 + (i - sIndex) * 4]) << 12;
temp += AsciiToHex(Uart_ucReceBuff[17 + (i - sIndex) * 4]) << 8;
}
Uart_ACK(0);
}//void Uart_WS(void)
//RK Read timer and counter elapsed value area 读取定时器/计数器经过值
void Uart_RK(void)
{
int i,temp,sIndex,eIndex;
sIndex = (AsciiToHex(Uart_ucReceBuff[6]) * 1000) + (AsciiToHex(Uart_ucReceBuff[7]) * 100) +
(AsciiToHex(Uart_ucReceBuff[8]) * 10) + (AsciiToHex(Uart_ucReceBuff[9]) * 1);
eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) +
(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
for(i = sIndex; i < eIndex; i++)
{
temp = 0;
Uart_ucSendBuff[6 + (i - sIndex) * 4] = HexToAscii((temp >> 4) & 0x0f);
Uart_ucSendBuff[7 + (i - sIndex) * 4] = HexToAscii((temp >> 0) & 0x0f);
Uart_ucSendBuff[8 + (i - sIndex) * 4] = HexToAscii((temp >> 12) & 0x0f);
Uart_ucSendBuff[9 + (i - sIndex) * 4] = HexToAscii((temp >> 8) & 0x0f);
}
Uart_ACK((eIndex - sIndex) * 4);
}//void Uart_RK(void)
//WK Write timer and counter elapsed value area 写入定时器/计数器经过值
void Uart_WK(void)
{
int i,temp,sIndex,eIndex;
sIndex = (AsciiToHex(Uart_ucReceBuff[6]) * 1000) + (AsciiToHex(Uart_ucReceBuff[7]) * 100) +
(AsciiToHex(Uart_ucReceBuff[8]) * 10) + (AsciiToHex(Uart_ucReceBuff[9]) * 1);
eIndex = (AsciiToHex(Uart_ucReceBuff[10]) * 1000) + (AsciiToHex(Uart_ucReceBuff[11]) * 100) +
(AsciiToHex(Uart_ucReceBuff[12]) * 10) + (AsciiToHex(Uart_ucReceBuff[13]) * 1);
for(i = sIndex; i < eIndex; i++)
{
temp = 0;
temp += AsciiToHex(Uart_ucReceBuff[14 + (i - sIndex) * 4]) << 4;
temp += AsciiToHex(Uart_ucReceBuff[15 + (i - sIndex) * 4]) << 0;
temp += AsciiToHex(Uart_ucReceBuff[16 + (i - sIndex) * 4]) << 12;
temp += AsciiToHex(Uart_ucReceBuff[17 + (i - sIndex) * 4]) << 8;
}
Uart_ACK(0);
}//void Uart_WK(void)
//MC Registration and reset of monitor contact 登录及复位监控触点
void Uart_MC(void)
{
}//void Uart_MC(void)
//MD Registration and reset of monitor data 登录及复位监控数据
void Uart_MD(void)
{
}//void Uart_MD(void)
//MG Monitor execution 执行监控
void Uart_MG(void)
{
}//void Uart_MG(void)
//RR Read system register 读取系统寄存器
void Uart_RR(void)
{
}//void Uart_RR(void)
//WR Write system register 写入系统寄存器
void Uart_WR(void)
{
}//void Uart_WR(void)
//RT Read Programmable Controller (PC) status 读取PLC 当前状态
void Uart_RT(void)
{
}//void Uart_RT(void)
//RP Read program 读取程序
void Uart_RP(void)
{
}//void Uart_RP(void)
//WP Write program 写入程序
//void UartX_WPX(void)
//{
//}//void UartX_WPX(void)
//RM Remote control (RUN/PROGRAM mode switching) 遥控(运行/编程模式切换)
void Uart_RM(void)
{
}//void Uart_RM(void)
//AB Transmission abort command 传输终止指令
void Uart_AB(void)
{
}//void Uart_AB(void)
void Uart_Nais(void)
{
UCHAR bcc1,bcc2,addr;
DWORD cmd;
addr = (AsciiToHex(Uart_ucReceBuff[1]) << 4) + AsciiToHex(Uart_ucReceBuff[2]);
addr = Uart_ucAddr;
if(addr == Uart_ucAddr)
{
bcc1 = Uart_GetBcc(Uart_ucReceBuff,Uart_ucReceLen - 3);
bcc2 = (AsciiToHex(Uart_ucReceBuff[Uart_ucReceLen -3]) << 4) + AsciiToHex(Uart_ucReceBuff[Uart_ucReceLen - 2]);
if(bcc1 == bcc2)
{uwY0 |= (1 << 4);
cmd = (Uart_ucReceBuff[4] << 16) + (Uart_ucReceBuff[5] << 8) + Uart_ucReceBuff[6];
switch(cmd)
{
case RCS: Uart_RCS();
break;
case WCS: Uart_WCS();
break;
case RCP: Uart_RCP();
break;
case WCP: Uart_WCP();
break;
case RCC: Uart_RCC();
break;
case WCC: Uart_WCC();
break;
default: cmd = 0;
break;
}
if(cmd == 0)
{
cmd = (Uart_ucReceBuff[4] << 8) + Uart_ucReceBuff[5];
switch(cmd)
{
case SC: Uart_SC();
break;
case RD: Uart_RD();
break;
case WD: Uart_WD();
break;
case SD: Uart_SD();
break;
case RS: Uart_RS();
break;
case WS: Uart_WS();
break;
case RK: Uart_RK();
break;
case WK: Uart_WK();
break;
case MC: Uart_MC();
break;
case MD: Uart_MD();
break;
case MG: Uart_MG();
break;
case RR: Uart_RR();
break;
case WR: Uart_WR();
break;
case RT: Uart_RT();
break;
case RP: Uart_RP();
break;
//case WPX:
//break;
case RM: Uart_RM();
break;
case AB: Uart_AB();
break;
}
}
}
}
}//void Uart_Nais(void)
void Uart0_Nais(void)
{
UCHAR i;
if(Uart0_ucReceBuff[0] == '%' && Uart0_ucReceBuff[Uart0_ucReceLen - 1] == 0x0d && Uart0_ucReceLen > 7)
{
Uart_ucReceLen = Uart0_ucReceLen;
for(i = 0; i < Uart0_ucReceLen; i++) Uart_ucReceBuff[i] = Uart0_ucReceBuff[i];
Uart_ucSendLen = 0;
Uart_Nais();
if(Uart_ucSendLen > 0)
{
Uart0_ucSendLen = Uart_ucSendLen;
for(i = 0; i < Uart_ucSendLen; i++) Uart0_ucSendBuff[i] = Uart_ucSendBuff[i];
Uart0_ucSendPosi = 1;
U0THR = Uart0_ucReceBuff[0];
}
Uart0_ucReceLen = 0;
Uart0_udTimeOut = 0;
}
}//void Uart0_Nais(void)
void Uart1_Nais(void)
{
UCHAR i;
if(Uart1_ucReceBuff[0] == '%' && Uart1_ucReceBuff[Uart1_ucReceLen - 1] == 0x0d && Uart1_ucReceLen > 7)
{
Uart_ucReceLen = Uart1_ucReceLen;
for(i = 0; i < Uart1_ucReceLen; i++) Uart_ucReceBuff[i] = Uart1_ucReceBuff[i];
Uart_ucSendLen = 0;
Uart_Nais();
if(Uart_ucSendLen > 0)
{
uwY0 ^= (1 << 9);
Uart1_ucSendLen = Uart_ucSendLen;
for(i = 0; i < Uart_ucSendLen; i++) Uart1_ucSendBuff[i] = Uart_ucSendBuff[i];
Uart1_ucSendPosi = 1;
U1THR = Uart1_ucReceBuff[0];
}
Uart1_ucReceLen = 0;
Uart1_udTimeOut = 0;
}
}//void Uart1_Nais(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -