SourceCode/Bond/Servo/Model.cpp
@@ -168,18 +168,6 @@
         setControlState(ControlState::OnlineRemote);
      }
   };
   listener.onEQConstantRequest = [&](void* pFrom, std::vector<EQConstant>& eqcs) -> void {
      // 在此填充常量值,目前仅是加1后返回
      for (auto& item : eqcs) {
         sprintf_s(item.szValue, EQCONSTANT_VALUE_MAX, "Test%d", item.id + 1);
      }
   };
   listener.onEQConstantSend = [&](void* pFrom, std::vector<EQConstant>& eqcs) -> void {
      // 在此保存和设置机器常量值
      for (auto& item : eqcs) {
         LOGI("onEQConstantRequest: %d, %s", item.id, item.szValue);
      }
   };
   listener.onDatetimeSync = [&](void* pFrom, SYSTEMTIME& time) -> void {
      LOGI("onDatetimeSync: %d%02d%02d%02d%02d%02d", time.wYear,
         time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond);
@@ -245,6 +233,11 @@
            // 真正的“开始”由 ProceedWithSlotMap 决策触发。
            // 仅当未开启 CompareMapsBeforeProceeding 时,才沿用旧逻辑直接 Start。
            LOGI("<CModel>ProceedWithCarrier");
            if (m_master.getControlJob() == nullptr || m_master.isProcessJobsEmpty()) {
               strErrorTxt = "rejected - ControlJob/ProcessJob not ready";
               LOGW("<CModel>ProceedWithCarrier rejected: no CJ/PJ, port=%d", portIndex + 1);
               return CAACK_5;
            }
            if (pLoadPort == nullptr || !pLoadPort->isCompareMapsBeforeProceeding()) {
               m_master.proceedWithCarrier(portIndex);
            }
@@ -313,6 +306,8 @@
   m_hsmsPassive.loadVarialbles((LPTSTR)(LPCTSTR)strVarialbleFile);
   strVarialbleFile.Format(_T("%s\\DataVariableList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
   m_hsmsPassive.loadDataVarialbles((LPTSTR)(LPCTSTR)strVarialbleFile);
   strVarialbleFile.Format(_T("%s\\EquipmentConstantList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
   m_hsmsPassive.loadEquipmentConstants((LPTSTR)(LPCTSTR)strVarialbleFile);
   setControlState(m_currentControlState);
   refreshDerivedSVs();
   m_hsmsPassive.init(this, "APP", 7000);
@@ -320,6 +315,15 @@
   m_hsmsPassive.loadReports((LPTSTR)(LPCTSTR)strVarialbleFile);
   strVarialbleFile.Format(_T("%s\\CollectionEventList.txt"), (LPTSTR)(LPCTSTR)m_strWorkDir);
   m_hsmsPassive.loadCollectionEvents((LPTSTR)(LPCTSTR)strVarialbleFile);
   {
      auto events = m_hsmsPassive.getCollectionEvents();
      std::vector<unsigned int> ceids;
      ceids.reserve(events.size());
      for (auto e : events) {
         if (e != nullptr) ceids.push_back(e->getEventId());
      }
      m_master.setAllowedCeids(ceids);
   }
   strVarialbleFile.Format(_T("%s\\HsmsPassive.cache"), (LPTSTR)(LPCTSTR)m_strWorkDir);
   m_hsmsPassive.loadCacheFromFile(strVarialbleFile);