Trong trạm PLC luôn có sự trao đổi dữ liệu giữa CPU và với các module mở rộng thông qua bus nội bộ. Ngay tại đầu vòng quét, các dữ liệu tại cổng vào của các module số (DI) đã đợc CPU chuyển tới bộ đệm vào số (process image input table-I). Cuối mỗi vòng quét nội dung của bộ đệm ra số (process image output table-Q) lại đợc CPU chuyển tới cổng ra của các module ra số(DO). Việc thay đổi nội dung hai bộ đệm này đợc thực hiện bởi chơng trình ứng dụng ( user program). Điều này, cho thấy nếu trong chơng trình ứng dụng có nhiều lệnh đọcgiá trị cổng vào số thì cho dù giá trị logic thực có của cổng vào này đã bị thay đổi trong quá trình thực hiện vòng quét, chơng trình sẽ vẫn luôn đọc đợc cùng một giá trị I và giá trị đó chính là giá trị của cổng vào có tại thời điểm đầu vòng quét. Cũng nh vậy, nếu chơng trình ứng dụng nhiều lần thay đổi giá trị cho một cổng ra số thì do nó chỉ thay đổi nội dung bit nhớ tơng ứng trong Q nên chỉ có giá trị ở lần thay đổi cuối cùng mới thực sự đợc đa tới cổng ra vật lý của module DO.
Khác hẳn với việc đọc/ghi cổng số, việc truy nhập cổng vào/ra tơng tự lại đợc CPU thực hiện trực tiếp với module mở rộng(AI/AO). Nh vậy mỗi lệnh đọc giá trị từ địa chỉ thuộc vùng PI(peripheral input) sẽ thu đợc một giá trị đúng bằng giá trị thực có ở cổng tại thời điểm thực hiện lệnh. Tơng tự khi thực hiện lệnh gửi một giá trị (số nguyên 16 bits) tới địa chỉ của vùng PQ (peripheral output), giá trị đó sẽ đợc gửi ngay tới cổng ra tơng tự của module.
Sở dĩ có sự khác nhau nh vậy là do đặc thù về sự tổ chức bộ nhớ và phân chia địa chỉ S7-300. Chỉ có các module vào/ra số mới có bộ đệm còn các module vào/ra tơng tự thì không, chúng chỉ đợc cung cấp địa chỉ để truy nhập ( địa chỉ PI và PQ).
Ngôn ngữ lập trình STL
Các loại PLC nói chung thờng có nhiều ngôn ngữ lập trình nhằm phục vụ các đối tợng sử dụng khác nhau. PLC S7-300 có ba ngôn ngữ lập trình cơ bản. Đó là:
- Ngôn ngữ "liệt kê lệnh", ký hiệu là STL (Statement list). Đây là dạng ngôn ngữ lập trình thông thờng của máy tính. Một chơng trình đợc ghép bởi nhiều câu lệnh theo một thuật toán nhất định, mỗi lệnh chiếm một hàng và đều có cấu trúc chung:
"tên lệnh" + "toán hạng".
- Ngôn ngữ "hình thang", ký hiệu là LAD (Ladder logic). Đây là dạng ngôn ngữ đồ họa thích hợp với những ngời quen thiết kế mạch điều khiển logic.
- Ngôn ngữ "hình khối", ký hiệu là FBD (Function block diagram). Đây cũng là kiểu ngôn ngữ đồ họa dành cho ngời có thói quen thiết kế mạch điều khiển số.
Một chơng trình viết trên LAD hoặc FBD có thể chuyển sang đợc dạng STL, nhng ng- ợc lại thì không. Trong STL có nhiều lệnh không có trong LAD hay FBD.