我的SIMULINK模型中有一個傳統的C函數,它在函數中使用了一些靜態變量。靜態變量在全局範圍內可用。當我參考我的模型的多個實例時,我得到錯誤,因爲我的S函數沒有爲此配置。我收到此錯誤消息,因爲代碼生成不允許這樣做。SIMULINK中的S函數(C代碼)的多實例使用
該錯誤消息我得到的是以下幾點:
的S-功能塊「ECDCTRL/PULDESC/S-Function Builder中的」未在多實例正常模式支持,因爲它不聲明它支持多個執行實例。如果S函數滿足多個執行實例要求,則可以使用'mdlSetWorkWidths'方法中的SimStruct函數'ssSupportsMultipleExecInstances'來聲明該函數。
我在使用自動生成的代碼構建它時使用了(MYSFUNC)_Outputs_Wrapper.c
文件。如何確保在使用多個模型引用時可以使用我的傳統C函數? SIMULINK網站建議使用ssSupportsMultipleExecInstances(SimStruct *S, bool flag)
方法,但它不正確,因爲我沒有使用SimStruct
頭文件。周圍是什麼?
您有靜態變量和多個實例的一個普遍問題。考慮在您的SFunction中使用DWork矢量。 – pmb
你能澄清一點嗎?我不熟悉它。 – ha9u63ar