|
@@ -15,23 +15,23 @@ static inline GlobalDeviceManager* get_dm2(void)
|
|
|
return &__globalDeviceManage2;
|
|
return &__globalDeviceManage2;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-static mmap_modbus_t modbus_single[]={
|
|
|
|
|
|
|
+static mmap_modbus_t modbus_single[] = {
|
|
|
{.offset = 4000},
|
|
{.offset = 4000},
|
|
|
{.offset = 4001},
|
|
{.offset = 4001},
|
|
|
{.offset = 4769},
|
|
{.offset = 4769},
|
|
|
{.offset = 4777},
|
|
{.offset = 4777},
|
|
|
-
|
|
|
|
|
|
|
+ {.offset = 4841},
|
|
|
|
|
+ {.offset = 4905},
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- static mmap_modbus_t modbus_dc[]={
|
|
|
|
|
|
|
+static mmap_modbus_t modbus_dc[] = {
|
|
|
{.offset = 6000},
|
|
{.offset = 6000},
|
|
|
{.offset = 6001},
|
|
{.offset = 6001},
|
|
|
{.offset = 6002},
|
|
{.offset = 6002},
|
|
|
{.offset = 6003},
|
|
{.offset = 6003},
|
|
|
{.offset = 6004},
|
|
{.offset = 6004},
|
|
|
{.offset = 6005},
|
|
{.offset = 6005},
|
|
|
- };
|
|
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -46,6 +46,8 @@ int cascade_slave_map_init(cascade_handle_t *cas)
|
|
|
modbus_single[1].addr = &mgr->single_mmap->all_ch;
|
|
modbus_single[1].addr = &mgr->single_mmap->all_ch;
|
|
|
modbus_single[2].addr = &mgr->single_mmap->total_valtage;
|
|
modbus_single[2].addr = &mgr->single_mmap->total_valtage;
|
|
|
modbus_single[3].addr = &mgr->single_mmap->chn_status;
|
|
modbus_single[3].addr = &mgr->single_mmap->chn_status;
|
|
|
|
|
+ modbus_single[4].addr = &mgr->single_mmap->open_delay;
|
|
|
|
|
+ modbus_single[5].addr = &mgr->single_mmap->close_delay;
|
|
|
printf("single address init 4000\n");
|
|
printf("single address init 4000\n");
|
|
|
}else if(mgr->_global_device_info->product_pwr_type == SmartPDU_DC)
|
|
}else if(mgr->_global_device_info->product_pwr_type == SmartPDU_DC)
|
|
|
{
|
|
{
|
|
@@ -118,7 +120,7 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
- case 4777 ... 4841:
|
|
|
|
|
|
|
+ case 4777 ... 4840:
|
|
|
{
|
|
{
|
|
|
uint32_t *base_addr = (uint32_t *)modbus_single[3].addr;
|
|
uint32_t *base_addr = (uint32_t *)modbus_single[3].addr;
|
|
|
uint32_t step = addr - cas->map->start_registers;
|
|
uint32_t step = addr - cas->map->start_registers;
|
|
@@ -132,6 +134,34 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case 4841 ... 4904:
|
|
|
|
|
+ {
|
|
|
|
|
+ uint32_t *base_addr = (uint32_t *)modbus_single[4].addr;
|
|
|
|
|
+ uint32_t step = addr - cas->map->start_registers;
|
|
|
|
|
+ base_addr = base_addr + (addr - modbus_single[4].offset);
|
|
|
|
|
+ uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
|
|
|
|
|
+ if (lenth < 126)
|
|
|
|
|
+ {
|
|
|
|
|
+ pthread_mutex_lock(&cas->mutex);
|
|
|
|
|
+ memcpy(map_addr, base_addr, 2 * lenth);
|
|
|
|
|
+ pthread_mutex_unlock(&cas->mutex);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 4905 ... 4968:
|
|
|
|
|
+ {
|
|
|
|
|
+ uint32_t *base_addr = (uint32_t *)modbus_single[5].addr;
|
|
|
|
|
+ uint32_t step = addr - cas->map->start_registers;
|
|
|
|
|
+ base_addr = base_addr + (addr - modbus_single[5].offset);
|
|
|
|
|
+ uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
|
|
|
|
|
+ if (lenth < 126)
|
|
|
|
|
+ {
|
|
|
|
|
+ pthread_mutex_lock(&cas->mutex);
|
|
|
|
|
+ memcpy(map_addr, base_addr, 2 * lenth);
|
|
|
|
|
+ pthread_mutex_unlock(&cas->mutex);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
default:
|
|
default:
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|