This commit is contained in:
李健 2024-07-12 16:22:49 +08:00
parent d49043d755
commit df15a41887
4 changed files with 67 additions and 46 deletions

View File

@ -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 55DATU固定开头
00 00 00 04:主轴针数
05 00张力传感器105为小数点前00为小数点后
05 00张力传感器2同上
00 02:传感器状态, 0000 0010代表IN1传感器有信号
B4 53CRC16 公司内部校验码DATU不参与计算
15 00 00 00主轴针数
0F 01张力传感器10-4095对应0-100 cN
11 01张力传感器2同上
00 00:传感器状态, 0000 0010代表IN1传感器有信号
A5 5CCRC16 公司内部校验码DATU不参与计算
传感器状态说明
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

View File

@ -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;
//
// }
}

View File

@ -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();

View File

@ -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,10 +171,11 @@ 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;
}
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);
@ -188,6 +189,9 @@ void datu_init()
}
continue;
}
// read_len = rs485_send_then_recv(hinst, (void *) send_buf, sizeof(send_buf), read_buf, sizeof(read_buf));
//接收主机发送的命令