SCPI trong Python là gì?

Công ty khởi nghiệp của chúng tôi, GradientOne, tập trung vào việc đơn giản hóa nhiều nhiệm vụ liên quan đến kỹ thuật thử nghiệm thông qua việc sử dụng các công nghệ điện toán đám mây và internet hiện đại. Hôm nay chúng tôi sẽ phát hành phiên bản đầu tiên của ứng dụng lệnh SCPI. Đây là bản phát hành đầu tiên trong số một số bản phát hành cung cấp ứng dụng phần mềm “cứng rắn”, đa công cụ, dựa trên Python, có thể được sử dụng để thử nghiệm băng ghế dự bị đơn giản cũng như xác thực thiết kế phức tạp hơn. Có nhiều ví dụ về tập lệnh Python có sẵn miễn phí cho các trường hợp sử dụng công cụ cụ thể, nhưng khi xây dựng giải pháp cho khách hàng của mình, chúng tôi chưa gặp nhiều khung mục đích chung cho phép khả năng phục hồi, khôi phục lỗi, ghi nhật ký và kiểm soát nhiều công cụ. Chúng tôi đã thiết kế điều này từ đầu với nhiều khả năng được bao gồm

Đọc bên dưới để biết thêm về cách thức hoạt động

Yêu cầu
Trước tiên, bạn cần đảm bảo rằng bạn đã cài đặt các gói phần mềm bên dưới

  • con trăn. tải trăn
  • Python VXI11. Python VXI11 cung cấp trình điều khiển TCP/IP thuần python cho các công cụ dựa trên mạng LAN hỗ trợ giao thức VXI11. Điều này bao gồm hầu hết các công cụ LXI. kho lưu trữ GitHub. https. //github. com/python-ivi/python-vxi11

Tiếp theo, tải xuống mã scpi đơn giản từ đây. ​https. //github. com/gradientone/simple-scpi

Cách sử dụng
scpi_runner. py đọc tệp scpi_script để mở kết nối với một công cụ và gửi lệnh. Các lệnh và phản hồi của chúng được ghi vào một tệp nhật ký. Một tập lệnh mẫu được cung cấp trong scpi_script. mẫu để bạn sửa đổi khi cần thiết

Chúng tôi đã thêm các tính năng vào chương trình để làm cho nó “cứng cáp” hơn. Chúng bao gồm các tính năng phục hồi để xử lý ngoại lệ và các lỗi khác có thể được phát hiện mà không làm hỏng ứng dụng

Hết giờ
Scpi_runner sẽ hết thời gian chờ các lệnh và tập lệnh mất quá nhiều thời gian để chạy. Hết thời gian lệnh sẽ đưa ra một ngoại lệ và chạy lệnh tiếp theo. Nếu toàn bộ tập lệnh hết thời gian thì một ngoại lệ sẽ được đưa ra và các lệnh còn lại sẽ không chạy. Những thời gian chờ này có thể được sửa đổi bằng cách chỉnh sửa các giá trị được đặt trong cài đặt. py

Logic tập lệnh GradientOne
scpi_runner. py hỗ trợ các vòng lặp cơ bản và chế độ ngủ [độ trễ]. Cú pháp cho các đối tượng GradienOne ScriptLogic không phân biệt chữ hoa chữ thường, vì vậy G1. StartLoop và g1. startloop là tương đương

Để bắt đầu một khối lệnh thành vòng lặp, cần có lệnh StartLoop

G1:StartLoop:Max=:BreakOn=

Cần có Max, nếu không khối lệnh sẽ chỉ chạy một lần. BreakOn là tùy chọn. Chuỗi G1. StartLoop. Max=3 sẽ bắt đầu một vòng lặp chạy 3 lần. Sau đó, bạn nhập bao nhiêu lệnh cần thiết vào các dòng tiếp theo và kết thúc khối mã để lặp lại bằng một dòng có G1. EndLoop

Ví dụ

G1. StartLoop. Tối đa = 3
*IDN?
G1. EndLoop

Sẽ chạy *IDN?

Ngủ

Để thêm độ trễ vào tập lệnh của bạn ở giữa các lệnh, hãy sử dụng G1. Ngủ

G1:Sleep=

Ví dụ, để ngủ 2 giây

G1. Ngủ = 2

Điều này gọi thời gian của trăn. hàm sleep[] để trì hoãn việc chạy dòng tiếp theo. Điều này cũng có thể được sử dụng trong một vòng lặp

Trước khi chạy các ví dụ, hãy khởi động máy chủ SCPI, xác minh và điều chỉnh địa chỉ IP và số cổng trong mã python. Kết nối với máy chủ SCPI có thể được xác minh bằng NI MAX

Gói PyVISA cho giao tiếp VISA phải được thêm vào các dự án Python đã sử dụng. Phiên bản hiện đang được sử dụng là phiên bản 1. 11. 3

Mục đích của chương này là hướng dẫn bạn các bước để chạy thành công ví dụ điều khiển từ xa 'Xin chào thế giới' của chúng tôi. Ví dụ gửi một lệnh đến công cụ của bạn và đọc phản hồi của nó

Từ tất cả các hệ điều hành và kết nối vật lý khác nhau, chúng tôi chọn trường hợp phổ biến nhất. Kết nối mạng LAN trên hệ điều hành Windows. Là một môi trường lập trình, chúng tôi chọn một môi trường miễn phí sử dụng – Python trong PyCharm. Nhiều bước được mô tả là phổ biến và cũng có thể được sử dụng trong các trường hợp khác

Khi tiến hành các thí nghiệm khoa học, thiết bị thí nghiệm của bạn chính là “tai mắt” của bạn đo lường số lượng mà bạn đang cố gắng quan sát. Thông thường, người mua có xu hướng tập trung vào các thông số kỹ thuật như độ chính xác và độ phân giải, đồng thời để mắt đến giá cả. Mọi thứ khác là một chút của một suy nghĩ sau

Tuy nhiên, không có gì bí mật khi hầu hết các thiết bị có thương hiệu từ các công ty kiểm tra và đo lường có uy tín đều có một số khả năng lập trình đối với chúng. Các công cụ tốt hơn tuân thủ một số tiêu chuẩn, có giao diện lập trình từ xa, có thể đi kèm với trình điều khiển phần mềm, mã mẫu và thậm chí cả sách hướng dẫn lập trình dài hàng trăm trang

Tuy nhiên, theo kinh nghiệm của tôi, có rất nhiều thiết bị tốt nằm trên băng ghế dự bị, trong khi người vận hành xoay các nút từng bước một, ghi lại các kết quả đọc từng cái một vào sổ tay phòng thí nghiệm trong khi các giao diện điều khiển từ xa ở mặt sau của thiết bị đang hoạt động. . Mặt khác, họ đang sử dụng phần mềm đi kèm với thiết bị – một số có vẻ như được xây dựng từ thời Windows XP, nhưng hầu như lúc nào tôi cũng nghe thấy những lời phàn nàn về việc họ “ước gì” có thể làm điều gì đó hơi khác so với phần mềm. . g. sử dụng công cụ thứ hai hoặc thứ ba, kết hợp các công cụ từ các nhà cung cấp khác]

Khi tôi nhìn thấy điều này, nó khiến tôi thở dài thất vọng – bởi vì tôi cũng đã từng như thế này. Nhưng thay vì làm mòn các núm trên nhạc cụ của mình, tôi quyết định xem xét những gì cần thiết để tự động hóa việc này và thấy nó dễ dàng đến mức tôi tự hỏi tại sao rất ít người bận tâm thử. Có lẽ đó là hướng dẫn lập trình dày và cú pháp SCPI không thường gặp ở bất kỳ nơi nào khác

Kể từ đó, tôi không thể tưởng tượng được việc thực hiện hầu hết các thử nghiệm tôi đã thực hiện cho blog này mà không sử dụng tự động hóa SCPI thông qua pyvisa. Có nó bên cạnh giống như có trợ lý phòng thí nghiệm của riêng tôi không bao giờ mệt mỏi, không bao giờ phạm sai lầm, hoạt động ngay cả khi tôi đang ngủ… nó rất mạnh mẽ nhưng cũng tiềm ẩn nguy hiểm

Do đó, tôi quyết định tổng hợp hướng dẫn này để cố gắng đối chiếu tất cả kinh nghiệm của tôi vào một nơi dành cho những người muốn khai thác thêm một chút từ các công cụ có khả năng SCPI của họ. Hiểu biết về Python 3 cơ bản được giả định – đừng lo lắng, nó khá dễ học so với hầu hết các ngôn ngữ lập trình khác

Tuyên bố từ chối trách nhiệm. Hướng dẫn sau đây được cung cấp với thiện ý. Tác giả không thể chịu trách nhiệm cho bất kỳ lỗi, thiếu sót hoặc thiệt hại nào, bất kể chúng có thể xảy ra như thế nào, do sử dụng hoặc không thể sử dụng nội dung được cung cấp. Tự động hóa có thể nguy hiểm – vui lòng đảm bảo rằng bạn đã xem xét các rủi ro có thể phát sinh từ tình huống xấu nhất trước khi bắt tay vào sử dụng tự động hóa không cần giám sát cho các chuỗi thử nghiệm.

VISA là gì và pyvisa

Khi nói đến tự động hóa thiết bị kiểm tra, bạn có thể đã nghe nói đến thuật ngữ “VISA“. Không, nó không liên quan gì đến thẻ tín dụng – trên thực tế, nó là viết tắt của Virtual Instrument Software Architecture và nó là một API tiêu chuẩn ngành được sử dụng để giao tiếp với các công cụ từ máy tính. Có nhiều loại VISA khác nhau – phổ biến nhất là NI-VISA của National Instruments, ngoài ra còn có Keysight IO Libraries, Tektronix TekVISA, Rohde & Schwarz VISA, v.v. Mặc dù chúng được cho là có thể tương tác ở một mức độ nào đó, nhưng phần mềm được xây dựng dựa trên một VISA cụ thể có thể gặp khó khăn khi hoạt động với một VISA khác [theo kinh nghiệm của tôi], điều này có thể cần phải cài đặt nhiều VISA với một VISA được chỉ định là VISA chính. Đôi khi, điều này có thể dẫn đến xung đột phá vỡ hoàn toàn kết nối thiết bị

Công việc của VISA là giao tiếp chương trình ứng dụng của bạn [có thể được viết bằng C hoặc bất kỳ ngôn ngữ nào khác mà thư viện được cung cấp cho VISA của bạn] với thiết bị thông qua hệ điều hành và trình điều khiển của nó

Chương trình của bạn sẽ ra lệnh cho thiết bị thực hiện một số nhiệm vụ nhất định – điều này thường được thực hiện thông qua một ngôn ngữ gọi là SCPI [Lệnh tiêu chuẩn dành cho thiết bị có thể lập trình], được phát âm là “skippy”, giống như con chuột túi bụi rậm. Đây là các lệnh dựa trên chuỗi ASCII được gửi đến nhạc cụ – chi tiết hơn về điều này trong phần sau

Tự động hóa có thể được thực hiện thông qua việc viết một chương trình được biên dịch dựa trên VISA và đọc các lệnh SCPI, nhưng điều này có thể khá hạn chế. Phần lớn, các lớp VISA thương mại hoạt động trên Windows gần như phổ biến, nghĩa là các chương trình sẽ không tương thích với nhiều nền tảng. Các ngôn ngữ được cung cấp thường sẽ được giới hạn ở C hoặc các biến thể của nó. Việc phát triển sẽ rất nặng về mã với việc sử dụng các lệnh SCPI có thể dành riêng cho công cụ, hạn chế khả năng của chương trình được chuyển trực tiếp sang các công cụ khác

Do đó, cũng có các phương pháp tự động hóa khác – Trình điều khiển IVI-COM và IVI-C cố gắng trừu tượng hóa chức năng của thiết bị lên mức cao hơn, giải quyết các vấn đề về trao đổi giữa các mẫu thiết bị khác nhau. Các giải pháp tinh vi hơn như National Instruments LabVIEW cũng cung cấp giao diện lập trình đồ họa và đi tiên phong trong việc sử dụng trình điều khiển thiết bị cũng trừu tượng hóa chức năng ở cấp độ cao hơn cho phép thay thế thiết bị diễn ra dễ dàng hơn

Cá nhân tôi chưa bao giờ thực sự thích những thứ này. Mặc dù tôi có thể viết mã bằng C, nhưng khối lượng công việc tôi phải bỏ ra để thiết lập môi trường phát triển, hiểu tài liệu thư viện VISA và thực tế là nó thường được gắn với một bản phân phối VISA nhất định khiến nó không hấp dẫn. Việc nó không đa nền tảng cũng là một sự thất vọng lớn. Mặt khác, LabVIEW là một chi phí không chính đáng và là một con số khổng lồ về kích thước cài đặt của nó

Đây là lý do tại sao tôi quyết định tự động hóa bằng pyvisa. Nó là một “miếng đệm” nằm giữa chương trình Python của bạn và một lớp VISA [NI-VISA hoặc pyvisa-py]. Việc nó cho phép bạn lập trình bằng Python là một lợi thế lớn vì nó được hỗ trợ khá tốt với các thư viện, có nhiều tính năng và dễ học. Khả năng giao tiếp với pyvisa-py cũng có nghĩa là nó có thể hoạt động dễ dàng trên Linux. Cuối cùng, tôi đã đề cập rằng nó là mã nguồn mở và miễn phí chưa?

Những người hiểu biết hơn đã hỏi tôi – “vì một số công cụ có thể được điều khiển qua cổng TCP/IP hoặc nối tiếp RS-232, tại sao lại phải bận tâm đến VISA?”

  • Nó giúp mọi thứ nhất quán khi bạn giao dịch với nhiều công cụ
  • Nó xử lý thời gian chờ, định dạng lệnh và phân tích câu trả lời cho bạn để bạn không phải chuyển đổi một chuỗi như “6. 4892345E+05” thành số chẳng hạn
  • Nó giúp bạn dễ dàng chuyển đổi từ giao diện này sang giao diện khác – điều gì sẽ xảy ra khi đột ngột chương trình ổ cắm mạng LAN của bạn cần chạy bằng giao diện USB-TMC?
  • Nó cũng cho phép bạn sử dụng các giao thức phức tạp hơn thay vì chỉ kết nối ổ cắm đơn giản. Việc sử dụng VXI-11 cho phép truyền một số tín hiệu kiểu IEEE488, trong khi HiSLIP cho phép vận hành theo đường ống có thể cải thiện tốc độ. Trên hết, bạn không cần phải lo lắng về việc triển khai các giao thức này vì nó được xử lý bởi lớp VISA

Việc sử dụng pyvisa không giải quyết được vấn đề với các lệnh SCPI đôi khi dành riêng cho thiết bị, nhưng hiếm khi đây là vấn đề đối với các thử nghiệm một lần hoặc trong trường hợp phòng thí nghiệm tại nhà nơi bạn có thể không đủ khả năng mua dụng cụ mới thường xuyên. Bên cạnh đó, có một số lệnh cốt lõi phổ biến giữa tất cả các công cụ – dù sao thì hầu hết các thao tác đều có thể được thực hiện với các lệnh này

Kết nối lớp vật lý của thiết bị

Cách các công cụ kết nối với máy chủ đã thay đổi qua nhiều năm, tuy nhiên, có một số kết nối lớp vật lý, mỗi kết nối đều có những ưu điểm và nhược điểm riêng

Cái cũ nhất sẽ là Bus giao diện mục đích chung hoặc viết tắt là GPIB, còn được gọi là IEEE-488. Đây là một bus song song có đầu nối dải băng vi mô 24 tiếp điểm có kiểu dáng tương tự như đầu nối Centronics trước đây được sử dụng với máy in cổng song song, ngoại trừ những đầu nối này được bắt vít và có thể xếp chồng lên nhau. Bus này phát triển từ HP-IB và có thể hỗ trợ tối đa 15 thiết bị trên 20m trong một đoạn, tổng cộng tối đa 31 thiết bị trên một bus có bộ mở rộng hoạt động

Xe buýt cụ thể này hiện được coi là một dạng kết nối "cũ", chủ yếu vẫn tồn tại để đảm bảo khả năng tương tác thay thế thả vào của các thiết bị với các thiết lập thử nghiệm cũ hơn. Về tốc độ truyền dữ liệu, nó không nhanh bằng các hình thức kết nối mới nhất và nó có chi phí đáng kể vì bộ điều khiển và cáp có thể dễ dàng có giá bằng một nửa giá của một thiết bị. Nó có một ưu điểm chính và đó là các đường chuyên dụng có thể được sử dụng để đảm bảo nhiều thiết bị trên xe buýt được kích hoạt đồng bộ để thực hiện các phép đo cùng một lúc

Tiếp theo sẽ là cổng nối tiếp RS-232 khiêm tốn có thể được gọi là cổng “COM” trong thế giới PC của IBM. Cổng này thường được sử dụng cho thiết bị đầu cuối dữ liệu [modem] và chuột, nhưng cũng có thể được sử dụng với một số thiết bị chấp nhận lệnh SCPI qua cổng nối tiếp. Cổng này hiện đang trở nên hiếm thấy trên một số PC hiện đại, nhưng bộ điều hợp USB-to-Serial có thể được sử dụng để giao tiếp với các thiết bị đó. Tốc độ dữ liệu tương đối hạn chế, với tốc độ truyền phổ biến từ 300bps đến 115.200bps cho hầu hết các thiết bị. Cài đặt phù hợp [về tốc độ truyền, bit dữ liệu, chẵn lẻ, bit dừng] và cấu hình cáp [9 chân/25 chân, modem rỗng hoặc đường thẳng] rất quan trọng đối với truyền thông. Kết nối RS-232 là máy chủ đến thiết bị yêu cầu một cổng riêng cho từng thiết bị. Mặc dù có các dòng trạng thái và điều khiển luồng đặc biệt, nhưng chúng thường không được sử dụng cho mục đích đồng bộ hóa hoặc kích hoạt, thay vào đó, tất cả các lệnh đều chảy dưới dạng dữ liệu ASCII qua liên kết nối tiếp

Có một số thiết bị kết nối qua USB nhưng xuất hiện dưới dạng cổng nối tiếp bằng CDC [Lớp thiết bị truyền thông]. Trong những trường hợp này, bạn có thể giao tiếp với chúng như thể chúng được kết nối bằng kết nối nối tiếp, nhưng cách khác, một số thiết bị có thể được chuyển sang hoạt động USB-TMC, điều này có thể phù hợp hơn

Hình ảnh – bảng phía sau của Máy đo nguồn Keithley 2450, Tải điện tử B&K Precision Model 8600 DC và Bộ nguồn Rohde & Schwarz NGM202. Bạn có thể thấy tất cả các giao diện được đề cập không?

Từ đây, hầu hết các thiết bị đã chọn kết nối USB, điều này thuận tiện hơn nhiều vì nó chủ yếu là thao tác “cắm và chạy” mà không cần cấu hình hoặc yêu cầu trình điều khiển đặc biệt [ngoài việc chọn USB làm chế độ kết nối trong menu thiết bị . Kết nối USB đã được chuẩn hóa thông qua Lớp đo lường và kiểm tra USB [viết tắt là USB-TMC] và USB488. Điều này cho phép các thiết bị chạy với trình điều khiển tiêu chuẩn trong khi mô phỏng một số khả năng báo hiệu trạng thái của GPIB thông qua một định dạng thông báo đặc biệt. Việc sử dụng USB cũng thường có nghĩa là độ trễ nhất quán hơn – USB thăm dò thiết bị ở tần số 1kHz và trong khi là xe buýt dùng chung, thường có nhiều băng thông cho mục đích điều khiển thiết bị. Các hạn chế chủ yếu liên quan đến bus USB – ví dụ: khoảng cách tối đa từ thiết bị đến cổng là năm mét và một tầng sâu tối đa năm trung tâm thường được áp dụng, mặc dù có một số giải pháp có thể mở rộng ra ngoài những khoảng cách này. Bus cũng không bị cô lập, điều này có thể gây ra sự cố trong một số ứng dụng, mặc dù có sẵn các bộ mở rộng, bộ chuyển đổi phương tiện và bộ cách ly độc quyền. Thật không may, với các loại cáp giá rẻ và chứng nhận tương đối lỏng lẻo đối với các thiết bị được kết nối với nhau, một số thiết bị có thể không đáng tin cậy khi đối mặt với nhiễu EMI mạnh hoặc sự không tương thích của chipset, đặc biệt là ở khoảng cách xa hơn

Hình thức kết nối thiết bị hiện đại nhất là Ethernet - theo nghĩa đen làm cho thiết bị giống như một “Internet of Things”. Kết nối này được coi là khá phức tạp và tốn kém, yêu cầu phải triển khai ngăn xếp mạng Ethernet PHY, MAC và TCP/IP đầy đủ để cho phép kiểm soát mức “ổ cắm” cơ bản. Tuy nhiên, lợi ích gấp nhiều lần vì một thiết bị dựa trên IP có thể dễ dàng chia sẻ giữa các thiết bị khác trên cùng một mạng, có thể được truy cập tương tự như bất kỳ dịch vụ dựa trên IP nào khác [e. g. qua VPN] và có thể chia sẻ băng thông với các công cụ và thiết bị khác trên cùng một liên kết mạng. Nó cũng có những lợi ích của việc sử dụng kết nối Ethernet được cách ly bởi máy biến áp ở cả hai bên và có thể đạt tới 100m giữa công tắc và thiết bị gần nhất. Các công cụ hỗ trợ Ethernet cao cấp hơn tuân thủ LXI [Phần mở rộng LAN cho thiết bị] có thể cung cấp nhiều tính năng hơn bao gồm giao diện web, khám phá mDNS, giao thức VXI-11/Hi-SLIP và đồng bộ hóa thời gian. Mặc dù vậy, kết nối Ethernet thường đi kèm với một nhược điểm đáng kể về độ trễ, có thể thay đổi khá nhiều tùy thuộc vào mạng. Điều này có thể ảnh hưởng đến việc đồng bộ hóa kích hoạt thiết bị. Một điều nữa là hầu hết các thiết bị không được bảo mật theo bất kỳ cách nghiêm túc nào và do đó chỉ có thể được sử dụng trên một mạng an toàn chỉ có các nút đáng tin cậy

Cũng cần lưu ý rằng có những thiết bị cũng sử dụng USB và Ethernet nhưng có thể không tuân thủ các tiêu chuẩn liên quan và có thể sử dụng các giao thức riêng của chúng. Kiểm tra tài liệu được cung cấp từ nhà sản xuất thường sẽ làm rõ liệu thiết bị có khả năng SCPI hay không. Cũng đã có các xe buýt dành riêng cho nhà cung cấp khác để điều khiển từ xa không phải là tiêu chuẩn công nghiệp [e. g. Keithley TSP-Link] có thể được sử dụng trong một số trường hợp đặc biệt bằng cách “chuyển cổng” thông qua một công cụ để ra lệnh cho phần còn lại của xe buýt. Tương tự như vậy, có khả năng sử dụng bộ điều hợp và cổng để chuyển đổi GPIB hoặc USB sang Ethernet và ngược lại

Điều kiện tiên quyết của phần cứng & phần mềm

Để làm việc với pyvisa, bạn thực sự cần một hoặc nhiều công cụ hỗ trợ SCPI và một số cách kết nối chúng với máy tính của bạn. Đây có thể là hầu như bất kỳ thiết bị kiểm tra từ trung bình đến cao cấp nào [e. g. đồng hồ vạn năng kỹ thuật số, nguồn điện, máy phân tích quang phổ, v.v.] miễn là nó có kết nối GPIB, RS-232 Serial, USB [TMC] hoặc Ethernet [LXI] và hỗ trợ bộ lệnh SCPI [hãy kiểm tra hướng dẫn sử dụng thiết bị nếu bạn

Bạn cũng sẽ cần phần cứng phù hợp để kết nối nó với máy tính của mình, chẳng hạn như bộ điều khiển GPIB và cáp GPIB, cáp RS-232 đến cổng RS-232 hoặc bộ điều hợp USB, dây dẫn USB A đến B hoặc cáp Ethernet. Đương nhiên, loại kết nối và cáp sẽ phải khớp, trừ khi sử dụng bộ điều hợp hoặc cổng đặc biệt để tạo kết nối

Trước khi cắm điện, bạn có thể cần định cấu hình thiết bị của mình. Đảm bảo rằng giao diện phù hợp mà bạn định sử dụng được chọn thông qua menu thiết bị của bạn vì hầu hết các thiết bị chỉ có thể sử dụng một giao diện tại một thời điểm

  • Đối với kết nối GPIB, bạn sẽ cần định cấu hình địa chỉ [đối với thiết bị, thường là từ 1 đến 30] với một bus đơn thường giới hạn ở 20m tổng chiều dài cáp và 15 thiết bị
  • Trong trường hợp kết nối RS-232, hãy lưu ý tốc độ truyền, bit dữ liệu, bit chẵn lẻ và bit dừng mặc dù thông thường tốc độ truyền là quan trọng nhất vì các tham số còn lại thường là 8/N/1
  • Đối với các kết nối USB-TMC, có rất nhiều "cắm và chạy" giả sử phần mềm và trình điều khiển của bạn đã được cài đặt chính xác
  • Cuối cùng, đối với Ethernet, bạn sẽ cần biết liệu bạn muốn chạy cấu hình tự động DHCP hay liệu bạn sẽ cấp phát địa chỉ IP tĩnh cho thiết bị [và nếu vậy, địa chỉ IP tĩnh, mặt nạ mạng con, cổng và địa chỉ DNS . Cài đặt sai các địa chỉ này có thể gây ra xung đột mạng hoặc có thể có nghĩa là không thể truy cập nhạc cụ từ máy tính của bạn. Bạn có thể chọn kết nối các thiết bị Ethernet của mình với mạng cục bộ [LAN] thông qua một bộ chuyển mạch, mặc dù vậy, cần cẩn thận để đảm bảo rằng chỉ các thiết bị đáng tin cậy mới được sử dụng trên mạng này vì hầu hết các thiết bị Ethernet đều không có tính năng bảo mật và do đó, mọi thiết bị trong mạng LAN đều có khả năng . Không cần phải nói, các công cụ không nên được kết nối trực tiếp với Internet

Điều tốt nhất về pyvisa là nó giống như ở nhà trên hầu hết các hệ điều hành chính. Để chạy cái này, bạn sẽ cần cài đặt Python 3. x. Trên Windows, bạn có thể sử dụng gói “tất cả trong một” với nhiều thư viện phổ biến được cài đặt sẵn, chẳng hạn như WinPython [tôi sử dụng vì nó là portable] hoặc Anaconda. Trên Linux, Python thường đã được cài đặt sẵn hoặc có sẵn thông qua trình quản lý gói bằng cách sử dụng

sudo apt-get install python3 python3-pip

Khi bạn đã cài đặt xong, bạn sẽ cần cài đặt pyvisa. Trong Windows, điều đó đơn giản như chạy

pip install pyvisa

nhưng trong Linux, có lẽ bạn nên chạy cả lệnh này trực tiếp và sau đó thêm tiền tố sudo một lần nữa để đảm bảo rằng nó được cài đặt cho người dùng và quyền root của bạn vì người dùng của bạn có thể không có khả năng truy cập phần cứng [và nếu bạn không cung cấp đặc quyền đó cho người dùng của mình

Ghi chú. Nếu hệ thống Linux của bạn có Python 2 không dùng nữa. x làm trình thông dịch Python mặc định, bạn sẽ cần sử dụng pip3 thay vì pip và python3 thay vì python trong phần còn lại của hướng dẫn này

Nếu bạn được thông báo rằng phiên bản pip của bạn đã lỗi thời, bạn cũng có thể cập nhật nó bằng

python -m pip install –upgrade pip

Cuối cùng, vì pyvisa thực sự chỉ là một “trình bao bọc” cho một lớp VISA, bạn sẽ cần cài đặt một lớp VISA được hỗ trợ để giao tiếp với nó. Trên thực tế, nếu bạn đang chạy Windows, bạn nên sử dụng gói NI-VISA của National Instruments. Đây là một phần mềm cồng kềnh, nhưng nói chung nó là lớp VISA được hỗ trợ tốt nhất – một phiên bản của nó có thể đã được cài đặt trên máy tính của bạn bằng phần mềm “đi kèm” đi kèm với nhạc cụ của bạn. Có thể tránh sử dụng NI-VISA trên Windows, nhưng sau đó bạn sẽ cần phải tạo trình điều khiển của riêng mình cho từng công cụ và tự ký tên cho chúng và đó chỉ là một đống rắc rối

Tuy nhiên, trên Linux, bạn cũng sẽ cần cài đặt pyvisa-py cung cấp lớp VISA dựa trên Python, cũng như pyusb [dành cho thiết bị USB-TMC] và pyserial [dành cho thiết bị được kết nối Nối tiếp]. Điều này có thể được thực hiện bằng cách sử dụng lệnh sau [cả có và không có sudo]

pip install pyvisa-py pyusb pyserial

Đến bây giờ, bạn sẽ có một cài đặt sẵn sàng hoạt động. Để kiểm tra điều này – Người dùng WinPython sẽ cần mở Dấu nhắc lệnh WinPython và nhập python và họ sẽ được chào đón bằng một biểu ngữ có phiên bản Python. Người dùng Linux sẽ cần mở một cửa sổ đầu cuối và nhập python3 và họ sẽ được chào đón tương tự bằng biểu ngữ Python

Từ đó, bạn sẽ có thể gõ

import pyvisa

và nó sẽ quay lại dấu nhắc giống như ví dụ bên dưới. Nếu vậy thì xin chúc mừng, bạn đã cài đặt thành công và bạn có thể nhập exit[] để thoát

Python 3.6.6 [v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03] [MSC v.1900 
64 bit [AMD64]] on win32
Type "help", "copyright", "credits" or "license" for more 
information.
>>> import pyvisa
>>>

Ghi chú. Các ví dụ cũ hơn về mã có thể sử dụng dòng "nhập thị thực" thay vì "nhập pyvisa". Điều này vẫn được chấp nhận nhưng có thể gây ra xung đột vì một gói khác cũng sử dụng tên “visa” vì vậy bạn nên sử dụng “nhập pyvisa” từ bây giờ và đối với mã cũ hơn dựa trên tên thị thực, bạn có thể sử dụng “nhập pyvisa dưới dạng thị thực . Điều này được ghi nhận bởi lỗi mà bạn có thể gặp phải trên các phiên bản pyvisa mới hơn –

/usr/local/lib/python3.7/dist-packages/visa.py:23: FutureWarning: 
The visa module provided by PyVISA is being deprecated. You can 
replace `import visa` by `import pyvisa as visa` to achieve the 
same effect.

The reason for the deprecation is the possible conflict with the 
visa package provided by the 
//github.com/visa-sdk/visa-python which can result in hard 
to debug situations.
FutureWarning,

Tên tài nguyên VISA

Để sử dụng một nhạc cụ, trước tiên bạn phải biết cách xưng hô với nó. Mỗi công cụ có thể được truy cập thông qua VISA có địa chỉ duy nhất của riêng nó được gọi là Tên tài nguyên VISA. Có một số cách để bạn có thể kiểm tra thiết bị của mình và tên tài nguyên của chúng

Nếu bạn đang dùng Windows và sử dụng NI-VISA, thì bạn đã cài đặt một công cụ có tên là NI-MAX. Công cụ này cho phép bạn kiểm tra các thiết bị và giao diện có sẵn bằng cách mở rộng cây ở phía bên tay trái. Nhấp vào một công cụ sẽ hiển thị tên tài nguyên đầy đủ

Công cụ đặc biệt này cũng khá hữu ích để kiểm tra xem công cụ của bạn có hoạt động chính xác không – nhấp vào Mở Bảng kiểm tra VISA và nhấp vào nút Đầu vào/Đầu ra trên thanh công cụ trên cùng cho phép bạn gửi/nhận lệnh trực tiếp để kiểm tra hoạt động của công cụ thông qua

Đối với những máy đang chạy Linux hoặc không muốn gọi NI-MAX, bạn cũng có thể kiểm tra thiết bị nào được kết nối với máy của mình thông qua việc chạy một số lệnh Python như sau –

>>> import pyvisa
>>> rm = pyvisa.ResourceManager[]
>>> rm.list_resources[]
['USB0::0x05E6::0x2110::1374001::INSTR', 
'TCPIP0::192.168.80.18::inst0::INSTR', 
'TCPIP0::192.168.80.19::inst0::INSTR', 
'TCPIP0::192.168.80.3::inst0::INSTR', 'ASRL1::INSTR']

Kết quả là một ví dụ từ máy Windows chạy NI-VISA. Chạy giống nhau trên Raspberry Pi chạy Linux và pyvisa-py, các chuỗi khác nhau một chút –

________số 8_______

Lưu ý cách chuỗi tài nguyên USB sử dụng ký hiệu thập phân trong Linux thông qua pyvisa-py và hệ thập lục phân với NI-VISA. Bất kể, các chuỗi này thường có thể hoán đổi cho nhau. Cần lưu ý rằng các chuỗi có thể phân biệt chữ hoa chữ thường – “inst0” cần phải viết thường nếu không có thể xảy ra lỗi

Cuối cùng, đối với các công cụ dựa trên LXI LAN, có thể tìm thấy các chi tiết này và một số khả năng chỉ huy SCPI cơ bản thông qua giao diện web của chúng bằng cách truy cập trực tiếp vào địa chỉ IP trong trình duyệt web

Một số thiết bị sẽ không được tự động phát hiện, đặc biệt là một số thiết bị GPIB, nối tiếp và LAN [ổ cắm]. Điều này chỉ có nghĩa là bạn sẽ phải viết tên tài nguyên của riêng mình tương ứng với công cụ cụ thể, chẳng hạn

'ASRL1::INSTR' for Serial Port 1

'GPIB::5' for GPIB Instrument Address 5 [assuming one controller]

'GPIB1::10' for GPIB Instrument Address 10 [on the first controller]

'TCPIP0::192.168.80.61::5025::SOCKET' for a TCP/IP socket connection
...................... to 192.168.80.61 on the port 5025 [SCPI-RAW]

… và lớp VISA sẽ cố gắng tạo kết nối theo hướng dẫn, báo lỗi nếu không thể thiết lập liên lạc. Một số kết nối cụ thể này sẽ cần cấu hình tham số bổ sung để làm cho chúng có thể sử dụng được – xem phần Mẹo & Thủ thuật ở cuối để biết thêm chi tiết

Các loại và định dạng lệnh SCPI

Có lẽ bạn đã xem qua hướng dẫn lập trình cho công cụ của mình và bối rối trước độ dày của tài liệu – đừng lo, nhiều tài liệu liên quan đến các chi tiết nhỏ mà bạn có thể không cần quan tâm trừ khi bạn chọn sử dụng một tài liệu nhất định.

Bắt đầu với những điều cơ bản – tất cả các lệnh SCPI là các chuỗi ASCII mà bạn gửi đến nhạc cụ. Có hai loại lệnh SCPI – lệnh đặt và lệnh truy vấn. Các lệnh đặt yêu cầu thiết bị làm điều gì đó, trong khi các lệnh truy vấn yêu cầu thiết bị phản hồi với một số thông tin. Một số lệnh sẽ chỉ khả dụng dưới dạng lệnh thiết lập, một số khác chỉ là lệnh truy vấn trong khi các lệnh thông thường có thể khả dụng dưới dạng cả lệnh thiết lập và truy vấn để bạn có thể truy vấn giá trị nào đã được thiết lập trước đó. Một lệnh truy vấn có thể được phân biệt bằng sự hiện diện của dấu “?”

Về mặt lập trình, lệnh set bao gồm việc ghi một chuỗi vào nhạc cụ bao gồm ký tự kết thúc [thường là “\n”] trong khi lệnh truy vấn bao gồm viết chuỗi vào nhạc cụ có ký tự kết thúc và sau đó đọc phản hồi từ nhạc cụ [thường lên đến . Công cụ sẽ trả lời các truy vấn hợp lệ với dữ liệu, mặc dù một số thao tác có thể mất nhiều thời gian hơn các thao tác khác. Các truy vấn không hợp lệ thường sẽ dẫn đến lỗi được ghi lại, phát ra tiếng bíp và không có phản hồi. Truy vấn đọc từ thiết bị có thời gian chờ mặc định là 2000 mili giây – bất kỳ truy vấn nào mất nhiều thời gian hơn để trả về sẽ dẫn đến lỗi hết thời gian chờ trừ khi thời gian chờ được điều chỉnh cao hơn [xem Mẹo & Thủ thuật để biết thêm thông tin]. Tuy nhiên, việc đưa ra các lệnh truy vấn không chính xác sẽ dẫn đến thời gian chờ có thể yêu cầu bạn thực hiện các bước thủ công để khôi phục từ

Hầu hết các thiết bị chỉ có thể xử lý các lệnh SCPI theo trình tự và từng lệnh một. Do đó, điều quan trọng là nếu các lệnh truy vấn được đưa ra, thì kết quả mà chúng đặt trong bộ đệm đầu ra được đọc ra bằng cách mỗi lần ghi lệnh truy vấn được theo sau ngay lập tức bởi một lệnh đọc. Nếu điều này không được thực hiện, bạn có thể sử dụng nhạc cụ của mình sai nhịp và đọc sai phản hồi. Ngoài ra còn có thời gian dành cho máy tính, lớp VISA, hệ điều hành và lớp vật lý để truyền lệnh đến thiết bị; . Độ trễ này sẽ hạn chế tốc độ mà bạn có thể điều khiển nhạc cụ của mình

Các lệnh SCPI được sắp xếp theo thứ bậc bắt đầu từ gốc, được biểu thị bằng ký hiệu dấu hai chấm [. ]. Cấp độ đầu tiên bên dưới gốc thường được gọi là “hệ thống con”, cấp độ bên dưới thường được gọi là lệnh hoặc lệnh phụ và mỗi cấp độ được phân tách bằng dấu hai chấm. Theo mặc định, các lệnh được diễn giải bắt đầu từ cấp cơ sở

Các lệnh được liệt kê trong sách hướng dẫn lập trình theo cách tương tự như sau

pip install pyvisa
0

Bản thân lệnh SCPI thường không phân biệt chữ hoa chữ thường. Các lệnh có thể được viết tắt bằng cách bỏ tất cả các chữ thường. Các lệnh có thể được viết tắt thêm bằng cách bỏ qua các phần trong dấu ngoặc vuông là “tùy chọn” – những lựa chọn thay thế này thường có mặt để đảm bảo tuân thủ nghiêm ngặt các nguyên tắc phân cấp SCPI và để cải thiện khả năng tương thích với mã được viết cho các công cụ khác. Các lệnh có thể bắt đầu bằng một “. ” để đảm bảo chúng được hiểu là từ gốc, tuy nhiên, điều này không phải lúc nào cũng cần thiết nếu bạn không sử dụng lệnh nối [;]. Khi sử dụng nối lệnh, các lệnh tiếp theo được xử lý như thể chúng ở cùng cấp độ. Nhiều lệnh chấp nhận giá trị đầu vào – trong trường hợp của lệnh trên, đây sẽ là điện áp nhưng cũng có thể là một chuỗi. Giá trị trong ngoặc vuông có thể được bỏ qua

Do đó, các lệnh sau đều tương đương [cùng với các phiên bản chữ thường của chúng]

pip install pyvisa
1

Một số lệnh là những lệnh phổ biến mà bạn sẽ tìm thấy trên hầu hết tất cả các công cụ cùng loại [e. g. ĐO LƯỜNG. VOLT?] trong khi các lệnh khác có thể dành riêng cho một mẫu thiết bị nhất định. Đôi khi sách hướng dẫn lập trình của bạn sẽ đưa ra một số ghi chú hoặc đề xuất về điều này và các lệnh ưa thích để sử dụng [vì một số lệnh có thể là các lệnh kế thừa không khai thác hết khả năng của các công cụ mới hơn]

Một số lệnh phổ biến và lệnh bus có dạng khác, thay vì bắt đầu bằng dấu hoa thị [*]. Điều này bao gồm các lệnh như *RST, *IDN, *STB, *OPC, v.v. Các lệnh này là IEE488. 2 lệnh phổ biến thường hoạt động trên hầu hết các thiết bị hỗ trợ SCPI và thực hiện các chức năng đã xác định

Khi bạn đã hiểu rõ về điều này, bạn chỉ cần xem qua hướng dẫn lập trình của mình để tìm các lệnh bạn có thể cần để thực hiện bất kỳ thử nghiệm nào mà bạn muốn thực hiện. Thông thường, điều này sẽ chỉ liên quan đến một số lệnh trong số rất nhiều lệnh được cung cấp

Viết một vài chương trình pyvisa đơn giản

Phần này sẽ giới thiệu cho bạn một số chương trình rất đơn giản, chủ yếu ở đây để cung cấp tài liệu tham khảo về “bootstrap”, mang tính hướng dẫn một chút và giúp bạn tự tin hơn để tiếp tục viết mã của riêng mình

Chào thế giới

Chương trình đầu tiên bạn thường học viết là chương trình “Xin chào thế giới”. Trong trường hợp này, công cụ tương đương là một chương trình kết nối với một công cụ và truy xuất danh tính của nó

pip install pyvisa
2

Chương trình đơn giản này bắt đầu bằng cách nhập pyvisa, sau đó kết nối với trình quản lý tài nguyên. Từ đó, chúng tôi kết nối với tên tài nguyên VISA. Chúng tôi in kết quả của *IDN?

Hầu hết các dòng trong chương trình này sẽ phổ biến cho hầu hết các chương trình

Hiển thị văn bản và tiếng bíp

Có lẽ ý tưởng của bạn về “Xin chào thế giới” là hiển thị một số văn bản – một số công cụ có thể làm điều này với DISP. lệnh văn bản. Tương tự, chúng ta có thể làm cho nhạc cụ phát ra tiếng bíp bằng lệnh BEEP

pip install pyvisa
3

Kiểm soát đầu ra, đo điện áp và dòng điện

Bắt đầu với một cái gì đó nhẹ nhàng, còn một ví dụ đặt điện áp và dòng điện, bật đầu ra, đợi năm giây, đo điện áp và dòng điện, sau đó tắt đầu ra thì sao?

pip install pyvisa
4

Chương trình này phức tạp hơn một chút, nhưng thực sự làm được điều gì đó thiết thực. Bạn sẽ nhận thấy rằng chúng tôi cũng đã nhập mô-đun thời gian vì nó rất hữu ích để tạo độ trễ. Hệ thống con SOURCE của thiết bị đang được sử dụng để đặt điện áp và dòng điện đầu ra và hệ thống con MEASURE đang được sử dụng để đọc lại các giá trị, trong khi hệ thống con OUTPUT đang kiểm soát trạng thái đầu ra

Bạn sẽ nhận thấy rằng các lệnh thiết lập được viết bằng. chức năng ghi trong khi các truy vấn được viết bằng cách sử dụng. hàm query_ascii_values. Trên thực tế, có một số cách bạn có thể viết về các hàm truy vấn – bạn có thể sử dụng một. viết theo sau bởi một. read sẽ trả về cho bạn một đối tượng Python chứa phản hồi thô. Tuy nhiên, nhiều truy vấn đối với công cụ dẫn đến một hoặc nhiều giá trị số được phân tách bằng dấu phẩy được trả về, do đó, trong trường hợp đó, sử dụng. query_ascii_values ​​sẽ chuyển đổi nó thành một danh sách các đối tượng số trong Python một cách rất hữu ích – vì vậy thay vì làm việc với một chuỗi có thể nói “2. 9777E+02”, bạn có thể làm việc với số thực để có thể thực hiện các so sánh và phép toán trực tiếp trên kết quả. Tuy nhiên, ngay cả khi giá trị trả về chỉ là một giá trị duy nhất, hàm sẽ trả về một danh sách, vì vậy ký hiệu chỉ mục [i. e. [0]] được sử dụng để truy cập phần tử đầu tiên trong danh sách để in, trong khi hàm str được sử dụng để chuyển đổi số đó trở lại thành chuỗi có thể in được khi toán tử + mong đợi các loại dữ liệu phù hợp

Mặc dù chương trình đơn giản này có thể hoạt động, nhưng nó có một số thiếu sót sẽ được giải thích trong ví dụ phức tạp hơn một chút tiếp theo

Quét I-V

Hãy tưởng tượng rằng bạn muốn quét một đèn LED bằng cách sử dụng nguồn điện từ 0-3V trong các bước 1mV với giới hạn hiện tại là 20mA và ghi lại dữ liệu phát ra cùng với thời gian tính bằng Unix-giây, điều đó có thể xảy ra như thế nào?

Chà, nó không quá khó nhưng có một vài điều bạn có thể nên làm mà có thể không quá rõ ràng – đây là giải pháp của tôi

pip install pyvisa
5

Đoạn mã này mở rộng đáng kể so với ví dụ trên – bây giờ tôi cũng đã nhập mô-đun csv để cho phép viết một. tệp nhật ký csv [mặc dù nó cũng có thể được thực hiện bằng cách sử dụng trình xử lý tệp thông thường]

Một trong những vấn đề với mã trước đó là chúng tôi không biết trạng thái trước đó của công cụ là gì. Nó có thể có trong hầu hết mọi cấu hình, vì vậy chỉ cài đặt một vài cài đặt sẽ không đảm bảo đầu ra sẽ như những gì chúng ta mong đợi. Do đó, nên thực hiện lệnh *RST để đặt lại nhạc cụ về giá trị mặc định được liệt kê trong sách hướng dẫn để mọi thứ ở trạng thái đã biết

Một vấn đề khác là mã trước đó được thực thi nhưng không quan tâm đến trạng thái của nhạc cụ – ai đó có thể đã chơi với bảng điều khiển phía trước thay đổi cài đặt trong khi thực thi dẫn đến kết quả không mong muốn. Có một lệnh [HỆ THỐNG. REM] đặt thiết bị ở chế độ điều khiển từ xa, khóa bảng điều khiển phía trước cho đến khi SYST tương ứng. Cuộc gọi LOC được phát ra hoặc nó được mở khóa từ bảng điều khiển phía trước. Không phải tất cả các công cụ đều thực hiện lệnh này

Đối với các công cụ đa kênh, mỗi kênh được coi là “công cụ” riêng và một INST. NSEL hoặc INST. Lệnh SEL là cần thiết để chọn công cụ mà các lệnh sau sẽ được hướng đến. Trong trường hợp này, lệnh cho biết các lệnh sau có hiệu lực trên Kênh 1, tuy nhiên, một số lệnh là “toàn cầu” và sẽ ảnh hưởng đến tất cả các kênh [e. g. NGOÀI RA. GEN 0 tắt tất cả các đầu ra], vì vậy phải cẩn thận khi thực hiện các lệnh

Cuối cùng, cần lưu ý rằng việc ban hành MEAS riêng. vôn? . TIỀN? . Một điều nữa là một số công cụ có thể không thực sự đo khi bạn yêu cầu chúng và thay vào đó sẽ trả về giá trị hiện tại, vì vậy nếu công cụ xử lý lệnh nhanh, một vòng lặp có thể đọc cùng một giá trị nhiều lần

Đây là lúc việc đọc hướng dẫn sử dụng thiết bị của bạn là rất quan trọng – một số thiết bị sử dụng FETC? . Những thứ khác có thể cần được đặt thành trình kích hoạt phần mềm bằng TRIG. SOUR BUS, tiếp theo là lệnh INIT và *TRG để kích hoạt phép đo, sau đó là FETC? . Trong trường hợp NGM202 có phần sụn mới nhất, ĐỌC?

Lấy một ảnh chụp màn hình

Các công cụ không bị giới hạn chỉ trả về các giá trị ASCII. Trên thực tế, nhiều công cụ cũng có khả năng trả về dữ liệu nhị phân – một loại dữ liệu nhị phân phổ biến là ảnh chụp màn hình. Chương trình này là chương trình có thể kéo ảnh chụp màn hình và ghi nó vào một tệp –

pip install pyvisa
6

Chương trình này khác một chút so với các chương trình khác – nó viết một lệnh truy vấn và theo sau nó là lệnh gọi hàm read_raw để truy xuất dữ liệu hình ảnh từ hệ thống con HARDCOPY. Dữ liệu này thực sự được mã hóa theo một cách cụ thể – #nxxxxx trong đó n là một chữ số ASCII biểu thị số byte trong trường độ dài và x là các chữ số ASCII biểu thị số byte. Toàn bộ bản ghi được theo đuôi với ký tự kết thúc. Lập chỉ mục Python được sử dụng để "cắt" dữ liệu được trả về để xóa ký tự đầu và cuối, ghi dữ liệu nhị phân vào một tệp có tên là ảnh chụp màn hình. png [sẽ hợp lệ nếu công cụ của bạn trả về dữ liệu PNG – một số cũng trả về BMP]

Từ những ví dụ này, có thể thấy rõ rằng việc làm cho thứ gì đó hoạt động với pyvisa tương đối dễ dàng, nhưng để làm cho nó chống đạn cần một chút cẩn thận và hiểu biết về cách thức hoạt động của công cụ. Phần tiếp theo sẽ giới thiệu thêm một số mẹo và thủ thuật mà tôi chưa trình bày trong các ví dụ này. Hãy nhớ rằng đây chỉ là phần giới thiệu, vì vậy tôi sẽ không đề cập đến những điều phức tạp [e. g. thanh ghi có vấn đề về trạng thái] mà tôi có thể lưu lại cho hướng dẫn nâng cao hơn

Bạn cũng sẽ thấy, rải rác trên nhiều blog của tôi, một số mã pyvisa, vì vậy, hy vọng bạn có thể hiểu rõ hơn về các danh sách chương trình đó. Cần lưu ý rằng không phải lúc nào tôi cũng tuân theo phương pháp hay nhất vì đôi khi bạn có thể thực hiện một số lối tắt [đặc biệt đối với các thử nghiệm một lần] miễn là bạn hiểu rõ về công cụ của mình và cách thiết lập

Mẹo & thủ thuật tự động hóa SCPI chung

Phần này chỉ tổng hợp một số mẹo và thủ thuật để làm việc với các công cụ. Một số trong số này được coi là phương pháp hay nhất, trong khi một số khác là gợi ý mà tôi đã thu thập được khi làm việc với nhiều loại nhạc cụ khác nhau từ các nhà cung cấp khác nhau

Đặt giá trị

Mặc dù các ví dụ trên cho thấy một cài đặt giá trị rất đơn giản, cần lưu ý rằng bạn đang tin tưởng hoàn toàn rằng công cụ đã tuân theo mệnh lệnh của bạn. Nếu vì bất kỳ lý do gì, thiết bị không thực hiện được lệnh [e. g. lỗi giao tiếp, tràn bộ đệm hoặc hỏng], chương trình của bạn sẽ không biết trừ khi nó thực hiện thêm một số công việc. Một cách có thể là kiểm tra hàng đợi lỗi [xem tiểu mục sau]

Nhưng một phương pháp rất đơn giản khác là truy vấn giá trị đã đặt ngay sau đó để xem nó có khớp không [với biên độ nhỏ, do lỗi gây ra dấu phẩy động tiềm ẩn]. Ví dụ: nếu bạn thực hiện SOUR. VOLT 10, bạn có thể theo dõi điều đó với SOUR. vôn? . 00000+E01 hoặc tương tự. Đây được coi là thông lệ tốt, tuy nhiên, tôi thấy không cần thiết với các công cụ đáng tin cậy

Bạn cũng có thể tận dụng cơ hội sử dụng khả năng tự động hóa để đặt các giá trị theo thứ tự ngẫu nhiên – giả sử khi quét theo một hướng có thể tạo ra kết quả sai lệch, bạn có thể quét ngược lại hoặc theo thứ tự xáo trộn. Bạn cũng có thể tận dụng cơ hội để thực hiện nhiều bài đọc và tính trung bình cho chúng để có kết quả “đáng tin cậy” hơn và cũng có số liệu thống kê đi kèm với kết quả đó

Đồng bộ hóa, Hết giờ và Trì hoãn

Một vấn đề tiềm ẩn khác là chương trình của bạn không biết chính xác khi nào một lệnh set nhất định được thực thi, vì bạn có thể gửi một chuỗi các lệnh set nối tiếp nhau

Với mục đích này, có *OPC? . Ngoài ra, *WAI cũng là một lệnh khác có thể được sử dụng tương tự, mặc dù tôi thích cái trước hơn

Một vấn đề khác mà bạn có thể gặp phải là các công cụ chạy chậm hoặc các chuỗi lệnh dài có thể khiến công cụ của bạn phản hồi lâu hơn dự kiến. Điều này sẽ dẫn đến lỗi hết thời gian chờ nếu mất nhiều thời gian hơn thời gian chờ mặc định 2000 mili giây

Bạn có thể cấu hình lại thời gian chờ bằng cách sử dụng. chỉ thị hết thời gian, ví dụ

pip install pyvisa
7

sẽ định cấu hình lại thời gian chờ cho ins_ngm202 thành mười giây

Cũng có khả năng công cụ chậm của bạn có thể bị tràn bộ đệm nếu bạn gửi cho nó nhiều lệnh thiết lập theo trình tự mà không rắc *OPC? . Nó thường được coi là hình thức xấu để thêm vào độ trễ cố định [e. g. sử dụng thời gian. ngủ] nhưng đôi khi đó có thể là cách dễ nhất nếu hiệu suất không quan trọng

hàng đợi lỗi

Khi xảy ra lỗi trong quá trình thực thi các lệnh SCPI, chẳng hạn như do nhập sai lệnh hoặc lỗi giao tiếp, hầu hết các thiết bị sẽ phát ra tiếng bíp và có thể có đèn thông báo lỗi sáng lên trên màn hình

Bạn có thể đọc hàng đợi lỗi để tìm ra nguyên nhân lỗi bằng cách sử dụng SYST. LỖI? . Để truy xuất toàn bộ hàng đợi lỗi, yêu cầu phát hành lại lệnh cho đến khi bạn nhận được kết quả không có lỗi là “0” cho phần tử đầu tiên. Tính hữu ích của các thông báo có thể khác nhau giữa các công cụ, nhưng có thể là một cách tốt để kiểm tra hàng đợi lỗi trong chương trình của bạn để đảm bảo công cụ của bạn hoạt động chính xác

Cũng cần lưu ý rằng một số lỗi không nhất thiết phải xuất hiện trên hàng đợi lỗi và thay vào đó có thể đặt các byte trạng thái nhất định. Tham khảo hướng dẫn sử dụng của bạn để biết chi tiết vì mỗi công cụ sử dụng các byte trạng thái được ánh xạ bit của nó một cách khác nhau

Ngôn ngữ và cú pháp

Một số thiết bị có khả năng hoạt động bằng cả SCPI và ngôn ngữ khác. Ví dụ phổ biến nhất sẽ là các công cụ hỗ trợ Keithley TSP. Để đưa chúng vào chế độ SCPI, hãy sử dụng lệnh *LANG SCPI để chuyển bộ lệnh từ xa. Ngoài ra, bạn có thể chuyển đổi nó qua bảng điều khiển phía trước hoặc giao diện web

Ngoài ra còn có một số công cụ [chẳng hạn như Tektronix PA1000] yêu cầu rõ ràng mỗi lệnh bắt đầu bằng dấu hai chấm hoặc nếu không thì sẽ bị bỏ qua

Hầu hết các công cụ hơi kén chọn ký tự kết thúc, thường là ký tự xuống dòng [\n]. Gửi lệnh bằng \r\n có thể dẫn đến lỗi

Nhiều nhạc cụ

Có nhiều công cụ từ nhiều nhà cung cấp?

pip install pyvisa
8

Sau đó, bạn có thể viết thư cho từng người bằng cách sử dụng tên tương ứng –

pip install pyvisa
9

Ở phần trên, tập lệnh của tôi đang thiết lập một thử nghiệm mà tôi đã thực hiện cho MAX77751 RoadTest trong đó tôi cần bộ nguồn Rohde & Schwarz NGM202, tải điện tử B&K Model 8600 DC và đồng hồ vạn năng kỹ thuật số Keithley 2110 hoạt động cùng nhau. Sức mạnh của SCPI là tất cả chúng có thể đến từ các nhà cung cấp khác nhau nhưng vẫn hoạt động cùng nhau gần như liền mạch

Cũng lưu ý rằng ở phần trên, khi các đối số hàm của bạn cần ký tự trích dẫn kép và bạn đang sử dụng chuỗi trích dẫn kép, bạn sẽ cần thoát nó bằng ký tự dấu gạch chéo ngược “\”

Kết nối HiSLIP

Một số thiết bị hiệu suất cao cung cấp giao thức Ethernet có khả năng đường ống gọi là HiSLIP, viết tắt của High Speed ​​LAN Instrument Protocol. Đối với các thiết bị hỗ trợ HiSLIP, quét cổng sẽ hiển thị cổng 4880 đang mở

Do đó, các thiết bị Ethernet có thể được kết nối theo nhiều cách khác nhau –

python -m pip install –upgrade pip
0

Thông thường, việc sử dụng HiSLIP sẽ tốt hơn nếu lớp VISA của bạn hỗ trợ nó, tuy nhiên, việc sử dụng VXI-11 phổ biến hơn, đặc biệt là giữa các thiết bị hỗ trợ LXI và ổ cắm thô tương thích hơn với các thiết bị hỗ trợ Ethernet trước LXI cũ hơn

Kết nối ổ cắm

Giao diện với các công cụ dựa trên ổ cắm [i. e. các công cụ hoặc cổng cũ hơn không triển khai HiSLIP hoặc VXI-11] cần nhiều hơn là chỉ thay đổi tên tài nguyên VISA. Nếu bạn chỉ thay đổi tên tài nguyên, bạn sẽ nhanh chóng phát hiện ra rằng bất kỳ lệnh truy vấn nào bạn gửi tới công cụ sẽ kết thúc sau thời gian chờ. Điều này là do bạn phải khai báo rõ ràng các ký tự kết thúc sẽ được sử dụng trong phiên bản kết nối ổ cắm. Tham khảo hướng dẫn hoặc một số thử và sai có thể cần thiết

python -m pip install –upgrade pip
1

Ví dụ: sử dụng Keithley 2110 của tôi thông qua cầu USB-TMC tới Ethernet, cấu hình bổ sung bắt buộc là giá trị read_termination

python -m pip install –upgrade pip
2

Tuy nhiên, một số công cụ hơi khác một chút – ví dụ: Rohde & Schwarz HMP4040 của tôi quyết định trả lời bằng ký tự xuống dòng cho một bộ và lệnh truy vấn. Do đó, nó cần cả bộ read_termination và query_termination

Dụng cụ không đáng tin cậy/khó

Một thực tế đáng tiếc là một số thiết bị có thể không đáng tin cậy khi làm việc dưới điều khiển từ xa. Điều này có thể dẫn đến việc mất kiểm soát thiết bị trong quá trình thử nghiệm, liên tục phát ra tiếng bíp/phát ra các lỗi mật mã ngẫu nhiên sau khi chạy trong một khoảng thời gian nhất định hoặc một số lệnh nhất định không hoạt động theo cách chúng yêu cầu trong sách hướng dẫn

Trước khi nhổ tóc, bạn nên kiểm tra xem mình đã kết nối nhạc cụ bằng cáp chất lượng chưa. Tôi đã gặp các trường hợp trong đó cáp USB kém, bộ chia tín hiệu hoặc sự cố tương thích với bộ điều khiển USB trên máy chủ của tôi với công cụ kiểm tra đã gây ra "lỗi chung" ngẫu nhiên theo cách ngẫu nhiên không thể lặp lại. Đôi khi, bạn có thể thấy việc thay cáp bằng cáp được sàng lọc chất lượng có độ dài cần thiết tối thiểu có thể loại bỏ sự cố

Ngoài ra, thỉnh thoảng có thể cần phải cấp nguồn cho các thiết bị của bạn để đảm bảo chúng hoạt động ổn định. Thay thế các công cụ là một lựa chọn khác, mặc dù đắt tiền

Nhưng đôi khi, điều quan trọng là phải viết mã một cách phòng thủ và cố gắng khắc phục lỗi tốt nhất có thể. Điều này có thể bao gồm việc sử dụng các vòng lặp thử, ngoại trừ để thử đọc lại nhiều lần nếu xảy ra lỗi. Có lẽ sau một số lỗi nhất định, bạn có thể thử đóng tay cầm của thiết bị và thiết lập lại kết nối của thiết bị

Không thành công, tôi đã mất nhiều thời gian tích hợp mã để chuyển các công tắc nguồn có thể điều khiển từ xa sang các thiết bị có chu kỳ năng lượng cứng để đưa chúng hoạt động trở lại, mặc dù đây là một “cách tiếp cận mạnh mẽ”. Rất may, hầu hết các công cụ hiện đại có xu hướng khá đáng tin cậy

Tự động hóa có thể nguy hiểm

Điều quan trọng cần nhớ - tự động hóa rất thuận tiện và mạnh mẽ, nhưng nó cũng có thể cực kỳ nguy hiểm. Hãy tưởng tượng một tình huống trong đó bạn có thể đang sạc pin bằng nguồn điện – điều gì sẽ xảy ra nếu bạn đột nhiên mất kết nối với nhạc cụ của mình hoặc nhạc cụ ngừng phản hồi hoàn toàn?

Mặc dù rất nhiều thử nghiệm có thể được thực hiện thuận tiện với tự động hóa, nhưng bạn nên cân nhắc thực hiện cẩn thận để đảm bảo rằng “tình huống xấu nhất” không khiến bạn hoặc thiết bị của bạn phải trả giá đắt. Có một công tắc nguồn điều khiển từ xa dự phòng để cách ly nguồn điện khỏi giá nhạc cụ của bạn có thể là một kế hoạch dự phòng đơn giản có thể được kích hoạt theo kịch bản trong trường hợp xảy ra sự cố. Mặt khác, đảm bảo rằng các tập lệnh của bạn sẽ cảnh báo bạn về các vấn đề, rằng bạn có sẵn ai đó mà bạn có thể liên hệ và biết phải làm gì để tắt thiết bị của bạn một cách an toàn có thể rất quan trọng. Dù bạn làm gì, đừng để điều này như một suy nghĩ sau

Ngay cả khi không có điều này, bạn nên có sẵn một thiết bị thứ hai để theo dõi thiết bị thứ nhất – ví dụ, khi có ý kiến ​​thứ hai có thể rất quan trọng vì có thể sai lệch nhỏ về điện áp có thể dẫn đến hậu quả hỏa hoạn. Nhiều thiết bị nguồn có các biện pháp bảo vệ quá điện áp, quá dòng và quá điện trên bo mạch – việc thiết lập các biện pháp này một cách thích hợp có thể mang lại sự an toàn thứ hai ngay cả khi mã của bạn định cấu hình sai đầu ra thành thứ gì đó không phù hợp

Phần kết luận

Toàn bộ ý tưởng về kiến ​​trúc VISA là cho phép tất cả các loại công cụ được điều khiển thông qua phần mềm theo một cách thống nhất. Bạn không cần phải lo lắng về việc liệu thiết bị của bạn có đến từ một nhà cung cấp duy nhất hay không – mọi thứ sẽ hoạt động bình thường. Bộ lệnh SCPI tiêu chuẩn hóa định dạng lệnh và các bộ lệnh phổ biến cho các loại thiết bị kiểm tra khác nhau. Hầu hết các thiết bị từ các nhà cung cấp thiết bị kiểm tra có thương hiệu đều hỗ trợ sử dụng kết nối điều khiển từ xa qua GPIB, RS-232, USB hoặc Ethernet và sử dụng các lệnh SCPI

Tôi hy vọng rằng thông qua việc đọc hướng dẫn này, bạn nhận ra rằng tự động hóa thiết bị kiểm tra không khó. Với việc sử dụng pyvisa làm trung gian giữa Python và lớp VISA, có thể điều khiển các công cụ bằng ngôn ngữ Python dễ học trong khi vẫn hoàn toàn miễn phí và đa nền tảng. Định dạng tiêu chuẩn của các lệnh SCPI, một khi đã hiểu, giúp dễ dàng ra lệnh cho các công cụ thực hiện các hành động và thực hiện các phép đo. Bằng cách có thể tự động hóa việc sử dụng thiết bị kiểm tra, bạn có thể thực hiện các thí nghiệm tốt hơn bằng cách làm cho chúng có thể lặp lại một cách nhất quán, bạn có thể đọc chính xác hơn so với cách khác mà bạn có thể thực hiện bằng tay và thậm chí bạn có thể thực hiện các thí nghiệm không giám sát trong đó chương trình có thể đưa ra quyết định dựa trên . Tất nhiên, có một số chi tiết tốt hơn và các phương pháp hay nhất mà tôi đã đề cập đến trong hướng dẫn này

Bắt đầu không quá khó khăn và những cuốn sách hướng dẫn lập trình dày cộp đó không có gì đáng sợ. Khi bạn nhận ra tất cả các khả năng được mở ra cho mình thông qua tự động hóa SCPI, bạn có thể sẽ không quay lại xoay các nút và viết ra các giá trị khi thực hiện các chuỗi thử nghiệm. Vì vậy, nếu bạn có một công cụ hỗ trợ SCPI, đã đến lúc kết nối nó và bắt đầu tự động hóa

SCPI được sử dụng để làm gì?

SCPI [Lệnh tiêu chuẩn dành cho công cụ có thể lập trình] là ngôn ngữ lập trình dựa trên ASCII dành cho công cụ kiểm tra và đo lường . Các lệnh SCPI sử dụng cấu trúc phân cấp được gọi là hệ thống cây. Các lệnh liên quan được nhóm lại dưới một nút hoặc gốc chung, do đó tạo thành các hệ thống con.

Công nghệ SCPI là gì?

SCPI là một tiêu chuẩn ngôn ngữ lập trình được thiết kế dành riêng cho việc điều khiển các công cụ . Nó xác định cách bạn giao tiếp với các công cụ này từ một máy tính bên ngoài.

Máy chủ SCPI là gì?

Các lệnh tiêu chuẩn cho các công cụ có thể lập trình [SCPI; thường được phát âm là "skippy"] xác định một tiêu chuẩn cho cú pháp và các lệnh để sử dụng trong việc điều khiển các thiết bị kiểm tra và đo lường có thể lập trình, such as automatic test equipment and electronic test equipment.

LabVIEW có sử dụng SCPI không?

LabVIEW có thể nói chuyện với các công cụ bằng cách sử dụng nối tiếp ngay khi mở hộp và nó biết cách nói chuyện với các Lệnh tiêu chuẩn dành cho các công cụ có thể lập trình [SCPI] .

Chủ Đề