|
@@ -551,14 +551,19 @@ static void RL_Over_Func()
|
|
|
}
|
|
}
|
|
|
}else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 1)
|
|
}else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 1)
|
|
|
{
|
|
{
|
|
|
- RL_Func_statu[i+1] = 0;
|
|
|
|
|
- AC3PPDU_RL_time[i + CH1_out].LT_state = AC3PPDU_RL_time[i + CH1_out].LT_state &0xffffff3e;
|
|
|
|
|
- orderFlag[i]=true;
|
|
|
|
|
|
|
+ if(RL_Func_statu[i+1]){
|
|
|
|
|
+ RL_Func_statu[i+1] = 0;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out].LT_state = AC3PPDU_RL_time[i + CH1_out].LT_state &0xffffff3e;
|
|
|
|
|
+ orderFlag[i]=true;
|
|
|
|
|
+ }
|
|
|
}else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 2)
|
|
}else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 2)
|
|
|
{
|
|
{
|
|
|
- RL_Func_statu[i+1+PH_STEP] = 0;
|
|
|
|
|
- AC3PPDU_RL_time[i + CH1_out+PH_STEP].LT_state = AC3PPDU_RL_time[i + CH1_out+PH_STEP].LT_state &0xffffff3e;
|
|
|
|
|
- orderFlag[i+PH_STEP]=true;
|
|
|
|
|
|
|
+ if(RL_Func_statu[i+1+PH_STEP])
|
|
|
|
|
+ {
|
|
|
|
|
+ RL_Func_statu[i+1+PH_STEP] = 0;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out+PH_STEP].LT_state = AC3PPDU_RL_time[i + CH1_out+PH_STEP].LT_state &0xffffff3e;
|
|
|
|
|
+ orderFlag[i+PH_STEP]=true;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
#else
|
|
#else
|
|
@@ -987,11 +992,37 @@ int main(void)
|
|
|
{
|
|
{
|
|
|
if(handle_detection[0] == 1)
|
|
if(handle_detection[0] == 1)
|
|
|
{
|
|
{
|
|
|
- for(int i = 0;i < Output_ChN_default;i++)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ for(int i = 0; i < Output_ChN_default;i+=3)
|
|
|
{
|
|
{
|
|
|
- handle_status[i] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] & 0x1);
|
|
|
|
|
- AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] &= 0xfffffffe;
|
|
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ handle_status[i ] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] & 0x1);
|
|
|
|
|
+ handle_status[i+1] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i + 1] & 0x1);
|
|
|
|
|
+ handle_status[i+2] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i + 2] & 0x1);
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ handle_status[i ] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] & 0x1);
|
|
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i + 1] &= 0xfffffffe;
|
|
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i + 2] &= 0xfffffffe;
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 2)
|
|
|
|
|
+ {
|
|
|
|
|
+ handle_status[i+1] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i + 1] & 0x1);
|
|
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] &= 0xfffffffe;
|
|
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i + 2] &= 0xfffffffe;
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 3)
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] &= 0xfffffffe;
|
|
|
|
|
+ AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i + 1] &= 0xfffffffe;
|
|
|
|
|
+ handle_status[i+2] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i+2] & 0x1);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// for(int i = 0;i < Output_ChN_default;i++)
|
|
|
|
|
+// {
|
|
|
|
|
+// handle_status[i] = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] & 0x1);
|
|
|
|
|
+// AC3PPDU_Modbus_Reg[Mb_Dbuff_CH1LT_ST_Addr + i] &= 0xfffffffe;
|
|
|
|
|
+// }
|
|
|
#if SUPPORT_ZERO_LINE
|
|
#if SUPPORT_ZERO_LINE
|
|
|
handle_status_N = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CHNLT_ST_Addr] & 0x1);
|
|
handle_status_N = (AC3PPDU_Modbus_Reg[Mb_Dbuff_CHNLT_ST_Addr] & 0x1);
|
|
|
AC3PPDU_Modbus_Reg[Mb_Dbuff_CHNLT_ST_Addr] &= 0xfffffffe;
|
|
AC3PPDU_Modbus_Reg[Mb_Dbuff_CHNLT_ST_Addr] &= 0xfffffffe;
|
|
@@ -1330,13 +1361,72 @@ static void MODbus_CMD_New(void)
|
|
|
if(detection_value == 1)
|
|
if(detection_value == 1)
|
|
|
{
|
|
{
|
|
|
RL_Allon_flag = true;
|
|
RL_Allon_flag = true;
|
|
|
- for(i = 0;i < Output_ChN_default;i++)
|
|
|
|
|
|
|
+ for(int i = 0; i < Output_ChN_default;i+=3)
|
|
|
{
|
|
{
|
|
|
- temp_addr = i << 1;
|
|
|
|
|
- Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
- AC3PPDU_RL_time[i + CH1_out].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
- orderFlag[i]=true;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ temp_addr = i << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
+ orderFlag[i]=true;
|
|
|
|
|
+ temp_addr = (i+1) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out + 1].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
+ orderFlag[i+1]=true;
|
|
|
|
|
+ temp_addr = (i+2) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out + 2].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
+ orderFlag[i+2]=true;
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ temp_addr = i << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
+ orderFlag[i]=true;
|
|
|
|
|
+
|
|
|
|
|
+ temp_addr = (i+1) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x80;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] & 0xfe;
|
|
|
|
|
+
|
|
|
|
|
+ temp_addr = (i+2) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x80;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] & 0xfe;
|
|
|
|
|
+
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 2)
|
|
|
|
|
+ {
|
|
|
|
|
+ temp_addr = (i+1) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
+ orderFlag[i+1]=true;
|
|
|
|
|
+
|
|
|
|
|
+ temp_addr = (i) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x80;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] & 0xfe;
|
|
|
|
|
+
|
|
|
|
|
+ temp_addr = (i+2) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x80;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] & 0xfe;
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 3)
|
|
|
|
|
+ {
|
|
|
|
|
+ temp_addr = (i) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x80;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] & 0xfe;
|
|
|
|
|
+ temp_addr = (i+1) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x80;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] & 0xfe;
|
|
|
|
|
+ temp_addr = (i+2) << 1;
|
|
|
|
|
+ Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
+ AC3PPDU_RL_time[i + CH1_out + 2].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
+ orderFlag[i+2]=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+// for(i = 0;i < Output_ChN_default;i++)
|
|
|
|
|
+// {
|
|
|
|
|
+// temp_addr = i << 1;
|
|
|
|
|
+// Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr] | 0x41;
|
|
|
|
|
+// AC3PPDU_RL_time[i + CH1_out].LT_state = Eeprom_Rbuf[ERom_CH1LT_ST_Addr + temp_addr];
|
|
|
|
|
+// orderFlag[i]=true;
|
|
|
|
|
+// }
|
|
|
AT24CxxWrite(ERom_CH1LT_ST_Addr,(Eeprom_Rbuf + ERom_CH1LT_ST_Addr),(2*Output_ChN_default));
|
|
AT24CxxWrite(ERom_CH1LT_ST_Addr,(Eeprom_Rbuf + ERom_CH1LT_ST_Addr),(2*Output_ChN_default));
|
|
|
#if SUPPORT_ZERO_LINE
|
|
#if SUPPORT_ZERO_LINE
|
|
|
orderFlag_N = true;
|
|
orderFlag_N = true;
|
|
@@ -1513,13 +1603,50 @@ static void MODbus_CMD_New(void)
|
|
|
#else
|
|
#else
|
|
|
if(detection_value == 1)
|
|
if(detection_value == 1)
|
|
|
{
|
|
{
|
|
|
- AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
|
|
|
- orderFlag[temp_addr]=true;
|
|
|
|
|
- LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
|
|
|
|
|
- temp_addr = temp_addr << 1;
|
|
|
|
|
- temp_addr += ERom_CH1LT_ST_Addr;
|
|
|
|
|
- Eeprom_Rbuf[temp_addr] = data;
|
|
|
|
|
- AT24CxxWriteOneByte(temp_addr,Eeprom_Rbuf[temp_addr]);
|
|
|
|
|
|
|
+ for(int i = 0; i < Output_ChN_default;i+=3)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 0 || AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 1)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(temp_addr == i)
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
|
|
|
+ orderFlag[temp_addr]=true;
|
|
|
|
|
+ LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
|
|
|
|
|
+ temp_addr = temp_addr << 1;
|
|
|
|
|
+ temp_addr += ERom_CH1LT_ST_Addr;
|
|
|
|
|
+ Eeprom_Rbuf[temp_addr] = data;
|
|
|
|
|
+ AT24CxxWriteOneByte(temp_addr,Eeprom_Rbuf[temp_addr]);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 2)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(temp_addr == (i+1))
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
|
|
|
+ orderFlag[temp_addr]=true;
|
|
|
|
|
+ LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
|
|
|
|
|
+ temp_addr = temp_addr << 1;
|
|
|
|
|
+ temp_addr += ERom_CH1LT_ST_Addr;
|
|
|
|
|
+ Eeprom_Rbuf[temp_addr] = data;
|
|
|
|
|
+ AT24CxxWriteOneByte(temp_addr,Eeprom_Rbuf[temp_addr]);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }else if(AC3PPDU_Modbus_Reg[Mb_Dbuff_RL_SET_SINGLE_OUT_CH1+i] == 3)
|
|
|
|
|
+ {
|
|
|
|
|
+ if(temp_addr == (i+2))
|
|
|
|
|
+ {
|
|
|
|
|
+ AC3PPDU_RL_time[temp_addr + CH1_out].LT_state = data;
|
|
|
|
|
+ orderFlag[temp_addr]=true;
|
|
|
|
|
+ LimiT_enable_check((temp_addr + CH1_out),AC3PPDU_RL_time[temp_addr + CH1_out].LT_state);
|
|
|
|
|
+ temp_addr = temp_addr << 1;
|
|
|
|
|
+ temp_addr += ERom_CH1LT_ST_Addr;
|
|
|
|
|
+ Eeprom_Rbuf[temp_addr] = data;
|
|
|
|
|
+ AT24CxxWriteOneByte(temp_addr,Eeprom_Rbuf[temp_addr]);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
#endif
|
|
#endif
|