بانک های اطلاعاتی بلادرنگ

بانک های اطلاعاتی بلادرنگ

مقدمه

امروزه در قسمت های مختلف صنعت، کاربردهای ویژه ای وجود دارد که در آن ها دسترسی به اطلاعات در محدوده زمانی خاص، اهمیت زیادی دارد. از جمله می توان به مراکز مخابرت، سیستم های کنترلی، برنامه های انبار و مدیریت شبکه ها اشاره کرد. بعنوان مثال عملیات یک رادار را در نظر بگیرید که باید ضمن تشخیص یک شیئ بتواند جواب مناسب را در مورد آن تعیین کند. در تمام این موارد سیستم باید در مرحله اول اطلاعات را کسب کرده و با استفاده از آن پردازش مربوطه را در زمان تعیین شده انجام دهد. در همه این سیستم ها نه تنها اطلاعات خاصی باید بایگانی ش

وند، بلکه یک سری داده های زمانی هم وجود دارند، که نسبت به زمان سپری شده از ورود آن ها، اعتبار و صحت آن ها از بین می رود.

مثلاً تصور کنید در محیط یک کارخانه تولیدات آن کارخانه توسط تسمه هایی به مکان خاصی حمل می شوند. هر شیء توسط دوربین هایی که تعبیه شده است مورد بررسی قرار می گیرد تا ویژگی های آن مشخص و مشکلات آن تعیین شود. بنابر اطلاعات به دست آمده، آن شیء به مکان خاصی انتقال داده می شود. در همین حال لازم است سیستم با استفاده از اطلاعات آن، بروز شود.برای این کار، اول از همه، لازم است اطلاعات کالا دریافت شود آن هم

تا زمانی که شیء مورد نظر روبروی دوربین قرار دارد. این اطلاعات تنها برای شیء مورد نظر اهمیت دارد. داده های مربوطه تا زمانی اعتبار دارند که شیء جدید وارد سیستم شود. اگر به هر دلیلی این کارها در محدوده زمانی مورد نظر انجام نشود، باید از فروش کالای مورد نظر صرف نظر شود. تا موقعی که دوباره آن محصول وارد سیستم شود و جلوی دوربین قرار بگیرد. در چنین سیستم هایی ما به بانک های اطلاعاتی بلادرنگ[1] نیاز پیدا می کنیم.

محققین بانک های اطلاعاتی در این زمینه بیشتر سع

ی دارند با اسنفاده از RTDB نیاز های سیستم های REALTIME را بر طرف کنند و توسعه دهندگان سیستم های بلادرنگ از جهت ایجاد الگوریتم های زمان بندی و اختصاص منابع به سمت این مبحث جذب شده اند.

توجه به این محدودیت های زمانی باعث شده است که

رویکردهای جدیدی در زمینه مدیریت تراکنش ها بوجود بیاید. راه حل های موسوم به Tailoring، Adapting و Extending نمونه های هستند که ضمن توضیح آن ها پیشرفت هایی که در این زمینه انجام شده است را شرح می دهیم.

بانک های اطلاعاتی رابطه ای[2] با داده های پایدار و ماندگار سروکار دارند و ملاک اصلی در توسعه آن ها بدست آوردن کارایی بالا و میانگین زمان پاسخ کوتاه است. در مقابل، سیستم های بلادرنگ با داده هایی سروکار دارند که گذرا و ناپایدار هستند و پس از گذشت زمان ویژه ای منسوخ می شوند. بواسطه

طبیعت داده های real time محدودیت های زمانی، دوره های تناوب و ضرب العجل هایی به بانک های اطلاعاتی تحمیل می شود. بنابراین هدف اصلی در این سیستم ها مرتفع ساختن این محدودیت ها می باشد و نه میانگین زمان پاسخ کوتاه.

Real-time ¹ FAST

Real-time ¹ nonosecs or msecs

Real-time means explicit or implicit time constraints

نکته اساسی آن است که بلادرنگ به معنی سرعت فوق العاده نیست، بلکه ما در سیستم های بلادرنگ به دنبال پروتکل های زمان مدار می گردیم. داستان خرگوش و لاک پشت را بیا آورید، خرگوش با این که سریع تر از لاک پشت بود ولی کار خود را در زمان مورد نظر به پاین نرساند.


همان طور که می دانید بانک های اطلاعاتی قراردادی به منظور ذخیره سازی داده ها با سرعت بازیابی بالا و بدون استباه ایجاد شده اند. این سیستم ها جلوی افزونگی داده ها را می گیرند و دسترسی به آن ها را برای ما میسر می کنند. اما بانک های اطلاعاتی بلادرنگ علاوه بر این ها لزوماً باید مسائل دیگری را هم پوشش دهندکه عبارتند از:

  1. تمام داده های این سیستم ها پایدار نیستند، بلکه فانی هستند و تا قبل از این که از بین بروند باید فکری به حال آن ها شود.
  2. زمان بندی هایی برای مدیریت این تراکنش ها باید ایجاد شود.
  3. در خیلی از موارد بجا بودن زمان پردازش از صحت داده مهم تر است و باید درستی آن را فدای بجا بودن زمان اجرای آن کرد.

علاوه بر این ها در سیستم های بلادرنگ معمولاً از همزمانی پردلزش ها و الگوریتم های آن ها استفاده می شود. از این رو سیستم باید جوابگوی مفاهیم و عملکردهای معماری های توزیع شده و پردازش های همزمان باشد.

مشخصات داده ها در بانک های اطلاعاتی بلادرنگ

بطور کلی یک سیستم real time از یک سیستم کنترل کننده و یک سیستم کنترل شونده تشکیل شده است. فرضاً در مثال کارخانه تمام تجهیزات، ربات ها و کالاهای تولیدی سیستم کنترل شونده را تشکیل می دهند و سیستم کنترل کننده شامل اپراتورها و دستگاه های کنترلی از قبیل کامپیوترها می باشند. سیستم کنترل کننده از طریق حسگرهای مختلف مثل فشارسنجها و یا دماسنج ها با محیط (سیستم کنترل شونده) در ارتباط است. لازم است که اطلاعات دریافتی از سیستم کاملاً معتبر باشند. از این رو مدیریت بلادرنگ سیستم هم الزامی است.

فرض کنید مشغول انجام یک آزمایش شیمیایی هستیم. در این جا مقدار دما یا فشار محیط با کامل شدن واکنش شیمیایی در حال تغییر است. تمام این تغییرات باید در database آرشیو بشود و در همین حال ممکن است از اطلاعات بدست آمده برای انجام تغییراتی در حالت آزمایش استفاده کنیم. ملاحظه می کنید که علاوه بر ردیابی تغییرات در محیط لازم است در زمان های خاصی دستوراتی هم به محیط داده شود.

نیاز به هماهنگی بین وضعیت واقعی محیط و اطلاعات منعکس شده در پایگاه داده، ضرورت بحث در مورد پایداری زمانی[3] را دوچندان می کند. Temporal Consistency دو جزء دارد که عبارتند از:

  1. استحکام ثابت[4]: بین وضعیت واقعی سیستم کنترل شونده و داده های سیستم کنترل کننده
  2. استحکام نسبی[5]: بین داده هایی که برای استنتاج داده های دیگر به کار می روند. این مسئله برخاسته از نیاز به نزدیک بودن منابع داده های اشتقاقی با یکدیگر است.

فرض کنید که d(value,avi[6],timestamp) یک فقره اطلاعاتی است. d(value) به معنی مقدار این داده می باشد و d(timestamp) نشان دهنده زمان ایجاد آن می باشد. d(avi) به معنی فاصله زمانی بعد از رصد کردن آن داده می باشد که در آن فاصله داده هنوز اعتبار خود را حفظ کرده است.

آن دسته از داده ها که برای تولید داده های دیگر به کار می روند تشکیل یک مجموعه پایدار نسبی می دهند. در این مجموعه از داده ها زمانی به نام فاصله اطمینان نسبی[7] تعریف می کنیم. فرض کنید R چنین مجموعی ای از داده ها است. باز فرض کنید d عضو این مجموعه است. آنگاه d در وضعیت درستی قرار دارد اگر دو شرط زیر را دارا باشد:

  1. d(value) منطقاً درست باشد
  2. d از نظر زمانی هم صحت داشته باشد. یعنی هر دو جزء مربوط به پایداری زمانی در مورد آن صدق کند. بنابراین:
    • اولاً پایداری قطعی برقرار باشد:

CurrentTime-d(timestamp) <= d(avi)

· دوماً پایداری نسبی هم برقرار باشد: به ازای هر ď عضو R رابطه زیر باید برقرار باشد

|d(timestamp)- ď(timestamp)| <= R(rvi)

مثال:

فرض کنید در سیستمی دو فاکتور دما و فشار با هم در مجموعه R قرار می گیرند. و باید در فاصله زمانی کمتر از 2 واحد زمان از یکدیگر باشند. اگر در زمان 100 قرار دشته باشیم و فاصله زمانی قابل اطمینان برای دما برابر با 5 و برای فشار برابر با 10 باشد آنگاه

الف) برای مقادیر temperature=(347,5,97) و pressure=(50,5,96) تعیین کنید داده ها از نظر زمانی پایدار هستند

ب) ) برای مقادیر temperature=(347,5,97) و pressure=(50,5,92) تعیین کنید داده ها از نظر زمانی پایدار هستند

راه حل الف)

معلومات مسئله:

temperature(value)=347 , temperature(avi)=5 , temperature(timestamp)=97

pressure(value)=50 , pressure(avi)=5 , pressure(timestamp)=96

currenttime=100

اثبات وجود Absolute Consistency

absolute consistency: yes

currenttime-temperature(timestamp)=100-97=3<=temperature(avi)=5

currenttime-pressure(timestamp)=100-96=4<=pressure(avi)=5

اثبات وجود Relative Consistency

relative consistency: yes

|temperature(97)-pressure(96)|=1<=R(rvi)=2

بنابراین Temporal Consistency برقرار است.

راه حل ب)

معلومات مسئله:

temperature(value)=347 , temperature(avi)=5 , temperature(timestamp)=97

pressure(value)=50 , pressure(avi)=5 , pressure(timestamp)=92

currenttime=100

اثبات عدم وجود Absolute Consistency

absolute consistency: no

currenttime-temperature(timestamp)=100-97=3<=temperature(avi)=5

currenttime-pressure(timestamp)=100-92=8>pressure(avi)=5

اثبات عدم وجود Relative Consistency

relative consistency: no

|temperature(97)-pressure(92)|=5>R(rvi)=2

بنابراین Temporal Consistency برقرار نیست.

بدست آوردن avi می تواند به راحتی با یک نمونه گیری ساده از محیط انجام شود اما بدست آوردن rvi به این سادگی ها نیست. به دلیل این که برای دست یابی به یک rvi صحیح تمام داده هایی که جزو مجموعه R هستند باید در فاصله زمانی مقرر که معمولاً خیلی هم کوتاه است از محیط دریافت شوند. و البته در مواردی هم rvi باعث می شود avi محدود شود. در مثال قبلی از آن جا که rvi برابر با 2 است بنابراین عملاً avi مربوط به فشار pressure(avi) به عدد 2 تقلیل یافته است. اما یک راه نجات از این مخمصه آن است که تنها آن دسته ازrvi ها را تعیین کنیم که برای ایجاد اطلاعات دیگر به کار می روند.

اگر یک مجموعه دیگر به نام Ŕ داشته باشیم که با R در رابطه باشد آن گاه rvi کوچکتر را باید در نظر بگیریم. مثلاً اگر (rvi)Ŕ برابر با 1 باشد آن گاه واضح است که فاصله زمانی بین timestamp دما و فشار هم باید کمتر از یک باشد.

مشخصات تراکنش ها در بانک های اطلاعاتی بلادرنگ

در سیستم های بلادرنگ نیز مانند بانک های اطلاعاتی رابطه ای تراکنش ها بر 3 نوع اصلی هستند:

  1. تراکنش های فقط نوشتنی[8]: این تراکنش ها اطلاعات را از سیستم می گیرند و ذخیره می کنند. یعنی اطلاعات ارسالی از سمت محیط به داخل سیستم کنترلی.
  2. تراکنش های بروز کننده[9]: تراکنش هایی که اطلاعات جدید را بوجود می آورند و ثبت می کنند
  3. تراکنش های فقط خواندنی[10]: این تراکنش ها اطلاعات را از سیستم کنترل کننده به سمت سیستم کنترل شونده می فرستند

این دسته بندی را برای ساخت یک مدل کنترل همزمانی[11] پردازش ها می توان به کار برد. بعضی از محدودیت های زمانی توسط temporal consistency به سیستم تحمیل می شوند و دسته دیگر هنگام عکس العمل سیستم باید مرتفع شوند. مثلاً ممکن است یک دستور به صورت متناوب در فواصل زمانی معین انجام شود. به عنوان مثال سیستمی در هر 10 ثانیه قدرت باد را اندازه گیری کند. یا در بعضی موارد دستوراتی هستند که بصورت غیر متناوب و در هنگام یک رویداد انجام شوند. مثلاً اگر دمای محیط بیشتر از مقدار خاصی شد سیستم خنک کننده باید در عرض چند ثانیه شروع به کار کند.

از جنبه دیگر تراکنش ها را می توان از لحاظ به اتمام رسیدن ضرب العجل[12] آن ها دسته بندی کرد. به این ترتیب که توابع زیادی برای تعیین ارزش آن ها در زمان های مختلف بعد ازورودشان تعریف می شود. در این جا ما تابع ساده ای را در نظر می گیریم که تراکنش ها را به دو دسته تقسیم می کند:

  1. تراکنش ها با deadline سخت[13]: این دسته از تراکنش ها اگر در زمان مقرر سرویس دهی نشوند سیستم را دچار مشکل اساسی کنند.
  2. تراکنش ها با deadline نرم[14]: این تراکنش ها حتی بعد از deadline هم ارزشمند هستند تا این که در زمان خاصی بعد از deadline ارزش آن ها به صفر میرسد. اگر آن زمان برابر با deadline باشد به تراکنش مربوطه [15]firm گفته می شود.

[1] Real Time Data Base

[2] Relational Data Base

[3] Temporal Consistency

[4] Absolute Consistency

[5] Relative Consistency

[6] Absolute Validity Interval

[7] Relative Validity Interval

[8] Write Only Transactions

[9] Update

[10] Read Only Transactions

[11] Concurrency Control

[12] Dead line

[13] Hard deadline

[14] Soft deadline

[15] Firm deadline

Introduction to using Intalio

برای نصب Intalio designer کافیست فایل jar را اجرا کرده و و جادوگر نصب را راهبری کنیم. به این ترتیب در پایان نصب یک نسخه کامل از Eclipse به همراه plug-in های مورد نیاز نصب خواهد شد. بنابراین نیازی به نصب eclipse نمی باشد.

پس از نصب Intalio designer نوبت به نصب Intalio|BPM server می رسد. توجه داشته باشید که Intalio workflow هم همراه با Intalio server نصب خواهد شد.

برای نصب سرور ابتدا فایل فشرده مربوطه را در مسیر c:\intalio-bmps از حالت فشرده خارج کنید. قبل از هر چیز مطمئن شوید متغیر محیطی JAVA-HOME را set کرده اید. در ضمن پورت 8080 نیز باید در دسترس باشد در صورتی که از دیواه آتشین استفاده می کنید این پورت را باز نگه دارید. برای راه اندازی سرور کافیست وارد پوشه \bin شده و فایل startup.bat را اجرا کنید. را ه دیگر اجرای دستور Geronimo run می باشد. هنگامی که پیام Geronimo Application Server started نمایان شد runtime workflow راه اندازی شده است و شما می توانید کار خود را شروع کنید. برای متوقف کردن runtime workflow پنجره command prompt را ببندید یا از ctrl+c استفاده کنید. برای اطمینان پورت 8080 را telnet کنید.

حال با استفاده از مرورگر وب و آدرس زیر می توانید با استفاده از کنسول تحت وبی که در اختیار شما قرار می گیرد با runtime workflow ارتباط برقرار کنید.این کنسول امکانات مدیریتی را در اختیار شما قرار می دهد.

http://localhost:8080/bpms-console

برای ورود به سیستم از نام کاربری و کلمه عبور زیر استفاده کنید.

Username: admin

Password: changeit

صفحه bpms-console فقط از طریق مدیران Intalio قابل دسترسی می باشد.

برای اینکه مطمئن شوید تمامی پردازه ها به نحو احسنت اجرا شده اند و روند اجرای برنامه دچار مشکل نخواهد شد از آدرس http://localhost:8080/ui-fw/login.htm استفاده کنید. اگر پیغام خطایی دریافت نکردید تمام پردازه های مربوطه درست عمل کرده اند. این آدرس صفحه ایست که کاربران می توانند به پروسه های مربوط به خودشان دسترسی داشته باشند. کاربران معمولی و پرسنل عادی نمی توانند به bpm-consol وصل شوند. فقط از طریق این آدرس می توانند به رابط گرافیکی و حساب کاربری خود دسترسی داشته باشند.

در Intalio server یک پردازه به طور پیش فرض با نام absence request وجود دارد که نمونه خوبی برای آشنایی با نحوه کار Intalio server می باشد. به صفحه user interface رجوع کرده و با استفاده از نام کاربری examples\msmith و کلمه عبور password وارد سیستم شوید. این کاربر به طور پیش فرض داخل سیستم ایجاد شده است. هنگامی که وارد حساب کاربری این شخص می شوید هیچ task ای در ابتدا برای او تعریف نشده است فقط در زبانه processes یک پروسه در اختیار کاربر قرار دارد. هر کاربر فقط به پروسه های خاصی دسترسی دارد. مثلاً در این مثال کاربر با نام کاربری msmith فقط به پروسه درخواست مرخصی دسترسی دارد و هیچ پروسه دیگری را نمی تواند اجرا کند. حال روی نام پروسه کلیک کنید و بعد از پر کردن فرم مربوطه دکمه submit را فشار دهید. توجه داشته باشید که این فرم قبلاً توسط نرم افزار Intalio designer ساخته شده است. حال دکمه log out را فشار داده و از حساب کاربری msmith خارج شوید و با نام کاربری examples\ewilliams و کلمه عبور password وارد حساب کاربری Emily Williams شوید. این شخص مدیر آقای smith است و وظیفه قبول یا رد درخواست مرخصی کارمندان زیر دستش از جمله آقای smith بر عهده اوست. اگر وارد زبانه taks شوید ملاحظه می فرمایید که پیغامی مبنی بر درخواست مرخصی برای او ارسال شده است. بر روی آن کلیک کنید و تصمیم مورد نظر را گرفته و بر روی دکمه complete کلیک کنید تا پردازه تکمیل شود. در حالی که پرسنل کارهای خود را انجام می دهند مدیران سیستم می توانند روند اجرای پروسه ها را زیر نظر بگیرند. حال از طریق کنسول bpm و کاربر admin وارد سیستم شوید و در قسمت Instances بر روی پروسه درخواست مرخصی کلیک کنید تا روند اجرای آن نمایش داده شود. دیاگرام مربوطه را به دقت بررسی کرده تا با روند اجرای پروسه آشنا شوید.

حال وارد حساب کاربری msmith شوید و در قسمت notifications نتیجه درخواست مرخصی را ببینید.

1 آشنایی با سیستم های SCADA

1.1 مقدمه و تاریخچه سیستم های اسکادا1

سیستم های SCADA اولیه، دریافت و جمع آوری داده ها را از طریق پانل های حسگر انجام می دادند. استفاده از این پانل ها مزایای خاص خود را دارد، که عبارتند از:

  • ساده هستند و نیازی به پردازشگر، حافظه و برنامه نویسی ندارند.
  • حسگرها مستقیماً به به چراغ ها، اندازه گیر ها و یا سوئیچ های روی پانل وصل هستند.
  • افزودن یک سوئیچ یا وسیله اندازه گیری به پانل به آسانی امکان پذیر است.

امروزه هنوز هم از این پانل ها استفاده می شود. اما سیستم های مبتنی بر پانل معایبی هم دارند. به عنوان مثال:

  • سیم کشی های زیادی برای افزودن سخت افزارهای سیستم نیاز است که توسعه سیستم را با اشکال مواجه می کند.
  • کمیت و نوع داده های در دسترس، کم و ناقص است.
  • افزودن حسگرهای جدید به تدریج با رشد سیستم با دشواری هایی همراه است.
  • پیکربندی دوباره سیستم، سخت و طاقت فرسا می باشد.
  • شبیه سازی2 سیستم امکان پذیر نیست.
  • ذخیره سازی داده ها با حجم زیاد، مشکل است.
  • امکان دسترسی و کنترل از راه دور3 امکان پذیر نیست.

1.2 اصول بنیادی در سیستم های SCADA امروزی

امروزه سیستم های مدرن SCADA در مورد صنایع حساس و بزرگ به کار می روند و در بعضی موارد حتی مسافت های کیلومتری را برای remote monitoring پیش رو داریم. سیستم های SCADA در واقع شامل دو بخش اصلی telemetry4 و 5 data acquisition می باشند.

به تدریج با رشد فناوری های دیجیتال، سازنده ها برای ساخت سیستم های کنترلی از پردازشگرها و اجزاء دیجیتالی همراه با رله های منطقی استفاده کردند. به این ترتیب بود که از PLC6 ها برای تولید سیستم های کنترلی استفاده شد. به تدریج با گسترش زمینه های فعالیت های کنترلی، سیستم های کنترلی یکپارچه ای تحت عنوان DCS7 به کار گرفته شدند.


سیستم DCS مجموعه ای از پروسه ها را کنترل می کند در حالی که PLC یک وظیفه خاص را انجام می دهد. به بیانی دیگر می توان گفت PLC ها قسمتی از یک DCS را تشکیل می دهند. یا به عبارت دیگر PLC یک کامپیوتر است که ورودی آن به جای صفحه کلید توسط سیم پیچی ها واتصالات به دست می آید و خروجی هایی تولید میکند در حالی که DCS مجموعه ای پیوسته از پردازه ها را اجرا می کند.

مزایای سیستم های PLC/DCS SCADA:

  • کامپیوترها می توانند حجم زیادی از داده ها را جمع آوری کنند.
  • داده ها را می توان به هر روشی که کاربر نیاز دارد نمایش داد.8
  • هزاران حسگر را می توان در محیطی بسیار بزرگ به کار برد.
  • شبیه سازی عملیات سیستم مقدور خواهد بود.
  • تعداد زیادی از انواع داده ها را می توان توسط RTU ها کنترل کرد.
  • داده ها را از هر جایی می توان مورد نظارت و بررسی قرار داد.

همزمان با گسترش نیاز به استفاده از سیستم های کوچک تر و هوشمندتر حسگرهایی که توانایی های PLC ها و DCS ها را دارند به وجود آمدند که به آن ها IED9 می گویند. دستگاه های IED از طریق شبکه های field bus10 به یکدیگر متصل می شوند.


مزایای سیستم های PC to IED field bus عبارتند از:

  • سیم کشی کمتری نیاز است.
  • اطلاعاتی که دستگاه ها ارسال می کنند می تواند شامل مدل، شماره سریال و تاریخ نصب و غیره باشد.
  • تمام دستگاه ها plug and play هستند و می توانند به راحتی اضافه یا جایگزین شوند.
  • ابعاد دستگاه ها کوچک تر است. بنابراین فضای کمتری را اشغال می کنند.

1.3 سخت افزار SCADA

سخت افزار SCADA را به پنج لایه اصلی تقسیم می کنند:

  1. لایه ابزار و دستگاه های کنترلی
  2. ترمینال های مارشالینگ و RTU ها
  3. سیستم های ارتباطی
  4. ایستگاه مرکزی11
  5. مرکز پردازش رایانه ای داده ها

ابتدا RTU اطلاعات دیجیتال و آنالوگ را از طریق ابزارهای لایه اول از سایت های مختلف می گیرد و مهیا می سازد و از طریق پروتکل های خاصی برای ایستگاه اصلی ارسال می کند. در ایستگاه اصلی پردازش لازم بر روی داده ها انجام می شود و دستورات لازم برای ایستگاه ها ارسال می شود.

1.4 نرم افزار SCADA

نرم افزار SCADA عموماً شامل بخش های زیر می باشد:

  • User Interface
  • Graphic displays
  • Alarms
  • Trends
  • RTU ( and PLC ) Interfaces
  • Scalability
  • Access to data
  • Database
  • Networking
  • Fault tolerance and redundancy
  • Client/server distributed processing

نرم افزارهای SCADA را می توان به دو دسته باز و بسته تقسیم بندی کرد.

دسته اول نرم افزارهایی هستند که تنها برای یک منظور خاص توسعه داده شده اند. اما دسته دیگر یعنی سیستم های open این قابلیت را دارند تا در مورد محصولات سخت افزاری مختلف و سیستم ها کنترلی متفاوت به کار گرفته شوند.




1 Supervisory Control And Data Acquisition

2 Simulation

3 Remote Monitoring

4 اندازه گیری از راه دور

5 استرداد اطلاعات

6 Programmable Logic Controller

7 Distributed Control Systems

8 با استفاده از HMI/MMI

9 Intelligent Electronic Device

10 پروتکلی برای ارتباط کامپیوترها و قطعات الکترکی و کنترلی در شبکه های صنعتی می باشد که امکان پردازش real time اطلاعات را فراهم می سازد.

[11] Master station

سیستم مدیریت محتوای miacms

CMS مخفف Content Management System می باشد. به نرم افزاری گفته می شود که کار آن ایجاد، نگهداری، ویرایش، مدیریت و نشر محتویاتی از نوع مستندات، فایل ها و انواع دیگر رسانه ها، در بستر اینترنت یا شبکه می باشد. از CMS معمولاً برای ساخت و نشر اخبار یا اعلانات خاص و یا راهنمای کار یک نرم افزار یا یک کالا، استفاده می شود. یا در برخی از شرکت ها برای ایجاد جریان کار (workflow) و مدیریت آن از cms بهره می گیرند.

یکی از پرطرفدار ترین و مطرح ترین نرم افزارهای cms نرم افزاریست به نام miacms که با استفاده از زبان php و تحت لیسانس gpl2 ساخته شده است. این نرم افزار توسط آقای Chad Auld، یکی از مهندسین نرم افزار شرکت یاهو تولید شده است. در حال حاضر او روزها در شرکت مایکروسافت کار می کند و شب ها به هک miaCMS می پردازد. هم اکنون آخرین نسخه miaCMS که توزیع شده است نسخه 4.6.5 آن می باشد. ویزگی های اصلی آن عبارتند از:
  1. نصب آسان
  2. ویرایشگر گرافیکی محتوا
  3. سیستم مدیریت ماژول های اضافی یکپارچه و قدرتمند
  4. پوشته های زیبا و انعطاف پذیر
  5. رایگان و بازمتن بودن
  6. جستجوی آسان و خوب
  7. مدیریت کاربران
  8. چندزبانی
  9. پایدار، ایمن و بالغ

نرم افزار MiaCMS در واقع با استفاده از پروژه mambo تولید شده است. البته در نسخه 4.6.4 آن بسیاری از نقاط ضعف و کاستی های مامبو محو شده اند و ویژگی های زیر به miaCMS افزوده شد.

  1. سیستم ACL پیشرفته (Access Control List)
  2. قابلیت حما پایگاه داده
  3. پشتیبانی از LDAP
  4. OPEN ID
  5. Dublin Core
  6. OAuth
  7. N-Level Content
  8. Content Versioning
  9. Multilingual Content Management
  10. Writeable REST Interface
  11. Multi-Site Management
  12. Better File/Image Manager
  13. Akismet

نصب و راه اندازی

برای نصب ابتدا آرشیو مربوطه را از آدرس زیر دریافت کنید:

www.miacms.org

بعد از دانلو فایل مربوطه را از حالت فشرده خارج کرده و در دایرکتوری www در مسیری که آپاچی را نصب کرده اید کپی کنید.

سرویس دهنده وب را راه اندازه کنید. اگر از wamp استفاده می کنید که این کار بسیار ساده می باشد.

مرورگر اینترنت خود را اجرا کرده و مسیر مربوط به فولدر miacms را وارد کنید. مثلاً اگر فایل فشرده شده را در دایرکتوری به اسم miaCMS باز کرده اید و آن را در شاخه www کپی کرده اید. کافیست در خط آدرس مرورگر خود آدرس زیر را تایپ کنید:

http://localhost/miacms

اگر نرم افزار قبلاً نصب شده باشد صفحه index به شکل زیر نمایان خواهد شد. البته به جای miaCMS test نامی که شما در نظر گرفته اید نشان داده می شود.


اما اگر قبلاً نصب نشده باشد شما به طور اتوماتیک به دایرکتوری installation هدایت خواهید شد و جادوگر نصب اجرا می شود.

همانطور که در شکل زیر می بینید قسمت اول صفحه نصب اطلاعات لازم در مورد سیستم مقصد را به ما می دهد. توجه داشته باشید که اگر هر یک از پیغام ها قرمز باشد عملیات نصب موفقیت آمیز نخواهد بود. البته همیشه یک پیغام با عنوان MySQL strict mode is not supported قرمز است که اهمیتی ندارد و به خاطر bug داخل برنامه است. می توانید از آن صرف نظر کنید.


اگر هیچ مشکلی وجود نداشت وهیچ پیغام خطایی در یافت نکردید می توانید نصب برنامه را آغز کنید. برای این کار در نوار آدرس مرورگر خود آدرس زیر را تایپ کنید:

http://localhost/miacms/installation/install1.php

به این ترتیب اولین مرحله نصب نرم افزار اجرا خواهد شد. همانطور که در شکل می بینید اولین چیزی که از شما درخواست می شود آدرس سرور می باشد و از آنجا که ما قصد داریم نرم افزار را بر روی سیستم محلی نصب کنیم از کلمه localhost یا آدرس IP 127.0.0.1 استفاده می کنیم.

سپس نام کاربر و کلمه عبورمربوطه را وارد می کنیم. این کاربر باید تمام موجوزهای مورد نیاز برای نصب برنامه را داشته باشد. یعنی باید grant های مربوط به ایجاد پایگاه داده جدید و همچنین ایجاد جداول مربوطه را داشته باشد. بنابراین ما در انجا از همان کاربر root استفاده کرده ایم.


فیلد بعدی که باید پر شود نام پایگاه داده ایست که تمام اطلاعت در آن ذخیره می شود. قبل از ادامه کار باید این پایگاه داده را ایجاد نمایید. برای این کار می توانید از نرم افزار phpmyadmin استفاده کنید. نحوه اضافه کردن یک پایگاه داده جدید را در شکل زیر ملاحظه کنید.


بعد از اینکه پایگاه داده را ساختید به صفحه نصب برگشته و نام مربوطه را وارد کرده و کلید enter را فشار دهید.

در مرحله بعد عنوان سایت از شما پرسیده می شود. همان نامی که در صفحه اصلی به نمایش گذاشته می

شود.


در صفحه بعدی کلمه عبور کاربر admin را تعیین کرده و عملیات نصب پایان می یابد. بعد از اتمام نصب باید دایرکتوری Installation را به کلی حذف نمایید.

نرم افزار برای گوشی های symbian s60 v3

مجموعه نرم افزار مخصوص سری s60 ورژن 3 برای گوشی های نوکیا. تست این نرم افزارها بر روی N73 کاملاً موفقیت آمیز انجام شده است. لیست نرم افزار ها:
  • Alone MP3 Dictaphone ( پخش موسیقی و ضبط صدای اطراف و مکالمه)
  • Answering Machine (منشی تلفنی)
  • Autopilot (منشی تلفنی)
  • BestCals (ماشین حساب)
  • FarsiSmS (امکان ارسال پیامک های فارسی همراه با حروف گ، چ، پ و ژ)
  • Handyclock (برنامه تنظیم زنگ ساعت. امکان تنظیم چندین زنگ در ساعت های مختلف روز و هفته)
  • Kaspersky mobile Antivirus ( آنتی ویروس همراه با شماره سریال)
  • Xplore (بهترین نرم افزار مدیریت فایل. ابتدا ورژن قدیمی تر را تصب کنید بعد ورژن جدید تر)
  • Accelerometer Plugin
  • CorePlayer ( نرم افزار مالتی مدیای بسیار قوی. پشتیبانی از فرمت های مختلف مانندasf و avi وmpg)
  • cpumonitor (مانند taskmanager ویندوز مقدار حافظه آزاد و درصد به کار گیری cpu گوشی را نشان می دهد)
  • Ebook Sms Java (اس ام اس هاس زیبا و فارسی)
  • facewrap ( عکس های خنده دار از دوستان)
  • Islamic Organizer N73 ( اوقات شرعی بسیار جالب)
  • lcgjukebox ( برنامه برای پخش فایل های صوتی. این برنامه عکس و لیریک های داخل فایل را نشان می دهد)
  • miniexcel (برنامه ای برای انجام کارهای اسپرد شیت ساده)
  • nokia maps
  • PMD ( دیکشنری کامل فارسی)
  • SMS Wizard ( برنامه ای برای ارسال شکلک ها از طریق اس ام اس)
  • Taghvim87
  • Tehran 87
  • upcodebarc ( برنامه ای بسیار جالب برای خواندن بارکد محصولات. با گرفتن یک عکس از بارکد کالای مورد نظر. اصل یا تقلبی بودن آن کالا را هنگام خرید تشخیص دهید. این برنامه بسیار مفید و کاربردی هست)
لینک دانلود تمام برنامه ها در یک فایل در اختیار دوستان قرار دارد. برای دانلود اینجا را کلیک کنید. نظر بدید تا باز هم از این کارها انجام بدم.

آموزش OpenGL قسمت اول

معرفی و آشانایی با نحوه نصب OpenGL

فن آوری OpenGL را می توان یک واسط نرم افزاری در ارتباط با سخت افزار گرافیکی نامید. ماهیت اصلی آن را کتابخانه های مدل سازی و گرافیک سه بعدی تشکیل می دهند که در ابتدا برای کار با سخت افزارهای گرافیکی SGI توسعه داده شدند و سرعت و قابلیت بالایی دارند. توجه داشته باشید که OpenGL یک API است نه یک زبان برنامه نویسی و قابلیت حمل بر روی پلت فرم های مختلف را دارا می باشد.

واسط OpenGL بر روی سیستم های Linux، Unix، Windows و MacOS قابل پیاده سازی می باشد. هیچ Graphic API دیگری وجود ندارد که به این اندازه Portable باشد. همچنین با اکثر سرویس دهنده های محیطهای گرافیکی از قبیل Win32، MacOS، X-window system سازگار می باشد. توابع OpenGL را می توان در زبان های برنامه نویسی متنوعی از قبیل Ada، c، c++، Fortran، Paython، Java و ... به کار گرفت.

ابتدایی ترین کتابخانه ای که برای OpenGL نوشته شد AUX نام داشت. که در سیستم های Unix مورد استفاده قرار می گرفت اما در محیط ویندوز اصلاً کارایی نداشت و با مشکلات متعددی روبرو می شد. از این جهت هیچ گاه برای نوشتن یک برنامه کاربردی مورد استفاده قرار نگرفت و تنها جنبه آموزشی داشت. اما بعدها توسط آقای Mark Kilgard در شرکت SGI کتابخانه ای به نام GLUT تولید شد که امروزه هم بسیاری از برنامه ها با استفاده از آن تولید می شوند. کتابخانه GLUT را می توان به صورت رایگان تهیه نمود. پس از مدتی تعدادی از توابع مورد نیاز که امکان تبادل با محیط سیستم عامل را فراهم کنند مانند فعال یا غیرفعال کردن یک پنجره، به آن اضافه شد.

پیاده سازی OpenGL

واسط OpenGL را به دو روش می توان به کار برد.

پیاده سازی نرم افزاری

در شکل زیر می توانید موقعیت و نحوه اجرای برنامه هایی که از OpenGL به عنوان سرویس دهنده نرم افزاری استفاده می کنند مشاهده فرمایید. همانطور که می بینید برنامه های کاربردی درخواست های خود را برای OpenGL ارسال می کنند و OpenGL درخواست مربوطه را پردازش کرده و توسط Software Rasterizer یک Image از روی مدل سه بعدی برای GDI ارسال می کند. قسمت GDI در واقع واسطی است که سیستم عامل در اختیار برنامه ها قرار می دهد تا از این طریق با سخت افزار گرافیکی ارتباط بر قرار کنند که در ویندوز به راه انداز سخت افزار گرافیکی GDI می گویند.

پیاده سازی سخت افزاری

در این روش ارتباط بین OpenGL و سخت افزار بدون واسطه و مستقیم می باشد.

به این روش پیاده سازی OpenGL، accelerated implementation می گویند و این نام گذاری به علت بهبود سرعت عملکرد آن می باشد.

همانطور که گفته شد OpenGL یک زبان برنامه نویسی نیست بلکه یک API می باشد که توابع گوناگونی را در اختیار برنامه نویس قرار می دهد. در سیتم عامل ویندوز به طور پیش فرض فایل های glu32.dll و opengl32.dll در پوشه system32 قرار دارند و این توابع را در اختیار برنامه هایی که از فن آوری OpenGL استفاده می کنند قرار می دهد.

قالب کاری OpenGL در مجموع حدود 300 دستورالعمل را برای ایجاد اشیای گرافیکی، نورپردازی، چرخش و انتقال آن را در اختیار برنامه نویس قرار می دهد. مسئله ای که توجه شما را در اینجا بدان جلب می کنم اینست که OpenGL هیچ گونه تابعی برای کار با موس یا صفحه کلید در اختیار شما قرار نمی دهد و قابلیت حمل آن ها از همین لحاظ می باشد. زیرا شما می توانید در هر سیستم عاملی از امکانات خود سیستم عامل برای تبادل اطلاعات و یا مدیریت رویدادهای محیط گرافیکی و ورودی و خروجی استفاده کنید.

نصب Glut

از آنجا که من از کامپایلر MinGW برای کامپایل برنامه ها استفاده می کنم در این جا هم روش نصب glut برای MinGW را توضیح می دهم. روش کار آنقدر ساده است که تقریباً می توان گفت نیازی به توضیح ندارد. کافیست مراحل زیر را به ترتیب انجام دهید:

  1. Glut را از مسیر زیر دانلود کنید.

http://www.xmission.com/~nate/glut.html

  1. آرشیو دریافتی را باز کرده و فایل های زیر را در مسیرهای گفته شده کپی کنید.
    • فایل glut.h را در دایرکتوری MinGW\include\GL کپی نمایید.
    • فایل glut32.lib را در دایرکتوری که فایل های برنامه شما قرار دارند و برنامه را در آن مسیر کامپایل می کنید قرار دهید.
    • فایل glut32.dll را نیز کنار فایل اجرایی که ایجا خواهید کرد، قرار دهید.
  2. توجه داشته باشید که در ابتدای همه برنامه های خود قبل از هر چیز باید فایل windows.h را include کنید. و بعد از آن فایل glut32.h را.
  3. برای کامپایل کردن برنامه های خود از دستور زیر استفاده کنید.

g++ programname glut32.lib -lopengl32 -lglu32

برای کسب اطلاعات بیشتر در مورد این دستور به مستندات MinGW مراجعه کنید. البته می توان با استفاده از برنامه هایی مانند qmake پروژه ای ایجاد کرده و کتابخانه های مذکور را در makfile فراخوان کنید. تا بتوانید براحتی با اجرای برنامه make فایل ها را کامپایل نمایید.