التاريخ والوقت
المنطق الزمني
أتقن ساعة الـ PLC الخاصة بك. من تسجيل الطوابع الزمنية الدقيقة للأحداث إلى حسابات الوقت المعقدة وتحويلات التنسيق، تحكم في كل ميلي ثانية.
لماذا تتم إدارة الوقت في الـ PLC؟
إدارة الوقت أمر بالغ الأهمية للأتمتة الصناعية. فهي تتيح التسجيل الدقيق لأحداث الإنتاج، وتفعيل مهام الصيانة المجدولة، وحساب أوقات دورات الماكينة، ومزامنة الأنظمة الموزعة عبر بروتوكولات NTP.
توفر أجهزة الـ PLC الحديثة من Siemens أنواع بيانات متقدمة مثل DTL (Date and Time Long) الذي يوفر وصولاً مباشرًا إلى المكونات الفردية (السنة، الشهر، اليوم، الساعة) دون تلاعب معقد بالبتات، مما يبسط البرمجة بشكل كبير مقارنة بتنسيقات DT القديمة.
قراءة الوقت
الوصول إلى ساعات النظام والساعات المحلية
T_CONV — استخراج وقت النظام
T_CONVماذا تفعل
تستخرج مكونات محددة من قيمة التاريخ/الوقت أو تحول بين التنسيقات. إنها ضرورية للحصول على ساعات/دقائق قابلة للقراءة من طابع زمني خام.
متى تستخدمها
عندما تحتاج إلى عرض الوقت فقط على HMI من وسم Date_And_Time كامل.
نصائح الخبراء
استخدم T_CONV لتحويل TOD (Time_Of_Day) إلى String لسهولة التسجيل.
تأكد من توافق أنواع الإدخال والإخراج لتجنب أخطاء التجاوز.
في SCL، غالباً ما يتم التعامل مع هذه التعليمة بشكل ضمني من خلال عمليات التعيين البسيطة.
RD_SYS_T — قراءة وقت النظام
RD_SYS_Tماذا تفعل
تقرأ وقت النظام الحالي للـ CPU (بتقنية UTC). على عكس RD_LOC_T، فهي لا تتضمن التوقيت الصيفي أو إزاحات المنطقة الزمنية.
متى تستخدمها
مثالية للتسجيل الداخلي حيث يتطلب مرجع زمني مستمر وغير منقطع (يتجنب المشاكل أثناء تغييرات التوقيت الصيفي).
نصائح الخبراء
استخدم دائماً UTC لتخزين قاعدة البيانات لضمان الاتساق العالمي.
يوفر مخرج RET_VAL معلومات الحالة (مثل ما إذا كانت الساعة متزامنة).
اجمعها مع RD_LOC_T إذا كنت بحاجة لعرض كل من الوقت 'التقني' و 'البشري'.
الحساب
الحسابات على المدد والطوابع الزمنية
T_ADD — إضافة الوقت
T_ADDماذا تفعل
تضيف مدة (Time أو LTime) إلى نقطة تاريخ/وقت محددة. تتعامل بشكل صحيح مع تجاوزات الدقائق والساعات والأيام.
متى تستخدمها
حساب وقت انتهاء الصلاحية أو نقطة إعادة تشغيل مجدولة (على سبيل المثال، الوقت الحالي + 24 ساعة).
نصائح الخبراء
مفيدة جداً لتنفيذ أجهزة مراقبة (watchdogs) مخصصة بمدد ديناميكية.
استخدم أنواع LTime لدقة النانو ثانية على CPUs S7-1500.
إذا تجاوزت النتيجة التاريخ الأقصى (عام 2262)، يقوم الـ CPU بضبط حالة خطأ.
T_DIFF — فرق الوقت
T_DIFFماذا تفعل
تحسب الفرق بين طابعين زمنيين وتعيد النتيجة كمدة (Time أو LTime).
متى تستخدمها
قياس المدة الدقيقة لخطوة عملية أو حساب وقت تشغيل الماكينة.
نصائح الخبراء
مثالية لحسابات OEE (فعالية المعدات الإجمالية).
طرح تاريخ أكبر من تاريخ أصغر يعيد قيمة Time سالبة.
في S7-1200/1500، استخدم أوسمة DTL لسهولة الوصول إلى مكونات الفرق.
التحويل
تغييرات التنسيق والتعامل مع String
T_CONV — التحويل من DT إلى DTL
T_CONVماذا تفعل
تحول DATE_AND_TIME القديم (8 بايت) إلى تنسيق DTL الحديث أو العكس.
متى تستخدمها
عند ربط الكود القديم أو كتل الاتصال مع منطق S7-1500 المطور والجديد.
نصائح الخبراء
يفضل استخدام DTL لجميع المشاريع الجديدة لتجنب تعقيد BCD (Binary Coded Decimal).
التحويل إلى DTL يتيح لك كتابة 'MyTag.MONTH' مباشرة في الكود الخاص بك.
كن حذراً مع دقة الميلي ثانية التي قد يتم اقتطاعها في بعض التنسيقات.
DT_TO_STRING — تسلسل الوقت
DT_TO_STRماذا تفعل
تحول قيمة التاريخ/الوقت إلى تنسيق String قابل للقراءة. STRING_TO_DT تقوم بالعكس.
متى تستخدمها
إرسال الطوابع الزمنية إلى ملف CSV على بطاقة ذاكرة أو الاتصال مع web API.
نصائح الخبراء
يتبع نص المخرج تنسيق ISO 8601 (YYYY-MM-DD-HH:MM:SS.ms).
استخدم STRING_TO_DT لتحليل التواريخ المستلمة من قاعدة بيانات SQL خارجية.
لاحظ أن عمليات String تستهلك طاقة الـ CPU بشكل أكبر؛ استخدمها باعتدال في الحلقات السريعة.
DATE_AND_TIME مقابل DTL
اختيار الهيكل الزمني الصحيح
| الميزة | DATE_AND_TIME (قديم) | DTL (حديث) |
|---|---|---|
| الحجم | 8 بايت | 12 بايت |
| الترميز | BCD (معقد القراءة) | أعداد صحيحة (قابلة للقراءة مباشرة) |
| الوصول للمكونات | يتطلب bit masking | هيكلي (Tag.Month) |
| النطاق | 1990 إلى 2089 | 1970 إلى 2262 |
| دعم S7-1200/1500 | للتوافق فقط | أصلي وموصى به |
| الدقة | 10 ميلي ثانية | 1 نانو ثانية |
الأسئلة الشائعة
ما الفرق بين وقت النظام والوقت المحلي؟
وقت النظام (RD_SYS_T) يكون دائماً UTC، مما يوفر مرجعاً مستقراً. الوقت المحلي (RD_LOC_T) يضبط لمنطقتك الزمنية المحددة وقواعد التوقيت الصيفي (DST) المكونة في خصائص الـ CPU.
كيفية مزامنة ساعة الـ PLC مع خادم؟
قم بتمكين NTP (Network Time Protocol) في تكوين أجهزة الـ CPU. قدم عنوان IP الخاص بخادم الوقت، وسيقوم الـ PLC تلقائياً بضبط ساعته الداخلية.
لماذا يظهر DATE_AND_TIME الخاص بي قيم غريبة بنظام Hex؟
يستخدم DT القديم ترميز BCD. القيمة 25 بالنظام العشري تخزن كـ 16#25 في BCD. استخدم دائماً تعليمات التحويل أو DTL لقراءة القيم بشكل صحيح.
هل يمكنني حساب الفرق بين وسمني DTL مباشرة؟
في SCL، يمكنك ببساطة استخدام عامل '-' بين وسمني DTL. سيقوم TIA Portal تلقائياً باستدعاء تعليمة T_DIFF لك.