عدادات معرّفة من قبل المستخدم

ملاحظة: يمكن لـ cFos Charging Manager قراءة معظم محولات الطاقة الشمسية باستخدام SunSpec (نوع الجهاز "SunSpec Solar Inverter / Meter"). في هذه الحالة لا تحتاج إلى إنشاء تعريف العداد الخاص بك.

يسمح لك cFos Charging Manager بإنشاء تعريفات العدادات الخاصة بك لدعم العدادات غير الموجودة في المرجع القياسي. يوجد حاليًا ثلاثة أنواع: عدادات Modbus وعدادات HTTP/JSON وعدادات MQTT/JSON. ملفات التعريف لهذه العدادات متشابهة جدًا. تقرأ عدادات Modbus بياناتها عبر Modbus من سجلات محددة ، بينما تحصل عدادات HTTP/JSON على بياناتها عبر طلب HTTP وتحلل JSON استجابةً لذلك. بالنسبة لمقاييس MQTT/JSON ، يشترك cFos Charging Manager في موضوعات MQTT ويوزع الرسائل المنشورة تحت الموضوع كـ JSON. يستخدم cFos Charging Manager "لغة استعلام" صغيرة للتحليل. هنا هو توثيق قدرات MQTT في cFos Charging Manager.

بالإضافة إلى عدد من المتغيرات المحددة مسبقًا ، مثل التيار والجهد ، يمكن للعدادات التي يحددها المستخدم أيضًا قراءة المتغيرات غير المعروفة والمعرفة من قبل المستخدم ومدخلات الاستعلام والمخرجات المحددة. تسمح القراءة في المتغيرات وتحديد المخرجات بتقييم الصيغ. بالاقتران مع متغيرات Charging Manager ومخرجات Charging Manager العالمية الموضحة أدناه ، تعد هذه ميزة قوية وتسمح ببعض مهام أتمتة المنزل والتحكم في الأجهزة الخارجية مثل تخزين البطارية. إذا قمت بتنفيذ مهام التحكم بهذا ، فيرجى إرسال ملاحظات إلينا. نحن مهتمون جدًا بما يتحكم به الأشخاص من خلال cFos Charging Manager ويساعدنا على تطوير مدير الشحن وفقًا لاحتياجات العملاء.

فيما يلي تعريف نموذجي لـ Modbus وواحد لـ HTTP/JSON:
قم بتنزيل نموذج تعريف لمقياس Modbus
تنزيل تعريف عينة لجهاز قياس/

يأتي Charging Manager بالفعل مع عدد قليل من هذه الملفات ، ولكن يمكنك تحميل ملفاتك الخاصة ضمن "تكوين النظام" وحذفها أيضًا مرة أخرى.
ستجد هنا جزءًا كبيرًا من تعريفات العداد التي نقدمها:
قم بتنزيل تعريفات العداد المرفقة

إذا أنشأت ملفًا مضادًا خاصًا بك ويمكن أن يكون ذا صلة بالمستخدمين الآخرين ، سنكون ممتنين جدًا إذا أمكنك إتاحته لنا. ثم سنقوم بتسليمه مع الإصدارات المستقبلية من Charging Manager.

تحميل تعريفات العداد لمزيد من العدادات

هيكل ملف التعريف:

تعريفات العداد هي ملفات JSON مع كائن JSON عام له خصائص وكائنات فرعية. يحدد 'rtype' نوع عملية القراءة: 0 = Modbus، 1 = HTTP/JSON، 2 = MQTT/JSON. يمكنك تحديد الأرقام في النظام العشري أو السداسي مع بادئة من 0x. بالإضافة إلى ذلك ، يُسمح بالتعليقات أحادية السطر باستخدام // . نوصي بتشغيل ملفات التعريف الخاصة بك من خلال مدقق JSON5 ، مثل مدقق JSON5 هذا

تأكد من قراءة فصل الصيغ لفهم القيم التي يمكن استخدامها في الصيغ في المرجع التالي.

تحتوي تعريفات Modbus على كائن "rtu" بالخصائص التالية:

silence_period ، بالمللي ثانية. يحدد طول الإيقاف المؤقت قبل وصول Modbus RTU بحيث يتعرف الجهاز على بداية الرسالة.
silence_same_slave ، true: يتم الحفاظ على الإيقاف المؤقت حتى مع الوصول المتعدد إلى نفس الجهاز.
عمليات إعادة المحاولة: عدد مرات إعادة المحاولة إذا لم يستجب الجهاز.
rcv_timeout: بالمللي ثانية. أقصى وقت انتظار لكل وصول حتى يستجيب الجهاز.

تنطبق هذه الخصائص العامة على Modbus TCP و RTU:

modbus_read: رقم وظيفة أمر قراءة Modbus ، عادةً 3 أو 4.
modbus_read_max_registers: الحد الأقصى لعدد السجلات التي يمكن قراءتها دفعة واحدة.
modbus_allow_gaps: صحيح = يمكن قراءة مناطق التسجيل غير المستخدمة في عملية القراءة.

بالنسبة إلى Modbus TCP و HTTP/JSON ، يوجد كائن "tcp" بالخصائص التالية:

connect_timeout: هو مللي ثانية. أقصى وقت انتظار لاتصال TCP.
delay_after_connect: بالمللي ثانية. توقف مؤقتًا بعد إنشاء الاتصال قبل إرسال الأمر الأول.

كلا نوعي التعريف (Modbus و HTTP/JSON) لهما أيضًا الخصائص التالية:

upd_delay: بالمللي ثانية. يحدد الفاصل الزمني الذي يمكن قراءة الجهاز فيه. تصبح بعض الأجهزة محملة بشكل زائد عند الاستقصاء كثيرًا.
الشركة المصنعة: سلسلة ، اسم الشركة المصنعة. يظهر هذا في المعلومات الموسعة للبلاط.
delay_accumulated: صحيح = يتم الاستعلام عن القيم المتراكمة (kWh) كل 3 ثوانٍ فقط أو عندما تكون هناك طاقة كافية. خطأ = يتم الاستعلام دائمًا عن هذه القيم.
ui_addr: عنوان URL ، إذا كان مختلفًا عن عنوان الجهاز لاستدعاء واجهة الويب.
محجوز: صفيف يحتوي على قيم يتم تفسيرها على أنها 0 (مفيد إذا كان الجهاز يدعم قيمًا معينة وفقًا للطراز).

إذا حذفت الخصائص المذكورة أعلاه ، سيأخذ cFos Charging Manager القيم الافتراضية ، والتي تعمل بشكل جيد في معظم الحالات.

الخطوة التالية في تعريف JSON هي تعريف المتغيرات التي يستخدمها العداد لقراءة أو حساب قيم التيار والجهد ، إلخ. يتعرف مدير الشحن على المتغيرات التالية:
type_designation ، version ، firmware_version ، serial: تشكل هذه تسمية النموذج كما هو موضح في المعلومات الموسعة للبلاط. يتم الاستعلام عنها مرة واحدة عند إعداد العداد أو إعادة ضبطه.
voltage_l1..voltage_l3 ، current_l1..current_l3 ، power_w ، power_var ، power_va ، power_w_l1..power_w_l3: يحاول مدير شحن cFos حساب current_l1..l3 و power_w و power_va من هذه القيم للجهد_ l1..l3. ليس عليك تحديد كل المتغيرات. يحاول cFos Charging Manager حساب القيم من المتغيرات الموجودة.
import_wh، export_wh: مدير الشحن يستخدم هذه المتغيرات لحساب import_wh و export_wh. ليس عليك تحديد كل المتغيرات. يحاول cFos Charging Manager حساب القيم من المتغيرات الموجودة.

بالإضافة إلى ذلك ، يمكنك تحديد متغيرات أخرى بأسماء مختلفة ، والتي تتم قراءتها مع كل تحديث أو حسابها باستخدام الصيغ.

تعريف المتغير:

يتم تسمية الكائن على اسم المتغير المذكور أعلاه وله الخصائص التالية:
ثابت: سلسلة ذات قيمة ثابتة. مفيد إذا ، على سبيل المثال ، لا يمكن تحديد قيمة ، على سبيل المثال من أجل type_designation أو الجهد.
expr: سلسلة ، المتغير لا يُقرأ ولكن يتم تقييمه كصيغة.
النوع: إذا لم يكن ثابتًا أو expr ، فنوع المتغير: int16 ، int32 ، float ، int64 ، string. هذا مهم لـ Modbus لقراءة السجلات بالتنسيق الصحيح. باستخدام JSON/HTTP ، يمكنك في الغالب استخدام تعويم.
الدقة: عائم ، يتم ضرب قيمة القراءة بـ "الدقة". يجب أن تكون قيم الجهد بالفولت ، والتيارات بالمللي أمبير ، والطاقة بالواط ، والطاقة بالواط / ساعة (Wh). باستخدام "الدقة" السلبية ، يمكنك عكس القيمة إذا كانت لها علامة معاكسة.
العنوان: الرقم (Modbus) أو السلسلة (HTTP/JSON) أو رقم تسجيل Modbus أو عنوان HTTP URL للقيمة المراد قراءتها.
الاستعلام: سلسلة ، مع HTTP JSON المواصفات في لغة الاستعلام الخاصة بـ Charging Manager والتي يتم من خلالها العثور على القيمة التي سيتم قراءتها في استجابة JSON.
الترتيب: سلسلة ، بالنسبة إلى Modbus ، ترتيب البايت ، إما "hl" أو "lh" ، حيث توجد القيمة. length: رقم ، مع Modbus طول سلسلة في السجلات. بالنسبة لمتغيري "الإصدار" و "إصدار البرامج الثابتة" ، يتم استخدام "الطول" لإنشاء سلاسل بنقاط من الإصدارات الرقمية. يُسمح بقيم 2 أو 4 لـ "length" ، والتي ينتج عنها بعد ذلك تنسيقات الإصدار ab و abcd. باستخدام 'length' 2 والنوع 'int16' ، يفصل Charging Manager البايت المنخفض والعالي بنقطة ، مع كلمة int32 المنخفضة والعالية ، مع الكلمة المزدوجة المنخفضة والعالية 'int64'. باستخدام 'lenth' 4 و 'int32' ، يقسم مدير الشحن القيمة إلى 4 بايت مفصولة بنقاط. مع "int64" الكلمات الأربعة وفقًا لذلك.

تعريف المدخلات:

يمكن لـ Charging Manager الاستعلام عن ما يصل إلى 32 قيمة إدخال من سجلات مختلفة أو عناصر JSON لكل جهاز. خاصية "المدخلات" هي مصفوفة JSON. يجب تحديد الخصائص التالية لكل إدخال:
العنوان: العنوان (سجل Modbus أو URL).
count: عدد بتات الإدخال التي تمت قراءتها مع هذا الطلب.
الاستعلام: بالنسبة إلى HTTP/JSON ، استعلام عن اللغة للعثور على القيمة في الاستجابة.

مع كل تحديث ، يقرأ cFos Charging Manager جميع المدخلات المحددة بهذه الطريقة ويضع البتات داخليًا في مصفوفة يمكن الاستعلام عنها بعد ذلك في الصيغ ، Input1..InputN.

تعريف المخرجات:

يمكن لـ Charging Manager تبديل ما يصل إلى 32 إخراجًا لكل جهاز. يتم تبديل جميع المخرجات في نهاية كل دورة تحديث إذا تغيرت حالة المخرجات المعنية.
يجب تحديد الخصائص التالية لكل إدخال:
العنوان: عنوان HTTP URL بأسلوب HTTP اختياري ، على سبيل المثال//http://www.example.com؟output1=${var1}. لتعيين سجلات Modbus ، يمكنك استخدام cFos Charging Manager HTTP API. يتعرف Charging Manager على الوصول المناسب إلى المضيف المحلي ويعيد توجيه الطلب إلى المعالج الداخلي بحيث لا تحتاج إلى إذن ، كما هو الحال مع الوصول إلى واجهة برمجة تطبيقات HTTP الخارجية.
body: نص HTTP اختياري لـ POST أو PUT.
في عنوان URL والجسم ، يمكنك استخدام صيغ $ {expr} التي تشير إلى متغيرات Charging Manager العالمية أو من المقياس المعني. يتم تقييم صيغة "expr" عند تعيين الإخراج واستبداله في نص عنوان URL أو النص الأساسي. في المثال أعلاه ، إذا كان http://www.example.com؟output1=1 يعيّن الإخراج و//يمسحها ، يمكنك تحديد متغير "//" وتعيينه إلى 1 حسب الرغبة أو قم بتعيين 0. بهذه الطريقة ، يمكنك أيضًا كتابة قيم عددية للتحكم في أداء الذاكرة في سجلات Modbus التي قمت بتخزينها مسبقًا في متغير باستخدام صيغة.
إذا ، بدلاً من تمرير قيمة رقمية في عنوان URL ، يجب عليك استبدال نص بآخر اعتمادًا على الصيغة ، مثل مآخذ Shelly WLAN ، يمكنك كتابتها على النحو التالي: $ {if expr`text1`text2}. "الفاصلة العليا" هي علامة خلفية (رمز ASCII 96). إذا كان 'expr'! = 0 ، يتم استخدام text1 ، وإلا فإنه text2. يبدو عنوان URL لمقبس Shelly WLAN هكذا ، على سبيل المثال: http://<ip-addr>/relay/0؟ turn = $ {if expr`on`off} ، أي إذا expr! = 0 فإن Charging Manager ثم يستدعي http://<ip-addr>/relay/0؟ turn = on ، وإلا http://<ip-addr>/relay/0؟ turn = off.

إذا قمت بإدخال مسار نسبي كعنوان URL ، فإن Charging Manager يستخدم العنوان الذي تم تكوينه للجهاز المعني. إذا أدخلت "localhost" باعتباره المجال ، فإن Charging Manager يأخذ عنوان الجهاز الذي يعمل عليه. إذا اكتشف الوصول إلى واجهة برمجة التطبيقات الخاصة به ، فإنه يستخدم المعالج الداخلي بدلاً من تنفيذ وصول HTTP كامل ، بحيث لا تضطر إلى تخزين اسم مستخدم وكلمة مرور في تعريف جهاز القياس. يؤدي عنوان URL الذي يبدأ بـ * إلى قيام Charging Manager بأداء وصول HTTP كامل دائمًا.

تعريف لغة الاستعلام:

حاليًا ، يمكن استخدام أسماء الأعضاء وعوامل التشغيل "." في تعبيرات البحث "الاستعلام". و "[]" ، أمثلة:

اختبارالعنصر المسمى "اختبار"
name1.name2عنصر يسمى "name2" في الكائن الفرعي "name1"
اسم [معرف]عنصر "معرف" لعنصر الكائن "اسم". يمكن أن يكون "idx" رقمًا ، على سبيل المثال للمصفوفات أو سلسلة
اسم ["u2"]العنصر "u2" لعنصر الكائن "name" يتوافق مع "name.u2"
الاسم [{"el1": "v1"، "el2": 3}]. القيمةحدد عنصر مصفوفة يلبي شرط تدوين الكائن وقم بتقييم العنصر المسمى "القيمة". هنا ، على سبيل المثال ، يتم تحديد العنصر في مصفوفة "الاسم" التي تحتوي على عناصر الكائن "el1" بالقيمة "v1" و "el2" بالقيمة 3 ثم يتم إرجاع قيمة العنصر "القيمة" من هذا الكائن .

متغيرات مدير الشحن العالمي:

يمكنك إنشاء متغيرات في تكوين Charging Manager. يمكنك استخدام قيمة ثابتة أو صيغة كقيمة. في نهاية كل دورة تحديث ، يقوم Charging Manager بإعادة حساب قيمة هذا المتغير إذا لزم الأمر. يمكنك بعد ذلك استخدام هذه في (معينة) معلمات مدير الشحن أو قواعد الشحن أو للتحكم في المخرجات. يمكنك أيضًا كتابة E x.member أو M x.member كمتغير. هنا E x و M x هو معرف الجهاز الخاص بصندوق الحائط أو العداد الذي تم إعداده في Charging Manager. العضو هو متغير "معرف من قبل المستخدم" يتم تخزينه في الجهاز المقابل. يمكن أن يكون لبعض المتغيرات معنى خاص: مع KEBA "out1" هو إخراج تبديل ، مع ABB B23 متر "out1" و "out2" يقومان بتبديل المخرجات (للنماذج التي تدعم ذلك). يقوم A 1 بتبديل الإخراج ، بينما يقوم 0 بإيقاف تشغيله مرة أخرى.

مخرجات مدير الشحن العالمي:

في تكوين Charging Manager ، يمكنك تكوين مخرجات عامة كما هو موضح أعلاه في تعريف العداد ضمن "Outputs". يتم تعيين هذه في نهاية كل دورة تحديث إذا تغيرت حالتها. إذا كنت ترغب في التحكم في تحويل المخرجات في الأجهزة المحددة من قبل المستخدم ، يوصى بالاتفاق أعلاه (انظر متغيرات Charging Manager): يمكنك تعيين المتغيرات بأسماء "out1" و "out2" وما إلى ذلك في العداد المحدد من قبل المستخدم والإعداد المخرجات في العداد المحدد من قبل المستخدم والموجودة في تبديل الإخراج اعتمادًا على قيمة هذا المتغير.

Global Modbus API لمدير الشحن:

يتم استخدام Modbus API الخاص بـ Charging Manager للتحكم في أجهزة Modbus التي تحتوي على أي عنوان Modbus RTU أو TCP (يمكن الوصول إليه بواسطة Charging Manager). أدخل COMx ، bd ، 8 ، p ، s كعنوان لـ Modbus RTU ، كما هو الحال في تكوين الأجهزة الفردية ، حيث x هو رقم منفذ COM ، bd معدل الباود ، p هو التكافؤ ("N" ، " E 'أو' O ') و s هو عدد بتات التوقف (1 أو 2). باستخدام Modbus TCP ، يكون العنوان هو عنوان IP للجهاز في شبكة Charging Manager بما في ذلك رقم المنفذ.
عنوان URL (لـ HTTP GET) الخاص بواجهة برمجة تطبيقات Modbus هو:
/cnf؟ cmd = modbus_get أو /cnf؟ cmd = modbus_set
يدعم cFos Charging Manager معلمات الاستعلام الإضافية التالية:
addr: عنوان جهاز Modbus RTU أو TCP أعلاه.
func: رقم وظيفة Modbus ، على سبيل المثال 3 أو 4 للقراءة ، 6 أو 16 للكتابة.
المعرف: معرف الجهاز لجهاز Modbus.
reg: رقم سجل Modbus. يمكن تحديد القيمة في النظام العشري أو السداسي (مع البادئة 0x).
val: الرقم ، القيمة المراد كتابتها في السجل. إغفال أثناء القراءة.
اكتب: 'w' 16 بت (افتراضي) ، d = 32 بت ، f = تعويم ، q = 64 بت ، s = سلسلة.
cnt: الرقم ، الحد الأقصى لطول السلسلة في السجلات ، حذف لأنواع أخرى أو تعيينه على 1.
الترتيب: سلسلة تحتوي على ترتيب البايت ، إما "hl" أو "lh".

ملاحظة: إذا تم استخدام "جهاز القياس" بشكل أساسي لأغراض التحكم ، فيمكنك تحديد خيار "إخفاء الجهاز" في إعدادات هذا المربع بحيث لا يظهر هذا الجهاز في صفحة البداية.

ملاحظة: تتطلب بعض المقاييس التي تتم قراءتها عبر HTTP اسم المستخدم/كلمة المرور كتخويل. يمكنك تحديد هذا في العنوان الخاص بوصول HTTP ، على سبيل المثال مع http://username:password@192.168.2.111. إذا كان اسم المستخدم أو كلمة المرور يحتويان على "@" ، فيجب استبدالهما بـ "%40".