اطلاعیه

Collapse
No announcement yet.

تعیین محدوده زمانی در بسکام

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تعیین محدوده زمانی در بسکام

    سلام و خسته
    من ماژول ساعت راه اندازی کردم
    حالا میخوام مثلا از ساعت 23 تا 6 صبح یه پورتی رو روشن کنه
    شروع و اتمام آلارم متغیره و ثابت نیست
    من خودم این و نوشتم که پر از اشتباه و فقط تو یه شرایط کار میکنه
    کد HTML:
    if _hour => Salarm1 And _hour < Ealarm1 Then
    
         Set Portc.5    
     Elseif _hour < Salarm1 Or _hour > Ealarm1 Then     Reset Portc.5
    Salarm1 ساعت شروع آلارم و Ealarm1 ساعت پایان آلارم میباشد

    #2
    پاسخ : تعیین محدوده زمانی در بسکام

    شما برای این کار اولا باید این مقادیر روشن و خاموشتونو بریزید تو eeprom میکرو . تا زمانی که براثر یه خاموش و روشن شدن به هر دلیل این مقادیر از حافظه بازیابی بشن.
    بعد از این کار شما دو حالت تنظیم زمان دارید(در صورت 24 ساعته بودن سیستمتون)
    1-تایم خاموشی بزرگتر مساوی تایم روشن شدنه(مثلا 18 تا 23)
    2-تایم خاموشی کوچکتر از تایم روشن شدنه(مثل 23 تا 6 صبح که خودتون گفتید)
    یکی از راهها میتونه این باشه که شما بیاین توی یه متغیر زمان فعلی رو به دقیقه داشته باشین مثلا ساعت 23:05 میشه 5+60*23و همچنین توی دو متغیر دیگه زمان روشن خاموشتون رو به دقیقه.
    حالا توی حالت 1 که تایم خاموشی بیشتر از تایم روشن شدنه یه شرط میاد چک میکنه اگه زمان (که معادل دقیقه شده )بزرگترمساوی تایم استارت (که معادل دقیقه شده)شد و کوچکتر از تایم خاموشی (که معادل دقیقه شده)بود یه پین رو یک کنه در غیر این صورت اون پین صفره ...
    اما توی حالت دو یه شرط میاد چک میکنه اگه زمان (که معادل دقیقه شده )بزرگتر مساوی تایم استارت(که معادل دقیقه شده) یا کوچکتر از تایم خاموشی (که معادل دقیقه شده)شد یه پین رو یک کنه در غیر این صورت اون پین صفر بشه....
    در ضمن یه دستور هم خود بسکام داره به نام secofday که خودش زمان رو به ثانیه تبدیل میکنه و در یه متیر ذخیره میکنه....

    دیدگاه


      #3
      پاسخ : تعیین محدوده زمانی در بسکام

      این فضای زیادی از حافظه فلش و میگیره
      کسی راه حل بهتری نداره؟

      دیدگاه


        #4
        پاسخ : تعیین محدوده زمانی در بسکام

        اصلا این روشی که شما گفتید درست نیست
        شما شروع آلارم 23 در نظر بگیر پایان آلارم رو 8 صبح
        این میره تو شرط دوم
        حالا ساعت 2 شبه
        باید آلارم فعال باشه اما طبق فرمول شما فعال نیست

        دیدگاه


          #5
          پاسخ : تعیین محدوده زمانی در بسکام

          نوشته اصلی توسط qmars_farahani نمایش پست ها
          اصلا این روشی که شما گفتید درست نیست
          شما شروع آلارم 23 در نظر بگیر پایان آلارم رو 8 صبح
          این میره تو شرط دوم
          حالا ساعت 2 شبه
          باید آلارم فعال باشه اما طبق فرمول شما فعال نیست
          خب درسته میره توحالت دوم
          طبق این حالت دوباره یه شرط میاد چک میکنه هر موقع زمان بیشتر مساوی زمان استارت و یا کوچکتر مساوی زمان خاموشی شد یه پین رو یک میکنه در غیر این صورت اون پین صفره.
          به فرض مثال شما ساعت 2 شب دستگاه رو روشن میکنین ،توی شرط دوم هم دو تا شرط هست که با هم or هستند.(زمان بیشتر مساوی زمان استارت و یا زمان کوچکتر مساوی زمان خاموشی) خب طبق این شرط قسمت اول که برقرار نیست اما به نظر شما قسمت دوم هم برقرار نمیشه؟مگه 2 کوچکتر از 8 نمیشه؟در ضمن یه جا گفته بودین این روش حافظه فلشو میگیره.که هر فرمول دیگه ای هم بنویسید این حجم رو اشغال میکنه.منظورتونو نفهمیدم....

          دیدگاه


            #6
            پاسخ : تعیین محدوده زمانی در بسکام

            نوشته اصلی توسط kargahelec نمایش پست ها
            خب درسته میره توحالت دوم
            طبق این حالت دوباره یه شرط میاد چک میکنه هر موقع زمان بیشتر مساوی زمان استارت و یا کوچکتر مساوی زمان خاموشی شد یه پین رو یک میکنه در غیر این صورت اون پین صفره.
            به فرض مثال شما ساعت 2 شب دستگاه رو روشن میکنین ،توی شرط دوم هم دو تا شرط هست که با هم or هستند.(زمان بیشتر مساوی زمان استارت و یا زمان کوچکتر مساوی زمان خاموشی) خب طبق این شرط قسمت اول که برقرار نیست اما به نظر شما قسمت دوم هم برقرار نمیشه؟مگه 2 کوچکتر از 8 نمیشه؟در ضمن یه جا گفته بودین این روش حافظه فلشو میگیره.که هر فرمول دیگه ای هم بنویسید این حجم رو اشغال میکنه.منظورتونو نفهمیدم....
            معذرت میخوام تو شرط دوم and به جای or قرار داده بودم طبق مثل شرط اول که and داره

            دیدگاه


              #7
              پاسخ : تعیین محدوده زمانی در بسکام

              به نظرتون حالا چطوری میتونم reset port بزارم
              چون وقتی تو برنامم استارت آلارم و پایان آلارم و عوض میکنم پورت به خاطر دستور قبلی که set شده بود و reset نشده بود روشن میمونه

              دیدگاه


                #8
                پاسخ : تعیین محدوده زمانی در بسکام

                نوشته اصلی توسط qmars_farahani نمایش پست ها
                به نظرتون حالا چطوری میتونم reset port بزارم
                چون وقتی تو برنامم استارت آلارم و پایان آلارم و عوض میکنم پورت به خاطر دستور قبلی که set شده بود و reset نشده بود روشن میمونه
                شرطتون دوقسمتی هست اون رو هم اضافه کردید؟ منظورم قسمت else هست.
                if ............. then
                else
                reset portb.6
                end if
                توی قسمت نقطه چین حالت استارت تعریف میشه و در قسمت بعد از else هر زمان غیر از زمان مد نظر رو شامل میشه....

                دیدگاه

                لطفا صبر کنید...
                X