با استفاده از دستورات مقایسه میتوان دو عدد صحیح 16 بیتی ، دو عدد صحیح 32 بیتی یا دو عدد حقیقی را با هم مقایسه کرد. این دستورات عدد موجود در
2-L ACCU(IN2) را نسبت به عدد موجود در
ACCU1-L(IN1) طبق جدول زیر مقایسه میکنند. نتیجه دستورات مقایسه ای به صورت 1 در صورت برقرار بودن معیار مقایسه و به صورت در صورت برقرار نبودن معیار مقایسه ، در بیت
RLO ذخیره میشود.
این دستورات در پوشه ی
Comparator از
Program Element مطابق تصویر مقابل وجود دارند.
به دلیل تشابه بین دستورات در زبان
LAD و
FBD در اینجا فقط حالت
LAD ارائه شده است.
مقایسه میتواند بین یک عدد ثابت و یک عدد متغیر باشد ، یا بین دو عدد متغیر انجام شود. بدیهی است که امکان مقایسه بین دو عدد ثابت وجود دارد ، ولی نتیجه ی آن همیشه مشخص است.
عدد موجود در ACCU2 |
معیار مقایسه |
نماد دستور |
عدد صحیح 16 بیتی
(Integer) |
مساوی است با |
== I
== D
R == |
عدد صحیح 32 بیتی
(Double Integer) |
مساوی نیست با |
<> I
<> D
<> R |
عدد حقیقی (ممیز شناور ، 32 بیتی)
(Real Number) |
بزرگتر است از |
I<
D<
R< |
عدد صحیح 16 بیتی
(Integer) |
کوچکتر است از |
<I
<D
R> |
عدد صحیح 32 بیتی
(Double Integer) |
بزرگتر یا مساوی است از |
>=I
>=D
R=< |
عدد حقیقی (ممیز شناور ، 32 بیتی)
(Real Number) |
کوچکتر یا مساوی است از |
<=I
<=D
R=> |
دستورات مقایسه در زبان
STL با نماد دستور مطابق جدول فوق ارائه میشود.
دستورات مقایسه ای 16 بیتی فوق محتویات آکومولاتور
ACCU2-L را با محتویات آکومولاتور
ACCU1-L مقایسه میکند. اگر نتیجه ی مقایسه درست باشد ،
RLO=1 و در غیر اینصورت ،
RLO=0 میشود. همانطور که قبلاً نیز ارائه شد ، رنج اعداد صحیح 16 بیتی بین
-327768 to 32767 میباشد.
Network 1 :
دستورات مقایسه ای دو عدد صحیح 32 بیتی فوق محتویات آکومولاتور ACCU2 را با محتویات آکومولاتور ACCU1 مقایسه میکند. اگر نتیجه ی مقایسه درست بود ، RLO=1 و در غیر اینصورت ، RLO=0 میشود. اعدادی که خارج از رنج -32768 to 32767 باشند ، به عنوان عدد صحیح 32 بیتی به کار میروند.
Network 1 :
به اعداد صحیح 32 بیتی
Long Integer نیز گفته میشود. به همین دلیل ، اگر به صورت مستقیم یک عدد را در دستورات مقایسه ی 32 بیتی وارد کنید ، با علامت
L# آن را نشان میدهد. مثلاً
L#33000
اگر در این دستورات ، به صورت مستقیم یک عدد صحیح 16 بیتی را وارد کنید ، دریافت نخواهد شد و با رنگ قرمز نشان میدهد. مانند شکل مقابل:
اگر بخواهیم یک عدد صحیح 16 بیتی را با یک عدد صحیح 32 بیتی مقایسه کنیم ، ابتدا باید عدد 16 بیتی را با دستور
Move به یک حافظه ی 32 بیتی وارد کرده و سپس ، آن حافظه را با عدد 32 بیتی مقایسه کنیم. به تصویر مقابل توجه کنید.
بازه ی اعداد صحیح 32 بیتی بین -2,147,483,648 to 2,147,483,647
است.
دستورات مقایسه ای اعداد اعشاری 32 بیتی محتویات آکومولاتور ACCU2 را با محتویات آکومولاتور ACCU1 مقایسه میکند. اگر نتیجه ی مقایسه درست بود ، RLO=1 و در غیر اینصورت ، RLO=0 میشود.
Network 2 :
اگر عدد اعشاری را به صورت مستقیم در دستور مقایسه وارد نموده و Enter را فشار دهید ، خواهید دید که آن عدد را به نماد علمی نشان میدهد. در تصویر مقابل عدد 10.4 را به نماد علمی نشان میدهد.
در صورتی که بخواهیم یک عدد اعشاری را با یک عدد صحیح مقایسه کنیم ، لازم است حتماً عدد صحیح را با اعشار وارد نمائیم ، در غیر اینصورت قرمز رنگ خواهد شد که نشان دهنده ی خطاست. (مثلاً
24.0)
از آنجایی که اعداد حقیقی تماماً 32 بیتی هستند ، حافظه های به کارگیری برای آنها باید
Dword باشد.