diff --git a/README.md b/README.md index 6e2d51d..50e5822 100644 --- a/README.md +++ b/README.md @@ -27,25 +27,25 @@ #### 上位机协议指令(modbus 16位CRC校验,DATU不参与计算) - 44 41 54 55 03 00 01 40 00 读数据 + 44 41 54 55 03 00 01 A3 C6 读数据 - 44 41 54 55 06 00 01 50 01 主轴针数清零 - 44 41 54 55 06 00 02 10 00 闪灯 - 44 41 54 55 06 00 03 D1 C0 开锁1 - 44 41 54 55 06 00 04 90 02 开锁2 - 44 41 54 55 06 00 05 51 C2 开锁3 - 44 41 54 55 06 00 06 11 C3 报警灯开 - 44 41 54 55 06 00 07 D0 03 报警灯关 + 44 41 54 55 06 00 01 16 47 主轴针数清零 + 44 41 54 55 06 00 02 47 FD 闪灯 + 44 41 54 55 06 00 03 77 6B 开锁1 + 44 41 54 55 06 00 04 E2 C8 开锁2 + 44 41 54 55 06 00 05 D2 5E 开锁3 + 44 41 54 55 06 00 06 83 E4 报警灯开 + 44 41 54 55 06 00 07 B3 72 报警灯关 设备发送到屏幕的数据 - 44 41 54 55 00 00 00 04 05 00 00 00 00 01 B4 53 + 44 41 54 55 15 00 00 00 0F 01 11 01 00 00 A5 5C 44 41 54 55:DATU固定开头 - 00 00 00 04:主轴针数 - 05 00:张力传感器1,05为小数点前,00为小数点后 - 05 00:张力传感器2,同上 - 00 02:传感器状态, 0000 0010,代表IN1传感器有信号 - B4 53:CRC16 公司内部校验码,DATU不参与计算 + 15 00 00 00:主轴针数 + 0F 01:张力传感器1,0-4095,对应0-100 cN + 11 01:张力传感器2,同上 + 00 00:传感器状态, 0000 0010,代表IN1传感器有信号 + A5 5C:CRC16 公司内部校验码,DATU不参与计算 传感器状态说明 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 diff --git a/applications/IO/inout.c b/applications/IO/inout.c index 06cea23..654501c 100644 --- a/applications/IO/inout.c +++ b/applications/IO/inout.c @@ -179,8 +179,15 @@ rt_uint8_t get_IO_Value() rt_uint8_t get_IO_NeedleCountUpdateFlag() { return IO.IO_Flag.NeedleCountUpdateFlag; +// return IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; } +void set_IO_NeedleCountUpdateFlag(rt_uint8_t flag) +{ + IO.IO_Flag.NeedleCountUpdateFlag = flag; +} + + void set_IO_Needle_io(rt_uint8_t io) { IO.IO_Flag.Needle_io = io; @@ -188,7 +195,8 @@ void set_IO_Needle_io(rt_uint8_t io) rt_uint32_t get_IO_NeedleCount_sum() { - return IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_Sum; + return IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; +// return IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_Sum; } void set_IO_NeedleCount_sum(rt_uint8_t count) @@ -333,30 +341,38 @@ void updateSpeed(void) */ void updateNeedleCount(void) { - rt_uint32_t tempCount = 0; +// - tempCount = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; - rt_thread_mdelay(500); - - if ((IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count - tempCount)) - { - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_last; - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_Sum += IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount; + if (IO.IO_Data[IO.IO_Flag.Needle_io].Count!=IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count) { + IO.IO_Data[IO.IO_Flag.Needle_io].Count = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; IO.IO_Flag.NeedleCountUpdateFlag = 1; - //微工厂需求针数要没有变化清零,下列注释,NeedleCount_Sum+=变为= - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount = 0; - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_last = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; - if (IO.IO_Flag.log) { - rt_kprintf("NeedleCount: %d %d\n", IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_Sum, IO.IO_Flag.Needle_io); - } } - else - { - IO.IO_Flag.NeedleCountUpdateFlag = 0; - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount = 0; - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_last = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; - } + return; + //DATU需求 + + +// rt_thread_mdelay(500); +// rt_uint32_t tempCount = 0; +// if ((IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count - tempCount)) +// { +// IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count - IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_last; +// IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_Sum += IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount; +// IO.IO_Flag.NeedleCountUpdateFlag = 1; +// //微工厂需求针数要没有变化清零,下列注释,NeedleCount_Sum+=变为= +// IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount = 0; +// IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_last = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; +// if (IO.IO_Flag.log) { +// rt_kprintf("NeedleCount: %d %d\n", IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_Sum, IO.IO_Flag.Needle_io); +// } +// } +// else +// { +// IO.IO_Flag.NeedleCountUpdateFlag = 0; +// IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount = 0; +// IO.IO_Data[IO.IO_Flag.Needle_io].NeedleCount_last = IO.IO_Data[IO.IO_Flag.Needle_io].Temp_Count; +// +// } } diff --git a/applications/IO/inout.h b/applications/IO/inout.h index 2dfa4ee..9c80011 100644 --- a/applications/IO/inout.h +++ b/applications/IO/inout.h @@ -98,6 +98,7 @@ rt_uint32_t get_IO_count(rt_uint8_t io); rt_uint8_t get_IO_Value(); rt_uint8_t get_IO_NeedleCountUpdateFlag(); +void set_IO_NeedleCountUpdateFlag(rt_uint8_t flag); void set_IO_Needle_io(rt_uint8_t io); //控制台更改电平 void IO_key(); diff --git a/applications/Modbus/DATU.c b/applications/Modbus/DATU.c index bb84648..67f8eaf 100644 --- a/applications/Modbus/DATU.c +++ b/applications/Modbus/DATU.c @@ -143,7 +143,7 @@ void datu_init() D, A, T, U 主轴针数 面线1张力值 面线2张力值 传感器状态 B4--B13的16位CRC * */ - rt_thread_mdelay(10); +// rt_thread_mdelay(10); // 主机命令或者有针数时发一条数据上去 if (DATU.send_data || get_IO_NeedleCountUpdateFlag()) { @@ -171,21 +171,25 @@ void datu_init() // rt_kprintf("CRC %x\n ", crc); send_buf[15] = crc >> 8; send_buf[14] = crc & 0xFF; + send_len = rs485_send(hinst, (void *) send_buf, sizeof(send_buf)); + DATU.send_data =0; - } + set_IO_NeedleCountUpdateFlag(0); + if (DATU.log) + { + rt_kprintf("rs485 send %d datas : ", send_len); + for (i = 0; i < send_len; i++) + { + rt_kprintf("%02X ", send_buf[i]); + } - if (DATU.log) - { - rt_kprintf("rs485 send %d datas : ", send_len); - for (i = 0; i < send_len; i++) - { - rt_kprintf("%02X ", send_buf[i]); - } + rt_kprintf("\n"); + send_len = 0; - rt_kprintf("\n"); - send_len = 0; + } + continue; } // read_len = rs485_send_then_recv(hinst, (void *) send_buf, sizeof(send_buf), read_buf, sizeof(read_buf));