Có các giải pháp thực tế / hữu ích để kiểm soát nguồn cho các chương trình logic bậc thang


17

Kiểm soát phiên bản cho các chương trình logic bậc thang (LL) cho các bộ điều khiển logic lập trình (PLC) dường như hầu như không tồn tại. Có thể do LL là ngôn ngữ trực quan và có xu hướng được lưu trữ trong các tệp nhị phân hoặc có thể do kiểm soát mã nguồn chưa "bắt kịp" trong giới kỹ thuật kiểm soát quy trình - hoặc có lẽ Google-Fu của tôi yếu tối nay.

Bạn có biết bất kỳ giải pháp thực tế và hữu ích nào để kiểm soát phiên bản cho các hệ thống như vậy không?

Các định nghĩa:

  • Realistic = các thay đổi đối với các chương trình được theo dõi bởi người dùng và có thể đảo ngược và hợp nhất
  • hữu ích = hệ thống tích hợp với các nhà thiết kế LL trực quan, không giới hạn ở LL từ một nhà sản xuất PLC duy nhất và không tốn một khoản tiền vô lý?

Lưu ý: Tôi đã nghe nói về những người sử dụng SVN hoặc Mercurial et al để theo dõi các tệp nhị phân, nhưng tôi không nghĩ rằng các khả năng khác biệt / hợp nhất sẽ hiển thị sự khác biệt có thể đọc được.

ĐỊA CHỈ:

Lúc đầu, chúng tôi chỉ phải hỗ trợ PLC của Allen-Bradley. Bây giờ chúng tôi cũng có PLC của Siemens và MicroLogix. Vẫn đang tìm kiếm một giải pháp khả thi ...


1
Câu hỏi này có thể liên quan đến bạn: stackoverflow.com/questions/4216619/plc-version-control
blueberryfields

Xin chào @Stevenalowe, đã có sự phát triển nào về chủ đề này chưa?
Montag451

@EnmosProje: tôi không biết, xin lỗi!
Steven A. Lowe

Câu trả lời:


13

Thật không may, câu trả lời sẽ phụ thuộc vào nhà cung cấp PLC mà bạn đang sử dụng. Hầu hết trong số họ lưu trữ mã của họ ở định dạng tệp độc quyền, do đó gây khó khăn khi sử dụng kiểm soát nguồn thông thường.

Rockwell cung cấp FactoryTalk AssetCenter nếu bạn đang sử dụng Allen-Bradley. Tôi đã không định giá nó, nhưng nó có thể đắt tiền. Nó làm nhiều hơn kiểm soát nguồn mặc dù.

Tôi đã sử dụng điều khiển nguồn (Mercurial) thường xuyên với các tệp PLC Beckhoff TwinCAT. Điều đó có vẻ hoạt động tốt, nhưng tôi không bao giờ phải hợp nhất với bất cứ ai. Phiên bản mới TwinCAT (3) của họ sẽ ra mắt vào cuối năm nay được cho là sẽ được xây dựng trên Visual Studio 2010, và tôi cho rằng sẽ có những dịch vụ vượt trội hơn nhiều để tích hợp kiểm soát phiên bản. Ngón tay đan chéo.

Đã bắt đầu

Tôi chỉ muốn thêm rằng hiện tại tôi đã sử dụng sản phẩm TwinCAT 3 mới và tôi đang sử dụng Mercurial (bổ trợ TortoiseHg và VisualHg cho Visual Studio). Nó đang hoạt động khá tốt. Trước hết, VisualHg tạo cảm giác rất tích hợp vào Visual Studio 2010 IDE mà TwinCAT 3 sử dụng. Tuy nhiên, mã nguồn cho các chương trình TwinCAT 3 thường được lưu trữ trong các tệp XML. Đây là một cải tiến lớn so với các định dạng nhị phân độc quyền của nhà cung cấp khác mà tôi đã sử dụng, nhưng nó vẫn không hợp nhất tốt. Một số tệp không có bất kỳ ngắt dòng nào trong XML (Tôi đã viết cho Beckhoff về điều này), điều đó có nghĩa là hệ thống kiểm soát nguồn từng dòng không làm được gì nhiều. Ngoài ra, vì là XML, nên thứ tự các nút trong tệp XML dường như thay đổi ngẫu nhiên, ngay cả khi bạn không thực hiện bất kỳ thay đổi nào. Cũng thế, Tôi nghĩ rằng đôi khi nó tạo ra ID mới cho một số nút khi không cần thiết, điều này tạo ra những thay đổi không cần thiết mà Hg chọn ra. Điều này có hiệu quả làm cho không thể thực hiện thay đổi chương trình TwinCAT 3 bởi 2 lập trình viên cùng một lúc, sau đó hợp nhất các thay đổi. Đây là một sự giám sát đáng tiếc của các nhà phát triển TwinCAT 3, người chắc chắn sử dụng kiểm soát nguồn thường xuyên trong công việc của họ và không thấy lợi thế cho chúng tôi lập trình viên tự động hóa thấp để có quyền truy cập vào các công cụ mạnh tương tự. : những người chắc chắn sử dụng kiểm soát nguồn thường xuyên trong công việc của họ và không thấy lợi thế cho chúng tôi lập trình viên tự động hóa thấp để có quyền truy cập vào các công cụ mạnh tương tự. : những người chắc chắn sử dụng kiểm soát nguồn thường xuyên trong công việc của họ và không thấy lợi thế cho chúng tôi lập trình viên tự động hóa thấp để có quyền truy cập vào các công cụ mạnh tương tự. :

Kết thúc chỉnh sửa

Bắt đầu chỉnh sửa # 2

Tôi muốn chỉ ra rằng TwinCAT 3.1 hiện có các định dạng tệp phù hợp hơn với kiểm soát nguồn, đặc biệt là các tệp ngôn ngữ văn bản có cấu trúc. Trên thực tế, sản phẩm hiện được xây dựng để hỗ trợ tích hợp với Team Foundation Server, tôi tin.

Kết thúc chỉnh sửa # 2

Một cách khác là hầu hết các chương trình PLC có thể được xuất sang tệp văn bản. Ví dụ, RSLogix 5000, xuất các dự án của mình sang tệp L5K, đây chỉ là văn bản. Tôi đã chạy các kịch bản đối với các tệp đó trước đây - chúng khá dễ phân tích. Họ sẽ làm việc tốt với kiểm soát nguồn. Tất nhiên điều đó có nghĩa là xuất khẩu mọi lúc, mà hút.

Nếu bạn thực hiện với bất kỳ điều khiển phiên bản tiêu chuẩn nào, tôi khuyên bạn nên sử dụng một VCS phân tán, như Git hoặc Mercurial, bởi vì với PLC, một nửa thời gian bạn tại chỗ và không thể kết nối với máy chủ gia đình của bạn, vì vậy khả năng thực hiện các cam kết cục bộ là một phần thưởng thực sự.

Một điều khác bạn phải nhận ra là một số môi trường lập trình PLC, như RSLogix, đã bao gồm một công cụ tìm khác biệt, do đó bạn có thể chạy khác biệt so với hai phiên bản dự án của bạn. Điều này, kết hợp với việc lưu một tệp mới với ngày hôm nay mỗi ngày, là điều mà hầu hết các cửa hàng tự động hóa dường như có được.



@blueberryfields: có, tôi đã sử dụng tính năng tự động lưu trên hầu hết các phần mềm hỗ trợ nó, và vâng, nó đã cứu mông tôi vài lần. Tuy nhiên, sử dụng nó làm kiểm soát phiên bản không phải là một ý tưởng tốt. Kiểm soát phiên bản nên có nhiều hơn chỉ là dấu thời gian, cần có tác giả và mô tả về các thay đổi. Cũng có thể thực hiện hợp nhất 3 chiều giữa phiên bản gốc và hai nhánh.
Scott Whitlock

Các dự án TwinCAT của Beckhoff cũng có thể được xuất và nhập vào / từ các tệp văn bản. Đó là cách chúng tôi đặt chúng dưới sự kiểm soát phiên bản. Hoạt động tốt cho các dự án được viết trong ST. Chưa thử với các ngôn ngữ đồ họa như LL.
stmax

@stmax - Tôi vừa chỉnh sửa câu trả lời để cung cấp trải nghiệm mới nhất của tôi với nó. Như tôi đã nói, nó hoạt động, chỉ là không tốt như nó có thể.
Scott Whitlock

Tôi chấp nhận đây là "câu trả lời" vì có vẻ như xuất ra tệp văn bản và sử dụng SCC là giải pháp khả thi duy nhất cho nhiều nhà cung cấp PLC.
Steven A. Lowe

4

Nếu bạn có thể, hãy nhìn vào B & R Tự động hóa.

Tiết lộ đầy đủ ... Tôi làm việc cho một đối tác bán hàng của B & R Tự động hóa.

Các dự án tự động hóa B & R hiện đại hoạt động rất tốt với phần mềm phiên bản. Tôi hiện đang sử dụng GIT (không được tích hợp), mặc dù có nghĩa là tích hợp với SVN trong phần mềm. Tất cả các nguồn HMI được lưu dưới dạng XML và tất cả các nguồn ngôn ngữ PLC của chúng (bao gồm cả bậc thang) được lưu văn bản dựa trên thay vì nhị phân (chủ yếu là XML). Nếu bạn phải thực hiện hợp nhất thủ công thì bạn phải "tìm ra" XML ở một mức độ nào đó, nhưng tôi không thấy khó khăn lắm. Và hợp nhất tự động thường làm cho dù sao không cần thiết.


3

Tôi chỉ thấy câu hỏi này và thực sự có một giải pháp đóng hộp - từ GE-IP của tất cả các nơi. Kiểm tra Proficy Change Management. Sản phẩm này thực hiện kiểm soát phiên bản theo quan điểm của hệ thống điều khiển PLC, thay vì kiểm soát phiên bản thuần túy của quan điểm tệp - nó hoạt động như một lớp nằm trên đỉnh của một VCS (phần đáng sợ là VCS ban đầu này là Visual SourceSafe) và xử lý quản lý quyền, báo cáo và kiểm tra / kiểm tra.

Mặc dù sản phẩm đến từ GE-IP, nhưng nó được thiết kế để hỗ trợ nhiều hệ thống PLC và HMI khác nhau.

Tiết lộ đầy đủ, tôi đã sử dụng cho một công ty bán và cài đặt PCM (nhưng đó là 7 năm trước). Vì vậy, nếu bạn hỏi tôi nó giống như thế nào thì tôi có thể nói cho bạn biết mọi chuyện đã xảy ra ở đâu!


1

Kinh khủng như âm thanh này, trong một trường hợp tôi đã kết thúc bằng cách sử dụng tính năng "In thành PDF" của phần mềm logic bậc thang (trong trường hợp này là Hcape's CScape) và sau đó là chương trình phân biệt đồ họa PDF miễn phí (ví dụ: DiffPDF ) mã nguồn chỉ có sẵn ở định dạng nhị phân, độc quyền.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.