عزيزي المطور العقاري ،
أرغب في تشغيل نموذج OpenLoop Simulink ، لكن لسوء الحظ لقد علقت في إنشاء S-Function. OpenFAST يعمل بسلاسة في المحطة. تم إجراء العديد من اختبارات r ، ونتائج المحاكاة الجديدة تفي بالتوقعات أيضًا. ولكن عندما أقوم بتشغيل "create_FAST_SFunc.m" ، تلقيت رسالة الخطأ (انظر أدناه). حذر MATLAB r2017b و MATLAB r2019b من إصدارات مختلفة من دول مجلس التعاون الخليجي (كلاهما مفقود في حالتي) ، لكنهما نتجا عن نفس المراجع غير المحددة
هل يمكن أن يكون سبب المشكلة هو عدم وجود نسخة دول مجلس التعاون الخليجي؟ أرغب في تجربة طرق أخرى قبل تثبيت إصدار خليجي لا يدعمه Canonical.
شكرًا لك على عملك الرائع وجهودك الدؤوبة لدعم FAST!
بالاز
خطأ MATLAB:
تحذير: أنت تستخدم إصدار مجلس التعاون الخليجي "5.4.0". إصدار دول مجلس التعاون الخليجي غير مدعوم. الإصدار> المدعوم حاليًا مع MEX هو "6.3.x". للحصول على قائمة
المترجمون المدعومون حاليًا راجع: https://www.mathworks.com/support/compilers/current_release.
خطأ في استخدام mex
/home/balazs/OpenFAST/install/lib/libopenfastlib.a(FAST_Library.f90.o): في الوظيفةFAST_OpFM_Step': FAST_Library.f90:(.text+0xb6): undefined reference to
__fast_subs_MOD_fast_solution_t '
FAST_Library.f90 :(. text + 0x108): مرجع غير محدد إلى_gfortran_string_len_trim' FAST_Library.f90:(.text+0x147): undefined reference to
_gfortran_concat_string '
FAST_Library.f90 :(. text + 0x18c): مرجع غير محدد إلى_gfortran_concat_string' FAST_Library.f90:(.text+0x2f1): undefined reference to
_gfortran_concat_string '
FAST_Library.f90 :(. text + 0x38c): مرجع غير محدد إلى__supercontroller_MOD_sc_setoutputs' FAST_Library.f90:(.text+0x3fa): undefined reference to
__supercontroller_MOD_sc_setinputs '
/home/balazs/OpenFAST/install/lib/libopenfastlib.a(FAST_Library.f90.o): في الوظيفةFAST_OpFM_Restart': FAST_Library.f90:(.text+0x85b): undefined reference to
__nwtc_library_MOD_nwtc_init '
FAST_Library.f90 :(. text + 0x896): إشارة غير محددة إلى "_gfortran_string_index"
.
.
.
..FAST_Library.f90 :(. text + 0xaba13): مرجع غير محدد إلى
_gfortran_runtime_error_at' FAST_Library.f90:(.text+0xaba1f): undefined reference to
_gfortran_os_error '
collect2: خطأ: أرجع ld حالة خروج واحدةخطأ في create_FAST_SFunc (السطر 71)
مكس ('- largeArrayDims'، ...
بيئة ماتلاب
pwd
"/ home / bala / OpenFAST / الغراء-أكواد / simulink / src"
الشكل النهائي لأمر mex:
مكس ('- largeArrayDims'، ...
'-L / home / bala / OpenFAST / install / lib' ، ...
"-lopenfastlib" ، ...
'-I / home / bala / OpenFAST / install / include'، ...
'-I / home / bala / OpenFAST / modules / supercontroller / src' ، ...
'-I / home / bala / OpenFAST / modules / openfoam / src' ، ...
'-outdir'، '.'، ...
'COMPFLAGS = $ COMPFLAGS -MT -D' ، ...
"S_FUNCTION_NAME = FAST_SFunc" ، ...
"-output"، "FAST_SFunc"، ...
"FAST_SFunc.c") ؛
إصدار OpenFAST
OpenFAST
حقوق الطبع والنشر (C) للمختبر الوطني للطاقة المتجددة
حقوق النشر (C) Envision Energy USA LTD
تم ترخيص هذا البرنامج بموجب ترخيص Apache الإصدار 2.0 ويأتي مع عدم وجود ضمان على الإطلاق.
راجع ملف "LICENSE" الموزع مع هذا البرنامج للحصول على التفاصيل.
OpenFAST-v2.2.0
تجميع المعلومات:
معلومات النظام:
الإجابة المختصرة هي ، نعم ، من المحتمل أن يتسبب الإصدار غير المتوافق لدول مجلس التعاون الخليجي في حدوث الأخطاء التي تراها.
يحتوي كل إصدار من Matlab على مترجمين تم إعداده للعمل معه. قد تتمكن من التغلب على ذلك عن طريق تعديل الملفات ذات الصلة في الدليل <MATLAB_ROOT>/bin/<os>/mexopts
، مع التأكد من تعيين المسارات والمكتبات للإصدار الذي تستخدمه. إذا اخترت تعديل هذه الملفات ، فمن المحتمل أيضًا أن تزيل الخيار -MT
من الأمر mex
في create_FAST_SFunc.m
حتى لا يحاول الارتباط بمكتبات ثابتة تم إنشاؤها باستخدام مترجم مختلف. وإذا قمت بإزالة -MT
، فقد تضطر إلى إضافة مسارات المكتبة إلى مسار MATLAB حتى تتمكن من العثور على المكتبات الديناميكية عند تشغيل وظيفة mex.
أود أيضًا تشغيل mex -setup
مرة أخرى بعد تغيير الملفات في الدليل mexopts
، على الرغم من أن ذلك قد لا يكون ضروريًا.
لقد حصلت للتو على مجموعة مناسبة (مدعومة) من MATLAB (2017a) و gcc 4.9 و Ubuntu 16.04.
أردت تجميع openFAST بالإصدار الحالي من gcc ، لكن لسوء الحظ نتج عن cmake رسالة خطأ: SIMULINK مع GNU غير مدعوم.
هل يجب أن أقوم بتثبيت Windows و Visual Studio حتى أتمكن من توصيل openFAST بـ Simulink؟
هل هناك إصدار سابق من openFAST مناسب للعمل مع Simulink ضمن Ubuntu؟
شكرا لك!
بالاز
يبدو أن ملف Sys * .f90 الخاص بهذه المجموعة لم يتم تحديثه في OpenFAST. بشكل أساسي ، ستحتاج إلى استبدال عبارات الكتابة في ملف SysGnuLinux.f90 باستدعاءات إلى مكتبة طباعة Matlab mex. لقد قمت بمحاولة سريعة للقيام بذلك نيابة عنك في هذا الفرع: https://github.com/bjonkman/openfast/tree/f/SimulinkGNUlinux أخبرنا إذا كان ذلك يعمل.
عزيزتي بوني ،
شكرا لك على الدعم المفيد! باستخدام الفرع المقترح ، لم ينتج عن الأمر cmake والأمر أية أخطاء. ومع ذلك ، كان مجلد "التثبيت" مفقودًا. لقد أنشأت المجلد يدويًا وحاولت العثور على جميع الملفات المفقودة ونسخها فيه. ثم تمكنت من تشغيل create_FAST_SFunc.m في Matlab 2017a دون أي تحذير أو رسالة خطأ وحصلت على FAST_SFunc.mexa64. حاولت تشغيل openLoop.mdl باستخدام AWT_YFix_WSt.fst ، لكن للأسف فشلت مع ظهور رسالة الخطأ التالية:
حدث خطأ أثناء الحصول على الأحجام من وظيفة MEX S "FAST_SFunc" في "OpenLoop / FAST توربينات الرياح غير الخطية / الوظيفة S".
حدث بسبب:
ملف MEX غير صالح '/home/bala/openfast-SimulinkGNUlinux/simulink/FAST_SFunc.mexa64': libopenfastlib.so: لا يمكن فتح ملف كائن مشترك: لا يوجد مثل هذا الملف أو الدليل.
المكون: Simulink | الفئة: كتلة خطأ
نسخة سطر الأوامر من openFast محاكاة بنجاح نفس AWT_YFix_WSt.fst
لسوء الحظ ، رسالة الخطأ ليست مفيدة للغاية بالنسبة لي. يسعدني أن ترسل لي بعض التلميحات حتى أتمكن من تحديد أسباب هذا الخطأ.
أعتقد أن Matlab لا يمكنها العثور على الملف libopenfastlib.so
. تحقق لمعرفة مكان هذا الملف ، وقم بتعديل مسار Matlab للعثور عليه ، أو انقل الملف في مكان ما على مسار بحث Matlab.
نسيت أن أذكر أن هذه كانت فكرتي الأولى والوحيدة لحل المشكلة ...
هل أنشأت ملفًا يسمى libopenfastlib.so
باستخدام مترجم 64 بت؟
نعم ، لقد حاولت اتباع التعليمات الواردة في الوثائق عبر الإنترنت (2.2. تجميع من المصدر)
cmake .. -BUILD_OPENFAST_SIMULINK_API = تشغيل -DBUILD_SHARED_LIBS = تشغيل
صنع
إذا قمت بكتابة which libopenfastlib.so
في نافذة أوامر Matlab ، فهل يعثر على الملف؟ إذا كان الأمر كذلك ، هل يمكنك التحقق من التبعيات الموجودة في مكتبة libopenfastlib.so
والتأكد من أن جميع هذه الملفات موجودة أيضًا في مسار MATLAB؟ على سبيل المثال ، إذا كان libopenfastlib.so
يعتمد على بعض مكتبات GNU Fortran ، فسيحتاجون أيضًا إلى أن يكونوا على مسار Matlab.
قد يكون لدى rafmudaf بعض الأفكار حول تبعيات المكتبة الديناميكية التي يتم إنشاؤها باستخدام عملية بناء OpenFAST cmake.
ينتج عن which libopenfastlib.so
المسار الصحيح للملف
يوجد 25 * ملف .so في نفس المجلد (libaerodyn14lib.so ، libaerodynlib.so ، إلخ)
كما ذكرت ، لم يتم إنشاء مجلد التثبيت أثناء التجميع. حاولت العثور على جميع الملفات المطلوبة لتشغيل create_FAST_SFunc.m. ربما لا يزال في عداد المفقودين؟
ربما. يمكنك أيضًا محاولة البناء باستخدام -DBUILD_SHARED_LIBS=OFF
حسنًا ، سأبلغ عن النتيجة. أتمنى لك يومًا سعيدًا وأشكرك على الدعم!
أشكركم على الدعم! يبدو أن المشكلة الأصلية قد تم حلها: يجب أن يتضمن متغير البيئة LD_LIBRARY_PATH
مجلد install / lib.
استنتاج:
cmake .. -BUILD_OPENFAST_SIMULINK_API=ON -DBUILD_SHARED_LIBS=ON
make
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/openfast/install/lib
export LD_PRELOAD=$LD_PRELOAD:/path/to/liblapack.so
(تجنب استخدام مكتبة MKL Lapack المثبتة مع Matlab)create_FAST_SFunc.m
في نافذة matlabنتج عن هذا ملف FAST_SFunc.mexa64
في المجلد /openfast/glue-codes/simulink/src
. يبدأ Run_OpenLoop.m
الآن في العمل بدون ملفات مفقودة ويمكن رؤية الرسائل العادية لمحاكاة openFAST في نافذة أوامر matlab.
شكرا لدعمكم!
أعزائي،
أنا أستخدم OpenFASTv2.2.0 على Windows07. تمكنت من تشغيل محاكاة توربين WP1.5MW بنجاح في OpenFAST (باستخدام exe.) ولكني واجهت مشكلات في تشغيل نفس الشيء من خلال simulink.
أثناء محاولة تشغيل المحاكاة باستخدام simulink ، أتلقى الخطأ التالي:
_الخطأ الذي تم الإبلاغ عنه بواسطة S-function "FAST_SFunc" في "OpenLoop / FAST توربينات الرياح غير الخطية / الوظيفة S":
FAST_Init ializeAll: AD_Init : ReadI nputFiles: ReadPrimaryFile : إدخال رقمي غير صالح للملف
حدث "E: \ OpenFAST \ WP1500kW \ AeroDyn15_Dynin.dat" أثناء محاولة قراءة AirDens._
ما أفهمه هو أن الخطأ يرجع إلى "CavitCheck" الإضافي الذي تمت إضافته في AeroDynV15.
يرجى ملاحظة أنني أستخدم الملفات "FAST_SFunc.mexw64" و "FAST_Library_x64.lib" المتوفرة مع FASTv8 نفسه. هل يمكن أن يكون هذا هو سبب المشكلة؟ إذا كانت الإجابة بنعم ، فهل هناك ملفات "mex" و "lib" مكتملة مسبقًا متوفرة مع حزمة OpenFAST أو هل أحتاج إلى تجميعها بشكل منفصل. (وأيضًا ، أي مستند حول كيفية القيام بذلك في windows). شكرا.
يعتبر،
كومارا
عزيزي كومارا ،
يبدو أنك تستخدم OpenFAST v.2.2.0 القابل للتنفيذ ، ولكن FAST v8 S-Function ( FAST_SFunc.mexw64
) والمكتبة ( FAST_Library_x64.lib
). تشغيل الملف التنفيذي مستقل عن تشغيل S-Function بالمكتبة.
يجب إعادة ترجمة مكتبة FAST S-Function و FAST باستخدام OpenFAST. هذه ليست متوفرة حاليًا في ثنائيات OpenFAST المترجمة. (على الرغم من أن rafmudaf يمكن أن يوفر ذلك.)
في نظام Windows ، أوصي بالتجميع باستخدام Visual Studio مع Intel Fortran. لبناء مكتبة OpenFAST، وفتح Visual Studio
الحل، حدد Release_MATLAB
التكوين ل x64
منصة والبناء. (إذا لم يكن لديك MATLAB 2018a مثبتًا ، فسيتعين عليك تغيير المسار إلى MATLAB في نافذة OpenFAST-Simulink
للمشروع Configuration Properties -> Linker -> Input
في الحقل Additional Dependencies
.) FAST S-Function ، قم بتشغيل البرنامج النصي MATLAB create_FAST_SFunc.m
الموجود في الدليل glue-codes\simulink\src
.
مع أطيب التحيات،
عزيزي جونكمان ،
شكرا لأستجابتك. يمكنني حل المشكلة باتباع الخطوات التي اقترحتها. لقد قمت بعمل مستند للإشارة السريعة للإجراء بالصور والمرفقة هنا. (قد يكون مفيدا لشخص ما).
OpenFAST_Simulink.pdf
بعد التحضير لهذا ، وجدت أن هناك مناقشة أخرى مفيدة للرابط هنا:
https://github.com/OpenFAST/openfast/issues/268
شكرا للمشاركة!
أهلا بالفريق،
أريد استخدام openfast لـ Matlab وأنا أحاول إنشاء ملفات MEX التي تحتاج إلى تشغيل OpenFAST (أحدث إصدار) من خلال MATLAB (Simulink).
لقد اتبعت الاقتراحات في هذا الموضوع والآن أتلقى هذا الخطأ الفادح
مجلد سلة يشبه هذا
انا استخدم؛
VS 2017 الإصدار 15.9.23
انتل بالتوازي ستوديو XE 2020
ماتلاب 2020 أ
مكس إعداد
تم تكوين MEX لاستخدام 'Intel Parallel Studio XE 2020 مع Microsoft Visual Studio 2017 (C)' لتجميع لغة C.
لاختيار مترجم C مختلف ، حدد واحدًا مما يلي:
Intel Parallel Studio XE 2020 مع Microsoft Visual Studio 2017 (C) mex - الإعداد: C : \ Users * * \ AppData \ Roaming \ MathWorks \ MATLAB \ R2020amex_C_win64.xml C
إعداد Microsoft Visual C ++ 2017 (C) mex: 'C: \ Program Files \ MATLAB \ R2020a \ bin \ win64mexopts \ msvc2017.xml' C
تحديث
أكرر الإجراء مرة أخرى لمعرفة ما إذا كان الخطأ مستمرًا وتخلصت من الخطأ الفادح ، لكن التحذيرات لا تزال موجودة
عند تنفيذ create_FAST_SFunc.m ، يظهر لي هذا الخطأ
create_FAST_SFunc
إنشاء ../../../build/binFAST_SFunc.mexw64
خطأ في استخدام mex
لا يمكن لـ MEX العثور على المكتبة "OpenFAST-Simulink_x64" المحددة بالخيار -l.
بحثت MEX عن ملف بأحد الأسماء التالية:
libOpenFAST-Simulink_x64.lib
OpenFAST-Simulink_x64.lib
تحقق من صحة اسم المكتبة. إذا لم تكن المكتبة
على المسار الحالي ، حدد المسار باستخدام الخيار -L.
خطأ في create_FAST_SFunc (السطر 60)
مكس ('- largeArrayDims'، ...
هذه التحذيرات طبيعية.
هل أنشأت عملية إنشاء Visual Studio بالفعل الملف OpenFAST-Simulink_x64.dll
في المجلد <openfast>\build\src
؟ إذا كان الأمر كذلك ، فهل يوجد أيضًا ملف OpenFAST-Simulink_x64.lib
هناك؟ ملف .lib هذا هو ما سيستخدمه mex في عملية الربط.
هل تقوم بتشغيل create_FAST_SFunc.m
من المجلد الذي يوجد به هذا الملف؟ تم تحديد الدلائل بالنسبة إلى <openfast>\glue-codes\simulink\src
، لذلك قد يتسبب ذلك أيضًا في حدوث مشكلة.
شكرا لاستجابتك bjonkman
لم تقم عملية إنشاء الاستوديو المرئي (Release_MATLAB ، x64) بإنشاء هذه الملفات (OpenFAST-Simulink_x64.dll ، OpenFAST-Simulink_x64.lib).
أقوم بتشغيل create_FAST_SFunc.m من المجلد ويتم تعيين الدلائل المطلوبة وفقًا لذلك في Matlab. أعتقد أنه نظرًا لأن الملفات المذكورة أعلاه لم يتم إنشاؤها بنجاح ، فإنني أتلقى هذا الخطأ.
يعتبر،
نظرت عن كثب إلى لقطة الشاشة الثانية. في هذه الحالة ، يبدو أنك تبني ملف OpenFAST القابل للتنفيذ بدلاً من مكتبة OpenFAST-Simulink. تأكد من أن مدير التكوين الخاص بك يقول "Release_Matlab" و "x64" قبل البناء. أود أيضًا أن أتحقق من أنك حددت موقع مكتبة MATLAB mex بشكل صحيح (انقر بزر الماوس الأيمن على مشروع OpenFAST-Simulink ، ثم حدد Properties
. تأكد من أن التكوين يقول Release_Matlab
وأن النظام الأساسي يقول x64
. ثم حدد Configuration Properties->Linker->Input->Additional Dependencies
. ستحتاج إلى علامات اقتباس حول هذا المسار نظرًا لوجود مسافة فيه.
شكرا لك على مساعدتك في حل هذه المشكلة. كنت أفعل كل شيء كما ذكرت باستثناء علامات الاقتباس حول المسار. الآن ، أنا قادر على إنشاء ملفات Simulink المطلوبة.
مع أطيب التحيات،
عزيزيbjonkman
من خلال شرحك ، يمكن أن أتمكن من بناء "FAST_SFunc.mexw64". للخطوة التالية ، قم بتشغيل مثال ، هل ستساعدني في كيفية استخدام هذا الملف وتشغيل ملف إدخال مثل "Input.fst" مع Matlab Simulink ؟؟
عزيزي saeidfn ،
تم تضمين وثائق تشغيل FAST v8 المتصل بـ MATLAB / Simulink في ملف FAST v8 التمهيدي ، راجع: https://drive.google.com/file/d/17LDwMnCVmLfbRWSaVFxxqphVrtawMwlj/view؟usp=sharing. يجب أن تكون التعليمات هي نفسها بالنسبة لـ OpenFAST.
مع أطيب التحيات،
أنا أعمل على إنشاء مسار لتوزيع مكتبة OpenFAST المترجمة لتكامل Simulink جنبًا إلى جنب مع الملفات التنفيذية الأخرى التي نشاركها بانتظام لكل إصدار. لقد أضفت ملفًا مضمنًا في الإصدار الأخير يسمى openfastlib_simulink.dll
. هل يستطيع أحد اختبار المكتبة المرفقة؟ هذه هي مكتبة OpenFAST التي يجب ربطها بوظيفة mex.
التعليق الأكثر فائدة
عزيزي جونكمان ،
شكرا لأستجابتك. يمكنني حل المشكلة باتباع الخطوات التي اقترحتها. لقد قمت بعمل مستند للإشارة السريعة للإجراء بالصور والمرفقة هنا. (قد يكون مفيدا لشخص ما).
OpenFAST_Simulink.pdf
بعد التحضير لهذا ، وجدت أن هناك مناقشة أخرى مفيدة للرابط هنا:
https://github.com/OpenFAST/openfast/issues/268