โปรแกรมเมเบิลลอจิกคอนโทรลเลอร์
(Programmable Logic Controller)

โดย   ชำนาญ    เฉลิมยุทธ    

 

| Home | About Us | Electricity | Energy | Automation | CNC,CAD/CAM  | Web board |

 
9
e
n
g
i
n
e
e
r


ตารางที่

สัญลักษณ์ที่ใช้ในการเขียนโปรแกรมแบบ STL (Supplementary operations)

Mnemonic

รายละเอียด

JC =xxxx

คำสั่งกระโดดชนิดมีเงื่อนไข (Condition jump)
คำสั่งนี้จะกำหนดให้โปรแกรมกระโดดไปยัง Label ที่กำหนดภายในคำสั่ง ถ้าสถานะของ RLO ที่กำหนดก่อนหน้าคำสั่งนี้ มีสถานะเป็น "1"

JP =xxxx

คำสั่งกระโดดเมื่อข้อมูลมีค่าเป็นบวก
คำสั่งนี้โปรแกรมจะกระโดดไปยัง Label ที่ถูกระบุด้วยคำสั่งนี้ เมื่อมีการคำนวณทางด้านคณิตศาสตร์ ในแอคคิวมูเลเตอร์ 1 และค่าภายในแอคคิวมูเลเตอร์มีค่ามากกว่าศูนย์

JM =xxxx

คำสั่งกระโดดเมื่อข้อมูลมีค่าเป็นลบ
คำสั่งนี้โปรแกรมจะกระโดดไปยัง Label ที่ถูกระบุด้วยคำสั่งนี้ เมื่อมีการคำนวณทางด้านคณิตศาสตร์ ในแอคคิวมูเลเตอร์ 1 และค่าภายในแอคคิวมูเลเตอร์มีค่าน้อยกว่าศูนย์

JZ =xxxx

คำสั่งกระโดดเมื่อข้อมูลมีค่าเท่ากับ ศูนย์ (Jump if zero)
คำสั่งนี้โปรแกรมจะกระโดดไปยัง Label ที่ถูกระบุด้วยคำสั่งนี้ เมื่อมีการคำนวณทางด้านคณิตศาสตร์ ในแอคคิวมูเลเตอร์ 1 และค่าภายในแอคคิวมูเลเตอร์มีค่าเท่ากับศูนย์

JN =xxxx

คำสั่งกระโดดเมื่อข้อมูลมีค่าไม่เท่ากับ ศูนย์ (Jump if not zero)
คำสั่งนี้โปรแกรมจะกระโดดไปยัง Label ที่ถูกระบุด้วยคำสั่งนี้ เมื่อมีการคำนวณทางด้านคณิตศาสตร์ ในแอคคิวมูเลเตอร์ 1 และค่าภายในแอคคิวมูเลเตอร์มีค่าไม่เท่ากับศูนย์

JO =xxxx

คำสั่งกระโดดเมื่อข้อมูล Overflow (Jump on overflow)
คำสั่งนี้โปรแกรมจะกระโดดไปยัง Label ที่ถูกระบุด้วยคำสั่งนี้ เมื่อมีการคำนวณทางด้านคณิตศาสตร์ ในแอคคิวมูเลเตอร์ 1 และค่าภายในแอคคิวมูเลเตอร์มีค่า Overflow

DO DWn

คำสั่งโปรเซสดาต้าเวิร์ด (Process data word)
คำสั่งนี้จะนำข้อมูลในดาต้าเวิร์ด ที่ถูกระบุออกมาเพื่อใช้ในคำสั่งถัดไป

DO FWn

คำสั่งโปรเซสแฟลกเวิร์ด (Process flag word)
คำสั่งนี้จะนำข้อมูลในแฟลกเวิร์ด ที่ถูกระบุออกมาเพื่อใช้ในคำสั่งถัดไป

O =xxxx

คำสั่งลอจิก OR

ON =xxxx

คำสั่งลอจิก OR-Not

= =xxxx

คำสั่งกำหนดผลของการกระทางลอจิก (Assignment)

TB - คำสั่งตรวจสอบที่สถานะ "1" (Test bit for "1" state)
TBN - คำสั่งตรวจสอบบิทที่สถานะบิท "0" (Test bit for "0" state)
SU - คำสั่งเซ็ทบิทชนิดไม่มีเงื่อนไข (Condition bit reset)
RU - คำสั่งรีเซ็ทบิทชนิดไม่มีเงื่อนไข (Uncondition bit reset)
FR

คำสั่งอีนาเบิ้ล เคาน์เตอร์, ไทม์เมอร์ (Enable counter, timer)
คำสั่งอีนาเบิ้ลใช้สำหรับการสตาร์ทไทม์เมอร์, เซ็ทเคาน์เตอร์ หรือ สตาร์ทการเริ่มนับขึ้น หรือ นับลง ถ้า RLO มีสถานะเป็น "1"

AW

คำสั่งดิจิตอลลอจิก AND
คำสั่งนี้จะนำค่าข้อมูลที่เก็บอยู่ภายในแอคคิวมูเลเตอร์ 2 ตัว มากกระทำการ AND กัน ผลลัพธ์ที่ได้จะเก็บไว้ภายในแอคคิวมูเลเตอร์ 1

OW

คำสั่งดิจิตอลลอจิก OR
คำสั่งนี้จะนำค่าข้อมูลที่เก็บอยู่ภายในแอคคิวมูเลเตอร์ 2 ตัว มากกระทำการ OR กัน ผลลัพธ์ที่ได้จะเก็บไว้ภายในแอคคิวมูเลเตอร์ 1

XOW

คำสั่งดิจิตอลลอจิก Exclusive-OR
คำสั่งนี้จะนำค่าข้อมูลที่เก็บอยู่ภายในแอคคิวมูเลเตอร์ 2 ตัว มากกระทำการ Ex-OR กัน ผลลัพธ์ที่ได้จะเก็บไว้ภายในแอคคิวมูเลเตอร์ 1

CFW

คำสั่งคอมพลีเมนส์ที่ 1 (1' s Complement)
ข้อมูลภายในแอคคิวมูเลเตอร์ 1 จะถูกกระทำ 1 's Complement

CSW

คำสั่งคอมพลีเมนส์ที่ 2 (2' s Complement)
ข้อมูลภายในแอคคิวมูเลเตอร์ 1 จะถูกกระทำ 2 's Complement

SLWn

คำสั่งเลื่อนข้อมูลไปทางซ้าย (Shift, Left word)
คำสั่งนี้จะทำการเลื่อนข้อมูลภายในแอคคิวมูเลเตอร์ 1 ไปทางซ้ายเท่ากับจำนวน n บิท ที่กำหนด ส่วนข้อมูลที่เข้ามาแทนที่ทางขวามือจะมีสถานะเป็น "0"

SRW

คำสั่งเลื่อนข้อมูลไปทางขวา (Shift, Right word)
คำสั่งนี้จะทำการเลื่อนข้อมูลภายในแอคคิวมูเลเตอร์ 1 ไปทางขวาเท่ากับจำนวน n บิท ที่กำหนด ส่วนข้อมูลที่เข้ามาแทนที่ทางซ้ายมือจะมีสถานะเป็น "0"

JU =xxxx

คำสั่งกระโดดชนิดไม่มีเงื่อนไข (Uncondition jump)
คำสั่งนี้จะกำหนดให้โปรแกรมกระโดดไปยัง Label ที่กำหนดภายในคำสั่ง (xxxx คือ Actual operand ที่ถูกแทนที่ด้วยตัวอักษรที่มีความหมายในการควบคุม)

S =xxxx

คำสั่งเซ็ท (Set)
ถ้าสถานะของ RLO มีสถานะเป็น "1" สถานะของโอเปอร์แรนด์ที่ Label กำหนดจะถูกเซ็ทให้เป็น "1" แต่ถ้า RLO เป็น "0" สถานะของโอเปอร์แรนด์ก็จะไม่มีการเปลี่ยนแปลง

S =xxxx

คำสั่งเซ็ทเคาน์เตอร์ (Set counter)
เคาน์เตอร์ที่กำหนดโดย Label ให้มีค่าเท่ากับจำนวนที่กำหนดไว้ใน แอคคิวมูเลเตอร์ 1 เมื่อสถานะของ RLO มีการเปลี่ยนแปลงจาก "0" ไปเป็น "1" แต่ถ้ามีการเปลี่ยนแปลงจาก "1" ไปเป็น "0" จะไม่มีผลต่อเคาน์เตอร์

RB =xxxx

รีเซ็ทฟังก์ชั่นหน่วยความจำ (Reset memory function)
ถ้าสถานะของ RLO มีสถานะเป็น "1" ค่า Actual operand จะถูกรีเซ็ทเป็นศูนย์ และ ถ้าสถานะของ RLO มีสถานะเป็น "0" จะไม่มีผลต่อคำสั่งนี้

SP =xxxx

Pulse timer
เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" ไทม์เมอร์ที่ถูกระบุด้วยโอเปอร์แรนด์จะเริ่มต้นนับเวลา และให้เอ้าท์พุทตามคุณสมบัติของ พัลซ์ไทม์เมอร์ ด้วยค่าที่กำหนดในแอคคิวมูเลเตอร์ 1

SR =xxxx

On-delay timer
เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" ไทม์เมอร์ที่ถูกระบุด้วยโอเปอร์แรนด์จะเริ่มต้นนับเวลา และให้เอ้าท์พุทตามคุณสมบัติของ On-delay timer ด้วยค่าที่กำหนดในแอคคิวมูเลเตอร์ 1

SFD =xxxx

Off-delay timer or count a counter down
เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" ไทม์เมอร์ที่ถูกระบุด้วยโอเปอร์แรนด์จะเริ่มต้นนับเวลา และให้เอ้าท์พุทตามคุณสมบัติของ Off-delay timer ด้วยค่าที่กำหนดในแอคคิวมูเลเตอร์ 1 หรือ เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" เคาน์เตอร์ ที่ถูกระบุด้วยโอเปอร์แรนด์จะเริ่มต้นนับลง

SSU =xxxx

Retentive on-delay timer or count a counter up
เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" ไทม์เมอร์ที่ถูกระบุด้วยโอเปอร์แรนด์จะเริ่มต้นนับเวลา และให้เอ้าท์พุทตามคุณสมบัติของ Retentive on-delay timer ด้วยค่าที่กำหนดในแอคคิวมูเลเตอร์ 1 หรือ เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" เคาน์เตอร์ ที่ถูกระบุด้วย โอเปอร์แรนด์จะเริ่มต้นนับขึ้น

SEC =xxxx

Extend pulse timer หรือ Set counter
เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" ไทม์เมอร์ที่ถูกระบุด้วยโอเปอร์แรนด์จะเริ่มต้นนับเวลา และให้เอ้าท์พุทตามคุณสมบัติของ Extended pulse timer ด้วยค่าที่กำหนดในแอคคิวมูเลเตอร์ 1 หรือ เมื่อสถานะของ RLO มีสถานะเปลี่ยนแปลงจาก "0" ไปเป็น "1" เคาน์เตอร์ ที่ถูกระบุด้วย โอเปอร์แรนด์จะถูกเซ็ทค่าการนับด้วยค่าที่อยู่ภายในแอคคิวมูเลเตอร์ 1

RD =xxxx

รีเซ็ทไทม์เมอร์ หรือ เคาน์เตอร์ (Reset , timer or counter)
ไทม์เมอร์ หรือเคาน์เตอร์ที่ถูกระบุภายในโอเปอร์แรนด์ จะถูกรีเซ็ทเมื่อ RLO มีสถานะเป็น "1"

FR =xxxx

คำสั่งอีนาเบิ้ล เคาน์เตอร์, ไทม์เมอร์
ถ้า RLO มีสถานะการเปลี่ยนแปลงสถานะจาก "0" ไปเป็น "1" ก็จะเป็นการสตาร์ทไทม์เมอร์, เซ็ทเคาน์เตอร์ หรือ สตาร์ทการเริ่มนับขึ้น หรือนับลง

L =xxxx

โหลดค่าข้อมูลจาก Actual operand
ข้อมูลจาก Actual operand จะถูกโหลดไปเก็บไว้ที่แอคคิวมูเลเตอร์ 1 ถ้า Actual operand เป็นไทม์เมอร์ หรือ เคาน์เตอร์ ค่าการนับเวลา และการนับจำนวนจะถูกโหลดลงไปเก็บในแอคคิวมูเลเตอร์ในรูปของเลขไบนารี่

LD =xxxx

โหลดค่าข้อมูลในรูปของรหัส BCD จาก Actual operand
ข้อมูลจาก Actual operand ซึ่งเป็นไทม์เมอร์ หรือ เคาน์เตอร์ จะถูกโหลดไปเก็บไว้ที่แอคคิวมูเลเตอร์ 1 ในรูปของรหัส BCD

LW =xxxx

การโหลดค่า Actual operand โดยตรง
ค่าคงที่ ที่กำหนดอยู่ภายใน Actual operand จะถูกโหลดไปเก็บไว้ที่ แอคคิวมูเลเตอร์ 1

T =xxxx

การทรานส์เฟอร์ข้อมูลให้กับ Actual operand
ข้อมูลที่เก็บอยู่ ภายในแอคคิวมูเลเตอร์ 1 จะถูกทรานส์เฟอร์ให้กับ Actual operand ที่กำหนดภายในคำสั่งนี้

DO =xxxx FB, PB, SB หรือ DB ที่ถูกระบุใน Actual operand จะถูกเรียกเพื่อเข้าไปสแกนการทำงานในบล็อคเหล่านั้นทันที
LIRn

โหลดรีจิสเตอร์ทางอ้อม (Load register indirectly)
คำสั่งนี้ แอคคิวมูเลเตอร์จะถูกโหลดด้วยข้อมูลในแอดเดรสที่อยู่ในแอคคิวมูเลเตอร์ ก่อนหน้าคำสั่งนี้

TIRn

ส่งถ่ายข้อมูลรีจิสเตอร์ทางอ้อม (Transfer register indirectly)
คำสั่งนี้จะถ่ายข้อมูลจากแอคคิวมูเลเตอร์ 2 ไปให้แอดเดรสที่เป็นข้อมูลอยู่ใน แอคคิวมูเลเตอร์ 1

TNBn

ส่งถ่ายข้อมูลแบบบล็อค (Block transfer)
คำสั่งนี้จะคัดลอกข้อมูลในเนื้อที่ของหน่วยความจำด้วยจำนวนของไบต์ ที่ถูกกำหนดเป็นพารามิเตอร์ ของคำสั่งนี้แอดเดรสที่เป็นแหล่งข้อมูลจะอยู่ใน แอคคิวมูเลเตอร์ 2 ส่วนแอดเดรสที่เป็นแหล่งรับข้อมูลจะกำหนดไว้ใน แอคคิวมูเลเตอร์ 1

JRn

คำสั่งกระโดดสัมพันธ์ (Jump relative)
คำสั่งนี้การสแกนจะกระโดดไปแบบไม่มีเงื่อนไข ซึ่งระยะทางที่จะกระโดดไปถูก ระบุด้วยพารามิเตอร์ที่อยู่ในคำสั่งนี้

TAKn แลกข้อมูลระหว่างแอคคิวมูเลเตอร์ 1 กับ 2 (Swap accumulator contants)
ADD BNn

บวกค่าคงที่หนึ่งไบต์ (Add byte constant)
คำสั่งนี้จะทำการบวกค่าในแอคคิวมูเลเตอร์ 1 ด้วยค่าคงที่ที่ถูกกำหนดด้วยคำสั่งนี้ โดยที่ค่าในแอคคิวมูเลเตอร์ 2 จะไม่เปลี่ยนแปลง

ADD KFn

บวกค่าคงที่หนึ่งเวิร์ด (Add word constant)
คำสั่งนี้จะทำการบวกค่าในแอคคิวมูเลเตอร์ 1 ด้วยค่าคงที่ที่ถูกกำหนดด้วยคำสั่งนี้ โดยที่ค่าในแอคคิวมูเลเตอร์ 2 จะไม่เปลี่ยนแปลง

DI

ปฏิบัติขบวนการทางอ้อม (Process block parameter indirectly)
คำสั่งนี้จะสั่งให้บล็อคพารามิเตอร์ในแอคคิวมูเลเตอร์ 1 เริ่มปฏิบัติขบวนการ

STS หยุด (Stop)

9
e
n
g
i
n
e
e
r
 

 

 
 

       e-mail :  webmaster@9engineer.com                                                  | กลับขึ้นด้านบน|     

 

Copyright © 2001-2002 ,www.9engineer.com, All rights reserved.