เนื้อหาวันที่ : 2010-06-25 12:11:29 จำนวนผู้เข้าชมแล้ว : 3465 views

มารู้จักโปรโตคอล SPA-bus (ตอน 1)

SPA-bus เป็นโปรโตคอลที่ถูกออกแบบ โดยบริษัท ABB Stromberg เพื่อมาใช้งานเป็นระบบฟิลด์บัส (Field Bus) ในระบบป้องกันระบบไฟฟ้า และระบบควบคุมในงานเกี่ยวกับระบบไฟฟ้าแรงสูง ระบบจะประกอบด้วยอุปกรณ์สเลฟ (Slave) หลาย ๆ ประเภท เช่น รีเลย์ป้องกัน, คอนโทรลยูนิต (CU: Control Unit) และ อะลาร์มยูนิต (Alarm Unit) ที่ใช้บัสเพื่อเชื่อมต่อกับตัวมาสเตอร์ (Master)

การสื่อสารข้อมูลในงานอุตสาหกรรม 
ตอนที่ 8 มารู้จักโปรโตคอล SPA-bus (ตอน 1)

.
พิชิต จินตโกศลวิทย์ 
pichitor@yahoo.com
.

.

SPA-bus เป็นโปรโตคอลที่ถูกออกแบบ โดยบริษัท ABB Stromberg เพื่อมาใช้งานเป็นระบบฟิลด์บัส (Field Bus) ในระบบป้องกันระบบไฟฟ้า และระบบควบคุมในงานเกี่ยวกับระบบไฟฟ้าแรงสูง ระบบจะประกอบด้วยอุปกรณ์สเลฟ (Slave) หลาย ๆ ประเภท เช่น รีเลย์ป้องกัน, คอนโทรลยูนิต (CU: Control Unit) และ อะลาร์มยูนิต (Alarm Unit) ที่ใช้บัสเพื่อเชื่อมต่อกับตัวมาสเตอร์ (Master)

.

อย่างไรก็ตาม SPA-bus ยังสามารถถูกประยุกต์ใช้ในงานโอนย้ายข้อมูลระหว่างอุปกรณ์ในระบบไฟฟ้าโดยเฉพาะภายในสถานีย่อยไฟฟ้าของการไฟฟ้าและโรงงานอุตสาหกรรมขนาดใหญ่  

.

ข้อมูลทั่วไปของ SPA-bus
1. นิยามของบัสและโปรโตคอล
SPA-bus ใช้การสื่อสารแบบอนุกรมโดยส่งข้อมูลแบบอะซิงโครนัส (1 บิตเริ่ม, 7 บิตข้อมูล, พาริตี้เป็นแบบเลขคี่หรืออีเวนต์, 1 บิตหยุด) โดยทั่วไปจะส่งด้วยความเร็วที่ 9600 bps (แต่ในบางกรณีก็ส่งที่ 300, 1200, 2400 หรือ 4800 bps) 

.

เมสเสจ (Message) บนบัสจะประกอบด้วยตัวอักขระประเภท ASCII บัสสื่อสารสามารถสนับสนุนจำนวนมาสเตอร์เพียง 1 มาสเตอร์เท่านั้น แต่สามารถมีสเลฟจำนวนหลาย ๆ สเลฟ จำนวนขึ้นอยู่กับช่วงเวลาการตอบสนองที่ระบบต้องการ

.

โครงสร้างพื้นฐานของโปรโตคอลโดยปกติจะกำหนดไม่ให้ตัวสเลฟสามารถเป็นฝ่ายเริ่มส่งข้อมูลไปยังมาสเตอร์หรือสเลฟตัวอื่นได้ ตัวมาสเตอร์จะเฝ้าตรวจสอบข้อมูลในเมสเสจของสเลฟ และสามารถร้องขอข้อมูลที่ต้องการจากสเลฟได้ มาสเตอร์สามารถส่งข้อมูลใด ๆ ไปให้สเลฟก็ได้ การร้องขอของมาสเตอร์สามารถทำได้โดยใช้วิธีการโพลลิ่ง (Polling) หรือส่งคำสั่งร้องขอเฉพาะช่วงเวลาที่มาสเตอร์ต้องการ

.

มาสเตอร์ร้องขอข้อมูลจากสเลฟโดยผ่านเมสเสจประเภทอ่านและส่งเมสเสจหรือข้อมูลไปยังสเลฟโดยใช้เมสเสจประเภทการเขียน ยิ่งกว่านั้นมาสเตอร์สามารถส่งข้อมูลหรือร้องขอให้ทำงานบางอย่างไปยังสเลฟทุกตัวพร้อมกันโดยใช้เมสเสจประเภทบรอดคาสต์ (Broadcast) เช่น การเข้าจังหวะเวลา ในสถานะที่บัสสื่อสารไม่แอกตีฟหรือไม่มีการสื่อสาร ไม่ว่าจะบนสายสำหรับส่งหรือรับ ระดับลอจิกของสัญญาณจะอยู่ที่ลอจิก 1

.
2. คุณลักษณะของตัวสเลฟของ SPA-bus 

SPA-bus สนับสนุนการเชื่อมต่อสเลฟแบบมัลติดรอป (Multidrop) สเลฟสามารถมีหลายอินพุตและเอาต์พุต แต่ละอินพุตจะถูกเฝ้าตรวจสอบโดยการกำหนดช่วงของค่าและช่วงเวลาสแกน (Scan Time) การสแกนสัญญาณจะทำงานสอดคล้องกับสัญญาณนาฬิกาเวลาจริง (Real-time Clock) เพื่อทำการสแตมป์เวลา (Time Stamp) ณ เวลาที่เกิดเหตุการณ์    

.

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

.

รูปที่ 1 รูปแบบคอนฟิกกูเรชั่นของแชนแนล

.

ในรูปที่ 1 ตัวสเลฟมี 4 แชนแนล โดยมีการกำหนดอินพุต (I1, I2,) และเอาต์พุต (O1, O2) ให้แก่แต่ละแชนแนลจากรูปสเลฟมีอินพุตทั้งหมดสี่อินพุตโดยมีหนึ่งอินพุตกำหนดให้แชนแนล 1, หนึ่งอินพุตกำหนดให้แชนแนล 2 และสองอินพุตกำหนดให้แชนแนล 3 สเลฟยังมีเอาต์พุตทั้งหมดสามเอาต์พุต สองเอาต์พุตถูกใช้ร่วมกันทุก ๆ แชนแนลโดยการกำหนดให้แชนแนลหมายเลข 0    

.

ในขณะที่อีกหนึ่งเอาต์พุตถูกควบคุมโดยแชนแนล 3 ในแชนแนล 1 ถูกกำหนดให้มีค่าเซตติ้ง 3 ค่า (S1, S2 และ S3) ในขณะที่แชนแนล 2 และ 3 ถูกกำหนดให้มีค่าเซตติ้ง จำนวน 2 ค่า ในแชนแนล 0 ถูกกำหนดให้สร้างอีเวนต์ประเภท L และ T ดังจะกล่าวรายละเอียดต่อไป

.
ฟอร์แมตของเมสเสจ
1. ข้อมูลทั่วไป

ในทุก ๆ เมสเสจจะประกอบด้วยอักขระ ASCII ที่สามารถพิมพ์ได้ เมสเสจที่ถูกส่งโดยมาสเตอร์จะเริ่มที่อักขระ “>” ในขณะที่เมสเสจของสเลฟจะเริ่มต้นด้วยข้อความ “lf<” ตัวมาสเตอร์จะจบเมสเสจด้วยอักขระ “cr” (0DH) ในขณะที่สเลฟจบด้วยข้อความ “crlf” (0DH และ 0AH) 

.

ตัวสเลฟสามารถใช้อักขระ “&” เพื่อบ่งบอกว่าเมสเสจยังมีต่ออีกและจะต่อเนื่องเป็นบรรทัดใหม่บรรทัดถัดไป ความยาวสูงสุดของเมสเสจจะถูกเริ่มนับที่อักขระ “<” ถึงแม้เมสเสจของสเลฟจะเริ่มต้นด้วยข้อความ “lf<” (0DH และ 0AH) ก็ตามที

.

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

.
เมสเสจของสเลฟจะเป็นดังรูปต่อไปนี้

.

อีกรูปแบบเมสเสจของสเลฟนั้นคือมีการต่อเมสเสจ

.

โดยที่ความหมายแต่ละฟิลด์มีดังต่อไปนี้
n = หมายเลขสเลฟ
T= รหัสประเภทเมสเสจ
e= หมายเลขแชนแนล
e/e= แชนแนลแรก/แชนแนลสุดท้าย
x= รหัสประเภทข้อมูล
m= หมายเลขข้อมูล
m/m= ข้อมูลแรก/ข้อมูลสุดท้าย

.

ตัวอักขระคั่นคือ “:” ซึ่งจะใช้แยกเมสเสจส่วนเฮดเดอร์ (Header) จากส่วนข้อมูล (Data) และส่วนเช็คซัม (Checksum) ออกเป็นส่วน ๆ ตามลำดับ

.
ตัวอย่างที่ 1
ค่าเซตติ้งที่ 1 ของแชนแนล 1 ของ สเลฟ 2 สามารถถูกร้องขอด้วยมาสเตอร์โดยใช้เมสเสจดังต่อไปนี้
>2R1S1:XXcr
สเลฟจะตอบกลับด้วยเมสเสจดังต่อไปนี้
Id<2D:10.1/95:xx crlf
.

ตัวอย่างที่ 2
ค่าเซตติ้งที่ 1 และ 2 ของแชนแนล 1 ของ สเลฟ 2 สามารถถูกร้องขอด้วยมาสเตอร์โดยใช้เมสเสจดังต่อไปนี้
>2R1S1/2:XXcr
สเลฟจะตอบกลับด้วยเมสเสจดังต่อไปนี้
lf<2D:10.1/95:XXcrlf

.

ตัวอย่างที่ 3
ทุกค่าเซตติ้งของแชนแนล 0 ของสเลฟ 2 ถูกร้องของจากมาสเตอร์ใช้เมสเสจดังต่อไปนี้
>2RS:xxcr
สมมุติว่า มี 3 ค่าเซตติ้งที่อยู่ในแชนแนล 0 สเลฟจะตอบกลับด้วยข้อความดังต่อไปนี้
lf<2D:11/3/234.88:xxcrlf
บันทึกไว้ว่า
เมื่อสเลฟส่งข้อความโดยใช้จำนวนมากกว่าหนึ่งบรรทัดอักขระจบ lf และ cr ยังคงถูกส่งที่ท้ายบรรทัดไม่ใช่เริ่มที่ต้นบรรทัดใหม่

.

2. อักขระเริ่มและอักขระจบ
เมสเสจของมาสเตอร์จะเริ่มต้นด้วยอักขระ  “>” และจบด้วยอักขระ “cr” ส่วนเมสเสจของสเลฟจะเริ่มด้วยอักขระ “lf<” และจบด้วย “crlf” ทุก ๆ บรรทัดยกเว้นบรรทัดสุดท้ายอักขระจบจะตามหลังอักขระ “&” ยกเว้นบรรทัดสุดท้ายอักขระจบเหล่านี้จะตามหลังเช็คซัมและอักขระ “:”

.

จำไว้ว่า 
ซอฟต์แวร์ในตัวมาสเตอร์สามารถถูกพัฒนาโดยการตรวจสอบค่าแบบทริกเกอร์ (Trigger) นั้นคือเมื่อสเลฟตอบเมสเสจกลับมา มาสเตอร์สามารถเฝ้าตรวจสอบอักขระ “<” โดยที่ไม่ต้องสนใจอักขระ “lf” เพราะว่า “lf” ไม่ได้นำมาคำนวณในค่าของเช็คซัม

.

3. เฮดเดอร์
ตัวเลขที่ใช้ต่อไปนี้จะอยู่ในรูปฐาน 10 หมายเลขสเลฟและแชนแนลมีค่าสูงสุดในขอบเขตของเลขสามหลัก ส่วนหมายเลขข้อมูลสูงสุดจะใช้เลขหกหลัก รหัสตัวเดียวถูกใช้สำหรับการกำหนดประเภทเมสเสจและกลุ่มของข้อมูลข่าวสารตามลำดับ 
หมายเลขของสเลฟจะถูกแยกออกจากหมายเลขแชนแนลโดยตัวรหัสของประเภทเมสเสจ หมายเลขแชนแนลจะถูกแยกออกจากข้อมูลโดยรหัสชนิดข้อมูล 

.

* หมายเลขสเลฟ
หมายเลขสเลฟถูกกำหนดให้อยู่ในรูปฐาน 10 ในช่วง 1-999 หมายเลขที่ใช้ไม่ได้คือหมายเลข 900 ซึ่งถูกจองสำหรับการทำบรอดคาสต์ (Broadcast) หมายเลขนี้ มักถูกใช้เพื่อการส่งเวลาแต่ก็ยังสามารถใช้ในกรณีอื่น ๆ ได้เช่นกันตามการประยุกต์ใช้
จำไว้ว่าการส่งเมสเสจใน SPA-bus ต้องมีหมายเลขของสเลฟเสมอ
* ประเภทเมสเสจ
อักขระ ASCII R,W,D,A หรือ N ใช้บ่งบอกประเภทของเมสเสจ (Read:อ่าน, Write:เขียน, Data:ข้อมูล, Ack: ตอบรับ, Nack:ปฎิเสธ)

.
* หมายเลขแชนแนล (Channel Number)

หมายเลขแชนแนลถูกใช้อยู่ในรูปฐาน 10 ในช่วง 0-999 มีเพียงหนึ่งแชนแนลเท่านั้นในเวลาใดเวลาหนึ่งที่สามารถถูกร้องขอข้อมูล ถ้าข้อมูลที่เกี่ยวข้องกับหลายแชนแนลถูกร้องขอ ข้อมูลข่าวสารจะเกี่ยวข้องกับสตริงของหลายแชนแนลสามารถถูกร้องขอโดยการระบุหมายเลขของแชนแนลแรกและสุดท้ายในเมสเสจร้องขอ

.

ข้อมูลที่ใช้ร่วมกันกับทุกแชนแนลนั้นจะถูกจัดให้อยู่แชนแนล 0 การร้องขอข้อมูลไม่จำเป็นต้องระบุหมายเลขแชนแนลได้ เช่นเดียวกัน ถ้าสเลฟไม่มีแชนแนลอื่นมีแต่แชนแนล 0 หมายเลขก็ไม่จำเป็นต้องระบุ

.

ถ้ามีจำนวนหลาย ๆ แชนแนลยู่ภายในตัวสเลฟ แชนแนลจะถูกกำหนดหมายเลขเริ่มที่หมายเลข 1 ส่วนแชนแนล 0 จะถูกจับจองสำหรับการร้องขอที่เกี่ยวกับข้อมูลข่าวสารที่ใช้ร่วมกันในทุก ๆ แชนแนลของสเลฟ

.
* ประเภทแคตากอรี่ของข้อมูล (Data Category)
อักขระ  ASCII I,O,S,V,M,C,F,T,D,L,B หรือ A มีไว้สำหรับนิยามประเภทข้อมูลในทางตรรกะ
.

* หมายเลขข้อมูล (Data Number)
หมายเลขข้อมูลจะถูกกำหนดในรูปเลขฐาน 10 เริ่มตั้งแต่ 1-999999  ข้อมูลแต่ละไอเท็ม (Item) ในแต่ละแคตากอรี่ของสเลฟจะถูกกำหนดหมายเลข สตริงข้อมูล (String) ของหลาย ๆ ไอเท็มข้อมูลสามารถถูกกำหนดที่อยู่โดยการกำหนดตำแหน่งไอเท็มแรกและสุดท้ายของสตริง ถ้าหมายเลขสุดท้ายไม่ได้ถูกระบุ         

.

แล้วการร้องขอนั้นจะถูกตีความโดยปริยายว่าต้องการทุกข้อมูลทั้งหมดของแคตากอรี่นั้น (ไม่รวมไอเท็มข้อมูลที่ไม่ได้เรียงเป็นสตริง ดังนั้นถ้าสเลฟมีไอเท็ม S1, S2, S3, S4 และหมายเลขไอเท็มเฉพาะเช่น S10 และ S40 การร้องขอ >nnnRS:CCcr จะถูกตอบกลับด้วยข้อมูลเพียง S1-S4 เท่านั้น

.

4. เนื้อหาส่วนข้อมูล (Data Part Content)
ส่วนข้อมูลจะรวมอยู่ในไอเท็มข้อมูลของสเลฟโดยแบ่งแยกด้วยอักขระ “/” ถ้ามีข้อมูลจากหลายแชนแนล ข้อมูลจากแชนแนลที่มีหมายเลขต่ำสุดจะถูกส่งก่อนและตามด้วยแชนแนลถัดไปเรียงตามลำดับหมายเลข ที่สำคัญข้อมูลสุดท้ายจะตามด้วยอักขระ “:” ข้อมูลที่ถูกจัดส่งอาจจะเป็นตัวเลขหรือข้อความก็ได้

.

ในบางเมสเสจอาจจะไม่มีข้อมูลในส่วนข้อมูล ดังนั้นส่วนเช็คซัมจะอยู่ถัดไปตามหลัง “:” หลังจากส่วนของเฮดเดอร์
ส่วนของข้อมูลของเมสเสจอาจจะว่างในบางกรณี ดังนั้นโคลอนตามส่วนข้อมูลถัดไปและโคลอนของส่วนข้อมูลก่อนหน้าจะติดกัน  (“::”)
บันทึกไว้ว่า
ในส่วนไอเท็มข้อมูลจะต้องไม่มีอักขระพิเศษที่ SPA-bus ขอจองใช้ เช่น cr (0DH), lf (0AH), “>”, “<”
,“:” , “/” หรือ “&” 

.

5. เช็คซัมและพาริตี้บิต (Checksum & Parity Bit)
ความถูกต้องของเมสเสจจะถูกตรวจสอบได้โดยการใช้ข้อมูลจากส่วนเช็คซัมและพาริตี้บิต เช็คซัมถูกส่งไปด้วยอักขระ ASCII จำนวน 2 ตัว ที่เป็นตัวแทนค่าเลขฐานสิบหกโดยค่าดังกล่าวได้มาจากการทำ XOR ข้อมูลแต่ไบต์ภายในเมสเสจไม่รวมตัวเช็คซัมเองรวมทั้งอักขระ “cr”, “&” ผู้ส่งเมสเสจอาจยกเลิกการใช้เช็คซัมในบางกรณี โดยส่งอักขระ “XX” ลงแทนในส่วนเช็คซัม

.

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

.

ประเภทของเมสเสจและ การใช้งาน
1. ภาพรวมของเมสเสจ
ประเภทเมสเสจที่มาสเตอร์ส่งไปยังสเลฟ
- R (Read: อ่าน) ข้อมูลที่อ่านจากสเลฟ
- W (Write: เขียน)  ข้อมูลที่เขียนไปยังสเลฟ

.

ประเภทเมสเสจที่สเลฟส่งไปให้มาสเตอร์
- D (Data: ข้อมูล) เมสเสจข้อมูล
- N (Nack: ปฏิเสธ) การตอบรับเชิงลบ
- A (Acknowledge: ตอบรับ) การตอบรับเชิงบวก

.

2. การสื่อสารระหว่างมาสเตอร์และสเลฟ
มาสเตอร์จะเริ่มการติดต่อสื่อสารโดยการส่งเมสเสจลงบนบัส สเลฟจะรับรู้โดยการตรวจสอบหมายเลขสเลฟว่าเป็นของมันหรือไม่ แล้วทำการตอบกลับโดยการส่งเมสเสจตามที่มาสเตอร์ต้องการ
สเลฟจะไม่ตอบสนองถ้าเมสเสจไม่ได้เริ่มด้วยอักขระ “>” และตามด้วยหมายเลขสเลฟของตัวมันรวมทั้งเมสเสจต้องจบด้วยอักขระ “cr”

.

ในกรณีที่พาริตี้หรือเช็คซัมผิดพลาด สเลฟจะไม่ทำการตอบสนองใด ๆ หรือตอบสนองด้วยเมสเสจประเภท N พร้อมด้วยรหัสความผิดพลาดหมายเลข 0 ถ้าสเลฟไม่ตอบสนองใด ๆ หรือตอบกลับด้วยเมสเสจประเภท N รหัสความผิดพลาด 0 มาสเตอร์จะพยายามส่งอีกครั้งจนกว่าสเลฟจะตอบกลับด้วยเมสเสจที่มันต้องการ หรือ ทำจนกว่าจะครบกำหนดจำนวนครั้งที่ตั้งไว้และตีความว่าสเลฟตัวนั้นมีปัญหา

.

เมสเสจที่ถูกส่งโดยสเลฟจะไม่ต้องถูกตอบกลับโดยมาสเตอร์ ถ้ามาสเตอร์ตรวจพบข้อผิดพลาดในเมสเสจที่สเลฟส่งมา มาสเตอร์จะทำการร้องขอหรือส่งใหม่

.

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

.

* ข้อมูลอ่านจากสเลฟ
ข้อมูลอ่านจากสเลฟ   มาสเตอร์   สเลฟ
1.  มาสเตอร์ส่งเมสเสจประเภทอ่าน  R ----------------------------------->  
2.  สเลฟตอบกลับด้วยเมสเสจประเภทข้อมูล <----------------------------------- D

.
ตัวอย่าง
เมื่อมาสเตอร์ต้องการอ่านค่าเซตติ้ง 3 ของ แชนแนล 1 ของสเลฟ 14 เมสเสจจะถูกส่งดังต่อไปนี้ :
มาสเตอร์ร้องขอ : >14R1S3:XXcr
สเลฟตอบกลับ : lf<14D:10.1:XXcrlf
.
* ข้อมูลเขียนไปยังสเลฟ
ข้อมูลเขียนตรงไปยังสเลฟ                มาสเตอร์                               สเลฟ
1. มาสเตอร์ส่งข้อมูลไปยังสเลฟ       W----------------------------------->
2. สเลฟตอบรับข้อมูล         <-- -------------------------------- A
.

ตัวอย่าง
มาสเตอร์ต้องการเซตค่าเอาต์พุต 5 ของสเลฟ 14 : >14W05:1XXcr
สเลฟเซตค่าเอาต์พุตและตอบรับ: lf<14A:XXlf
การเขียนพร้อมกันให้ทุกสเลฟโดยใช้หมายเลขบรอดคาสต์
                                                                             มาสเตอร์                              สเลฟ
1. มาสเตอร์ส่งข้อมูลให้สเลฟทุกตัว                 W--------------------------------->
(ต้องไม่มีการตอบรับจากสเลฟ)

.

ตัวอย่าง
มาสเตอร์ส่งเมสเสจเวลา: >900WT:37.271:XXcr
มาสเตอร์ส่งข้อมูลไปยังสเลฟทุกตัว : >900WV251:1:XXcr
บันทึกไว้ว่า
การใช้เมสเสจบรอดคาสต์ (สำหรับจุดประสงค์อื่นที่ไม่ใช่การส่งเวลา) ควรที่จะหลีกเลี่ยงเพราะว่าความหมายของตัวแปร (R), ค่าเซตติ้ง (S) และเอาต์พุต (O) อาจมีความหมายแตกต่างในแต่ละตัวสเลฟที่ชนิดไม่เหมือนกัน

.

3. เนื้อหาของแต่ละเมสเสจ
* เมสเสจประเภท R (Read)
 เมสเสจประเภท R จะไม่มีส่วนข้อมูล เมสเสจจะมีรูปแบบดังต่อไปนี้ :
 >nRe/eXm/m:CCcr
* เมสเสจประเภท D (Data)
 เมสเสจประเภท D จะมีส่วนของข้อมูล แต่ในส่วนเฮดเดอร์จะมีเพียงหมายเลขสเลฟและรหัสประเภทเมสเสจ เมสเสจจะมีรูปแบบดังต่อไปนี้
 lf<nD:xxxx/xxxx/xx:CCcrlf

.

เมสเสจที่ไม่มีข้อมูลจะมีรูปแบบดังต่อไปนี้
lf<nD::CCcrlf
โดยทั่วไปแล้ว มาสเตอร์จะต้องพยายามจัดการการร้องขอข้อมูลจากสเลฟให้ปริมาณที่เพียงพอไม่เกินจำนวน 255 ไบต์ แต่ถ้าข้อมูลที่ร้องขอมีปริมาณมากและไม่สามารถอยู่ภายในหนึ่งเมสเสจ สเลฟควรให้เมสเสจประเภท N โดยรหัสความผิดพลาดผิดพลาดเท่ากับ 3

.

* เมสเสจประเภท W (Write)
 รูปแบบของเมสเสจมีดังต่อไปนี้
 >nWe/eXm/m:xxxx/xxxx/xx:CCcr
* เมสเสจประเภท A (Ack)
รูปแบบของเมสเสจไม่มีส่วนของข้อมูลและในส่วนเฮดเดอร์มีเพียงหมายเลขสเลฟและประเภทเมสเสจ
lf<nA:CCcrlf
* เมสเสจประเภท N (Nack)
เมสเสจประเภท N มีรูปแบบดังต่อไปนี้
lf<nN:x:CCcrlf

.

ในส่วนข้อมูลของเมสเสจจะใช้แค่เพียงหนึ่งหลักเป็นตัวบ่งชี้สาเหตุการตอบรับเชิงลบ (รหัสความผิดพลาด)
รหัสความผิดพลาดที่อยู่ในประเภท N มีดังต่อไปนี้
0 = ผิดพลาดภายในเช็คซัมหรือพาริตี้
1 = สเลฟไม่ว่าง
(สเลฟอาจตอบเมสเสจประเภท N ให้มาสเตอร์ที่ส่งเมสเสจประเภท R เมื่อเมสเสจที่มาสเตอร์ต้องการมีขนาดใหญ่ใช้เวลาสร้าง ในขณะที่สเลฟยังคงจัดการกับงานส่วนอื่น ๆ อยู่)

.

2=เกิดโอเวอร์โฟลว (Overflow) ในสเลฟอินพุตบัฟเฟอร์ (Input Buffer)
3=เมสเสจจากมาสเตอร์มีความซับซ้อนเกินความสามารถสเลฟ (สเลฟอาจตอบกลับด้วยเมสเสจประเภท N เมื่อส่วนโปรแกรมสื่อสารของสเลฟนั้นเป็นแบบพื้นฐาน)

.

4= สงวนไว้สำหรับการสื่อสารขั้นสูง
5= ไวยากรณ์ของเมสเสจผิดพลาด
(ประเภทเมสเสจไม่ถูกต้องหรือไม่ถูกสนับสนุน, ประเภทข้อมูลไม่ถูกสนับสนุน, มีข้อผิดพลาดในหมายเลขแชนแนล, หมายเลขไอเท็มข้อมูล และไวยากรณ์ผิดพลาดในส่วนของข้อมูล)

.

6= สเลฟไม่มีทุกข้อมูลที่ร้องขอ
(สเลฟไม่สามารถจัดส่งข้อมูลที่ร้องขอทั้งหมดหรือบางส่วน)
7= ตำแหน่งข้อมูลที่ระบุไม่สามารถเขียนหรืออ่าน
(เนื่องจากมีการบล็อคไว้ไม่ว่าจะเป็นแบบถาวรหรือชั่วคราว)

.

เมสเสจประเภท N จะมาพร้อมรหัสความผิดพลาดหมายเลข 7 ที่สามารถใช้ในการตอบกลับเมสเสจประเภท W ที่ต้องการเขียนข้อมูลแต่ตำแหน่งที่เขียนไม่สามารถเขียนค่าใหม่ได้หรือไม่มีอยู่จริง

.

เมสเสจประเภท N ด้วยรหัสความผิดพลาดหมายเลข 7 สามารถใช้ตอบเมสเสจประเภท R ถ้าตำแหน่งข้อมูลต้องการอ่านมีอยู่และสามารถเขียนได้แต่ไม่สามารถถูกอ่านได้

.

8 = ข้อมูลในเมสเสจประเภท W ไม่ถูกต้อง
9 = การตอบรับเชิงลบอื่น ๆ ที่ไม่ได้ถูกนิยาม
(ตัวอย่างความผิดพลาดภายในโปรแกรมการสื่อสาร)

.
4. เมสเสจนาฬิกา (Clock Message)
* นาฬิการะดับวินาที (Second Clock)
เพื่อการเข้าจังหวะเวลาของนาฬิกาเวลาจริงของสเลฟด้วยนาฬิกาของมาสเตอร์ มาสเตอร์ต้องส่งเวลาโดยใช้เมสเสจประเภท W โดยอาจจะใช้หมายเลขบรอดคาสต์
รูปแบบเมสเสจนาฬิกา : >900WT:xx.xxx:CCcr
เพื่อที่ชดเชยความล่าช้าในการสื่อสาร มาสเตอร์จะไม่ส่งเวลา ณ ตำแหน่งการส่งข้อมูลอักขระตัวแรก แต่จะคำนวณหาเวลา ณ ตำแหน่งที่อักขระตัวสุดท้ายที่ถูกรับโดยตัวสเลฟ
.
* วันที่และเวลา
เพื่อที่จะเข้าจังหวะเวลากับสเลฟทั้งข้อมูลวันและเวลา มาสเตอร์อาจจะส่งเมสเสจบรอดคาสต์ดังรูปแบบต่อไปนี้
>900WD:yy-mo-dd hh. mm ; SS.SSS:CCcr
เมสเสจนี้มักถูกส่งทุก ๆ 10-60 วินาที แต่ก็ขึ้นกับผู้ติดตั้งระบบ
 .
การถ่ายโอนข้อมูลโดยเมสเสจ
1. แคตากอรี่ข้อมูล

ข้อมูลที่ส่งโดยแต่ละสเลฟจะถูกจัดลงในแคตากอรี่ใดแคตากอรี่หนึ่ง ดังต่อไปนี้
 
แคตากอรี่ข้อมูล   รหัส (ในเมสเสจ)
ข้อมูลอินพุต    I
ข้อมูลเอาต์พุต    O
ค่าเซตติ้ง     S
ตัวแปรภายใน    V
ข้อมูลในหน่วยความจำ   M
สถานะสเลฟ (สภาพ)   C
ตัวบ่งชี้ตัวสเลฟ    F
เวลา     T
วันและเวลา    D
อีเวนต์สุดท้าย     L
อีเวนต์สุดท้ายจากบัฟเฟอร์สำรอง  B
สัญญาณเตือน A
 .

ทุกสเลฟไม่ได้สนับสนุนข้อมูลทุกแคตากอรี่ ขึ้นอยู่กับประเภทของสเลฟ ข้อมูลในแคตากอรี่ C, F, T, D, L, B และ A จะอยู่เฉพาะบนแชนแนล 0 เท่านั้น ส่วนแคตากอรี่ I, O, S, V และ M จะอยู่ได้ทั้งแชนแนล 0 และแชนแนลหมายเลขอื่น ๆ 

 .

2. ข้อมูลสามารถอยู่ในหลาย ๆ แคตากอรี่
* แคตากอรี่ I, O, S, V และ M
ข้อมูลอินพุต I:
สามารถเป็นได้ทั้งค่าอะนาลอกอินพุตและดิจิตอลอินพุต
ข้อมูลเอาต์พุต O:
สามารถเป็นได้ทั้งค่าอะนาลอกเอาต์พุตและดิจิตอลเอาต์พุต
ค่าเซตติ้ง S:
ค่าเซตติ้งโดยปกติคือข้อมูลพารามิเตอร์สำหรับการกำหนดการทำงานของตัวสเลฟ

 .

ตัวแปรภายใน V:
ตัวแปรภายในจะประกอบด้วยข้อมูลดังต่อไปนี้:
- ข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการตรวจสอบเช่น อีเวนต์
- ข้อมูลเพิ่มเติมเกี่ยวกับตัวสเลฟและฟังก์ชั่นของสเลฟ
- ข้อมูลการควบคุมจัดการฟังก์ชั่นของสเลฟในขณะที่กำลังทำงาน
- โปรแกรมบางฟังก์ชั่นบนตัวสเลฟ

 .

ข้อมูลในหน่วยความจำ M:
ภายในหน่วยความจำจะจัดเก็บค่าวัดหรือค่าสถานะ ประเภทข้อมูลในหน่วยความจำโดยปกติจะมีในเฉพาะสเลฟที่มีฟังก์ชั่นดาต้าล็อกเกอร์ (Datalogger) ยิ่งกว่านั้น ข้อมูลประเภท M สามารถถูกใช้สำหรับถ่ายโอนข้อมูลขั้นสูง เช่น ข้อมูลการโปรแกรมมิ่งหรือเฟิร์มแวร์ (Firmware)

 .

ฟอร์แมตสำหรับการแสดงข้อมูลของกลุ่ม I, O, S และ V:
ข้อมูลทั่วไปโดยส่วนใหญ่ถูกออกแบบให้ใช้อย่างง่าย (หมายเลขข้อมูล 1-100) ในรูปเลขฐาน 10 และถูกส่งในรูปอักขระ ASCII
ข้อมูลสำหรับงานเฉพาะ (หมายเลขข้อมูล 10–999999) สามารถถูกจัดในรูปแบบพิเศษ รายละเอียดอาจจะหาได้ตามเอกสารที่มากับอุปกรณ์นั้น ๆ

 .

ข้อมูลตัวเลขจะเป็นเลขฐาน 10 และจุดทศนิยม รวมทั้งเครื่องหมาย “+” หรือ “-” ความยาวของจำนวนเต็มจะมีตั้งแต่ 1-10 หลัก ส่วนของจุดทศนิยมจะสามารถมีความยาวตั้งแต่ 0-10 หลักเช่นกัน

 .
กฎทั่วไปสำหรับการส่งข้อมูลตัวเลขไปยังสเลฟ
- อย่างน้อยต้องมีหนึ่งหลักในส่วนจำนวนเต็มเสมอ
- เอาเลขศูนย์ที่ไม่มีนัยสำคัญออกจากส่วนจำนวนเต็ม
- เอาเลขศูนย์ที่ไม่มีนัยสำคัญออกจากส่วนทศนิยม
- เอาจุดทศนิยมออกถ้ามันไม่มีนัยสำคัญ
- ถ้ามีจุดทศนิยม จุดนั้นต้องไม่เป็นอักขระแรกหรืออักขระสุดท้ายของตัวเลข
 .
ตัวอย่าง
มาสเตอร์ไม่ควรส่งตัวเลขในรูปแบบดังต่อไปนี้: 00120, 00.5, .6, 7., 8.00
มาสเตอร์ควรส่งตัวเลขแบบดังต่อไปนี้ : 120, 0.5, 0.6, 7, 8 
 .

บันทึกไว้ว่า
สเลฟควรมีความสามารถในลดรูปค่าต่าง ๆ ที่มันรับจากมาสเตอร์ได้ ถ้าสเลฟไม่สามารถจัดการกับค่าที่มันรับได้ สเลฟควรจะนำค่านั้นทิ้งไป และตอบกลับด้วยเมสเสจประเภท N รหัสความผิดพลาดหมายเลข 8

 .

ถ้าจำนวนของเลขศูนย์ที่นำหน้า มีความนัยสำคัญต่อสเลฟ (เช่น จำนวนของเลขศูนย์บ่งบอกความละเอียดของค่าเซตติ้ง) มันต้องมีคู่มือเอกสารกำกับในแต่ละประเภทสเลฟ การจัดการปัญหาในสถานการณ์แบบนี้ มาสเตอร์ควรสามารถส่งคำสั่งระบุจำนวนเลขศูนย์นำหน้าที่ต้องการให้สเลฟรับรู้ก่อนหน้า

 .

รูปแบบการแสดงข้อมูลของแคตากอรี่ M:
ข้อมูลแคตากอรี่ M โดยปกติจะเป็นรูปแบบสตริง ตัวอย่างเช่น ข้อมูลอาจจะเป็นตัวเลขหรือตัวอักขระ หรือ อักขระ ASCII อื่น ๆ ทุกตัว (20H-7EH) ยกเว้น อักขระที่ SPA-bus จองไว้ 

 .

* ข้อมูลประเภทแคตากอรี่ F, T, D และC
ข้อมูลบ่งชี้สเลฟ (Slave Identification Data) F:
ประเภทของสเลฟจะถูกระบุโดยรหัสประจำตัว (ความยาวสูงสุด 10 อักขระ) โดยปกติหมายเลข ID ของสเลฟจะเป็นหมายเลขจากกระบวนการผลิต 

 .
เวลา (Time) T:
เวลาจะถูกส่งในเมสเสจโดยใช้ฟอร์แมตดังต่อไปนี้ 

 .

วันและเวลา (Date and Time) D:
วันและเวลาจะถูกส่งในเมสเสจโดยใช้ฟอร์แมตดังต่อไปนี้

 .
สถานะสเลฟ (Slave Status) C:

สถานะสเลฟโดยปกติจะใช้สองบิตในการแทนค่าสถานะ ภายในเมสเสจค่าที่จะเป็นได้คือ 0, 1 ,2 หรือ 3
สถานะบิตที่ 0: สเลฟเกิดการรีเซตหรือเหตุการณ์อื่น ๆ ที่อาจเป็นสาเหตุทำให้ข้อมูลอีเวนต์สูญหาย
เมื่อบิตนี้ถูกเซต (C=1หรือ C=3) สเลฟจะส่งข้อมูลสถานะเสมอภายในเมสเสจตอบการร้องขออีเวนต์ดังเช่น xx.xxx E50 จนกว่าบิตนี้จะถูกเคลียร์ มาสเตอร์ต้องเคลียร์บิตดังกล่าวโดยการส่งเมสเสจ >nWC:0:CCcr

 .

สถานะบิตที่ 1: บ่งบอกว่า อีเวนต์บัฟเวอร์เกิดการโอเวอร์โฟลว (Event Buffer Overflow) เมื่อบิตนี้ถูกเซต (C=2 หรือ C=3) สเลฟจะส่งข้อมูลสถานะในเมสเสจตอบการร้องขออีเวนต์เสมอ ดังเช่น xx.xxx E51 จนกระทั่งบิตนี้ถูกเคลียร์ มาสเตอร์ต้องเคลียร์บิตนี้ด้วยการส่งเมสเสจ >nWC:0:CCcr สืบเนื่องจากโอเวอร์โฟลวโดยปกติแล้วสเลฟจะหยุดการเพิ่มอีเวนต์ลงในบัฟเฟอร์ และบิตต้องถูกเคลียร์เพื่อให้บัฟเฟอร์รีเซตกลับมาทำงานในสถานะปกติ

 .

* ข้อมูลแคตากอรี่ L และ B
อีเวนต์สุดท้าย (Last Event) L: 
ข้อมูลแคตากอรี่ L จะประกอบอีเวนต์ในบัฟเฟอร์หลังจากการร้องขอครั้งล่าสุด
สเลฟจะส่งอีเวนต์ล่าสุดที่อยู่ในบัฟเฟอร์โดยเริ่มจากอีเวนต์ที่มีอายุมากที่สุด ถ้าอีเวนต์ล่าสุดจำนวนทั้งหมดไม่สามารถจัดลงภายในหนึ่งเมสเสจ อีเวนต์ที่เหลือจะไม่ถูกส่งจนกว่าจะมีการร้องขอครั้งต่อไป

 .

อีเวนต์ล่าสุดจากบัฟเฟอร์สำรอง (การร้องขอซ้ำ) B:
ข้อมูลแคตากอรี่ B จะให้ข้อมูลเหมือนข้อมูลแคตากอรี่ L
โดยทั่วไป มาสเตอร์ร้องขอสเลฟสำหรับอีเวนต์ล่าสุดโดยการกำหนดข้อมูลแคตากอรี่ L อย่างไรก็ตามถ้าข้อมูลตอบกลับของสเลฟเกิดผิดพลาด มาสเตอร์จะไม่สามารถขอข้อมูลประเภท L ซ้ำอีกครั้ง แต่มาสเตอร์ต้องร้องขอข้อมูลจากแคตากอรี่ B แทน

 .
* รูปแบบของอีเวนต์มาร์กกิ้ง (Event Marking) 
อีเวนต์มาร์คกิ้งจะมีรูปแบบดังต่อไปนี้
<time> <space> <channel number> <letter E> <event number>
โดยที่
<time> = หลักสิบของวินาที, วินาที, 1/10 วินาที, 1/100 วินาที และ 1/1000 วินาที
<space> = ตัวคั่น
<Channel number> = หมายเลขแชนแนลที่เกี่ยวข้องกับอีเวนต์ ความยาวของแชนแนลจะมีตั้งแต่ 0-3 หลัก ถ้าหมายเลขแชนแนลเท่ากับ 0 มันสามารถถูกเพิกเฉยไม่ต้องระบุได้
<letter E> = ตัวคั่น
<event number> = ความยาวของหมายเลขอีเวนต์อยู่ที่ 1 หรือ 2 หลัก หมายเลขจะอยู่ในช่วง 0-63
ตัวอย่าง
ถ้าแชนแนลสำหรับอะลาร์มของอะนาลอก 23 ถูกกำหนดด้วยขอบเขตลิมิตจำนวน 2 ค่า อีเวนต์ของแชนแนล 5 จะถูกเข้ารหัส ดังตัวอย่างต่อไปนี้
 .

รหัส  5E1 มีความหมายว่า แชนแนล 5 สัญญาณต่ำกว่าลิมิตที่ 1
รหัส  5E2 มีความหมายว่า แชนแนล 5 สัญญาณสูงกว่าลิมิตที่ 1
รหัส  5E3 มีความหมายว่า แชนแนล 5 สัญญาณต่ำกว่าลิมิตที่ 2
รหัส  5E4 มีความหมายว่า แชนแนล 5 สัญญาณสูงกว่าลิมิตที่ 2

 .

ตัวอย่าง อีเวนต์ของแชนแนล 5 ที่เวลา 10.236 วินาที จะมาด้วยรหัสอีเวนต์ E2 และอีเวนต์อีกตัวของแชนแนลเดียวกันที่เวลา 11.555 วินาที มาด้วยรหัสอีเวนต์ E4 จะถูกจัดให้อยู่ในเมสเสจประเภท D ดังต่อไปนี้:
lf <23D:10.236 5E2/11.555 5E4:CCcrlf>
เมื่ออีเวนต์ถูกร้องขอจากสเลฟและอีเวนต์บัฟเฟอร์ของสเลฟว่างไม่มีอีเวนต์ สเลฟต้องตอบสนองด้วยเมสเสจว่าง ดังต่อไปนี้
ตัวอย่าง: lf<23D::CCcrlf

 .

* อีเวนต์อะนาลอก (Analog Event)
มันเป็นไปได้ที่ส่งค่าอะนาลอกไปพร้อมกับอีเวนต์ ในกรณีนี้อีเวนต์มาร์กกิ้งจะมีรูปแบบฟอร์แมตดังต่อไปนี้ :
<time> <space> <ch.numb.> <letter Q> <event numb.> <space> <Value>
<Value> = ค่าอะนาลอกจะต้องเป็นไปตามกฎของ SPA-bus

 .

ตัวอย่าง: 10.234 5Q6 5.05
การจะใช้อีเวนต์ประเภทนี้ต้องถูกเลือกโดย พารามิเตอร์ (ประเภท V) พารามิเตอร์ที่เป็นค่าดีฟอลต์ จะมีค่าเท่ากับศูนย์ ที่ทำให้มันเป็นไปได้ที่จะติดตั้งสเลฟบนบัสที่มีมาสเตอร์ที่ไม่สนับสนุนค่าอีเวนต์อะนาลอก
ความหมายของแต่ละค่าอะนาลอกจะขึ้นอยู่กับประเภทอุปกรณ์ ค่าสามารถเป็นทั้ง ค่าวัดปกติ, ค่าฟอลต์หรือค่าหมายเลขของฟอลต์ของฟอลต์เร็กคอร์ดเดอร์

 .

* การลงหมายเลขของอีเวนต์ (Numbering of Events)
อีเวนต์จะถูกลงหมายเลขด้วยเลขจาก 0-63 การตีความหมายเลขอีเวนต์จะขึ้นอยู่กับประเภทของสเลฟ
อีเวนต์หมายเลข E50-E54 ของแชนแนล 0 ถูกจองไว้สำหรับจุดประสงค์พิเศษ

 .

E50: สเลฟรีเซตหรือฮาร์ดแวร์ หรือ โปรแกรมมีความผิดพลาด มีผลอาจทำให้อีเวนต์สูญหาย
E51: บัฟเฟอร์โอเวอร์โฟลวในตัวสเลฟ
E52: มีความผิดปกติชั่วขณะในการเชื่อมต่อของสเลฟ
E53: ไม่มีการเชื่อมต่อไปยังสเลฟ
E54: คอนเน็กชั่นถูกเชื่อมต่อใหม่

 .

บันทึกไว้ว่า
อีเวนต์ E50 และ E51 จะถูกรายงานในทุกการร้องขออีเวนต์จนกระทั้งบิตนั้นนั้นถูกเคลียร์
บันทึกไว้ว่า
อีเวนต์ E52, E53 และ E54 ถูกสร้างหรือพิจารณาโดยมาสเตอร์ของเครือข่าย

 .
* ข้อมูลแคตากอรี่ A (Data Category A) 

เมื่อสเลฟถูกร้องขอข้อมูลประเภท A สเลฟจะตอบสนองโดยการส่งอีเวนต์มาร์กกิ้งของอะลาร์มโดยไม่รวมข้อมูลเกี่ยวกับเวลา สเลฟจะตรวจสอบทุกสาเหตุที่ทำให้เกิดอะลาร์มและสร้างมาร์กกิ้งของอะลาร์มที่ถูกต้องบนพื้นฐานการตรวจสอบข้อมูลข่าวสาร 

 .
ผลต่อเนื่อง ถ้ายังคงอยู่อะลาร์มสถานะแอกตีฟ มันจะปรากฏในเมสเสจข้อมูลที่ตอบการร้องขอแคตากอรี่ A ดังที่แสดงต่อไปนี้:

lf <23D:5E2/5E4:CCcrlf
แอกตีฟอะลาร์มอาจถูกร้องขอจากทุกแชนแนลโดยใช้เมสเสจดังต่อไปนี้:
>nRA:CCcr  (n=หมายเลขของสเลฟ)
หรือจากแชนแนลเดียวจะใช้เมสเสจดังต่อไปนี้:
>nRcA:CCcr, (n=หมายเลขของสเลฟ, c= หมายเลขของแชนแนล)
เมื่อสเลฟถูกร้องขออะลาร์มและไม่มีอะลาร์มใดที่แอกตีฟ สเลฟจะตอบสนองด้วยเมสเสจว่างดังรูปแบบต่อไปนี้:
lf<nD::CCcrlf (n=หมายเลขของสเลฟ)

 .

ข้อมูลประเภท A สามารถถูกใช้เพื่อออกรายงานของอะลาร์มจากมาสเตอร์ หรือเพื่ออัพเดตรายงานของอะลาร์มในมาสเตอร์ อันที่จริงแล้วข้อมูลประเภทนี้มีประโยชน์สำหรับตัวสเลฟที่เป็นตัว Annunciator ส่วนสเลฟประเภทอื่น ๆ อาจจะให้หรือไม่ให้ข้อมูลประเภทนี้ก็ได้

สงวนลิขสิทธิ์ ตามพระราชบัญญัติลิขสิทธิ์ พ.ศ. 2539 www.thailandindustry.com
Copyright (C) 2009 www.thailandindustry.com All rights reserved.

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