มีวิธีแก้ปัญหาที่เป็นจริง / มีประโยชน์สำหรับการควบคุมซอร์สสำหรับโปรแกรมแลดเดอร์ลอจิก


17

การควบคุมเวอร์ชันสำหรับโปรแกรม ladder logic (LL) สำหรับตัวควบคุมตรรกะที่ตั้งโปรแกรมได้ (PLC) ดูเหมือนจะไม่มีอยู่จริง อาจเป็นเพราะ LL เป็นภาษาภาพและมีแนวโน้มที่จะถูกเก็บไว้ในไฟล์ไบนารีหรืออาจเป็นเพราะการควบคุมซอร์สโค้ดไม่ได้ "ติดอยู่" ในวงการวิศวกรรมการควบคุมกระบวนการ - หรือบางที Google-Fu ของฉันอ่อนแอในคืนนี้

คุณรู้วิธีแก้ปัญหาที่เป็นจริงและมีประโยชน์สำหรับการควบคุมเวอร์ชันสำหรับระบบดังกล่าวหรือไม่?

คำนิยาม:

  • realistic = การเปลี่ยนแปลงโปรแกรมถูกติดตามโดยผู้ใช้และอาจมีการพลิกกลับและการรวม
  • มีประโยชน์ = ระบบทำงานร่วมกับนักออกแบบ LL ที่มองเห็นได้ไม่ จำกัด LL จากผู้ผลิต PLC รายเดียวและไม่เสียค่าใช้จ่ายเป็นจำนวนเงินที่ไร้สาระ?

หมายเหตุ: ฉันเคยได้ยินคนที่ใช้ SVN หรือ Mercurial et al เพื่อติดตามไฟล์ไบนารี แต่ฉันไม่คิดว่าความสามารถ diff / merge จะแสดงความแตกต่างที่สามารถอ่านได้

ภาคผนวก:

ตอนแรกเราต้องสนับสนุน PLC ของ Allen-Bradley เท่านั้น ตอนนี้เรายังมี PLC ของซีเมนส์และ MicroLogix ยังคงค้นหาโซลูชันที่ทำงานได้ ...


1
คำถามนี้อาจเกี่ยวข้องกับคุณ: stackoverflow.com/questions/4216619/plc-version-control
blueberryfields

สวัสดี @Stevenalowe มีการพัฒนาใด ๆ ในเรื่องนี้หรือไม่?
Montag451

@EnmosProje: ไม่ใช่ว่าฉันรู้ขอโทษ!
Steven A. Lowe

คำตอบ:


13

น่าเสียดายที่คำตอบนั้นขึ้นอยู่กับผู้ขาย PLC ที่คุณใช้งาน ส่วนใหญ่เก็บรหัสไว้ในรูปแบบไฟล์ที่เป็นกรรมสิทธิ์ดังนั้นจึงยากที่จะใช้การควบคุมแหล่งที่มาปกติ

Rockwell เสนอFactoryTalk AssetCenterหากคุณใช้ Allen-Bradley ฉันไม่ได้ตั้งราคา แต่อาจมีราคาแพง มันทำได้มากกว่าการควบคุมแหล่งที่มา

ฉันใช้การควบคุมแหล่งข้อมูลปกติ (Mercurial) กับไฟล์ Beckhoff TwinCAT PLC ดูเหมือนว่าจะทำงานได้ดี แต่ฉันไม่เคยผสานกับใครเลย TwinCAT เวอร์ชั่นใหม่ของพวกเขา (3) กำลังจะวางจำหน่ายในปลายปีนี้น่าจะถูกสร้างขึ้นใน Visual Studio 2010 และฉันคาดว่าจะมีข้อเสนอที่ดีกว่าสำหรับการรวมการควบคุมเวอร์ชัน ไขว้นิ้วเอาไว้.

เริ่มแก้ไข

ฉันแค่อยากจะเพิ่มว่าตอนนี้ฉันใช้ผลิตภัณฑ์ TwinCAT 3 ใหม่แล้วและฉันกำลังใช้ Mercurial (TortoiseHg และ Add-in ของ VisualHg สำหรับ Visual Studio) มันทำงานได้ค่อนข้างดี ก่อนอื่น VisualHg ทำให้รู้สึกว่ารวมเข้ากับ Visual Studio 2010 IDE ที่ TwinCAT 3 ใช้ อย่างไรก็ตามซอร์สโค้ดสำหรับโปรแกรม TwinCAT 3 นั้นโดยทั่วไปจะถูกเก็บไว้ในไฟล์ XML นี่เป็นการปรับปรุงรูปแบบไบนารีที่เป็นกรรมสิทธิ์ของผู้ขายรายอื่นที่ฉันใช้ไป แต่ก็ยังไม่ได้ผสานกัน ไฟล์บางไฟล์ไม่มีตัวแบ่งบรรทัดใน XML (ฉันเขียนถึงเบ็คฮอฟเกี่ยวกับเรื่องนี้) ซึ่งหมายความว่าระบบควบคุมแหล่งข้อมูลแบบบรรทัดต่อบรรทัดไม่ได้ทำอะไรมาก นอกจากนี้เนื่องจากเป็น XML ลำดับของโหนดในไฟล์ XML จึงดูเหมือนจะเปลี่ยนแบบสุ่มแม้ว่าคุณจะไม่ทำการเปลี่ยนแปลงก็ตาม นอกจากนี้ ฉันคิดว่าบางครั้งมันจะสร้าง ID ใหม่สำหรับบางโหนดเมื่อมันไม่จำเป็นต้องทำซึ่งทำให้เกิดการเปลี่ยนแปลงที่ไม่จำเป็นซึ่ง Hg หยิบขึ้นมา สิ่งนี้ทำให้เป็นไปไม่ได้ที่จะทำการเปลี่ยนแปลงโปรแกรม TwinCAT 3 โดยโปรแกรมเมอร์ 2 คนในเวลาเดียวกันจากนั้นจึงรวมการเปลี่ยนแปลง มันเป็นความโชคร้ายของนักพัฒนา TwinCAT 3 ที่ไม่ต้องสงสัยเลยว่าใช้การควบคุมแหล่งข้อมูลเป็นประจำในการทำงานของตัวเองและไม่เห็นประโยชน์สำหรับพวกเราโปรแกรมเมอร์ระบบอัตโนมัติที่มีการเข้าถึงเครื่องมืออันทรงพลังเช่นเดียวกัน :( ที่ไม่ต้องสงสัยเลยว่าใช้การควบคุมแหล่งที่มาเป็นประจำในงานของตัวเองและไม่เห็นประโยชน์สำหรับเราที่โปรแกรมเมอร์ระบบอัตโนมัติต่ำต้อยเพื่อเข้าถึงเครื่องมือที่ทรงพลังเช่นเดียวกัน :( ที่ไม่ต้องสงสัยเลยว่าใช้การควบคุมแหล่งที่มาเป็นประจำในงานของตัวเองและไม่เห็นประโยชน์สำหรับเราที่โปรแกรมเมอร์ระบบอัตโนมัติต่ำต้อยเพื่อเข้าถึงเครื่องมือที่ทรงพลังเช่นเดียวกัน :(

สิ้นสุดการแก้ไข

เริ่มแก้ไข # 2

ฉันอยากจะชี้ให้เห็นว่า TwinCAT 3.1 ในขณะนี้มีรูปแบบไฟล์ที่เหมาะกับการควบคุมซอร์สโดยเฉพาะไฟล์ภาษาข้อความที่มีโครงสร้าง ที่จริงแล้วตอนนี้ผลิตภัณฑ์ถูกสร้างขึ้นเพื่อรองรับการรวมเข้ากับ Team Foundation Server ฉันเชื่อว่า

สิ้นสุดการแก้ไข # 2

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

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

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


คุณเคยใช้การบันทึกอัตโนมัติหรือไม่ wingtipllc.com/products/autosave-plc-version-control/ …
blueberryfields

@blueberryfields: ใช่ฉันเคยใช้คุณสมบัติบันทึกอัตโนมัติกับซอฟต์แวร์ส่วนใหญ่ที่สนับสนุนและใช่มันช่วยฉันได้หลายครั้ง อย่างไรก็ตามการใช้เป็นตัวควบคุมเวอร์ชันไม่ใช่ความคิดที่ดี การควบคุมเวอร์ชันควรมีมากกว่าเวลาที่บันทึกควรมีผู้สร้างและคำอธิบายของการเปลี่ยนแปลง นอกจากนี้ควรเป็นไปได้ที่จะทำการผสานแบบ 3 ทางระหว่างรุ่นหลักและสองส้อม
Scott Whitlock

โครงการ TwinCAT ของ Beckhoff สามารถส่งออกและนำเข้าไปยัง / จากไฟล์ข้อความได้เช่นกัน นั่นคือวิธีที่เราวางไว้ภายใต้การควบคุมเวอร์ชัน ทำงานได้ดีสำหรับโครงการที่เขียนใน ST ยังไม่ได้ลองกับภาษากราฟิกเช่น LL แม้ว่า
stmax

@stmax - ฉันเพิ่งแก้ไขคำตอบเพื่อให้ประสบการณ์ล่าสุดของฉันกับมัน อย่างที่ฉันบอกว่ามันใช้งานได้ แต่ก็ไม่ดีเท่าที่จะทำได้
Scott Whitlock

ฉันยอมรับสิ่งนี้ว่า 'คำตอบ' เพราะดูเหมือนว่าการส่งออกไปยังไฟล์ข้อความและการใช้ SCC เป็นโซลูชั่นที่ทำงานได้สำหรับผู้ค้า PLC หลายรายเท่านั้น
Steven A. Lowe

4

หากทำได้ให้ดูที่ B&R Automation

การเปิดเผยข้อมูลเต็มรูปแบบ ... ฉันทำงานให้กับพันธมิตรการขายของ B&R Automation

Modern B&R Automation project ทำงานได้ดีกับซอฟต์แวร์ versioning ปัจจุบันฉันใช้ GIT (ซึ่งไม่ได้รวมอยู่ด้วย) แม้ว่าจะมีการรวมเข้ากับ SVN ในซอฟต์แวร์ แหล่งที่มาของ HMI ทั้งหมดจะถูกบันทึกเป็น XML และแหล่งภาษา PLC ทั้งหมด (รวมถึงบันได) จะได้รับการบันทึกข้อความแทนไบนารี (ส่วนใหญ่เป็น XML เช่นกัน) หากคุณต้องทำการผสานแบบแมนนวลคุณต้อง "เข้าใจ" XML ในระดับหนึ่ง แต่ฉันไม่พบว่ามันยาก และการผสานอัตโนมัติมักจะทำให้ไม่จำเป็นอีกต่อไป


3

ฉันเพิ่งเห็นคำถามนี้และจริงๆแล้วมีวิธีแก้ปัญหากระป๋อง - จาก GE-IP ของทุกสถานที่ Proficy Change Managementตรวจสอบ ผลิตภัณฑ์นี้ทำหน้าที่ควบคุมเวอร์ชันจากมุมมองระบบควบคุม PLC แทนที่จะเป็นการควบคุมเวอร์ชันบริสุทธิ์ของไฟล์ในมุมมอง - มันทำงานเป็นเลเยอร์นั่งอยู่ด้านบนของ VCS (ส่วนที่น่ากลัวคือเดิม VCS นี้เป็น Visual SourceSafe) และจัดการการจัดการสิทธิ์การรายงานและการชำระเงิน / เช็คอิน

ในขณะที่ผลิตภัณฑ์มาจาก GE-IP มันถูกออกแบบมาเพื่อรองรับความหลากหลายของระบบ PLC และ HMI ออกจากกล่อง

การเปิดเผยอย่างสมบูรณ์ฉันใช้สำหรับทำงานให้กับ บริษัท ที่ขายและติดตั้ง PCM (แต่เมื่อ 7 ปีที่แล้ว) ดังนั้นถ้าคุณถามฉันว่ามันเป็นอย่างไรแล้วฉันก็จะบอกคุณว่ามันผิดทั้งหมด!


1

น่ากลัวอย่างที่เห็นในกรณีนี้ฉันได้ใช้คุณลักษณะ "พิมพ์ไปยัง PDF" ของซอฟต์แวร์ลอจิกแลดเดอร์ (ในกรณีนี้คือ Horner's CScape) จากนั้นโปรแกรมแปลงความแตกต่าง PDF กราฟฟิคฟรี (เช่นDiffPDF ) ซอร์สโค้ดมีเฉพาะในรูปแบบไบนารีที่เป็นกรรมสิทธิ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.