บทที่ 5 ระบบหน่วยความจำ

เขียนและเรียบเรียงโดย อ.นัครินทร์  คฤหาสสุวรรณ์

5.1 ภาพรวมของหน่วยความจำ
ลักษณะที่สำคัญมากของอุปกรณ์ควบคุมที่สามารถโปรแกรมได้ คือการที่ผู้ใช้สามารถที่จะเปลี่ยนโปรแกรมควบคุมได้รวดเร็วและได้ง่าย ซึ่งสถาปัตยกรรมของ PLC ก็มีลักษณะเช่นนี้ ระบบหน่วยความจำในพื้นที่ของ CPU ที่อยู่ใน PLC เป็นที่รวมของลำดับคำสั่งต่างๆหรือที่เรียกว่าโปรแกรม ซึ่งถูกจัดเก็บและดำเนินการด้วยโปรเซสเซอร์ เพื่อจัดเตรียมให้สำหรับการควบคุมอุปกรณ์ต่างๆ  ในส่วนของหน่วยความจำประกอบด้วยโปรแกรมควบคุมซึ่งสามารถที่จะเปลี่ยนแปลงได้ หรือ ทำการโปรแกรมใหม่ได้ เมื่อมีการเปลี่ยนแปลงสายงานผลิตหรือมีความจำเป็นในที่ต้องเริ่มโปรแกรมใหม่

5.1.1 ส่วนของหน่วยความจำ
หน่วยความจำทั้งหมดใน PLC จะประกอบด้วยหน่วยความจำ 2 ประเภท
1.หน่วยความจำสำหรับดำเนินงาน (Executive Memory)

2.หน่วยความจำประยุกต์ใช้งาน (Application Memory)


รูปที่ 5.1 แสดงบล็อกไดอะแกรมอย่างง่ายของหน่วยความจำของระบบ PLC


1.หน่วยความจำสำหรับดำเนินงาน (Executive Memory) เป็นหน่วยความจำที่เก็บโปรแกรมถาวรซึ่งถูกพิจารณาว่าเป็นส่วนหนึ่งของ PLC  ซึ่งเป็นโปรแกรมดูแลกิจกรรมต่างๆของระบบ ทำหน้าที่จัดการเกี่ยวกับโปรแกรมการควบคุมและระบบการสื่อสารกับพอร์ตการสื่อสารต่างๆ  และส่วนนี้จะเก็บชุดคำสั่งต่างๆของ PLC เช่น คำสั่งเกี่ยวกับรีเลย์ คำสั่งการโอนย้าย และคำสั่งทางคณิตศาสตร์ โดยปกติพื้นที่ส่วนนี้จะไม่ให้ผู้ใช้เข้าไปทำการเปลี่ยนแปลง
2.หน่วยความจำประยุกต์ใช้งาน (Application Memory) เป็นส่วนที่เตรียมไว้ให้ผู้ใช้เขียนคำสั่งควบคุม ในรูปแบบของโปรแกรมประยุกต์

5.1.2 ประเภทของหน่วยความจำ
เนื่องจากโปรแกรมแต่ละประเภทมีความต้องการพื้นที่จัดเก็บไม่เหมือนกัน อาทิเช่น โปรแกรมสำหรับระบบ จะต้องการพื้นที่จัดเก็บที่เป็นแบบถาวรโดยที่ไม่สามารถถูกลบหรือสูญเสียไปโดยกระแสไฟฟ้าหรือผู้ใช้ เป็นต้น
หน่วยความจำสามารถจำแนกได้เป็น 2 หมวดหมู่ใหญ่ๆตามลักษณะการจัดเก็บโปรแกรม คือ
1.หน่วยความจำแบบชั่วคราว (Volatile Memory) โปรแกรมที่อยู่ในหน่วยความจำนี้ จะสูญเสียหากขาดกระแสไฟฟ้า เป็นหน่วยความจำที่ง่ายต่อการเปลี่ยนแปลง และเหมาะสมกับการใช้งานประยุกต์ต่างๆที่มีแบตเตอรี่สำรอง หรือ ไฟฟ้าสำรองรองรับตลอดเวลา
2.หน่วยความจำแบบไม่ชั่วคราว (Nonvolatile Memory) โปรแกรมที่อยู่ในหน่วยความจำนี้ จะไม่สูญเสียหากขาดกระแสไฟฟ้า  จึงไม่จำเป็นต้องมีแบตเตอรี่สำรองหน่วยความจำประเภทนี้โดยปกติจะแก้ไขโปรแกรมไม่ได้
ในปัจจุบันนี้ระบบ PLC จะประกอบด้วยหน่วยความจำแบบไม่ชั่วคราว หน่วยความจำแบบชั่วคราวและมีแบตเตอรี่สำรอง

นอกจากนี้หน่วยความจำสามารถที่จะจำแนกย่อยได้อีก 6 ประเภท คือ
1.Read Only Memory (ROM)
ถูกออกแบบมาให้เก็บโปรแกรมอย่างถาวร ไม่สามารถที่เปลี่ยนแปลงตัวโปรแกรมที่อยู่ใน ROM ที่เขียนครั้งแรกได้ภายใต้สภาวะปกติ ROM มีความสามารถในการต้านทานการสูญเสียข้อมูลจากสัญญาณรบกวนทางไฟฟ้าหรือขาดกระแสไฟฟ้า
PLC จะไม่ค่อยใช้หน่วยความจำประเภทนี้เป็นหน่วยความจำสำหรับประยุกต์การใช้งาน แต่อย่างไรก็ตามถ้างานประยุกต์มีข้อมูลหรือโปรแกรมที่ตายตัว ROM จะมีความได้เปรียบทางด้านอัตราเร็ว ราคา และความน่าเชื่อถือ ซึ่งปัจจุบันมีการนำ ROM มากับ PLC ขนาดเล็กเท่านั้น
โดยทั่วไป ROM ที่อยู่ใน PLC จะถูกโปรแกรมมาตั้งแต่อยู่ที่โรงงาน เมื่อผู้ผลิตทำการใส่โปรแกรมหรือข้อมูลลงไปใน ROM แล้ว ผู้ใช้จะไม่สามารถเปลี่ยนแปลงข้อมูลหรือโปรแกรมได้
ในการเขียนโปรแกรมควบคุมบนตัวควบคุมที่มี ROM เป็นฐาน เมื่อจะบรรจุโปรแกรมหรือข้อมูลลงใน ROM จะต้องทำการดีบั๊ก (Debug) ก่อน ซึ่งการดีบั๊กจะทำใน RAM หรือ คอมพิวเตอร์ส่วนบุคคล

2.Random Acess Memory (RAM)
บางครั้งอาจจะเรียกว่า หน่วยความจำแบบ อ่าน / เขียน (Read / Write) หรือ R/W ถูกออกแบบเพื่อให้ข้อมูลสามารถเขียนลงไปในพื้นที่หน่วยความจำได้ และสามารถอ่านหน่วยความจำที่เขียนแล้วได้ แต่ข้อมูลและโปรแกรมที่เขียนใน RAM จะไม่สามารถอยู่ได้เมื่อขาดกระแสไฟฟ้า ดังนั้น RAM จึงเป็นหน่วยความจำแบบชั่วคราว ปกติ RAM จะมีแบตเตอรี่สำรองตลอดเวลาเพื่อรักษาข้อมูลและโปรแกรมที่อยู่ใน RAM

ปัจจุบัน PLC จะใช้ RAM กับแบตเตอรี่เพื่อมาประยุกต์ใช้งาน RAM เป็นหน่วยความจำที่ง่ายต่อการสร้างและเปลี่ยนแปลงโปรแกรม เหมือนกับการนำเข้าข้อมูล เมื่อเปรียบเทียบกับหน่วยความจำประเภทอื่น RAM เป็นหน่วยความจำที่ทำงานเร็วที่สุด แต่มีข้อด้อยเพียงเมื่อขาดไฟฟ้าจะทำให้ข้อมูลและโปรแกรมภายใน RAM สูญหายไป ถึงแม้ว่าโปรเซสเซอร์ยังคงมอนิเตอร์สถานะของแบตเตอรี่ ดังนั้นแบตเตอรี่สำรองจึงมีความสำคัญมากจึงต้องเตรียมให้เพียงพอกับ PLC ที่ใช้งาน แต่ถ้าแบตเตอรี่สำรองไม่สามารถทำงานได้ PLC ซึ่งมีหน่วยความจำแบบไม่ชั่วคราว เช่น EPROM  จะถูกนำมาใช้รวมกับ RAM โดยที่ EPROM เป็นหน่วยความจำ ที่มีข้อดีของ หน่วยความจำแบบชั่วคราว และแบบไม่ชั่วคราว 


รูปที่ 5.2 แสดงซิปหน่วยความจำแบบ RAM ชนิด 4K words by 8 bits

3.Programmable Read Only Memory (PROM)
เป็นหน่วยความจำแบบ ROM ชนิดพิเศษ เพราะว่ามันสามารถที่จะโปรแกรมได้ เมื่อนำ PROM มาใช้ จะนำมาใช้เก็บข้อมูลสำรองของ RAM บางชนิดแบบถาวร ถึงแม้ว่าจะมีข้อได้เปรียบจากการที่เขียนโปรแกรมใหม่ได้ แต่ก็มีข้อเสียคือต้องการอุปกรณ์การเขียนโปรแกรมชนิดพิเศษ ดังนั้นเมื่อ PROM ถูกบรรจุข้อมูลหรือโปรแกรมครั้งแรกแล้ว เมื่อทำการลบโปรแกรมหรือเขียนโปรแกรมใหม่จึงทำได้ยาก ดังนั้นเมื่อต้องการเขียนโปรแกรมใหม่จึงนิยมใช้ ชิบ PROM ตัวใหม่
ดังนั้น PROM เป็นหน่วยความจำที่เหมาะสมในการเก็บโปรแกรมซึ่งตรวจสอบอย่างดีแล้วใน RAM และไม่ต้องการเปลี่ยนแปลงเพิ่มเติมอีก หรือ บรรจุข้อมูลแบบออนไลน์

4. Erasable Programmable Read Only Memory (EPROM)
เป็นหน่วยความจำ PROM ที่ถูกออกแบบมาเป็นพิเศษ โดยสามารถเขียนโปรแกรมใหม่ได้หลังจากโปรแกรมเดิมถูกลบด้วยรังสีอัลตร้าไวโอเล็ท (UV) เพื่อการลบโปรแกรมที่สมบูรณ์จึงจำเป็นต้องมีหน้าต่างเล็กๆบนชิป (ดูรูปที่ 5.3) เพื่อเปิดรับแสง UV ประมาณ 20 นาที EPROM ถือได้ว่าเป็นอุปกรณ์เก็บโปรแกรมแบบกึ่งถาวร เพราะว่ามันจะเก็บโปรแกรมตลอดไปจนกว่าจะพร้อมให้เปลี่ยนโปรแกรมใหม่
EPROM เป็นหน่วยความจำที่สามารถเก็บโปรแกรมที่ต้องการแบบถาวร แต่ไม่ต้องการที่จะเก็บโปรแกรมที่ต้องการเปลี่ยนแปลงข้อมูลหรือแบบบรรจุข้อมูลแบบออนไลน์ได้ มี OEMs หลายรายที่ใช้ตัวควบคุมกับ EPROM เพื่อจัดเก็บข้อมูลแบบถาวรของโปรแกรมควบคุมเครื่องจักรที่ได้รับการดีบั๊กเป็นที่เรียบร้อยแล้ว สาเหตุที่ OEMs ใช้ EPROM เนื่องจากว่าไม่ต้องการให้ผู้ใช้เปลี่ยนแปลงโปรแกรมหรือบรรจุข้อมูลเพิ่มเติมในเครื่องจักร



รูปที่ 5.3 แสดงรูปชิบหน่วยความจำ EPROM ชนิด 4K by 8 bits

ตัวควบคุมหลายชนิดได้ใช้ EPROM ทำงานร่วมกันหน่วยความจำแบบ RAM กับแบตเตอรี่สำรอง โดยจะใช้ EPROM เป็นต้วสำรองโปรแกรมของหน่วยความจำแบบ RAM ซึ่ง EPROM มีคุณสมบัติที่เก็บโปรแกรมได้ถาวรขณะเดียวกัน RAM ก็มีคุณสมบัติงายในการเปลี่ยนแปลงโปรแกรม ซึ่งจะทำเป็นชุดของหน่วยความจำเพื่อนำไปใช้ประยุกต์งานในด้านต่างๆ

5.Electrically Alterable Read Only Memory (EAROM)
เป็นหน่วยความจำที่มีความคล้ายคลึงกับ EPROM แต่แทนที่จะลบโปรแกรมด้วยรังสี UV แต่มาใช้แรงดันไฟฟ้าทำการลบแทน  โดยการจ่ายแรงดันเข้าไปที่ขาลบโปรแกรมของซิบ EAROM ซึ่งขานี้สามารถตัดออกไปได้ ส่วนการประยุกต์ใช้งานก็เหมือนกับ EPROM ซี่งเป็นหน่วยความจำแบบไม่ชั่วคราว โดยจะช่วยสำรองข้อมูลของหน่วยความจำ RAM

6.Electrically Erasable Programmable Read Only Memory (EEPROM)
 เป็นหน่วยความจำที่ประกอบด้วยวงจรรวม (Integrated Circuit) ได้ถูกพัฒนาตั้งแต่ปี 1970 มีคุณสมบัติคล้ายกับ ROM และ EPROM คือเป็นหน่วยความจำแบบไม่ชั่วคราว แต่เพื่อความยืดหยุ่นในการบรรจุและลบโปรแกรมเหมือนกับหน่วยความจำ RAM
ในปัจจุบันตัวควบคุมขนาดเล็กและขนาดกลางจะนิยมใช้ EEPROM เป็นหน่วยความจำภายในระบบ เนื่องจากสามารถเก็บโปรแกรมได้แบบถาวรและง่ายในการลบโปรแกรมและบรรจุลงโปรแกรมใหม่ โดยใช้อุปกรณ์ช่วยในการลบและบรรจุโปรแกรม เช่น เครื่องคอมพิวเตอร์ส่วนบุคคล หรือ อุปกรณ์ป้อนโปรแกรมแบบ Manual โดยอุปกรณ์ที่กล่าวมาแล้วจะช่วยลดเวลาในการลบและบรรจุโปรแกรมใหม่ EEPROM มีข้อด้อยคือ
1.เป็น ROM ที่ถูกลบโปรแกรมได้ด้วยกระแสไฟฟ้า
2.การที่จะบรรจุโปรแกรมใหม่จะต้องลบโปรแกรมเดิมเสียก่อน (ไม่เหมือนกับ RAM) ทำให้ล่าช้าในการบรรจุโปรแกรมใหม่ การดีเลย์นี้จะเห็นได้ชัดเมื่อทำการเปลี่ยนแปลงโปรแกรมแบบออนไลน์
3. การลบและการบรรจุลงโปรแกรมใหม่ไม่สามารถทำได้ตลอดไป คือมีขีดจำกัดในการเปลี่ยนแปลงโปรแกรมนั่นเอง (ประมาณ 10,000 ครั้ง)
แต่ทั้งหมดเป็นข้อด้อยที่เล็กน้อยถ้าเปรียบเทียบกับข้อได้เปรียบของ EEPROM


5.3 โครงสร้างและความจุของหน่วยความจำ
5.3.1 โครงสร้างพื้นฐานของหน่วยความจำ
หน่วยความจำของ PLC จะแบ่งเป็นช่องๆ หรือเป็นเซลล์ โดยแต่ละเซลล์จะเก็บข้อมูลที่เป็น 0 หรือ 1 (ระบบไบนารี่) เพราะว่าแต่ละเซลล์จะเก็บข้อมูลเลขไบนารี่เพียงแค่ 1 ตัวหรือ 1 บิต จึงเรียกแต่ละเซลล์ว่า บิต และจำนวน 1 บิตนี้เองเป็นโครงสร้างหน่วยย่อยที่สุดของหน่วยความจำ ถึงแม้ว่าแต่ละบิตจะประกอบด้วยข้อมูล 1 หรือ 0 แต่ไม่ใช่เก็บข้อมูลที่มีค่าเป็น 1 หรือ 0 จริงๆ แต่หมายความว่าถ้าเซลล์นั้นมีแรงดันตกคร่อมจะทำให้มีข้อมูลเป็น 1 แต่เซลล์นั้นไม่มีแรงดันตกคร่อมจะทำให้มีข้อมูลเป็น 0
ดังนั้นบิตที่อยู่ในเซลล์จะถูกพิจารณาว่ามีสถานะ ON ถ้ามีข้อมูลเป็น 1 (มีแรงดันไฟฟ้าตกคร่อม)และมีสถานะ OFF ถ้าข้อมูลเป็น 0 (ไม่มีแรงดันไฟฟ้าตกคร่อม) และจะเรียกข้อมูลที่อยู่ในบิตเดี่ยวว่า สถานะของบิต (Bit Status )
บางที่ ตัวโปรเซสเซอร์จะต้องใช้บิตมากกว่า 1 บิตในเวลาเดียวกัน ตัวอย่างเช่น โปรเซสเซอร์จะใช้กลุ่มของบิตทำการถ่ายโอนข้อมูลระหว่างหน่วยความจำ และการจัดเก็บตัวเลข การเข้ารหัส ก็ใช้กลุ่มของบิตเหมือนกัน  กลุ่มของบิตจะจับตัวรวมกันจำนวน 8 บิตจะเรียกว่า ไบต์ (Byte)  และ 2 ไบต์ก็จะเรียกว่า เวิร์ด (Word) ดังที่กล่าวมาแล้วในบทก่อนๆ

รูปที่ 5.4 แสดงหน่วยของหน่วยความจำใน PLC (บิต ,ไบต์ ,เวิร์ด)

5.3.2 ความจุและอรรถประโยชน์ของหน่วยความจำ
ความจุของหน่วยความจำมีความจำเป็นที่จะต้องพิจารณา เมื่อนำ PLC ไปใช้งาน การใช้หน่วยความจำที่เหมาะสมจะสามารถช่วยประหยัดต้นทุนของฮาร์ดแวร์และต้นทุนจากการซื้อหน่วยความจำมาใส่เพิ่มเติมทีหลัง ความรู้เรื่องหน่วยความจำจะช่วยหลีกเลี่ยงการชื้อคอนโทรลเลอร์ที่มีหน่วยความจำที่ไม่เหมาะสมหรือการไม่อาจจะขยายได้
ในปัจจุบันสำหรับ PLC ขนาดเล็ก (ขนาดน้อยกว่า 64 I/O) จะมีหน่วยความจำที่ขยายไม่ได้ เนื่องจากว่าผู้ผลิตได้ใส่หน่วยความจำที่เพียงพอต่อการทำงานขนาดเล็ก ส่วน PLC ขนาดใหญ่จะมีหน่วยความจำที่ขยายได้เพราะมีขอบเขตของการใช้งานมากมาย
ขนาดของหน่วยความจำประยุกต์จะมีหน่วยเป็น กิโล (K) โดยที่ 1 K จะมีจำนวน 1024 โลเคชั่น (Location) ถ้า 2 K จะมีจำนวน 2048 โลเคชั่น และขนาด 4 K จะประกอบด้วย 4096 โลเคชั่น รูปที่ 5.5 แสดงหน่วยความจำ 2 อาร์เรย์ที่มีขนาด 4 K แต่มีโครงสร้างที่แตกต่างกันโดยหน่วยความจำตัวแรกมีขนาด 1 ไบต์ และหน่วยความจำตัวที่ 2 ไบต์



รูปที่ 5.5 บล็อกแสดงตัวอย่างของ (a) โลเคชั่นของหน่วยความจำขนาด 4K by 8 bits 
และ     (b) โลเคชั่นของหน่วยความจำขนาด 4K by 16 bits

ความจุของหน่วยความจำของ PLC ในหน่วย K เป็นการชี้บอกจำนวนของโลเคชั่นของหน่วยความจำว่ามีจำนวนสูงสุดเท่าใด ซึ่งข้อมูลเพียงเท่านี้ยังไม่เพียงพอที่จะตัดสินใจว่าต้องการหน่วยความจำเท่าใด ซึ่งข้อมูลเพื่มเติมที่ควรจะทราบคือ ตำแหน่งของคำสั่งโปรแกรมที่ถูกเก็บจะช่วยให้เราทำการตัดสินใจได้ดีขึ้น
อรรถประโยชน์ของหน่วยความจำ (Memory Utilization) หมายถึง จำนวนหน่วยความจำที่ต้องการในการเก็บชุดคำสั่งแต่ละคำสั่ง ซึ่งเป็นข้อมูลที่ผู้ผลิตต้องให้กับผู้ใช้ โดยอาจจะมาเป็นในรูปแบบของค่มือการใช้งาน
เพื่อแสดงตัวอย่างความจุของหน่วยความจำ จากรูปที่ 5.5 สมมุติว่าคำสั่งหน้าสัมผัสที่เป็นปกติเปิด หรือ ปกติปิด แต่ละคำสั่งต้องการพื้นที่ในการจัดเก็บ 16 บิต เนื่องจากพื้นที่ของหน่วยความจำอาร์เรย์แรกมีขนาดเป็นครึ่งหนึ่งของอาร์เรย์ที่สอง นั่นหมายความว่าเมื่อเก็บขนาดโปรแกรมที่เท่ากัน ระบบในรูปที่ 5.5 a จะต้องการพื้นที่หน่วยความจำ 8 K ในขณะที่ระบบในรูปที่ 5.6 b จะต้องการพื้นที่หน่วยความจำเพียงแค่ 4 K
ผู้ใช้งาน PLC สามารถเริ่มต้นพิจารณาหาหน่วยความจำสูงสุดที่ต้องการโดยพิจารณาวิธีจากตัวอย่างต่อไปนี้

ตัวอย่างที่ 5.1 ให้หาปริมาณหน่วยความจำที่ต้องการสำหรับการประยุกต์ใช้งานต่อไปนี้
1.มี 70 เอ้าท์พุต โดยแต่ละเอ้าท์พุตต้องใช้คำสั่งที่มีหน้าสัมผัสเป็นส่วนประกอบ 10 องค์ประกอบ (Elements)
2.มีไทม์เมอร์ 11 ตัว และเคาท์เตอร์ 3 ตัว ซึ่งแต่ละประเภทมี 8 และ 5 องค์ประกอบตามลำดับ
3.มีการใช้คำสั่ง 20 คำสั่ง โดยมีคำสั่งบวก คำสั่งลบ คำสั่งเปรียบเทียบ  โดยแต่ละคำสั่งถูกกระตุ้นด้วยหน้าสัมผัส 5 องค์ประกอบ



ตารางที่ 5.1 แสดงความต้องการของหน่วยความที่ต้องการแต่ละคำสั่ง (จากผู้ผลิต PLC )

วิธีทำ
จากข้อมูลที่ให้มา เราสามารถที่จะประมาณความจุของหน่วยความจำที่ต้องใช้ได้ดังต่อไปนี้
1.      ตัวควบคุมทางลอจิก = 10 หน้าสัมผัส ต่อ 1 รั้งเอ้าท์พุต
ดังนั้นจำนวนเอ้าท์พุตรั้ง = 70
2.      ตัวควบคุมทางลอจิก = 8 หน้าสัมผัส ต่อ 1 ไทม์เมอร์
ดังนั้นจำนวนไทม์เมอร์ = 11
3.      ตัวควบคุมทางลอจิก = 5 หน้าสัมผัส ต่อ 1 เค้าท์เตอร์
ดังนั้นจำนวนเค้าท์เตอร์ = 3
4.      ตัวควบคุมทางลอจิก = 5 หน้าสัมผัส ต่อ การดำเนินการทางคณิตศาสตร์ และ การเปรียบเทียบ
ดังนั้นจำนวนของคณิตศาสตร์และการเปรียบเทียบ = 3
จากตารางที่ 5.1 ดังนั้นเราสามารถหาจำนวนเวิร์ดที่ต้องการใช้ได้ดังต่อไปนี้

1.      จำนวนหน้าสัมผัส                         (70x10)       700
จำนวนเอ้าท์พุต                            (70x1)         70
จำนวนเวิร์ดทั้งหมด                                       770     770
2.      จำนวนหน้าสัมผัส                         (11x8)         88
จำนวนไทม์เมอร์                           (11x3)         33
จำนวนเวิร์ดทั้งหมด                                       121     121
3.      จำนวนหน้าสัมผัส                         (3x5)          15
จำนวนเค้าท์เตอร์                         (3x3)            9
จำนวนเวิร์ดทั้งหมด                                         24      24
4.      จำนวนหน้าสัมผัส                         (20x5)         100
จำนวนคณิตศาสตร์และการเปรียบเทียบ(20x1)         20
จำนวนเวิร์ดทั้งหมด                                       120     120
จำนวนเวิร์ดทั้งหมดที่ต้องใช้เพื่อเก็บคำสั่ง                          1035
ซึ่งผลการหาพบว่าหน่วยความจำที่ต้องการคือ 1035 ซึ่งมากกว่า 1K (1024)จากการคำนวณตัวอย่างข้างต้น เป็นการประมาณการขั้นต้น แต่อย่างไรก็ตาม ต้องเผื่อสำหรับการประยุกต์ใช้งานที่เพิ่มขึ้นในอนาคตด้วย ซึ่งโดยปกติจะขยายไปประมาณ 25 -50 % เพื่อให้ยืดหยุ่นต่อการเปลี่ยนแปลง ปรับปรุง และขยายงานต่อไปในอนาคต
ผู้ใช้งานควรที่จะพึงระลึกเสมอว่า เมื่อมีการเปลี่ยนโปรแกรมควบคุมการทำงานจะมีผลกระทบต่อพื้นที่ของหน่วยความจำด้วย และงานที่เกี่ยวข้องกับการจัดการข้อมูลและการจัดเก็บข้อมูล ยิ่งมีความจำเป็นที่ต้องการหน่วยความจำเพิ่มขึ้นอีก และถ้าโปรแกรมที่ประกอบด้วยคำสั่งในรูปของคณิตศาสตร์และการดำเนินการจัดการข้อมูลจะมีความต้องการหน่วยความจำที่มากยิ่งขึ้น

ข้อมูลที่เกี่ยวข้องกับหน่วยความจำประยุกต์ (Application Memory) จะถูกรวมมาให้กับคู่มือ พร้อมกับตารางข้อมูล (Data Table) และ ตารางอินพุตและเอ้าท์พุต (I/O Table) จากผู้ผลิต PLC และในความเป็นจริงพื้นที่ของหน่วยความจำประยุกต์จริงๆที่ผู้ใช้จะได้ใช้งานจะน้อยกว่าที่ระบุไว้กับคู่มือ

5.4 การจัดการหน่วยความจำและการทำงานร่วมกับระบบอินพุตและเอ้าท์พุต
ดังที่ได้กล่าวมาแล้วนั้น ระบบหน่วยความจำจะแบ่งเป็น 2 ส่วนใหญ่ คือ ส่วนที่เป็นหน่วยความจำของระบบ (System Memory) และหน่วยความจำประยุกต์ (Application Memory) ซึ่งจะคนละพื้นที่กัน รูปที่ 5.6 จะแสดงตัวอย่างของการจัดการหน่วยความจำ ซึ่งจะรู้จักกันในชื่อ แผนที่หน่วยความจำ (Memory Map)  
Memory Map ไม่ได้แสดงแค่ว่าอะไรอยู่ในหน่วยความจำเท่านั้น แต่ยังแสดงว่าข้อมูลได้ถูกเก็บไว้ที่ใด ตำแหน่งใดของหน่วยความจำ และตำแหน่งต่างๆที่อยู่ใน Memory Map จะถูกเรียกว่า ที่อยู่ในหน่วยความจำ(Memory Address) การทำความเข้าใจเกี่ยวกับ Memory Map จะเป็นประโยชน์อย่างมากในการสร้างโปรแกรมใน PLC และการกำหนดตารางข้อมูล (Table Data)


รูปที่ 5.6 แสดงแผนที่หน่วยความจำ (Memory Map) อย่างง่าย


โดยทั่วๆไป PLC ทุกตัวจะจัดสรรพื้นที่หน่วยความจำเป็น 4 ส่วนดังต่อไปนี้ (ดูรูปที่ 5.6 )
1.Executive Memory Area เป็นส่วนที่เก็บโปรแกรมแบบถาวรและถือว่าเป็นส่วนหนึ่งของระบบ PLC   โปรแกรมที่เก็บในส่วนนี้ เป็นโปรแกรมที่เกี่ยวข้องกับการจัดการกิจกรรมต่างๆในระบบ เช่น การสั่งให้ดำเนินการตามโปรแกรมควบคุมที่ผู้ใช้เขียน การสื่อสารกับระบบต่างๆ และกิจกรรมภายในระบบอื่นๆ
2.Scratch Pad Area หรือ System Work Area เป็นพื้นที่ในการจัดเก็บชั่วคราว ซึ่งเป็นพื้นที่ที่ถูกใช้โดย CPU เพื่อเก็บกลุ่มของข้อมูลที่มีขนาดเล็กๆ ระหว่าง ดำเนินการคำนวณและควบคุม เนื่องจาก CPU มีความจำเป็นต้องเก็บข้อมูลบางประเภทอย่างรวดเร็วในพื้นที่ส่วนนี้ เพื่อหลีกเลี่ยงการใช้เวลามากในการรับข้อมูลจากหน่วยความจำหลัก
3.Data Table Area เป็นพื้นที่ในการจัดเก็บข้อมูล (Data) ทุกประเภทที่เกี่ยวข้องกับโปรแกรมควบคุม เช่น ค่าเวลาสำหรับไทม์เมอร์ ค่าตัวนับของเค้าท์เตอร์ และค่าคงที่อื่นๆของตัวแปรที่ต้องใช้ในโปรแกรมควบคุมหรือ CPU และ Data Table Area นี้ก็ยังคงสถานะข้อมูลสำหรับอินพุตระบบ (ครั้งหนึ่งที่อ่าน)และเอ้าท์พุตระบบ (ซึ่งครั้งหนึ่งที่ถูกเซ็ทให้ ON /OFF)
4.User Program Area เป็นพื้นที่ที่เก็บคำสั่งโปรแกรมควบคุมที่ผู้ใช้บรรจุเข้าไป และพื้นที่หน่วยความจำส่วนนี้ยังบรรจุโปรแกรมควบคุมอีกด้วย
พื้นที่หน่วยความจำในส่วนที่เป็น Executive Memory Area และ ในส่วนที่เป็น Scratch Pad Area เป็นที่พื้นที่ถูกซ่อนไว้จากผู้ใช้และถูกพิจารณาให้พื้นที่ทั้งสองส่วนนี้รวมกันที่เรียกว่า หน่วยความจำของระบบ (System Memory)
ในกรณีเดียวกันในส่วนที่เป็น Data Table Area และ User Table Area เป็นส่วนที่ผู้ใช้สามารถเข้าถึงได้ง่าย และผู้ใช้สามารถกำหนดค่าเพื่อใช้ควบคุมในต่างๆได้ ทั้งสองส่วนถูกพิจารณารวมกัน เรียกว่า หน่วยความจำสำหรับประยุกต์ใช้งาน (Application Memory)
ดังนั้นพื้นที่ของหน่วยความจำรวมที่ถูกระบุมากับตัว PLC จะประกอบด้วย หน่วยความจำของระบบ และ หน่วยความจำประยุกต์ใช้งาน

ตัวอย่างเช่น ถ้า PLC ระบุว่ามีหน่วยความจำสูงสุด 64 K อาจจะมีพื้นที่ในส่วนที่ Executive Memory Area เท่ากับ 32 K  ถูกแบ่ง 0.25 K ให้เป็น Scratch Pad Area และเหลือสำหรับหน่วยความจำประยุกต์ใช้งานซึ่งประกอบด้วย Data Table Area และ User Program Area เท่ากับ 31.75 K  แต่ก็มี PLC บางรุ่นที่หน่วยความจำสูงสุดระบุไว้เป็นหน่วยความจำประยุกต์ และบางรุ่นก็บอกแค่ความจุของหน่วยความจำในส่วนที่เป็น User Program Area

5.4.1หน่วยความจำสำหรับประยุกต์ใช้งาน (Application Memory)
เป็นหน่วยความจำที่จะเก็บคำสั่งโปรแกรมและข้อมูลที่โปรเซสเซอร์จะใช้ในการควบคุม รูปที่ 5.7 จะแสดงแมปปิ้งขององค์ประกอบพื้นฐานในพื้นที่ส่วนนี้  โดยแต่ละ PLC จะมีหน่วยความจำส่วนนี้สูงสุดขึ้นกับขนาดของตัวควบคุมของ PLC  
ตัวควบคุมจะเก็บข้อมูลทั้งหมดในส่วนที่เป็น Data Table Area และจะเก็บคำสั่งโปรแกรมในส่วนที่เป็น User Program Area  ซึ่งทั้งสองส่วนจะอยู่ในส่วนหน่วยความจำสำหรับประยุกต์ใช้งาน


รูปที่ 5.7 แสดงแผนที่ของหน่วยความจำประยุกต์ใช้งาน

1.Data Table Section เป็นที่อยู่ในหน่วยความจำประยุกต์ซื่งประกอบดัวยพื้นที่ส่วนต่างๆดังต่อไปนี้ (ดูรูปที่ 5.7)
-     ตารางอินพุต (Input Table)
-     ตารางเอ้าท์พุต (Output Table)
-     พื้นที่สำหรับจัดเก็บสำหรับบิตและรีจิสเตอร์ (Storage)
พื้นที่จัดเก็บส่วนนี้จะประกอบข้อมูลที่เป็นไบนารี่เพื่อแสดงสถานะของอินพุตและเอ้าท์พุต (เปิดหรือปิด) แสดงจำนวนและรหัส
ตารางอินพุต (Input Table) เป็นอาร์เรย์ของบิตที่จัดเก็บสถานะของดิจิตอลอินพุตที่ต่อกับตัวเชื่อมต่อของอินพุต หรือ อินพุตอินเตอร์เฟส (Input Interface) ของ PLC ดังนั้นจำนวนบิตสูงสุดของตารางอินพุตจะเท่ากับจำนวนอินพุตที่ต่อเข้ากับ PLC ตัวอย่างเช่น ถ้า PLC รุ่นหนึ่งสามารถต่อกับอินพุตภายนอกได้มากที่สุด 64 อินพุต ดังนั้น PLC ตัวนั้นจะต้องการตารางอินพุต 64 บิต ดังนั้นอาจจะอุปมาได้ว่า อุปกรณ์ภายนอกต่อเข้ากับบิตของตารางอินพุต นั่นเอง
ตัวอย่างเช่น ถ้ามีลิมิตสวิทช์ต่อเข้ากับอินพุตอินเตอร์เฟส ตาม      รูปที่ 5.8 ที่มีแอดเดรส 130078 ซึ่งสอดคล้องกับบิตในตารางอินพุต ซึ่งเมื่อดูที่ตารางอินพุตจะพบว่าอยู่ในตำแหน่งเวิร์ดที่ 1308 และตำแหน่งบิตที่ 078 ถ้าลิมิตสวิทช์อยู่ในตำแหน่งเปิดหน้าสัมผัส (OFF) จะทำให้บิตที่  130078 มีสถานะเป็น 0 (ดูรูปที่ 5.8 a)แต่ถ้าลิมิตสวิทช์อยู่ในตำแหน่งปิดหน้าสัมผัส (ON) จะทำให้บิตที่  130078 มีสถานะเป็น 1 (ดูรูปที่ 5.8 b)
ระหว่างที่ PLC ทำงานอยู่นั้น ตัวโปรเซสเซอร์จะอ่านสถานะของแต่ละอินพุตในโมดูลอินพุตและจะใส่ค่า 0 หรือ 1 ในบิตของตารางอินพุตที่มีแอดเดรสที่สอดคล้องกับอินพุตอินเตอร์เฟส ถ้าโมดูลอินพุตที่ต่อกับอุปกรณ์อินพุตมีการเปลี่ยนแปลง ค่าในตารางอินพุตก็มีการเปลี่ยนแปลงด้วย แต่จะเปลี่ยนแปลงระหว่างทำการอ่านในช่วงกระบวนการปรับปรุงค่าอินพุตและเอ้าท์พุต (I/O update) เท่านั้น


รูปที่ 5.8 แสดงลิมิตสวิตช์ต่อเข้าถึงบิตในตารางอินพุตในสภาวะต่างๆคือ
            (a)        ลิมิตสวิตช์ที่ยังไม่ทำงาน (หน้าสัมผัสเปิด) จะทำให้สถานะบิตที่ 130078 มีสถานะเป็น 0
            (b)        ลิมิตสวิตช์ที่ทำงาน (หน้าสัมผัสปิด) จะทำให้สถานะบิตที่ 130078 มีสถานะเป็น 1

ตารางเอ้าท์พุต (Output Table) เป็นอาร์เรย์บิทซึ่งควบคุมสถานะของอุปกรณ์ดิจิตอลอินพุตที่ต่อเข้ากับเอ้าท์พุตอินเตอร์เฟส (Output Interface) ของ PLC ดังนั้นจำนวนบิตสูงสุดที่มีอยู่ในตารางเอ้าท์พุตจะเท่ากับจำนวนเอ้าท์พุตสูงสุดของ PLC ที่จะต่อเข้ากับอุปกรณ์ภายนอก ตัวอย่างเช่น PLC ที่มีเอ้าท์พุตสูงสุด 128 เอ้าท์พุตมีความต้องการตารางเอ้าท์พุต 128 บิต
เช่นเดียวกับตารางอินพุต อุปกรณ์ภายนอกที่ต่อเข้ากับโมดูลเอ้าท์พุต อาจจะอุปมาได้ว่า อุปกรณ์ภายนอกต่อเข้ากับบิตของตารางเอ้าท์พุต นั่นเอง โดยที่ตัวโปรเซสเซอร์จะควบคุมบิตในตารางเอ้าท์พุตให้เป็นไปตามโปรแกรมที่ถูกเขียนโดยผู้ใช้งาน
ระหว่างที่ CPU ทำการสแกนโปรแกรม โมดูลเอ้าท์พุตจะถูกปรับให้มีสถานะเปิดหรือปิด (ON/OFF) ในขั้นตอนทำการปรับปรุงค่าเอ้าท์พุต (Output Update) ถ้าบิตในตารางเอ้าท์พุตมีสถานะเปิด (1 ,Turn On) ดังนั้นเอ้าท์พุตที่ต่อก็จะมีสถานะเปิดด้วย (ดูที่รูป 5.9 a) แต่ถ้าบิตในตารางเอ้าท์พุตมีสถานะปิด (0, Turn Off) ดังนั้นเอ้าท์พุตที่ต่อก็จะมีสถานะเปิดด้วย (ดูที่รูป 5.9 b) ซึ่งการเปิด หรือ ปิด ของอุปกรณ์กับโมดูลเอ้าท์พุตจะเกิดขึ้นระหว่าง CPU ทำการปรับปรุงค่าเอ้าท์พุต ภายหลังจากการสิ้นสุดการสแกน


รูปที่ 5.9 แสดงอุปกรณ์เอ้าท์พุตต่อเข้าถึงบิตในตารางเอ้าท์พุต (เวิร์ดที่ 0518 แอดเดรสที่ 051058) ซึ่งถูกควบคุมด้วยโปรเซสเซอร์ในสภาวะต่างๆคือ
            (a)        ถ้าตารางเอ้าท์พุตมีค่าเป็น 1 อุปกรณ์เอ้าท์พุตที่ต่อก็จะเปิด
            (b)        ถ้าตารางเอ้าท์พุตมีค่าเป็น 0 อุปกรณ์เอ้าท์พุตที่ต่อก็จะปิด

 Storage Area พื้นที่ส่วนนี้เป็นส่วนหนึ่งของพื้นที่ Data Table Area โดยมีหน้าที่สำหรับจัดเก็บข้อมูลที่สามารถเปลี่ยนแปลงได้ ซึ่งข้อมูลที่จัดเก็บอาจจะมีขนาดต่างๆเช่น เป็น บิต ไบต์ หรือ เวิร์ด เป็นต้น
พื้นที่ในการจัดเก็บส่วนนี้จะแบ่งเป็น 2 ส่วน คือส่วนที่เป็นพื้นที่จัดเก็บสำหรับบิตที่อยู่ภายใน (Internal Bit Storage Area) และพื้นที่สำหรับจัดเก็บ เวิร์ดและรีจิสเตอร์ต่างๆ (Register / Word Storage Area) (ให้ดูรูปที่ 5.10 ประกอบ)

รูปที่ 5.10 แสดงแผนที่ในส่วนที่เป็น Storage Area ซึ่งเป็นส่วนหนึ่งของ Data Table

- Internal Bit Storage Area  จะเก็บบิตต่างๆไว้ โดยบิตเหล่านั้นจะอ้างอิงถึง เอ้าท์พุตภายใน (Internal Output) , คอยด์ที่อยู่ภายใน (Internal Coil) ,รีเลย์ที่อยู่ภายใน (Internal Control Relays หรือ Internal) ซึ่งพวก อินเทอร์นอล เหล่านี้จะเตรียมให้สำหรับจัดการทางเอ้าท์พุตต่างๆเช่น
1.การทำอินเตอร์ล็อค (Interlock, Self Latching)
2.เพื่อสำหรับสั่งให้ทำงานแบบลำดับขั้นของวงจรแลดเดอร์ในโปรแกรมควบคุม
อินเทอร์นอล เหล่านี้ไม่ได้ไปควบคุมอุปกรณ์ภายนอกโดยตรง เนื่องจากมันถูกเก็บอยู่ในตำแหน่งของหน่วยความจำที่ไม่ได้อยู่ในส่วนที่เป็น ตารางเอ้าท์พุต (Output Table)
เมื่อโปรเซสเซอร์ดำเนินการตามโปรแกรมที่เขียน เมื่อ บิตภายใน (Internal Bit) ถูกกระตุ้น (สถานะเป็น 1) บิตนั้นจะไปอ้างอิงหน้าสัมผัสซึ่งหน้าสัมผัสมีแอดเดรสเดียวกับแอดเดรสของบิตภายใน แล้วจะเปลี่ยนสถานะของหน้าสัมผัส โดยถ้าหน้าสัมผัสนั้นเป็นแบบปกติเปิด (Normally Open) เมื่อถูกกระตุ้นก็จะปิด (Close) แต่ถ้าหน้าสัมผัสนั้นเป็นแบบปกติปิด (Normally Close) เมื่อถูกกระตุ้นก็จะเปิด (Open) โดยหน้าสัมผัสเหล่านี้เองไปต่อกับตัวอินเทอร์นอลอื่นๆ หรือ หน้าสัมผัสของอินพุตจริงๆเพื่อเข้าสู่กระบวนลำดับขั้นอินเตอร์ล็อก ก็ได้ หรือจะไปขับเอ้าท์พุตจริงๆ (แต่ต้องอ้างอิงไปที่ หน่วยความจำในส่วน Output Table)

- Register / Word Storage Area  จะทำหน้าที่เก็บกลุ่มบิต เช่น ไบต์ (Bytes) หรือ เวิร์ด (Word) ซึ่งข้อมูลที่จัดเก็บจะอยู่ในรูปของตัวเลขไบนารี่และจะแสดงปริมาณหรือรหัส  ถ้าปริมาณเลขฐานสิบถูกจัดเก็บก็จะจัดเก็บในรูปแบบของตัวเลขไบนารี่ที่เทียบเท่ากับตัวเลขฐานสิบที่จัดเก็บ  แต่ถ้าเป็นการจัดเก็บรหัสต่างๆเช่น รหัส ASCII หรือรหัส BCD     เป็นต้น ก็จะจัดเก็บในรูปแบบของตัวเลขในระบบเลขฐานสอง
ค่าต่างๆที่ถูกวางไว้ใน Register / Word Storage Area จะแสดงข้อมูลอินพุตจากอุปกรณ์ต่างๆเช่น จากทัมวิลสวิทช์ (Thumbwheel Switch) อินพุตที่เป็นแอนาล็อก และอุปกรณ์อื่นๆ
เช่นเดียวกับข้อมูลจากอุปกรณ์อินพุตต่างๆ รีจิสเตอร์นี้ยังสามารถจัดเก็บค่าต่างๆของเอ้าท์พุต และจะส่งออกไปทางโมดูลเอ้าท์พุตอินเตอร์เฟสที่ต่อกับอุปกรณ์ภายนอกอีกทีหนึ่ง อุปกรณ์ภายนอกได้แก่ พวกมิเตอร์ที่เป็นอะนาล็อก พวก 7 ‘s Segment ที่เป็น LED หรือ BCD วาล์วควบคุม และตัวควบคุมอัตราเร็ว (Speed Controller)
พื้นที่ส่วนนี้ยังจัดเก็บ ค่าคงที่ต่างๆเช่น ค่าพรีเซ็ท (Preset) ของไทม์เมอร์และเค้าท์เตอร์ ขึ้นอยู่กับว่าจะใช้กับอะไร และตัว Register / Word Storage Area นี้อาจจะใช้อ้างอิงไปที่ รีจิสเตอร์ของอินพุตต่างๆ (Input Registers) รีจิสเตอร์ของเอ้าท์พุตต่างๆ (Output Registers) หรือ Holding Registers ซึ่งตารางที่ 5.2 จะแสดงค่าคงที่มาตรฐานและตัวแปรที่ถูกเก็บไว้ในรีจิสเตอร์ต่างๆ

ตารางที่ 5.2 แสดงค่าคงที่และตัวแปรที่เก็บในรีจิสเตอร์ Register /Word Area
ค่าคงที่
ตัวแปร
ค่าพรีเซ็ทของไทม์เมอร์
ค่าของเวลาที่เพิ่มขึ้น
ค่าพรีเซ็ทของเค้าท์เตอร์
ค่าของตัวนับที่เพิ่มขึ้น
ค่า Set Point ของระบบควบคุมแบบวนลูป
ค่าของผลลัพธ์จากการดำเนินการทางคณิตศาสตร์
ค่า Set Point ของตัวเปรียบเทียง
ค่าอินพุตที่เป็นอานาล็อก
ตารางที่แสดงเลขฐานสิบ
ค่าเอ้าท์พุตที่เป็นอานาล็อก
ตัวอักษรที่เป็นรหัส ASCII
ค่าอินพุตที่เป็น BCD
ข้อความที่เป็นรหัส ASCII
ค่าเอ้าท์พุตที่เป็น BCD
ตัวอย่างที่ 5.2 จากรูปที่ 5.11 เมื่อลิมิตสวิทช์ที่ต่อกับอินพุตเทอร์มินอลที่ 10 ถูกกระตุ้นให้มีหน้าสัมผัสปิด อะไรจะเกิดขึ้นกับอินเตอร์นอลที่ 2301 (เวิร์ดที่ 23 บิตที่ 01)



รูปที่ 5.11 แสดงลิมิตสวิตช์ที่เปิดหน้าสัมผัสต่อกับเอ้าท์พุตที่อยู่ภายใน
เฉลย
เมื่อ LS1 ถูกเปิด (ดูรูปที่ 5.12) หน้าสัมผัสที่ 10 ก็จะทำงาน ซึ่งก็จะไปกระตุ้นให้เอ้าท์พุตภายใน (Internal Output) ที่ 2301 เปิด (บิตที่ 01 ของเวิร์ดที่ 23) ทำงาน  ทำให้เปลี่ยนสถานะหน้าสัมผัส 2301   ให้ปิดหน้าสัมผัส ทำให้ไปกระตุ้นให้เอ้าท์พุต อินเตอร์เฟสตำแหน่งที่ 20 ทำงานเป็นผลให้ดวงไฟฟ้าส่องสว่าง PL ทำงานเมื่อ PLC สิ้นสุดการสแกน


รูปที่ 5.12 แสดงลิมิตสวิตช์ที่ปิดหน้าสัมผัสต่อกับเอ้าท์พุตที่อยู่ภายใน

ตัวอย่างที่ 5.3 สำหรับแผนที่หน่วยความจำที่แสดงในรูปที่ 5.13 ซึ่งจะแสดงจำนวนต่างๆที่อยู่ใน Storage Area
(a)   ตัวเลขรหัส BCD ที่มีค่า 9876
(b)   ตัวอักษร A ซึ่งเป็นรหัส ASCII ที่ 1018
(c)    จำนวน 225710 (1000110100012) ซึ่งเป็นค่าอานาล็อก
จงแสดงค่าเหล่านี้ใน Storage Area ตั้งแต่รีจิสเตอร์ที่ 400
เฉลย
จากรูปที่ 5.14 จะแสดงข้อมูลในรีจิสเตอร์ที่ประกอบด้วยเลข BCD 9876 ,ตัวอักษร A ซึ่งเป็นรหัส ASCII ที่ 1018 และ จำนวน 225,710 (1000110100012) ซึ่งเป็นค่าอานาล็อก



รูปที่ 5.14 แสดงคำตอบของตัวอย่างที่ 5.3

2.User Program Section เป็นส่วนหนึ่งของหน่วยความจำประยุกต์ ซึ่งถูกสงวนไว้สำหรับงานควบคุมทางลอจิก  โดยที่คำสั่งควบคุมเครื่องจักรและกระบวนการผลิตทั้งหมดจะเก็บที่พื้นที่ส่วนนี้  และภาษาจัดการต่างๆในซอฟต์แวร์ของโปรเซสเซอร์ ซึ่งจะแสดงแต่ละชุดคำสั่งของ PLC ก็จะถูกเก็บไว้ในพื้นที่ในส่วนนี้ ด้วย
เมื่อ PLC ดำเนินการทำตามคำสั่งของโปรแกรม ตัวโปรเซสเซอร์จะทำการแปลข้อมูลใน User Program Memory และทำการควบคุมบิตใน Data Table ที่สอดคล้องกับอินพุตหรือเอ้าท์พุตภายใน หรือ อินพุตหรือเอ้าท์พุตจริงๆ
ขนาดสูงสุดของหน่วยความจำส่วนนี้จะมีให้ขึ้นอยู่กับขนาดของ PLC (ขนาดของ I/O) สำหรับ PLC ขนาดกลางและขนาดใหญ่ หน่วยความจำส่วนนี้จะมีความยืดหยุ่นโดยการเปลี่ยนแปลงขนาดของ Data Table ซึ่งขึ้นอยู่กับว่าผู้ใช้จะต้องการปริมาณเท่าใด แต่สำหรับ PLC ขนาดเล็กหน่วยความจำส่วนนี้จะถูกกำหนดขนาดมาให้เลย ไม่สามารถเปลี่ยนแปลงได้ ซึ่งจะรองรับคำสั่งได้จำกัด ส่วนวิธีการประมาณขนาดของ User Program Memory ได้อธิบายไปแล้วในหัวข้อที่ 5.3

5.5 การกำหนดโครงสร้างของหน่วยความจำและแอดเดรสของอินพุตและเอ้าท์พุตของ PLC
การทำความเข้าใจเกี่ยวกับการจัดการหน่วยความจำ โดยเฉพาะการปฏิสัมพันธ์กับอินพุตและเอ้าท์พุตของ Data Table กับ Storage Area จะช่วยในการดำเนินการกับฟังก์ชั่นที่ซับซ้อนของ PLC ได้อย่างสะดวก ถึงแม้ว่าแผนที่หน่วยความจำจะมีให้สำหรับผู้ใช้ PLC แต่การทำความเข้าใจจากสิ่งที่ PLC ให้มาอย่างละเอียดจะทำให้ที่จะเขียนโปรแกรมควบคุมได้ดีและสามารถที่จะปรับปรุงโครงสร้างของโปรแกรมได้ในอนาคต

5.5.1 การจัดการ Data Table
ซึ่งบางทีจะเรียกว่า การกำหนดโครงสร้างของ Data Table ซึ่งเป็นสิ่งที่สำคัญมาก เพราะการกำหนดโครงสร้างจะไม่ทำเฉพาะแค่แอดเดรสอุปกรณ์พวกดิสครีสเท่านั้น แต่ยังรวมถึงพวกรีจิสเตอร์ที่ใช้ในการควบคุมตัวเลขและอานาล็อก เช่นในกระบวนการจับเวลา การนับ ของ PLC เป็นต้น
ก่อนอื่นเรามาพิจารณาตัวอย่าง ของแผนที่หน่วยความจำประยุกต์สำหรับ PLC ซึ่งตัวควบคุมมีหน่วยความจำ อินพุตและเอ้าท์พุต และระบบตัวเลขดังต่อไปนี้
(a)   มีหน่วยความจำประยุกต์ทั้งหมด 4K Word กับ 16 บิต
(b)         มีความสามารถในการต่อกับ 256 I/O (128 อินพุตและ128 เอ้าท์พุต
(c)          มีเอ้าท์พุตภายใน 128 บิต
(d)         เพิ่มรีจิสเตอร์ได้สูงสุดทั้งหมด 256 รีจิสเตอร์ โดยมีรีจิสเตอร์ขั้นต่ำได้ 8 รีจิสเตอร์ และสามารถเพิ่มได้ทีละ 8 รีจิสเตอร์ จนกระทั่งสูงสุดได้ที่ 256 รีจิสเตอร์ (มีทั้งหมด 32 กลุ่ม)
(e)         เป็นอาร์เรย์ที่ใช้ระบบเลขฐานแปด กับ ความยาวเวิร์ดเท่ากับ 2 ไบต์

จากข้อมูลเรา
สามารถแสดงแผนที่ของหน่วยความจำประยุกต์ได้ดังต่อไปนี้ 


รูปที่ 5.15 แสดงตารางอินพุตและเอ้าท์พุตและขอบเขตของ User Memory 




รูปที่ 5.16  แสดงผังรีจิสเตอร์ที่เพิ่มสูงสุด โดยสามารถเพิ่มได้ที่ละ 8 รีจิสเตอร์ และการแบ่งรีจิสเตอร์ออกเป็นกลุ่มๆละ 8 รีจิสเตอร์

5.5.2  การระบุตำแหน่งแอดเดรสอินพุตเอ้าท์พุตของหน่วยความจำ
สมมุติว่า เรามีวงจรง่ายๆวงจรหนึ่ง วงจรนั้นประกอบด้วยลิมิตสวิตช์เพื่อจะไปขับหลอดไฟส่องสว่างให้ทำงาน (ดูในรูป 5.17)  วงจรนี้สามารถต่อเข้ากับโมดูลอินพุตและโมดูลเอ้าท์พุตของ PLC ที่แสดงในรูป 5.18


รูปที่ 5.17 แสดงวงจรที่ประกอบด้วยลิมิตสวิตช์เพื่อขับหลอดไฟฟ้าส่องสว่าง


รูปที่ 5.18 โมดูลอินพุตและเอ้าท์พุตที่ต่อกับอุปกรณ์ภายนอก

สังเกตได้ว่า ในการเขียนโปรแกรมนั้นเราไม่จำเป็นต้องนำหน้าสัมผัสของแอดเดรสที่ 000005 (จากตารางอินพุต) มาต่อตรงกับกับเอ้าท์พุตคอยด์ของแอดเดรสที่ 002017 (จากตารางเอ้าท์พุต) แต่อาจจะนำหน้าสัมผัสของแอดเดรสที่ 000005 มาต่อเข้ากับอินเทอร์นอลเอ้าท์พุตของแอดเดรสที่ 001006 แล้วไปขับแอดเดรสที่ 002017 อีกที

รูปที่ 5.19 การประยุกต์ใช้วงจรแลดเดอร์โดยใช้อินเทอร์นอลสำหรับวงจรรูปที่ 5.17

5.6 สรุปการทำงานของ PLC
สำหรับในตัวอย่างนี้ เราจะสมมุติว่ามีหน่วยความจำของ PLC อย่างง่าย ซึ่งมีการจัดการดังที่แสดงในรูปที่ 5.20 และวงจรอย่างง่ายดังรูปที่ 5.21 ซึ่งเป็นการต่ออุปกรณ์ภายนอกเข้ากับ PLC ทางอินพุตเอ้าท์พุตอินเตอร์เฟส (I/O Interface)


รูปที่ 5.20 แสดงแผนที่หน่วยความจำของ PLC ตัวอย่าง

ส่วนการนำเสนอในครั้งนี้จะใช้โปรแกรมควบคุมอย่างง่าย ที่แสดงในรูป 5.22 ซึ่งโปรแกรมนี้จะถูกเก็บไว้ในส่วนที่เป็น User Memory Area ซึ่งจะเป็นตัวเลขระบบไบนารี่เพื่อแสดงสถานะของคำสั่งด้วยค่า 1 (On) และค่า 0 (Off) (ตัวอย่างคำสั่งเช่น  ) ระหว่างที่ PLC ทำการสแกนจะมีกิจกรรมต่างๆตามลำดับต่อไปนี้
1.ทำการอ่านค่าของสถานะของอินพุต
2.ใส่ค่าสถานะที่ได้ลงใน Input Data Table
3.PLC ทำการสแกนโปรแกรมที่ป้อนเข้ามาที่หน่วยความจำที่เป็น User Program Area โดยทำการแปลชุดคำสั่งที่อยู่ในนั้น โดยจะปฏิบัติตามลอจิกแบบ รั้งต่อรั้ง (Rung by Rung) ตามสถานะของระบบอินพุตและเอ้าท์พุตใน Data Table
4.ผลลัพธ์ที่ได้จากข้อ 3 จะถูกเก็บไว้ที่ Output Data Table และ Storage Bit Table (ถ้ามีการใช้อินเทอร์นอล)
5.หลังจากที่ทำการสแกนโปรแกรมเสร็จ โปรแกรมของระบบ (Executive Program) จะทำการปรับปรุงค่าต่างๆและเก็บไปไว้ในตารางเอ้าท์พุต
6.ส่งคำสั่งออกทางโมดูลเอ้าท์พุตว่าจะให้ เปิด หรือ ปิด อุปกรณ์ที่ต่อกับ เอ้าท์พุตอินเตอร์เฟส

รูปที่ 5.22 แสดงวงจรเชื่อมต่อระหว่าง PLC กับอินพุตเอ้าท์พุตอินเตอร์เฟสอย่างง่าย


รูปที่ 5.22 คำสั่งที่ใช้แสดงโปรแกรมควบคุม


รูปที่ 5.23 แสดงสรุปขั้นตอนการทำงานของ PLC ในวงจรแลดเดอร์รูปที่ 5.22


จากรูปที่ 5.23 เราสามารถอธิบายการทำงานของ PLC ได้ดังต่อไปนี้
ขั้นตอนที่ 1 โปรเซสเซอร์จะทำการอ่านสถานะของอินพุตที่ 10 เนื่องจากว่าอยู่ในสถานะปิด (OFF) จึงใส่ค่า 0 เข้าไปที่บิตที่ 10 ของ เวิร์ดที่ 0 ทำให้เอ้าท์พุตของ 0407 ยังคงปิด (OFF) อยู่
ขั้นตอนที่ 2 โปรเซสเซอร์จะทำการอ่านสถานะเปิด (ON) ของอินพุตที่ 10 จึงใส่ค่า 1 เข้าไปที่บิตที่ 10 ของเวิร์ดที่ 0 แต่ในตอนนี้บิตที่ 7 ของเวิร์ดที่ 04 ยังคงมีค่าเป็น 0 อยู่
ขั้นตอนที่ 3 ระหว่างปฏิบัติตามโปรแกรมที่ถูกบรรจุภายใน User Memory โปรแกรมของระบบจะใส่ค่า 1 เข้าไปที่บิต 07 ของเวิร์ด 04
ขั้นตอนที่ 4 เมื่อทำตามโปรแกรมที่ถูกบรรจุลงใน User Memory แล้ว โปรแกรมของระบบจะเปิด เอ้าท์พุตที่ 20 คือ ซึ่งจะไปเปิดเอ้าท์พุตที่ตำแหน่งเวิร์ดที่ 04 บิตที่ 07 ของตารางเอ้าท์พุต ดังนั้นหลอดไฟฟ้า ก็ สว่าง





ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

บทที่ 1 พื้นฐาน PLC

บทที่ 9 คำสั่งของ STEP 7

บทที่ 7 พื้นฐานในการเขียนโปรแกรม