2012-04-27 52 views
6

Tôi đang chạy một quá trình trên một plc S7-1200 và tôi cần nó để gửi một tín hiệu bắt đầu cho kịch bản python của tôi, sau khi kịch bản được thực hiện chạy nó cần phải gửi một cái gì đó trở lại plc để bắt đầu giai đoạn tiếp theo. Ồ, và nó phải được thực hiện trong thang.Làm thế nào tôi có thể giao tiếp giữa Siemens S7-1200 và python?

Có cách nào nhanh chóng và bẩn thỉu để gửi những thứ trên profibus hoặc tôi tốt hơn chỉ sử dụng một điều RS232?

+0

bạn đã google? điều này có thể giúp http://scorpion.tordivel.no/help/Python/Unsupported%20Modules/OPCModule.htm – sinelaw

+0

Tôi đã hy vọng tôi có thể làm điều đó mà không cần một máy chủ opc. – Megimoo

Trả lời

3

Sau khi thất bại với libnodave và OPC, tôi đã tạo ra một điều giao tiếp TCON, TSEND và TRECV. Nó truyền một byte qua TCP và nó hoạt động.

1

Vâng, một google nhanh chóng của 'python rs232' bật lên some site nói về việc điều khiển robot thông qua rs232 sử dụng pySerial. Vì vậy, nếu bạn biết cách móc tiện ích của mình lên đến rs232, bạn có thể đi theo tuyến đường đó.

3

Tôi sẽ sử dụng libnodave trên mặt PC để thay đổi giá trị của một số thẻ M hoặc thẻ DB trong PLC. Bạn có thể dễ dàng tạo một bậc thang mà sẽ theo dõi thẻ này và thực hiện các hành động khác. Mặc dù libnodave không hỗ trợ Python nguyên bản, bạn có thể tìm thấy một trình bao python here.

+0

Tôi không cho rằng bạn có ví dụ về trình bao bọc đang được sử dụng? – Megimoo

+0

Tôi đã thử các giải pháp khác nhau với libnodave và tất cả chúng đều trả về -1 từ connectPLC(). Một người nào đó trên internet tuyên bố đó là bởi vì một sự thay đổi trong lớp TCP S7-1200, và tôi không biết đủ C để thay đổi điều đó trong dll. – Megimoo

+0

Nếu tôi nhớ tốt testISO_TCP.exe đã hoạt động tốt. Tôi không biết về các phương thức kết nối khác. Tôi chỉ biết về trình bao bọc Python, tôi đã không sử dụng nó. Tôi sử dụng libnodave với thành công lớn trong Linux (GCC và FreePascal) và trong Windows (Delphi, Lazarus/FPC). Tôi không có bất kỳ S7 1200 để kiểm tra nó một lần nữa, nhưng ai đó đã làm với Android: http://www.automation-se.de/index.php/s7droid/s7droidlite. – avra

0

Không có cách nào để bạn có thể giao tiếp với cpu PLC S7-1200 không có OPC. De libnodave được tạo cho S7-300 và S7-400 không dành cho S7-1200 dựa trên biểu tượng.

Bạn có thể mua ODK từ Siemens hoặc sử dụng OPC. Việc rút lại một OPC là chi phí nhưng cũng sử dụng bộ nhớ trong S7-1200 sẽ tăng vì việc đặt tên biểu tượng không hoạt động vào lúc này cho OPC.

+0

"Không có cách nào để bạn có thể giao tiếp với cpu PLC S7-1200 mà không có OPC" Không đúng sự thật. Xem câu trả lời của tôi. – user1847129

+1

Chúng tôi là hai phiên bản phần vững hơn nữa khi câu trả lời này được thực hiện. OPC cũng chính thức được phát hành cho S7-1200 với quyền truy cập không được tối ưu hóa. – CJD

2

Có thư viện thương mại có tên "S7connector" của Rothenbacher GmbH (rõ ràng đây không phải là "s7connector" trên sourceforge). Nó dành cho .NET framework, vì vậy có thể được sử dụng với IronPython.

Nó hoạt động với S7-1200 PLC. Bạn chỉ cần chắc chắn rằng một DB bạn muốn đọc từ/ghi vào không phải là một kiểu DB-1200 được tối ưu hóa, mà là một S7-300/400 tương thích, một tùy chọn mà bạn có thể thiết lập khi tạo một DB trong cổng TIA. lib này cũng cho phép đọc và ghi tất cả các cổng I/O - "bóng đăng ký" (không chắc chắn những gì chúng được gọi là chính thức) và trực tiếp là tốt, trọng các cựu.

2

Có một số khách hàng Modbus TCP có sẵn cho Python, tôi đã sử dụng thành công pyModbusTCP. Cổng thông tin TIA IDE cho S7-1200 có chức năng Modbus Server mà bạn có thể tải vào PLC của bạn, cho phép bạn đọc và ghi trực tiếp vào PLC.

https://support.industry.siemens.com/cs/ww/en/view/83130159

Các vấn đề liên quan