/** ****************************************************************************** * @file modbus_devid.c * @brief Реализация идентификации устройства Modbus ****************************************************************************** * @details Модуль обработки запросов идентификации устройства через MEI-тип 0x0E: - Формирование иерархии объектов идентификации - Поддержка потоковой передачи при большом количестве объектов - Автоматический расчет MoreFollows флагов @section Потоковая передача: При большом количестве объектов идентификация разбивается на несколько сообщений с установкой флага MoreFollows и указанием NextObjId для продолжения чтения в следующем запросе. ******************************************************************************/ #include "modbus_devid.h" /** * @brief Write Object of Device Identification to MessageData * @param mbdata Указатель на массив данных в структуре RS_MsgTypeDef. * @return obj Объект для записи. */ void MB_WriteSingleObjectToMessage(char *mbdata, unsigned *ind, MB_DeviceObjectTypeDef *obj) { mbdata[(*ind)++] = obj->length; for (int i = 0; i < obj->length; i++) { mbdata[(*ind)++] = obj->name[i]; } } /** * @brief Write Object of Device Identification to MessageData * @param mbdata Указатель на массив данных в структуре RS_MsgTypeDef. * @return obj Объект для записи. */ void MB_WriteObjectsToMessage(RS_MsgTypeDef *modbus_msg, unsigned maxidofobj) { MB_DeviceObjectTypeDef *obj = (MB_DeviceObjectTypeDef *)&MB_DEVID; unsigned objidtmp = modbus_msg->DevId.NextObjId; /* Define number of object in one message */ unsigned lastobjid = 0; for(int i = 0; i < DATA_SIZE*2;) { i += 2; i += obj[objidtmp].length; /* Если все еще помещается в массив переходим на следующий объект */ if(i < DATA_SIZE*2) { objidtmp++; } /* Если объекты для записи закончились - выходим из цикла*/ if(objidtmp > maxidofobj) break; } lastobjid = objidtmp-1; /* Fill message with objects data */ char *mbdata = (char *)&modbus_msg->DATA; unsigned ind = 0; unsigned objid = modbus_msg->DevId.NextObjId; for(; objid <= lastobjid; objid++) { mbdata[ind++] = objid; MB_WriteSingleObjectToMessage(mbdata, &ind, &obj[objid]); } objid--; modbus_msg->ByteCnt = ind; modbus_msg->DevId.NextObjId = lastobjid+1; if(objid == maxidofobj) { modbus_msg->DevId.MoreFollows = 0; } else { modbus_msg->DevId.MoreFollows = 0xFF; } } /** * @brief Proccess command Read Device Identification (43/14 - 0x2B/0E). * @param modbus_msg Указатель на структуру собщения modbus. * @return fMessageHandled Статус о результате обработки комманды. * @details Обработка команды Write Single Register. */ uint8_t MB_Proccess_Read_Device_Identification(RS_MsgTypeDef *modbus_msg) { switch(modbus_msg->DevId.ReadDevId) { case MB_BASIC_IDENTIFICATION: if (modbus_msg->DevId.NextObjId == 0) { modbus_msg->DevId.NextObjId = 0; } MB_WriteObjectsToMessage(modbus_msg, 2); modbus_msg->DevId.NumbOfObj = 3; break; case MB_REGULAR_IDENTIFICATION: if (modbus_msg->DevId.NextObjId == 0) { modbus_msg->DevId.NextObjId = 3; } MB_WriteObjectsToMessage(modbus_msg, 6); modbus_msg->DevId.NumbOfObj = 4; break; case MB_EXTENDED_IDENTIFICATION: if (modbus_msg->DevId.NextObjId == 0) { modbus_msg->DevId.NextObjId = 0x80; } MB_WriteObjectsToMessage(modbus_msg, 0x80+MODBUS_NUMB_OF_USEROBJECTS); modbus_msg->DevId.NumbOfObj = MODBUS_NUMB_OF_USEROBJECTS; break; case MB_SPEDIFIC_IDENTIFICATION: MB_WriteObjectsToMessage(modbus_msg, modbus_msg->DevId.NextObjId); modbus_msg->DevId.NumbOfObj = 1; break; default: return 0; } return 1; } void MB_DeviceInentificationInit(void) { MB_ObjectInit(&MB_DEVID.VendorName, MODBUS_VENDOR_NAME); MB_ObjectInit(&MB_DEVID.ProductCode, MODBUS_PRODUCT_CODE); MB_ObjectInit(&MB_DEVID.Revision, MODBUS_REVISION); MB_ObjectInit(&MB_DEVID.VendorUrl, MODBUS_VENDOR_URL); MB_ObjectInit(&MB_DEVID.ProductName, MODBUS_PRODUCT_NAME); MB_ObjectInit(&MB_DEVID.ModelName, MODBUS_MODEL_NAME); #ifdef MODBUS_USEROBJECT_0_NAME MB_ObjectInit(&MB_DEVID.User[0], MODBUS_USEROBJECT_0_NAME); #endif #ifdef MODBUS_USEROBJECT_1_NAME MB_ObjectInit(&MB_DEVID.User[1], MODBUS_USEROBJECT_1_NAME); #endif #ifdef MODBUS_USEROBJECT_2_NAME MB_ObjectInit(&MB_DEVID.User[2], MODBUS_USEROBJECT_2_NAME); #endif #ifdef MODBUS_USEROBJECT_3_NAME MB_ObjectInit(&MB_DEVID.User[3], MODBUS_USEROBJECT_3_NAME); #endif #ifdef MODBUS_USEROBJECT_4_NAME MB_ObjectInit(&MB_DEVID.User[4], MODBUS_USEROBJECT_4_NAME); #endif #ifdef MODBUS_USEROBJECT_5_NAME MB_ObjectInit(&MB_DEVID.User[5], MODBUS_USEROBJECT_5_NAME); #endif #ifdef MODBUS_USEROBJECT_6_NAME MB_ObjectInit(&MB_DEVID.User[6], MODBUS_USEROBJECT_6_NAME); #endif #ifdef MODBUS_USEROBJECT_7_NAME MB_ObjectInit(&MB_DEVID.User[7], MODBUS_USEROBJECT_7_NAME); #endif #ifdef MODBUS_USEROBJECT_8_NAME MB_ObjectInit(&MB_DEVID.User[8], MODBUS_USEROBJECT_8_NAME); #endif #ifdef MODBUS_USEROBJECT_9_NAME MB_ObjectInit(&MB_DEVID.User[9], MODBUS_USEROBJECT_9_NAME); #endif #ifdef MODBUS_USEROBJECT_10_NAME MB_ObjectInit(&MB_DEVID.User[10], MODBUS_USEROBJECT_10_NAME); #endif #ifdef MODBUS_USEROBJECT_11_NAME MB_ObjectInit(&MB_DEVID.User[11], MODBUS_USEROBJECT_11_NAME); #endif #ifdef MODBUS_USEROBJECT_12_NAME MB_ObjectInit(&MB_DEVID.User[12], MODBUS_USEROBJECT_12_NAME); #endif #ifdef MODBUS_USEROBJECT_13_NAME MB_ObjectInit(&MB_DEVID.User[13], MODBUS_USEROBJECT_13_NAME); #endif #ifdef MODBUS_USEROBJECT_14_NAME MB_ObjectInit(&MB_DEVID.User[14], MODBUS_USEROBJECT_14_NAME); #endif #ifdef MODBUS_USEROBJECT_15_NAME MB_ObjectInit(&MB_DEVID.User[15], MODBUS_USEROBJECT_15_NAME); #endif #ifdef MODBUS_USEROBJECT_16_NAME MB_ObjectInit(&MB_DEVID.User[16], MODBUS_USEROBJECT_16_NAME); #endif #ifdef MODBUS_USEROBJECT_17_NAME MB_ObjectInit(&MB_DEVID.User[17], MODBUS_USEROBJECT_17_NAME); #endif #ifdef MODBUS_USEROBJECT_18_NAME MB_ObjectInit(&MB_DEVID.User[18], MODBUS_USEROBJECT_18_NAME); #endif #ifdef MODBUS_USEROBJECT_19_NAME MB_ObjectInit(&MB_DEVID.User[19], MODBUS_USEROBJECT_19_NAME); #endif #ifdef MODBUS_USEROBJECT_20_NAME MB_ObjectInit(&MB_DEVID.User[20], MODBUS_USEROBJECT_20_NAME); #endif #ifdef MODBUS_USEROBJECT_21_NAME MB_ObjectInit(&MB_DEVID.User[21], MODBUS_USEROBJECT_21_NAME); #endif #ifdef MODBUS_USEROBJECT_22_NAME MB_ObjectInit(&MB_DEVID.User[22], MODBUS_USEROBJECT_22_NAME); #endif #ifdef MODBUS_USEROBJECT_23_NAME MB_ObjectInit(&MB_DEVID.User[23], MODBUS_USEROBJECT_23_NAME); #endif #ifdef MODBUS_USEROBJECT_24_NAME MB_ObjectInit(&MB_DEVID.User[24], MODBUS_USEROBJECT_24_NAME); #endif #ifdef MODBUS_USEROBJECT_25_NAME MB_ObjectInit(&MB_DEVID.User[25], MODBUS_USEROBJECT_25_NAME); #endif #ifdef MODBUS_USEROBJECT_26_NAME MB_ObjectInit(&MB_DEVID.User[26], MODBUS_USEROBJECT_26_NAME); #endif #ifdef MODBUS_USEROBJECT_27_NAME MB_ObjectInit(&MB_DEVID.User[27], MODBUS_USEROBJECT_27_NAME); #endif #ifdef MODBUS_USEROBJECT_28_NAME MB_ObjectInit(&MB_DEVID.User[28], MODBUS_USEROBJECT_28_NAME); #endif #ifdef MODBUS_USEROBJECT_29_NAME MB_ObjectInit(&MB_DEVID.User[29], MODBUS_USEROBJECT_29_NAME); #endif #ifdef MODBUS_USEROBJECT_30_NAME MB_ObjectInit(&MB_DEVID.User[30], MODBUS_USEROBJECT_30_NAME); #endif #ifdef MODBUS_USEROBJECT_31_NAME MB_ObjectInit(&MB_DEVID.User[31], MODBUS_USEROBJECT_31_NAME); #endif #ifdef MODBUS_USEROBJECT_32_NAME MB_ObjectInit(&MB_DEVID.User[32], MODBUS_USEROBJECT_32_NAME); #endif #ifdef MODBUS_USEROBJECT_33_NAME MB_ObjectInit(&MB_DEVID.User[33], MODBUS_USEROBJECT_33_NAME); #endif #ifdef MODBUS_USEROBJECT_34_NAME MB_ObjectInit(&MB_DEVID.User[34], MODBUS_USEROBJECT_34_NAME); #endif #ifdef MODBUS_USEROBJECT_35_NAME MB_ObjectInit(&MB_DEVID.User[35], MODBUS_USEROBJECT_35_NAME); #endif #ifdef MODBUS_USEROBJECT_36_NAME MB_ObjectInit(&MB_DEVID.User[36], MODBUS_USEROBJECT_36_NAME); #endif #ifdef MODBUS_USEROBJECT_37_NAME MB_ObjectInit(&MB_DEVID.User[37], MODBUS_USEROBJECT_37_NAME); #endif #ifdef MODBUS_USEROBJECT_38_NAME MB_ObjectInit(&MB_DEVID.User[38], MODBUS_USEROBJECT_38_NAME); #endif #ifdef MODBUS_USEROBJECT_39_NAME MB_ObjectInit(&MB_DEVID.User[39], MODBUS_USEROBJECT_39_NAME); #endif #ifdef MODBUS_USEROBJECT_40_NAME MB_ObjectInit(&MB_DEVID.User[40], MODBUS_USEROBJECT_40_NAME); #endif #ifdef MODBUS_USEROBJECT_41_NAME MB_ObjectInit(&MB_DEVID.User[41], MODBUS_USEROBJECT_41_NAME); #endif #ifdef MODBUS_USEROBJECT_42_NAME MB_ObjectInit(&MB_DEVID.User[42], MODBUS_USEROBJECT_42_NAME); #endif #ifdef MODBUS_USEROBJECT_43_NAME MB_ObjectInit(&MB_DEVID.User[43], MODBUS_USEROBJECT_43_NAME); #endif #ifdef MODBUS_USEROBJECT_44_NAME MB_ObjectInit(&MB_DEVID.User[44], MODBUS_USEROBJECT_44_NAME); #endif #ifdef MODBUS_USEROBJECT_45_NAME MB_ObjectInit(&MB_DEVID.User[45], MODBUS_USEROBJECT_45_NAME); #endif #ifdef MODBUS_USEROBJECT_46_NAME MB_ObjectInit(&MB_DEVID.User[46], MODBUS_USEROBJECT_46_NAME); #endif #ifdef MODBUS_USEROBJECT_47_NAME MB_ObjectInit(&MB_DEVID.User[47], MODBUS_USEROBJECT_47_NAME); #endif #ifdef MODBUS_USEROBJECT_48_NAME MB_ObjectInit(&MB_DEVID.User[48], MODBUS_USEROBJECT_48_NAME); #endif #ifdef MODBUS_USEROBJECT_49_NAME MB_ObjectInit(&MB_DEVID.User[49], MODBUS_USEROBJECT_49_NAME); #endif #ifdef MODBUS_USEROBJECT_50_NAME MB_ObjectInit(&MB_DEVID.User[50], MODBUS_USEROBJECT_50_NAME); #endif #ifdef MODBUS_USEROBJECT_51_NAME MB_ObjectInit(&MB_DEVID.User[51], MODBUS_USEROBJECT_51_NAME); #endif #ifdef MODBUS_USEROBJECT_52_NAME MB_ObjectInit(&MB_DEVID.User[52], MODBUS_USEROBJECT_52_NAME); #endif #ifdef MODBUS_USEROBJECT_53_NAME MB_ObjectInit(&MB_DEVID.User[53], MODBUS_USEROBJECT_53_NAME); #endif #ifdef MODBUS_USEROBJECT_54_NAME MB_ObjectInit(&MB_DEVID.User[54], MODBUS_USEROBJECT_54_NAME); #endif #ifdef MODBUS_USEROBJECT_55_NAME MB_ObjectInit(&MB_DEVID.User[55], MODBUS_USEROBJECT_55_NAME); #endif #ifdef MODBUS_USEROBJECT_56_NAME MB_ObjectInit(&MB_DEVID.User[56], MODBUS_USEROBJECT_56_NAME); #endif #ifdef MODBUS_USEROBJECT_57_NAME MB_ObjectInit(&MB_DEVID.User[57], MODBUS_USEROBJECT_57_NAME); #endif #ifdef MODBUS_USEROBJECT_58_NAME MB_ObjectInit(&MB_DEVID.User[58], MODBUS_USEROBJECT_58_NAME); #endif #ifdef MODBUS_USEROBJECT_59_NAME MB_ObjectInit(&MB_DEVID.User[59], MODBUS_USEROBJECT_59_NAME); #endif #ifdef MODBUS_USEROBJECT_60_NAME MB_ObjectInit(&MB_DEVID.User[60], MODBUS_USEROBJECT_60_NAME); #endif #ifdef MODBUS_USEROBJECT_61_NAME MB_ObjectInit(&MB_DEVID.User[61], MODBUS_USEROBJECT_61_NAME); #endif #ifdef MODBUS_USEROBJECT_62_NAME MB_ObjectInit(&MB_DEVID.User[62], MODBUS_USEROBJECT_62_NAME); #endif #ifdef MODBUS_USEROBJECT_63_NAME MB_ObjectInit(&MB_DEVID.User[63], MODBUS_USEROBJECT_63_NAME); #endif #ifdef MODBUS_USEROBJECT_64_NAME MB_ObjectInit(&MB_DEVID.User[64], MODBUS_USEROBJECT_64_NAME); #endif #ifdef MODBUS_USEROBJECT_65_NAME MB_ObjectInit(&MB_DEVID.User[65], MODBUS_USEROBJECT_65_NAME); #endif #ifdef MODBUS_USEROBJECT_66_NAME MB_ObjectInit(&MB_DEVID.User[66], MODBUS_USEROBJECT_66_NAME); #endif #ifdef MODBUS_USEROBJECT_67_NAME MB_ObjectInit(&MB_DEVID.User[67], MODBUS_USEROBJECT_67_NAME); #endif #ifdef MODBUS_USEROBJECT_68_NAME MB_ObjectInit(&MB_DEVID.User[68], MODBUS_USEROBJECT_68_NAME); #endif #ifdef MODBUS_USEROBJECT_69_NAME MB_ObjectInit(&MB_DEVID.User[69], MODBUS_USEROBJECT_69_NAME); #endif #ifdef MODBUS_USEROBJECT_70_NAME MB_ObjectInit(&MB_DEVID.User[70], MODBUS_USEROBJECT_70_NAME); #endif #ifdef MODBUS_USEROBJECT_71_NAME MB_ObjectInit(&MB_DEVID.User[71], MODBUS_USEROBJECT_71_NAME); #endif #ifdef MODBUS_USEROBJECT_72_NAME MB_ObjectInit(&MB_DEVID.User[72], MODBUS_USEROBJECT_72_NAME); #endif #ifdef MODBUS_USEROBJECT_73_NAME MB_ObjectInit(&MB_DEVID.User[73], MODBUS_USEROBJECT_73_NAME); #endif #ifdef MODBUS_USEROBJECT_74_NAME MB_ObjectInit(&MB_DEVID.User[74], MODBUS_USEROBJECT_74_NAME); #endif #ifdef MODBUS_USEROBJECT_75_NAME MB_ObjectInit(&MB_DEVID.User[75], MODBUS_USEROBJECT_75_NAME); #endif #ifdef MODBUS_USEROBJECT_76_NAME MB_ObjectInit(&MB_DEVID.User[76], MODBUS_USEROBJECT_76_NAME); #endif #ifdef MODBUS_USEROBJECT_77_NAME MB_ObjectInit(&MB_DEVID.User[77], MODBUS_USEROBJECT_77_NAME); #endif #ifdef MODBUS_USEROBJECT_78_NAME MB_ObjectInit(&MB_DEVID.User[78], MODBUS_USEROBJECT_78_NAME); #endif #ifdef MODBUS_USEROBJECT_79_NAME MB_ObjectInit(&MB_DEVID.User[79], MODBUS_USEROBJECT_79_NAME); #endif #ifdef MODBUS_USEROBJECT_80_NAME MB_ObjectInit(&MB_DEVID.User[80], MODBUS_USEROBJECT_80_NAME); #endif #ifdef MODBUS_USEROBJECT_81_NAME MB_ObjectInit(&MB_DEVID.User[81], MODBUS_USEROBJECT_81_NAME); #endif #ifdef MODBUS_USEROBJECT_82_NAME MB_ObjectInit(&MB_DEVID.User[82], MODBUS_USEROBJECT_82_NAME); #endif #ifdef MODBUS_USEROBJECT_83_NAME MB_ObjectInit(&MB_DEVID.User[83], MODBUS_USEROBJECT_83_NAME); #endif #ifdef MODBUS_USEROBJECT_84_NAME MB_ObjectInit(&MB_DEVID.User[84], MODBUS_USEROBJECT_84_NAME); #endif #ifdef MODBUS_USEROBJECT_85_NAME MB_ObjectInit(&MB_DEVID.User[85], MODBUS_USEROBJECT_85_NAME); #endif #ifdef MODBUS_USEROBJECT_86_NAME MB_ObjectInit(&MB_DEVID.User[86], MODBUS_USEROBJECT_86_NAME); #endif #ifdef MODBUS_USEROBJECT_87_NAME MB_ObjectInit(&MB_DEVID.User[87], MODBUS_USEROBJECT_87_NAME); #endif #ifdef MODBUS_USEROBJECT_88_NAME MB_ObjectInit(&MB_DEVID.User[88], MODBUS_USEROBJECT_88_NAME); #endif #ifdef MODBUS_USEROBJECT_89_NAME MB_ObjectInit(&MB_DEVID.User[89], MODBUS_USEROBJECT_89_NAME); #endif #ifdef MODBUS_USEROBJECT_90_NAME MB_ObjectInit(&MB_DEVID.User[90], MODBUS_USEROBJECT_90_NAME); #endif #ifdef MODBUS_USEROBJECT_91_NAME MB_ObjectInit(&MB_DEVID.User[91], MODBUS_USEROBJECT_91_NAME); #endif #ifdef MODBUS_USEROBJECT_92_NAME MB_ObjectInit(&MB_DEVID.User[92], MODBUS_USEROBJECT_92_NAME); #endif #ifdef MODBUS_USEROBJECT_93_NAME MB_ObjectInit(&MB_DEVID.User[93], MODBUS_USEROBJECT_93_NAME); #endif #ifdef MODBUS_USEROBJECT_94_NAME MB_ObjectInit(&MB_DEVID.User[94], MODBUS_USEROBJECT_94_NAME); #endif #ifdef MODBUS_USEROBJECT_95_NAME MB_ObjectInit(&MB_DEVID.User[95], MODBUS_USEROBJECT_95_NAME); #endif #ifdef MODBUS_USEROBJECT_96_NAME MB_ObjectInit(&MB_DEVID.User[96], MODBUS_USEROBJECT_96_NAME); #endif #ifdef MODBUS_USEROBJECT_97_NAME MB_ObjectInit(&MB_DEVID.User[97], MODBUS_USEROBJECT_97_NAME); #endif #ifdef MODBUS_USEROBJECT_98_NAME MB_ObjectInit(&MB_DEVID.User[98], MODBUS_USEROBJECT_98_NAME); #endif #ifdef MODBUS_USEROBJECT_99_NAME MB_ObjectInit(&MB_DEVID.User[99], MODBUS_USEROBJECT_99_NAME); #endif #ifdef MODBUS_USEROBJECT_100_NAME MB_ObjectInit(&MB_DEVID.User[100], MODBUS_USEROBJECT_100_NAME); #endif #ifdef MODBUS_USEROBJECT_101_NAME MB_ObjectInit(&MB_DEVID.User[101], MODBUS_USEROBJECT_101_NAME); #endif #ifdef MODBUS_USEROBJECT_102_NAME MB_ObjectInit(&MB_DEVID.User[102], MODBUS_USEROBJECT_102_NAME); #endif #ifdef MODBUS_USEROBJECT_103_NAME MB_ObjectInit(&MB_DEVID.User[103], MODBUS_USEROBJECT_103_NAME); #endif #ifdef MODBUS_USEROBJECT_104_NAME MB_ObjectInit(&MB_DEVID.User[104], MODBUS_USEROBJECT_104_NAME); #endif #ifdef MODBUS_USEROBJECT_105_NAME MB_ObjectInit(&MB_DEVID.User[105], MODBUS_USEROBJECT_105_NAME); #endif #ifdef MODBUS_USEROBJECT_106_NAME MB_ObjectInit(&MB_DEVID.User[106], MODBUS_USEROBJECT_106_NAME); #endif #ifdef MODBUS_USEROBJECT_107_NAME MB_ObjectInit(&MB_DEVID.User[107], MODBUS_USEROBJECT_107_NAME); #endif #ifdef MODBUS_USEROBJECT_108_NAME MB_ObjectInit(&MB_DEVID.User[108], MODBUS_USEROBJECT_108_NAME); #endif #ifdef MODBUS_USEROBJECT_109_NAME MB_ObjectInit(&MB_DEVID.User[109], MODBUS_USEROBJECT_109_NAME); #endif #ifdef MODBUS_USEROBJECT_110_NAME MB_ObjectInit(&MB_DEVID.User[110], MODBUS_USEROBJECT_110_NAME); #endif #ifdef MODBUS_USEROBJECT_111_NAME MB_ObjectInit(&MB_DEVID.User[111], MODBUS_USEROBJECT_111_NAME); #endif #ifdef MODBUS_USEROBJECT_112_NAME MB_ObjectInit(&MB_DEVID.User[112], MODBUS_USEROBJECT_112_NAME); #endif #ifdef MODBUS_USEROBJECT_113_NAME MB_ObjectInit(&MB_DEVID.User[113], MODBUS_USEROBJECT_113_NAME); #endif #ifdef MODBUS_USEROBJECT_114_NAME MB_ObjectInit(&MB_DEVID.User[114], MODBUS_USEROBJECT_114_NAME); #endif #ifdef MODBUS_USEROBJECT_115_NAME MB_ObjectInit(&MB_DEVID.User[115], MODBUS_USEROBJECT_115_NAME); #endif #ifdef MODBUS_USEROBJECT_116_NAME MB_ObjectInit(&MB_DEVID.User[116], MODBUS_USEROBJECT_116_NAME); #endif #ifdef MODBUS_USEROBJECT_117_NAME MB_ObjectInit(&MB_DEVID.User[117], MODBUS_USEROBJECT_117_NAME); #endif #ifdef MODBUS_USEROBJECT_118_NAME MB_ObjectInit(&MB_DEVID.User[118], MODBUS_USEROBJECT_118_NAME); #endif #ifdef MODBUS_USEROBJECT_119_NAME MB_ObjectInit(&MB_DEVID.User[119], MODBUS_USEROBJECT_119_NAME); #endif #ifdef MODBUS_USEROBJECT_120_NAME MB_ObjectInit(&MB_DEVID.User[120], MODBUS_USEROBJECT_120_NAME); #endif #ifdef MODBUS_USEROBJECT_121_NAME MB_ObjectInit(&MB_DEVID.User[121], MODBUS_USEROBJECT_121_NAME); #endif #ifdef MODBUS_USEROBJECT_122_NAME MB_ObjectInit(&MB_DEVID.User[122], MODBUS_USEROBJECT_122_NAME); #endif #ifdef MODBUS_USEROBJECT_123_NAME MB_ObjectInit(&MB_DEVID.User[123], MODBUS_USEROBJECT_123_NAME); #endif #ifdef MODBUS_USEROBJECT_124_NAME MB_ObjectInit(&MB_DEVID.User[124], MODBUS_USEROBJECT_124_NAME); #endif #ifdef MODBUS_USEROBJECT_125_NAME MB_ObjectInit(&MB_DEVID.User[125], MODBUS_USEROBJECT_125_NAME); #endif #ifdef MODBUS_USEROBJECT_126_NAME MB_ObjectInit(&MB_DEVID.User[126], MODBUS_USEROBJECT_126_NAME); #endif #ifdef MODBUS_USEROBJECT_127_NAME MB_ObjectInit(&MB_DEVID.User[127], MODBUS_USEROBJECT_127_NAME); #endif }