สวัสดีตอนบ่ายผู้อ่านบทความนี้ที่รัก ฉันกำลังเขียนสิ่งนี้ในรูปแบบการทบทวน
คำเตือนเล็กน้อยฉันขอเตือนคุณว่าหากคุณเข้าใจทันทีถึงสิ่งที่เรากำลังพูดถึงจากชื่อเรื่อง ฉันขอแนะนำให้คุณเปลี่ยนจุดแรก (จริงๆ แล้วคือแกน PLC) เป็นอะไรก็ได้จากหมวดหมู่ราคาที่สูงกว่าหนึ่งขั้น
การประหยัดเงินไม่คุ้มค่ากับความเครียดมากนัก
สำหรับผู้ที่ไม่กลัวผมหงอกเล็กน้อยและอาการกระตุกประสาทฉันจะอธิบายรายละเอียดในภายหลังว่าปาฏิหาริย์ทางเทคโนโลยีนี้ถูกสร้างขึ้นได้อย่างไร บทความนี้นำเสนอการวิเคราะห์โดยย่อของโครงการพร้อมคำวิจารณ์จำนวนหนึ่ง
ต้นทาง. การกำหนดปัญหา
จริงๆ แล้ว ฉันทำงานในสำนักออกแบบ และเราทดสอบอุปกรณ์อัตโนมัติเพื่อรวมเข้ากับโรงงานแบบครบวงจรของเรา เมื่อเร็วๆ นี้ อุปกรณ์ของ OWEN มาถึงคลังสินค้า และได้ตัดสินใจที่จะประกอบม้านั่งทดสอบจากคลังสินค้า:
- PLC110[M02]-MS4 (สภาพแวดล้อมสำหรับผู้บริหาร MasterSCADA 4D)
- แผงควบคุมการทำงาน SP307
- โมดูลอินพุตสัญญาณอะนาล็อกสากล МВ110-224.2А
- โมดูลอินพุตสัญญาณสเตรนเกจ MV110-4TD
- โมดูลวัดไฟฟ้า MV110-220.3M
โครงสร้างระบบ ถูกเลือกโดยแยกเครือข่ายตามวัตถุประสงค์:
- Modbus RTU ที่ใช้ RS-485 - การสื่อสารระหว่าง PLC และอุปกรณ์ทาส (โมดูล, ตัวแปลงความถี่, เซ็นเซอร์อัจฉริยะ, แผง HMI SP307), เครือข่ายหลัก PLC
- Modbus TCP ที่ใช้อีเธอร์เน็ต - การสื่อสารของ PLC ที่แตกต่างกันระหว่างกันและกับเซิร์ฟเวอร์ OPC
- เซิร์ฟเวอร์พีซีระบบ OPC และ SCADA เป็นเกตเวย์ระหว่างเครือข่ายสองเครือข่ายที่แตกต่างกันพร้อมกัน (LAN องค์กรขององค์กรและเครือข่ายตัวควบคุม Modbus TCP (อะแดปเตอร์เครือข่ายสองตัวพร้อมการกำหนดเส้นทางข้อมูลโดยใช้เครื่องมือ Windows มาตรฐาน)
- LAN ขององค์กรมีการเข้าถึงอินเทอร์เน็ตผ่านพร็อกซีเซิร์ฟเวอร์
โครงสร้างทั่วไปของระบบแสดงอยู่ในภาพด้านล่าง:
ฟังก์ชั่นในตัว
- การรวบรวมและการเปลี่ยนเส้นทางข้อมูลจาก PLC ไปยังเซิร์ฟเวอร์ OPC
- การควบคุมและการตรวจสอบในพื้นที่ผ่านแผง HMI
- ควบคุมและตรวจสอบจาก SCADA ผ่านเซิร์ฟเวอร์ OPC
- ควบคุมจากพีซีทุกเครื่องจาก LAN ขององค์กรและผ่านทางอินเทอร์เน็ตโดยใช้ไคลเอนต์ SCADA
- การเชื่อมต่อจอภาพ OPC มือถือผ่าน LAN และอินเทอร์เน็ต
- แน่นอนว่าการเก็บถาวรและการสร้างรายงาน
ดูเหมือนไม่มีอะไรพลาดเลย มีคำอธิบายทั่วไปของระบบและตอนนี้จริง ๆ แล้วในหัวข้อ (ฉันจะอธิบายวิธีการกำจัดในบทความที่มีการใช้งานแต่ละโหนด):
ความยากลำบากที่พบเจอ
1. เอกสารเกี่ยวกับ PLC
การทดสอบเบต้าของ PLC ที่ประกาศไว้บนแกน MasterSCADA 4D ได้รับการระบุโดยผู้ผลิตในปี 2012 แม้ว่าแนวคิดจะมีอายุการใช้งานที่น่าประทับใจ แต่สิ่งที่นักพัฒนามีในปี 2019 ก็คือคู่มือการเขียนโปรแกรมความยาว 28 หน้า (!?) ซึ่งมีข้อมูลที่เป็นประโยชน์น้อยกว่าไม่มีเลยเล็กน้อย และภาพหน้าจอในคู่มือนั้นมาจาก MasterSCADA 3D ซึ่งค่อนข้างตลกเมื่อคำนึงถึงอินเทอร์เฟซที่เปลี่ยนไป
กระทู้ในฟอรั่ม 20 หัวข้อยังได้รับการสนับสนุนจากสมาชิกสามคนและผู้จัดการฝ่ายขายหนึ่งคน
2. สถาปัตยกรรมของโมดูล PLC
นี่เป็นหัวข้อแยกต่างหากสำหรับการสนทนา โดยสรุป: PLC สื่อสารกับโมดูลต่างๆ เป็นอุปกรณ์ทาส Modbus RTU ซึ่งยูทิลิตีจะต้องกำหนดค่าแยกกันก่อน โดยเชื่อมต่อแต่ละโมดูลกับพีซีผ่านตัวแปลง RS-485
แน่นอนว่าคนฉลาดอาจรู้วิธีการทำเช่นนี้โดยไม่ต้องใช้ตัวแปลงผ่าน PLC เชื่อมต่อโมดูลกับเครือข่ายตามลำดับและเขียนรีจิสเตอร์ที่จำเป็น แต่สิ่งนี้มาพร้อมกับประสบการณ์และความเจ็บปวดมากมาย
สำหรับนักพัฒนาที่เห็นสถาปัตยกรรมดังกล่าวเป็นครั้งแรก สถาปัตยกรรมนี้ไม่เป็นมิตรกับผู้ใช้เลย
นอกจากนี้โมดูลแอนะล็อกทั้งหมดชอบที่จะล้มเหลวโดยไม่ทราบสาเหตุโดยนำเครือข่าย RS-485 ทั้งหมดใน Terra Incognita ติดตัวไปด้วย แต่ฉันก็อยากจะพูดถึงเรื่องนี้แยกกันซึ่งเป็นมหากาพย์ทั้งหมด อย่างไรก็ตามปัญหาคือ 10 ปีผู้ผลิตก็หัวเราะเยาะ “เราต้องยอมรับว่าเทมเพลตใช้ไม่ได้สำหรับเรา”อย่างไรก็ตาม นี่เป็นอินเทอร์เฟซเดียวสำหรับการสื่อสารกับโมดูล และผู้คนได้เขียนการใช้งาน Modbus RTU ของตนมาเป็นเวลานานแล้ว
ในขณะเดียวกันชาคาโมมายล์ก็กำลังจะหมดลง... พระอาทิตย์กำลังตกดิน
3. IDE MasterSCADA
เราจะไม่พูดถึงเครื่องมือกราฟิก ฉันไม่ได้ทดสอบมันอย่างกว้างขวาง แต่ฉันจะบอกทันทีว่าฉันไม่ชอบมัน
เรากำลังพูดถึงการดำเนินการแลกเปลี่ยนข้อมูลและภาษามาตรฐาน IEC:
อินพุตและเอาต์พุตทางกายภาพของคอนโทรลเลอร์ไม่ใช่ตัวแปรร่วม และไม่สามารถเข้าถึงได้จากส่วนใดๆ ของโปรแกรมโดยการเขียนนามแฝง เช่น "DI1" คุณควรลากสิ่งนี้ลงในแต่ละโปรแกรมโดยใช้ตัวจัดการ ตัวแปรท้องถิ่นจะถูกสร้างขึ้นที่นั่น ซึ่งจะสืบทอดหรือถ่ายโอนค่า เหล่านั้น. ในวิสัยทัศน์ของฉันสาระสำคัญของ PLC นั้นหายไปเล็กน้อย: อุปกรณ์ควรลดความซับซ้อนในการเขียนโปรแกรมตรรกะของการทำงานของช่องทางทางกายภาพให้อยู่ในระดับ “หากอินพุต DI1 ถูกทริกเกอร์ ให้เปิดเอาต์พุต DO1”และดูเหมือนว่านี้ "อินพุต DI1 - ตัวแปร LI1 - ตัวแปร LO1 - เอาต์พุต DO1"นอกจากนี้เนื่องจากความเพิกเฉยต่อหลักการ IDE นี้ คุณสามารถได้รับคำเตือนที่น่ายินดีว่า "การแปลงแบบบูลีน-บูลีนเป็นไปไม่ได้" (เป็นไปได้มากว่าหนึ่งในนั้นคือตัวชี้ แต่ฉันจินตนาการว่าบรรณาธิการของผู้สร้างจะมีความสามัคคีมากกว่า) .
ไลบรารีของภาษา ST, FBD, SFC มีขนาดค่อนข้างใหญ่และมีตัวเลือกเพื่อความสะดวกในการเขียนโปรแกรมอย่างไรก็ตามส่วนประกอบเหล่านี้ไม่ใช่ฟังก์ชัน แต่เป็นคลาสที่ฝังวิธีการไว้และประการที่สองส่วนใหญ่ไม่มีความช่วยเหลือในการอธิบาย ฟังก์ชั่นและประเภทข้อมูล ความคงอยู่นำฉันไปสู่ไลบรารีเคอร์เนล CodeSys ซึ่งฟังก์ชันเหล่านี้ถูกนำมาจากความช่วยเหลือของพวกเขา
4. แลกเปลี่ยนกับแผง SP307
ค่อนข้างเป็นงานที่น่าสนใจสำหรับผู้ที่ไม่มีที่จะใช้เวลาสองสามวัน
การทดสอบ GUI มาตรฐาน (HMI หรือ SCADA) สำหรับฉันคือทำการทดสอบ 6 รายการ:
- การอ่านสัญญาณแบบไม่ต่อเนื่อง
- บันทึกสัญญาณแบบแยกส่วน
- การอ่านค่าจำนวนเต็ม
- การเขียนค่าจำนวนเต็ม
- การอ่านคุณค่าที่แท้จริง
- การเขียนคุณค่าที่แท้จริง
ดังนั้น ฉันจึงวาดส่วนประกอบพื้นฐาน 6 ชิ้นบนหน้าจอ และตรวจสอบส่วนประกอบแต่ละชิ้นตามลำดับ
การแลกเปลี่ยนนั้นเหมือนกับโมดูลอย่างแน่นอน แต่จากพอร์ต PLC RS-232/485 แยกต่างหากและดูเหมือนว่าจะมีเสถียรภาพมากกว่า เนื่องจากมันเป็นทาส HMI ฉันจึงเขียนถึงมันโดยการเปลี่ยนแปลง และอ่านมันในการโพล 500 มิลลิวินาที เพื่อไม่ให้พลาดการกระทำของผู้ปฏิบัติงาน
4 แต้มแรกสมบูรณ์ดี แต่ 5 แต้ม 6 เกิดปัญหา
เราส่งข้อมูลประเภท Single Float แสดงบนหน้าจอและพบว่าข้อมูลไม่เหมือนกัน แม้ว่าการตั้งค่าเอาท์พุตทั้งหมด (Float, มิติ 1 รีจิสเตอร์ ฯลฯ) ถูกต้องก็ตาม คงจะเป็นเรื่องโกหกที่จะบอกว่าแบบอย่างไม่ได้อธิบายไว้ในเอกสารประกอบ แต่ลองค้นหาว่าอันไหนและที่ไหนมันตลกจากภายนอก
หลังจากการค้นหาการตั้งค่าทั้งหมดที่เกี่ยวข้องกับข้อมูลและการส่งอย่างลึกลับ เราเขียนถึงฝ่ายสนับสนุนด้านเทคนิค ตอบกลับโดยเฉลี่ย 5-6 วันตามปฏิทิน เราทำงานตามสคริปต์สนับสนุนทางเทคนิคมาตรฐาน “ตรวจสอบว่าเปิดเครื่องอยู่ - ตรวจสอบเวอร์ชันซอฟต์แวร์ - โปรดรออีกหนึ่งสัปดาห์ - ลองคิดดูเอง ”.
โดยวิธีการตัดสินใจโดยการติดตั้งหนึ่งขีดในสถานที่ที่ไม่เพียงพออย่างแน่นอนและมีลายเซ็นไม่เพียงพออย่างแน่นอน
ในฟังก์ชั่นหน้าจอ ไม่รวมอินพุตสัญญาณอะนาล็อกในรูปแบบ "Slider"สามารถป้อนได้ในช่องข้อความโดยใช้ตัวเลขเท่านั้น นี่เป็นเรื่องที่น่าทึ่งมาก ไม่ว่าเราจะเขียนปุ่ม “±” และสคริปต์เอง หรือเราจะป้อนตัวเลขจากแป้นพิมพ์ และลืมการควบคุมแบบนุ่มนวลของไดรฟ์บางตัวไปได้เลย
ฉันจะไม่โหลดบทความมากเกินไป ดังนั้นฉันจะอธิบายปัญหาเกี่ยวกับระดับบนสุดในตอนที่ 2
โดยสรุป ฉันต้องการทราบว่าฉันมีอิสระเพียงพอและมีเวลามากในการแก้ปัญหาเหล่านี้ ซึ่งเมื่อมองแวบแรกอาจดูตลกแต่ทำให้เหยื่อเจ็บปวดมาก ในสภาวะที่มีเวลาจำกัด การเผชิญกับปัญหาดังกล่าวถือเป็นสิ่งสำคัญ
ป.ล.: วิทยานิพนธ์ทั้งหมดที่นำเสนอที่นี่เป็นเพียงความพยายามที่จะเตือนผู้ที่ไม่ได้เตรียมตัวและจะไม่เลือกปฏิบัติต่อผู้ผลิต ฉันขอให้คุณนำบทความนี้มาจากมุมมองนี้