Một vấn đề cơ bản khi sử dụng PC để điều khiển chuyển động, không có phần cứng chuyên dụng, là tốc độ dữ liệu của các đầu ra khác nhau được tích hợp trong hầu hết các PC. Nếu khách hàng của bạn không có ngân sách cho bộ điều khiển chuyển động cao cấp mà bạn đề cập, thì họ sẽ không có quyền truy cập vào tín hiệu 100 kHz.
Bộ điều khiển I/O cho mỗi cổng cung cấp một số loại đệm để bạn có được kết quả mượt mà. Điều này phần lớn phục vụ mục đích giảm bớt phần mềm từ sự cần thiết phải 'bit-bang' những tín hiệu đó, và cũng làm cho tần số I/O ổn định hơn nhiều.
Nhược điểm là bộ đệm có thể sẽ giới thiệu độ trễ trong hệ thống, điều này có thể ảnh hưởng đến mạch điều khiển vòng kín hiệu suất với điều khiển trong phần mềm. Một nhược điểm khác là giới hạn tùy chọn tần số của bạn. Một trong những tùy chọn I/O nhanh nhất trên PC không cung cấp điều khiển lưu lượng cao như USB hoặc SATA thực sự là cổng âm thanh, nhưng giới hạn ở 64 kHz hoặc 44 kHz trên hầu hết các hệ thống.
Nếu cổng âm thanh là tùy chọn cho bạn, thì bạn không cần phải lo lắng về thời gian, Chỉ cần đảm bảo bạn đặt tần số đúng cách và tạo tín hiệu như bạn muốn.
Nếu bạn cần sử dụng tín hiệu số, cổng song song và nối tiếp hoạt động theo cách tương tự
, nhưng ở tốc độ tối đa thấp hơn.
EDIT Hmm ... Có vẻ như các cổng parallel nhanh hơn một chút so với trước đây. Một máy tính có khả năng nâng cao cổng song song (EPP) có thể cung cấp cho bạn tối đa 2mbits băng thông nhị phân, điều này cũng nên nằm trong tầm với của mục tiêu của bạn. Tuy nhiên, do cách giao diện song song hoạt động, tốc độ dữ liệu phụ thuộc vào thiết bị ngoại vi, thay vì tốc độ bộ đệm được xác định trước. Về cơ bản, thiết bị ngoại vi thừa nhận rằng nó đã nhận được dữ liệu, hoặc nó đã sẵn sàng để gửi dữ liệu, cho mỗi byte được chuyển.
Đây không phải là quá xấu, mặc dù, bởi vì một đơn giản, đồng hồ hướng ngoại vi là dễ dàng để thiết lập.
Ngoài ra, dữ liệu không thể truyền theo cả hai hướng cùng một lúc, dữ liệu đến từ thiết bị ngoại vi sẽ khiến luồng dữ liệu từ máy chủ lưu trữ bị chặn.Một cách có thể để phá vỡ đó là chỉ cần sắp xếp để có hai cổng song song có sẵn, hoặc sắp xếp cho các thiết bị ngoại vi để hạn chế truyền dữ liệu riêng của mình cho mỗi chu kỳ khác.
I/O trên một cổng như vậy thường bị gián đoạn điều khiển. Bên cạnh một vài trạng thái lỗi, các ngắt hữu ích nhất được tạo ra khi đầu vào hoặc đầu ra của FIFO đạt đến một mức nhất định. Bạn có thể sử dụng ngắt này để ghi (hoặc đọc) dữ liệu mới vào cổng. Ngưỡng này có thể được đặt ở bất kỳ đâu từ 1 đến 16 byte. Bạn nên kiểm tra cẩn thận (với một máy phân tích logic/dao động) rằng dữ liệu thực sự đang chảy với tốc độ mong đợi, với tốc độ mong đợi. Bạn có thể làm điều này gần như tốt trong phần mềm sử dụng QueryPerformanceCounter.
Bạn có thể mô tả việc sử dụng bộ đếm thời gian không: nó có cung cấp dấu thời gian như được đọc khi một sự kiện khác xảy ra không? Là nó để kích hoạt một gián đoạn? Liệu nó cần phải được thiết lập lại như cho một cơ quan giám sát? – wallyk
Vấn đề là ngắt có thể xảy ra bất cứ lúc nào và kéo dài tới vài giây trên một hệ điều hành thời gian thực. Bạn không có lịch trình đảm bảo. Vì vậy, ngay cả NẾU bạn sử dụng bộ đếm thời gian nhanh như 100 kHz, điều khiển một CNC trực tiếp từ Windows có vẻ như không thể đối với tôi. –