อ่าน 3 นาที
โปรโตคอลควบคุมที่ง่ายมาก
โปรโตคอล ควบคุมที่ง่ายมาก ( VSCP ) [ 1 ] เป็นโปรโตคอลอัตโนมัติฟรีที่เหมาะสำหรับงานอัตโนมัติทุกประเภท โดยมุ่งเน้นที่ อาคาร หรือ บ้านอัตโนมัติ เป็นหลัก
โปรโตคอลควบคุมที่ง่ายมาก

โปรโตคอลควบคุมที่ง่ายมาก ( VSCP ) [ 1 ]เป็นโปรโตคอลอัตโนมัติฟรีที่เหมาะสำหรับงานอัตโนมัติทุกประเภท โดยมุ่งเน้นที่อาคารหรือบ้านอัตโนมัติเป็นหลัก
ข้อได้เปรียบหลักคือ โหนด VSCP แต่ละตัวสามารถทำงานได้อย่างอิสระโดยสมบูรณ์ โดยเป็นส่วนหนึ่งของเครือข่ายแบบกระจายศูนย์ที่ประกอบด้วยโหนดอื่นๆ
VSCP เป็นอิสระจากเลเยอร์ทางกายภาพ (เช่นCAN bus , Ethernet , RS-485 , RS-232 , MiWi ) ที่เชื่อมต่อโหนดแต่ละตัวเพื่อสร้างเครือข่ายบัสอัตโนมัติ บนบัสนี้อาจมีโหนดที่อ่านค่าสวิตช์ ควบคุมแสงสว่างม่านบังตาหน้าต่าง หรือจอแสดงผลข้อมูล ออกอากาศค่าการวัดทางกายภาพ (เช่นอุณหภูมิความสว่างการใช้พลังงาน ฯลฯ) ควบคุมมัลติมีเดีย สัญญาณกัน ขโมยหรือสัญญาณเตือนไฟไหม้ฯลฯ
โปรโตคอลระดับ 1 (Level I) มีส่วนย่อยที่ออกแบบมาโดยเฉพาะสำหรับบัส CANและไมโครคอนโทรลเลอร์ ที่มีทรัพยากรจำกัด ส่วนโปรโตคอลระดับ 2 (Level II) ออกแบบมาสำหรับอีเธอร์เน็ต (UDP, TCP และ Raw-Ethernetซึ่งเป็นอีเธอร์เน็ตแบบเฉพาะ) และเลเยอร์ทางกายภาพไร้สาย โปรโตคอลทั้งหมดใช้ฟิลด์ข้อความและโครงสร้างพื้นฐานเดียวกัน และสามารถเชื่อมต่อผ่านเกตเวย์ได้
เหตุการณ์
VSCP ทำงานโดยอาศัยเหตุการณ์ทุกครั้ง ที่เกิด เหตุการณ์ เหตุการณ์นั้นจะถูกส่งออกไปยังโหนดอื่นๆ ทุกโหนดในเครือข่าย แต่ละโหนดจะได้รับเหตุการณ์นั้นและจะตัดสินใจว่าจำเป็นต้องจัดการกับเหตุการณ์นั้นหรือไม่

ตัวอย่างที่แสดงในแผนภาพอธิบายถึงการกดปุ่ม ซึ่งจะทำให้โหนด 1 ส่งข้อความเหตุการณ์ไปยังบัสเพื่อแจ้งให้โหนดอื่นๆ ทราบว่าปุ่มถูกกด โหนด 2 ได้รับข้อความ แต่ตัดสินใจว่าปุ่มนี้ไม่ควรทำให้เกิดเหตุการณ์ใดๆ กับโหนด 2 โหนด 3 ได้รับข้อความและตัดสินใจว่าปุ่มนี้ควรทำให้หลอดไฟดวงที่ 2 สว่างขึ้น
เหตุการณ์ต่างๆสามารถเกิดขึ้นได้กับสิ่งต่างๆ มากมาย เช่น การกดปุ่ม การทำงานของเซ็นเซอร์ตรวจจับการเคลื่อนไหว หรือพระอาทิตย์ตกดิน นอกจากนี้ยังสามารถส่งเหตุการณ์เป็นระยะๆ ได้ เช่น การอ่านค่าอุณหภูมิทุกนาที VSCP ได้กำหนดเหตุการณ์ต่างๆ ที่อาจเกิดขึ้นไว้ล่วงหน้าแล้ว โดยเหตุการณ์เหล่านี้จะถูกกำหนดเป็นคลาสและประเภท การจัดการกับเหตุการณ์ที่ได้รับนั้นจะถูกกำหนดโดยเมทริกซ์การตัดสินใจหรือ DM ซึ่งจะอธิบายเพิ่มเติมในภายหลัง
ประเภทและคลาสของกิจกรรม
เหตุการณ์ต่างๆ จะถูกจัดระเบียบเป็นคลาส คลาสคือกลุ่มของเหตุการณ์ที่เกี่ยวข้องกัน เช่นมีคลาสสำหรับสัญญาณเตือน การวัดการควบคุมข้อมูลเป็นต้นปัจจุบัน VSCP กำหนดคลาสไว้ประมาณ 25 คลาส แต่ยังมีพื้นที่สำหรับคลาสเพิ่มเติมอีกมากมาย 1 แต่ละคลาสจะถูกแบ่งย่อยออกเป็นประเภทต่างๆประเภทจะระบุรายละเอียดของเหตุการณ์ภายในคลาสนั้นๆ ตัวอย่างเช่น เหตุการณ์ในคลาส20 (0x14) คือ เหตุการณ์ ข้อมูลในคลาสนี้จะมีประเภทย่อย1 (0x01) คือปุ่มซึ่งส่งสัญญาณว่าปุ่มถูกกด ในคลาสข้อมูลเดียวกันนี้ยังมีประเภทต่างๆ สำหรับส่งสัญญาณเปิดปิดต่ำกว่าขีดจำกัดเป็นต้น ในทำนองเดียวกัน ในคลาสการวัดก็จะมีประเภทต่างๆ สำหรับส่งสัญญาณอุณหภูมิ กระแสไฟฟ้า แรงดันไฟฟ้า เป็นต้น การกำหนดคลาสและประเภททั้งหมดเหล่านี้ทำให้โหนดต่างๆ สามารถสื่อสารกันได้ สำหรับรายการคลาสและประเภทที่กำหนดไว้ล่วงหน้าทั้งหมด โปรดตรวจสอบวิกิของ VSCP
โครงสร้างดาตาแกรมเหตุการณ์ VSCP
เหตุการณ์ที่ถูกส่งออกอากาศนั้นประกอบด้วยฟิลด์จำนวนหนึ่งรวมกันเป็นดาตาแกรม VSCP หนึ่งอัน วิธีการแมปฟิลด์เหล่านี้ลงบนเลเยอร์ทางกายภาพนั้นมีการระบุไว้สำหรับโปรโตคอลเลเยอร์ทางกายภาพหลายตัว เช่น CAN, Ethernet, TCP เป็นต้น สำหรับโปรโตคอลอื่นๆ ยังไม่ได้กำหนดไว้ แต่โดยทั่วไปแล้วการแมปฟิลด์เหล่านี้ลงบนโปรโตคอลเลเยอร์ทางกายภาพนั้นไม่ยากโปรโตคอล VSCP มี 2 ระดับ คือ ระดับที่ 1และระดับที่ 2ทั้งสองระดับนั้นโดยพื้นฐานแล้วเป็นโปรโตคอลเดียวกัน แต่แตกต่างกันที่ขนาดของฟิลด์ต่างๆ
ระดับ 1 ออกแบบมาเพื่อใช้งานบนโหนดที่มีทรัพยากรจำกัดกว่า และการกำหนดฟิลด์ต่างๆ นั้นค่อนข้างระมัดระวังมากขึ้น ที่จริงแล้ว ระดับ 1 เป็นส่วนย่อยของระดับ 2 และด้วยเกตเวย์ที่เหมาะสม เหตุการณ์ต่างๆ สามารถส่งผ่านระหว่างเครือข่ายระดับ 1 และระดับ 2 ได้
| ลำดับความสำคัญ | รหัสประจำตัวที่กำหนดไว้ตายตัว | ระดับ | พิมพ์ | รหัสผู้ส่ง | ขนาดข้อมูล | เพย์โหลด | ซีอาร์ซี |
|---|---|---|---|---|---|---|---|
| 3 บิต | 1 บิต | 9 บิต | 8 บิต | 8 บิต | 4 บิต | 0 ถึง 8 ไบต์ | 16 บิต |
Level II ออกแบบมาให้ใช้งานบนโหนดที่มีข้อจำกัดด้านทรัพยากรน้อย และสามารถรองรับขนาดข้อความขนาดใหญ่ได้อย่างง่ายดาย
| ลำดับความสำคัญ | รหัสประจำตัวที่กำหนดไว้ตายตัว | ระดับ | พิมพ์ | ผู้ส่ง GUID | ขนาดข้อมูล | เพย์โหลด | ซีอาร์ซี |
|---|---|---|---|---|---|---|---|
| 3 บิต | 1 บิต | 16 บิต | 16 บิต | 128 บิต | 16 บิต | 0 ถึง 487 ไบต์ | 16 บิต |
เมทริกซ์การตัดสินใจ

เมื่อโหนดได้รับเหตุการณ์ โหนดนั้นจำเป็นต้องพิจารณาว่าต้องดำเนินการตามงานใดหรือไม่ โดยทำได้โดยการประเมินเมทริกซ์การตัดสินใจหรือ DM เมทริกซ์ DM ประกอบด้วยเงื่อนไข IF ... THEN ... จำนวนมาก แต่ละเงื่อนไข IF/THEN เรียกว่าบรรทัดและหลายบรรทัดรวมกันเป็นเมทริกซ์การตัดสินใจ
คลาสและประเภทของข้อความขาเข้าจะถูกประเมินโดยสาย DM เสมอ การประเมินคลาสและประเภททำได้โดยการส่งคลาส/ประเภทผ่านมาสก์ก่อน แล้วจึงเปรียบเทียบกับตัวกรอง วิธีนี้อนุญาตให้หลายคลาส/ประเภททำให้เกิดเงื่อนไขที่ถูกต้องสำหรับสาย DM หนึ่งสาย เงื่อนไขอื่นๆ สำหรับสาย DM (SenderGUID, Zone, Subzone) จะถูกประเมินเพิ่มเติม หากสาย DM ถูกต้องการกระทำ (ACTION ) จะ ถูกดำเนินการ พร้อมกับการกระทำนั้นจะมีพารามิเตอร์การกระทำตัวอย่างการกระทำคือ: เปิดรีเลย์ 6โดยที่6คือพารามิเตอร์การกระทำ การกระทำใดบ้างที่เป็นไปได้สำหรับโหนดรับนั้นขึ้นอยู่กับการออกแบบของโหนดเอง นักพัฒนาเฟิร์มแวร์มีหน้าที่กำหนดว่าการกระทำใดบ้างที่สามารถดำเนินการได้ จากนั้นจึงบันทึกการกระทำที่เป็นไปได้ในไฟล์ MDF (ดูเพิ่มเติมในภายหลัง) ซอฟต์แวร์การกำหนดค่าจะทราบวิธีการเลือกการกระทำนี้ DM สามารถแก้ไขได้โดยการตั้งค่ารีจิสเตอร์การกำหนดค่าโหนดที่เหมาะสม วิธีที่สะดวกในการทำเช่นนี้คือการใช้ซอฟต์แวร์การกำหนดค่า VSCPWorks
ข้อมูลเพย์โหลด
การส่งเหตุการณ์อาจมีข้อมูลแนบไปด้วย เนื้อหาและการจัดระเบียบของข้อมูลแนบนั้นขึ้นอยู่กับคลาสและประเภทของเหตุการณ์ ตัวอย่างเช่น เหตุการณ์คลาส10 (การวัด) และประเภท6 (อุณหภูมิ) จะส่งข้อมูลอุณหภูมิ (โดยมีการเข้ารหัสกำหนดโดยไบต์ที่ 0, องศา หรือเซลเซียส) ในข้อมูลแนบ เหตุการณ์ ปุ่มกดจะส่งข้อมูลเกี่ยวกับปุ่มและโซน/โซนย่อยของปุ่มในข้อมูลแนบ สำหรับแต่ละคลาส/ประเภท รูปแบบข้อมูลจะถูกกำหนดไว้ในข้อกำหนด โปรดดูรายละเอียดเพิ่มเติมในวิกิ
เขต/เขตย่อย
อีเวนต์บางอีเวนต์ (ค่อนข้างเยอะ) จะมีโซน ฟิลด์ และซับโซน ฟิลด์ อยู่ในดาต้าเพย์โหลด ฟังก์ชันนี้มีไว้เพื่อให้สามารถจัดกลุ่มโหนดได้ ตัวอย่างเช่น เราสามารถกำหนดได้ว่าปุ่มทั้งหมดที่ควบคุมหลอดไฟดวงใดดวงหนึ่งเป็นส่วนหนึ่งของกลุ่มเดียวกัน ซึ่งจะช่วยลดความซับซ้อนของ DM ในบางสถานการณ์ แทนที่จะมีสาย DM หนึ่งเส้นเป็นโหนดหลอดไฟสำหรับแต่ละปุ่ม (1 สายต่อปุ่ม: ถ้าปุ่ม x เป็นจริง ให้เปิดหลอดไฟ) เราสามารถมีสาย DM เพียงเส้นเดียวที่ระบุว่าถ้า (ตรงกับโซน) ให้เปิดหลอดไฟ การทำให้สวิตช์โหนดหลายตัวเป็นส่วนหนึ่งของกลุ่มทำได้โดยการกำหนดค่าโหนด เฟิร์มแวร์ของโหนดจะรองรับฟังก์ชันนี้
การกำหนดค่าโหนด VSCP
โหนดจะต้องได้รับการกำหนดค่าอย่างเหมาะสมก่อนที่จะสามารถทำงานได้ โหนด VSCP แต่ละตัวจะมีชุดรีจิสเตอร์การกำหนดค่าเฉพาะของตัวเองซึ่งออกแบบมาสำหรับหน้าที่ของมัน โหนดปุ่มกดจะมีฟังก์ชันในการกำหนดค่าโซน/โซนย่อยที่ปุ่มเหล่านั้นสังกัดอยู่ โหนดอุณหภูมิจะมีฟังก์ชันในการตั้งค่าค่าทริกเกอร์ นอกจากนี้ การกำหนดค่า DM ก็เป็นส่วนหนึ่งของการกำหนดค่าโหนดด้วย
รีจิสเตอร์การกำหนดค่า

การกำหนดค่าโหนดทำได้โดยการเขียนข้อมูลลงในรีจิสเตอร์แต่ละโหนด (ระดับ I) จะให้สิทธิ์การเข้าถึงรีจิสเตอร์ 256 ตัว รีจิสเตอร์ 128 ตัวบนสุดสงวนไว้สำหรับฟังก์ชันหลักของ VSCP ในรีจิสเตอร์ 128 ตัวนี้ เราจะพบข้อมูลต่างๆ เช่น GUID ของโหนด ชื่อเล่น MDF และรีจิสเตอร์เพจจิ้ง รีจิสเตอร์ 128 ตัวล่างสุดนั้นว่างสำหรับการใช้งานเฉพาะของแอปพลิเคชัน หากรีจิสเตอร์ 128 ตัวไม่เพียงพอ ก็จะมีฟังก์ชันเพจจิ้ง 16 บิต ซึ่งจะทำให้มีรีจิสเตอร์ 8 บิต จำนวน 65536 x 128 ตัว สำหรับการใช้งานของแอปพลิเคชัน การเขียน/อ่านรีจิสเตอร์เหล่านี้ทำได้โดยใช้เหตุการณ์CLASS 0 เหตุการณ์ Class 0คือ ข้อความ ฟังก์ชันของโปรโตคอล VSCPที่มีไว้สำหรับการกำหนดค่าและการจัดการโหนด
ไฟล์คำอธิบายโมดูล
การติดตามว่ารีจิสเตอร์ใดทำหน้าที่อะไรอาจเป็นเรื่องท้าทาย โดยเฉพาะอย่างยิ่งสำหรับรีจิสเตอร์เฉพาะแอปพลิเคชัน แต่ไฟล์คำอธิบายโมดูลหรือ MDF ก็เข้ามาช่วยได้ ไฟล์ MDF เป็นไฟล์ XML ที่เครื่องอ่านได้ ซึ่งอธิบายหน้าที่ของแต่ละรีจิสเตอร์ในโมดูล รวมถึงตัวเลือกการกำหนดค่าสำหรับรีจิสเตอร์นั้นๆ เป็นต้น ไฟล์นี้จะถูกใช้โดยซอฟต์แวร์การกำหนดค่า (VSCPWorks) เพื่อแสดงตัวเลือกการกำหนดค่าเฉพาะสำหรับโมดูลที่เกี่ยวข้อง ไฟล์ MDF สามารถจัดเก็บไว้ในโหนดเองและเรียกใช้จากที่นั่นโดย VSCPWorks ได้ แต่โดยทั่วไปแล้วไฟล์ MDF จะเป็นไฟล์ XML ที่โฮสต์อยู่บนเว็บเซิร์ฟเวอร์ โหนดเพียงแค่ต้องแจ้งให้ VSCPWorks ทราบว่าสามารถค้นหาไฟล์ XML ได้ที่ใด (URL) URL นี้จะอยู่ในรีจิสเตอร์ที่สงวนไว้ของ VSCP คือ 0xE0-0xFF
VSCPWorks

VSCPworks เป็นเครื่องมือสำหรับพีซี (Linux และ Windows) ที่ใช้ในการกำหนดค่าและจัดการโหนด VSCPWorks ช่วยให้สามารถอ่าน/ตั้งค่ารีจิสเตอร์และแสดงค่ารีจิสเตอร์เหล่านั้นในรูปแบบที่อ่านง่ายโดยการวิเคราะห์ไฟล์ MDF โดยอัตโนมัติ นอกจากนี้ VSCPWorks ยังมีตัวช่วยในการตั้งค่าเมทริกซ์การตัดสินใจอีกด้วย
VSCP และเพื่อนๆ
หาก VSCP คือโปรโตคอลVSCP & Friendsคือชื่อของ API ซอฟต์แวร์ โครงสร้างข้อมูล และเลเยอร์นามธรรมที่สร้างขึ้นรอบ ๆ VSCP VSCP & Friendsช่วยให้สามารถสร้างนามธรรมแบบหลายชั้นสำหรับอุปกรณ์รุ่นเก่าโดยใช้ไดรเวอร์ที่ทำให้ดูเหมือนอุปกรณ์ VSCP ซึ่งหมายความว่าอุปกรณ์ใด ๆ ก็สามารถควบคุมและตรวจสอบได้ด้วยเฟรมเวิร์ก VSCP & Friends VSCP & Friendsแก้ปัญหา ทั่วไป 4 ประการของ IoTและM2M
- การค้นหาและระบุอุปกรณ์อย่างสม่ำเสมอ
- การกำหนดค่าอุปกรณ์ที่เป็นมาตรฐานเดียวกัน
- ฟังก์ชันการทำงานของอุปกรณ์แบบอัตโนมัติ/แบบกระจายศูนย์
- วิธีการที่สม่ำเสมอในการอัปเดต/บำรุงรักษาเฟิร์มแวร์ของอุปกรณ์
ลิงก์ภายนอก
- หน้าหลักของโครงการ VSCP
- ข้อกำหนด VSCP
- เอกสารประกอบ VSCP
- โมดูล VSCP
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ โปรโตคอลควบคุมที่ง่ายมาก
โปรโตคอล ควบคุมที่ง่ายมาก ( VSCP ) [ 1 ] เป็นโปรโตคอลอัตโนมัติฟรีที่เหมาะสำหรับงานอัตโนมัติทุกประเภท โดยมุ่งเน้นที่ อาคาร หรือ บ้านอัตโนมัติ เป็นหลัก
เหตุการณ์
VSCP ทำงานโดยอาศัย เหตุการณ์ ทุกครั้ง ที่เกิด เหตุการณ์ เหตุการณ์ นั้นจะถูกส่งออกไปยังโหนดอื่นๆ ทุกโหนดในเครือข่าย แต่ละโหนดจะได้รับเหตุการณ์นั้นและจะตัดสินใจว่าจำเป็นต้องจัดการกับเหตุการณ์นั้นหรือไม่
ประเภทและคลาสของกิจกรรม
เหตุการณ์ต่างๆ จะถูกจัดระเบียบเป็น คลาส คลาสคือกลุ่มของเหตุการณ์ที่เกี่ยวข้องกัน เช่นมีคลาสสำหรับ สัญญาณ เตือน การ วัด การควบคุม ข้อมูล เป็นต้น ปัจจุบัน VSCP กำหนดคลาสไว้ประมาณ 25 คลาส แต่ยังมีพื้นที่สำหรับคลาสเพิ่มเติมอีกมากมาย 1...
โครงสร้างดาตาแกรมเหตุการณ์ VSCP
เหตุการณ์ที่ถูกส่งออกอากาศนั้นประกอบด้วยฟิลด์จำนวนหนึ่งรวมกันเป็นดาตาแกรม VSCP หนึ่งอัน วิธีการแมปฟิลด์เหล่านี้ลงบนเลเยอร์ทางกายภาพนั้นมีการระบุไว้สำหรับโปรโตคอลเลเยอร์ทางกายภาพหลายตัว เช่น CAN, Ethernet, TCP เป็นต้น สำหรับโปรโตคอลอื่นๆ ยังไม่ได้กำหนดไว้...