Bài giảng Thiết bị Siemens S7-300

pdf 83 trang phuongnguyen 2940
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Thiết bị Siemens S7-300", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_thiet_bi_siemens_s7_300.pdf

Nội dung text: Bài giảng Thiết bị Siemens S7-300

  1. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Bài giảng Thiết bị Siemens S7-300 Nội dung bài giảng: Giới thiệu sơ lược về dòng sản phẩm của Siemens: Logo: Dòng sản phẩm sơ cấp ,được sử dụng cho những ứng dụng nhỏ,có tác dụng thay thế cho những ứng dụng sử dụng nhiều rơle trung gian,timer .,nhằm giảm không gian lắp đặt tủ điện. Do logo chỉ là những Logic Modul do vậy chỉ được sử dụng cho việc thay thế những mạch số đơn giản với số lượng I/O nhỏ 24In,16Out Ưu điểm của Logo là dễ dàng sử dụng,dễ dàng lập trình và thay đổi dữ liệu .Có thể lập trình trực tiếp trên Logo bằng cách sử dụng Logo có màn hình.Giá thành tương đối hợp lí. Ứng dụng : Chủ yếu trong hệ thống chiếu sáng công cộng,hệ thống chiếu sáng trong toà nhà,sử dụng trong các máy xà gồ,và một số máy đơn giản S7_200: Dòng sản phẩm trung cấp,được sử dụng trong những ứng dụng trung bình với số lượng I/O vừa phải (khoảng 128 ),đối với dòng sản phẩm S7_200 này đã được tích hợp đầy đủ những hàm toán cho tất cả những ứng dụng cần thiết cho mọi hệ thống tự động,ngôn ngữ cũng như giao diện lập trình dễ hiểu ,thân thiện,giúp cho mọi người đều có thể dễ dàng tiếp cận.Tuy nhiên,thông thường S7-200 vẫn được sử dụng cho những ứng dụng riêng lẻ,còn trường hợp muốn mở rộng mạng thì vẫn nên sử dụng S7_300 Ứng dụng : Trong các nghành đá,Bê tông ,Gốm sứ,Ximăng,sắt thép Có thể sử dụng cho hệ thống SCADA nhỏ ( kết nối S7_200 với máy tính thông qua PC Access,để có thể truy cập và quản lí dữ liệu : Trạm trộn Bê Tông .) S7_300,400: Dòng sản phẩm cao cấp ,được dùng cho những ứng dụng lớn với những yêu cầu I/O nhiều và thời gian đáp ứng nhanh,yêu cầu kết nối mạng,và có khả năng mở rộng cho sau này. Ngôn ngữ lập trình đa dạng cho phép người sử dụng có quyền chọn lựa.Đặc điểm nổi bật của S7_300 đó là ngôn ngữ lập trình cung cấp những hàm toán đa dạng cho những yêu cầu chuyên biệt như : Hàm SCALE Hoặc ta có thể sử dụng ngôn ngữ chuyên biệt để xây dựng hàm riêng cho ứng dụng mà ta cần. Ngoài ra S7-300 còn xây dựng phần cứng theo cấu trúc Modul,nghĩa là đối với S7-300 sẽ có những Modul tích hợp cho những ứng dụng đặc biệt như Modul PID,Modul Đọc xung tốc độ cao . Màn Hình : Siemens còn cung cấp tất cả các loại màn hình ứng dụng trong công nghiệp như màn hình màu,màn hình đen trắng,màn hình máy tính công nghiệp Các màn hình này có thể kết nối với các loại PLC để có thể dễ dàng thay đổi dữ liệu ,hoặc có thể kết nối thành mạng ProfiBus. Dòng C7: Dòng C7 về nguyên tắc nó được xem như là sự kết hợp giữa PLC và màn hình,tức là ta có thể hiểu C7 là màn hình có thể kết hợp với I/O cho những ứng dụng trong công nghiệp,được kết nối theo mạng Profibus. I/Đại số Boolean: 1/ Biến và hàm số 2 trị: Người soạn : Hà văn Trí 1
  2. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Khi mô tả đối tượng bằng mô hình toán học ta phải biểu diễn các đại lượng vào ra của đối tượng,các đại lượng này là các hàm phụ thuộc theo thời gian. Biến hai trị hay còn gọi là biến Boolean là loại hàm số mà miền giá trị của nó chỉ có 2 phần tử,hai phần tử đó là 0 và 1 Vd: Công tắc là một biến ngõ vào 2 trị : đóng (kí hiệu là 1) và mở (kí hiệu là 0) Đèn hiệu là một biến ngõ ra 2 trị : sáng (kí hiệu là 1) và tắt (kí hiệu là 0) Hai biến được gọi là độc lập nhau nếu sự thay đổi của biến này không ảnh hưởng đến biến kia. 2/Các phép toán trên hàm 2 trị: a/Phép Not: x = not(y) y X 0 1 1 0 b/Phép hợp (phép cộng): x= y+z y z X 0 0 0 0 1 1 1 0 1 1 1 1 c/Phép giao : x=y^z y z X 0 0 0 0 1 0 1 0 0 1 1 1 - Chuyển đổi từ mạch rơle nút nhấn ,đèn sang viết chương trình PLC II/Biểu diễn số nguyên dương: 1/Trong hệ cơ số 10 (hệ thập phân): Một số nguyên dương Un bất kì,trong hệ cơ số 10 bao giờ cũng được biểu diễn đầy đủ bằng dãy con số nguyên từ 0 đến 9 Vd: Un = 349 được biểu diễn trong hệ cơ số 10: 349 = 3*102 + 4*101 + 9*100. 2/Trong hệ cơ số 2 (hệ nhị phân): Cách biểu diễn Un trong hệ cơ số 10 chưa phù hợp với nguyên tắc mạch điện ( hay nguyên tắc hàm 2 trị).Để sử dụng nguyên tắc hàm 2 trị ( số 0 hoặc 1) ta đưa ra 1 khái niệm Bit 1 Bit bao gồm 2 trị 0 hoặc 1,do vậy 1 số có thể biểu diễn trong hệ nhị phân dưới dạng Bit vd: Un = 205 có thể được biểu diễn dưới dạng 8 Bit: 1 1 0 0 1 1 0 1 205 = 1*27 + 1*26 + 0*25 + 0*24 + 1*23 + 1*22 + 0*21 + 1*20 3 / Trong hệ cơ số 16 ( hệ Hexadecimal): Người soạn : Hà văn Trí 2
  3. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Cũng giống như hệ cơ số 10,1 nguyên dương bất kì cũng có thể biểu diễn trong hệ cơ số 16 như sau: Vd: 7723 = 1E2B = 1* 163 + 14* 162 + 2* 161 + 11*160 E B 4/ Mã BCD của số nguyên dương: Vd: số 259 dưới dạng mã BCD: 0010 0101 1001 2 5 9 III/ Thiết bị điều khiển Logic khả trình: 1/ PLC ( Progranable Logic Control) : Thiết bị điều khiển Logic khả trình PLC Là loại thiết bị cho phép thực hiện linh hoạt các thuật toán điều khiển số thông qua một ngôn ngữ lập trình ,thay cho việc phải thể hiện thuật toán đó bằng mạch số .Như vậy với chương trình điều khiển trong mình ,PLC trở thành bộ điều khiển nhỏ gọn ,dễ thay đổi thuật toán và đặc biệt dễ trao đổi thông tin với môi trường xung quanh ( với các PLC khác hoặc với máy tính).Toàn bộ chương trình được lưu trong bộ nhớ.dưới dạng các khối chương trình (OB,FC,FB ) và được thực hiện với chu kì quét. Để có thể thực hiện một chương trình điều khiển.Tất nhiên PLC phải có tính năng như một máy tính .Nghĩa là phải có một bộ vi xử lí trung tâm ( CPU),một hệ điều hành,một bộ nhớ chương trình để lưu chương trình cũng như dữ liệu và tất nhiên phải có các cổng vào rađể giao tiếp với các thiết bị bên ngoài Bên cạnh đó ,nhằm phục vụ bài toán điều khiển số ,PLC phải có các khối hàm chức năng như Timer,Counter,và các hàm chức năng đặc biệt khác. Người soạn : Hà văn Trí 3
  4. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Bộ nhớ chương trình Khối vi xử kí Timer Bộ đệm trung tâm + Hệ Bộ đếm vào ra điều hành Bit cờ Cổng vào ra Quản lí ghép Cổng ngắt và nối đếmtốc độ cao 2/ Các Tín hiệu kết nối với PLC: a/Tín hiệu số : Là các tín hiệu thuộc dạng hàm Boolean, dạng tín hiệu chỉ có 2 trị 0 hoặc 1. Đối với PLC Siemens : Mức 0 : tương ứng với 0V hoặc hở mạch Mức 1 : Tương ứng với 24V Vd: Các tín hiệu từ nút nhấn ,từ các công tắc hành trình đều là những tín hiệu số b/ Tín hiệu tương tự : Là tín hiệu liên tục, từ 0-10V hay từ 4-20mA . Vd: Tín hiệu đọc từ Loadcell,từ cảm biến lưu lượng c/ Tín hiệu khác : Bao gồm các tín hiệu giao tiếp với máy tính ,với các thiết bị ngoại vi khác bằng các giao thức khác nhau như giao thức RS232,RS485,Modbus . 3/ Các Modul của PLC S7_300: Thông thường để tăng tính mềm dẻo trong ứng dụng thực tế mà ở đó phần lớn các đối tượng điều khiển có số tín hiệu đầu vào đầu ra cũng như chủng loại tín hiệu vào ra khác nhau mà các bộ điều khiển PLC được thiết kế không bị cứng hoá về cấu hình .Chúng được chia nhỏ thành các Modul.số các Modul được sử dụng nhiều hay ít tuỳ theo từng bài toán ,song tối thiểu bao giờ cũng có Modul chính là Modul CPU. Các Modul còn lại là những Modul nhận truyền tín hiệu với đối tượng điều khiển ,các Modul chức năng chuyên dụng như PID,điều khiển động cơ Chúng được gọi chung là Modul mở rộng.Tất cả các Modul được gắn trên những thanh ray ( Rack). Người soạn : Hà văn Trí 4
  5. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS a/ Modul CPU: Modul CPU là loại Modul chứa vi xử lí,hệ điều hành ,bộ nhớ ,các bộ thời gian ,bộ đếm,cổng truyền thông ( RS485) . Và có thể còn có một vài cổng vào ra số.Các cổng vào ra số trên CPU được gọi là cổng vào ra Onboard. Trong họ PLC S7_300 có nhiều loại CPU khác nhau : CPU 312,CPU 314 ,CPU 315 . Những Modul cùng sử dụng một loại bộ vi xử lí ,nhưng khác nhau về cổng vào ra onboard cũng như các khối hàm đặc biệttích hợp sẵn trong thư viện của hệ điều hành phục vụ việc sử dụng các cổng vào ra onboard này sẽ được phân biệt với nhau tong tên gọi bằng tên cụm chữ cái IFM( viết tắt của Intergrated Function Module ).Ví dụ Module CPU 312IFM,Modul314 IFM . Ngoìa ra còn có các loại module hai cổng truyền thông,trong đó cổng truyền thông thứ 2 có chức năng chính là phục vụ việc nối mạng phân tán .Các loại module CPU được phân biệt với những loại CPU khác bằng thêm cụm từ DP ( Distrubited port)trong tên gọi. Ví dụ module CPU 315-DP b/Các Modul mở rộng: Các Modul mở rộng được chia thành 5 loại chính: i/ PS(Power Supply): Modul nguồn nuôi ii/ SM ( Signal Module): Modul tín hiệu vào ra bao gồm: DI ( Digital Input) DO ( Digital Output) DI/DO ( Digital In/Output) AI ( Analog Input ) AO ( Analog Output) AI/AO ( Analog In/Output) iii / IM ( Interface Module) : Modul ghép nối. Đây là loại Modul chuyên dụng có nhiệm vụ nối từng nhóm các Modul mở rộng lại với nhau thành từng một khối và được quản lí chung bởi một module CPU. Thông thường các Modul mở rộng được gá liền với nhau trên một thanh đỡ gọi là Rack. Trên mỗi một Rack chỉ có thể gá được nhiều nhất 8 module mở rộng ( không kể module CPU ,module nguồn nuôi). Một module CPU có thể làm việc trực tiếp với nhiều nhất 4 Rack,và các Rack này phải được nối với nhau bằng Module IM IM360 :truyền IM361:nhận. - FM ( Function Module): Các Modul điều khiển riêng,như điều khiển Servo,điều khiển PID - CP( Communication Module):Module truyền thông 2/ Tín Hiệu: Thông thường có 2 tín hiệu Tín hiệu số: Tín hiệu mức 1 hoặc mức 0 ( true hoặc False), Vd: I0.0,Q0.0 . Tín hiệu tương tự : Là tín hiệu analog được đọc từ các Modul analog Vd : PIW256 . 3/Kiểu dữ liệu và phân chia bộ nhớ: a/Kiểu Bool: True hoặc False ( 0 hoặc 1) VD: M0.0 b/Kiểu Byte : gồm 8 Bit c/Kiểu Word Người soạn : Hà văn Trí 5
  6. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS d/Kiểu Int e/Kiểu Dint f/ Kiểu Real h/Kiểu S5T: k/ Kiểu Char i/Kiểu Date j/Kiểu Tod: 4/ Bộ nhớ PLC: gồm 3 vùng chính. a/Vùng chứa chương trình ứng dụng : Vùng chứa chương trình được chia thành 3 miền : i/ OB ( Organisation block) : miền chứa chương trình tổ chức. ii/ FC ( Function) : Miền chứa chương trình con ,được tổ chức thành hàm và có biến hình thức để trao đổi dữ liệu iii/ FB ( Function block) : Miền chứa chương trình con ,được tổ chức thành hàmvà có khả năng trao đổi dữ liệu với bất cứ 1 khối chương trình nào khác .Các dữ liệu này phải được xây dựng thành một khối dữ liệu riêng ( Data Block khối DB) b/ Vùng chứa tham số của hệ điều hành: Chia thành 7 miền khác nhau I ( Process image input ) : Miền dữ liệu các cổng vào số,trước khi bắt đầu thực hiện chương trình ,PLC sẽ đọc giá trị logic của tất cả các cổng đầu vào và cất giữ chúng trong vùng nhớ I.Thông thường chương trình ứng dụng không đọc trực tiếp trạng thái logic của cổng vào số mà chỉ lấy dữ liệu của cổng vào từ bộ đệm I. Q ( Process Image Output): Miền bộ đệm các dữ liệu cổng ra số .Kết thúc giai đoạn thực hiện chương trình,PLC sẽ chuyển giá trị logic của bộ đệm Q tới các cổng ra số.Thông thường chương trình không trực tiếp gán giá trị tới tận cổng ra mà chỉ chuyển chúng tới bộ đệm Q. M ( Miền các biến cờ): CHương trình ứng dụng sử dụng những biến này để lưu giữ các tham số cần thiết và có thể truy nhập nó theo Bit (M) ,byte (MB),từ (MW) hay từ kép (MD). T ( Timer): Miền nhớ phục vụ bộ thời gian ( Timer) bao gồm việc lưu trữ giá trị thời gian đặt trước ( PV-Preset Value ),giá trị đếm thời gian tức thời ( CV –Current Value) cũng như giá trị Logic đầu ra của bộ thời gian. C ( Counter): Miền nhớ phục vụ bộ đếm bao gồm việc lưu trữ giá trị đặt trước ( PV- Preset Value),giá trị đếm tức thời ( CV _ Current Value)và giá trị logic đầu ra của bộ đệm. PI : Miền địa chỉ cổng vào của các Modul tương tự ( I/O External input). Các giá trị tương tự tại cổng vào của modul tương tự sẽ được module đọc và chuyển tự động theo những địa chỉ.Chương trình ứng dụng có thể truy cập miền nhớ PI theo từng Byte ( PIB),từng từ PIW hoặc từng từ kép PID . PQ: Miền địa chỉ cổng ra cho các module tương tự ( I/O External Output).Các giá trị theo những địa chỉ này sẽ được module tương tự chuyển tới các cổng ra tượng tự .Chương trình ứng dụng có thể truy nhập miền nhớ PQ theo từng Byte (PQB),từng từ (PQW) hoặc theo từng từ kép (PQD). Người soạn : Hà văn Trí 6
  7. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS c/ Vùng chứa các khối dữ liệu: được chia làm 2 loại: DB(Data Block):Miền chứa dữ liệu được tổ chức thành khối .Kích thước cũng như số lượng khối do người sử dụng quy định ,phù hợp với từng bài toán điều khiển.Chương trình có thể truy nhập miền này theo từng bit (DBX),byte (DBB),từ (DBW) hoặc từ kép (DBD). L (Local data block) : Miền dữ liệu địa phương ,được các khối chương trình OB,FC,FB tổ chức và sử dụng cho các biến nháp tức thời và trao đổi dữ liệu của biến hình thức với những khối chương trình gọi nó .Nội dung của một khối dữ liệu trong miền nhớ này sẽ bị xoá khi kết thúc chương trình tương ứng trong OB ,FC,FB.Miền này có thể được truy nhập từ chương trình theo bit (L),byte(LB) từ (LW) hoặc từ kép (LD). 5/ Vòng quét chương trình: PLC thực hiện chương trình theo chu kì lặp .Mỗi vòng lặp được gọi là vòng quét (Scan) .Mỗi vòng quét được bắt đầu bằng giai đoạn chuyển dữ liệu từ các cổng vào số tới vùng bộ đệm ảo I,tiếp theo là giai đoạn thực hiện chương trình .Trong từng vòng quét chương trình thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OB ( Block End).Sau giai đoạn thực hiện chương trình là giai đoạn chuyển các nội dung của bộ đệm ảo Qtới các cổng ra số .Vòng quét được kết thúc bằng giai đoạn truyền thông nội bộvà kiểm tra lỗi. Chú ý rằng bộ đệm I và Q không liên quan tới các cổng vào ra tương tự nên các lệng truy nhập cổng tương tự được thực hiện trực tiếp với cổng vật lí chứ không thông qua bộ đệm. Thời gian cần thiết để PLC thực hiện 1 vòng quét gọi là thời gian vòng quét (Scan Time).Thời gian vòng quét không cố định ,tức là không phải vòng quét nào cũng được thực hiện trong một khoảng thời gian như nhau .Có vòng quét được thực hiện lâu ,có vòng quét được thực hiện nhanh tuỳ thuộc vào số lệnh trong chương trình được thực hiện và khối dữ liệu truyền thông trong vòng quét đó. Như vậy giữa việc đọc dữ liệu từ đối tượng để xử lí ,tính toán và việc gởi tín hiệu điều khiển đến đối tượng có một khoảng thời gian trễ đúng bằng thời gian vòng quét .Nói cách khác ,thời gian vòng quét quyết định tính thời gian thực của chương trình điều khiển trong PLC .Thời gian vòng quét càng ngắn ,tính thời gian thực của chương trình càng cao. Nếu sử dụng các khối chương trình đặc biệt có chế độ ngắt ,,ví dụ như khối OB40,OB80 , chương trình của các khối đó sẽ được thực hiện trong vòng quét khi xuất hiện tín hiệu báo ngắt cùng chủng loại.Các khối chương trình này có thể được thực hiện tại mọi điểm trong vòng quét chứ không bị gò ép là phải ở trong giai đoạn thực hiện chương trình.Chẳng hạn nếu 1 tín hiệu báo ngắt xuất hiện khi PLC đang ở giai đoạn truyền thông và kiểm tra nội bộ,PLC sẽ ngừng công việc truyền thông ,kiểm tra để thực hiện khối chương trình tương ứng với tín hiệu báo ngắt đó .Với hình thức xử lí tín hiệu ngắt như vậy,thời gian vòng quét sẽ càng lớn khi càng có nhiều tín hiệu ngắt xuất hiện trong vòng quét .Do đó để nâng cao tính thời gian thực cho chương trình điều khiển ,tuyệt đối không nên viết chương trình xử lí ngắt quá dài hoặc quá lạm dụng việc sử dụng chế độ ngắt trong chương trình điều khiển. Tại thời điểm thực hiện lệnh vào ra ,thông thường lệnh không làm việc trực tiếp với cổng vào ra mà chỉ thông qua bộ đệm ảo của cổng trong vùng nhớ tham số.Việc truyền thông giữa bộ đệm ảo với ngoại vi trong các giai đoạn 1 và 3 do hệ điều hành CPU quản lí .Ở 1 số modul CPU ,khi gặp lệnh vào ra ngay lập tức,hệ thống sẽ cho dừng mọi công việc khác ,ngay cả chương trình xử lí ngắt,để thực hiện lệnh trực tiếp với cổng vào ra. Người soạn : Hà văn Trí 7
  8. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS 6 / Cấu trúc chương trình: Chương trình trong S7_300 được lưu trong bộ nhớ của PLC ở vùng giành riêng cho chương trình và có thể được lập với 2 dạng cấu trúc khác nhau. a/ Lập trình tuyến tính: toàn bộ chương trình nằm trong một khối trong bộ nhớ .Loại hình cấu trúc tuyến tính này phù hợp với những bài toán tự động nhỏ,không phức tạp .Khối được chọn phải là khối OB1 ,là khối mà PLC luôn quét và thực hiện các lệnh trong đó thường xuyên,từ lệnh đầu tiên đến lệnh cuối cùng và quay lại lệnh đầu tiên. b/ Lập trình có cấu trúc: Chương trình được chia thành những phần nhỏ và mỗi phần thực thi những nhiệm vụ chuyên biệt riêng của no,từng phần này nằm trong những khối chương trình khác nhau .Loại hình cấu trúc này phù hợp với những bài toán điều khiển nhiều nhiệm vụ và phức tạp .PLC S7_300 có 4 loại khối cơ bản sau: - Loại khối OB ( Organization Block) : Khối tổ chức và quản lí chương trình điều khiển .Có nhiều loại khối OB với những chức năng khác nhau ,chúng được phân biệt với nhau bằng một số nguyên đi sau nhóm kí tự OB. Ví dụ: OB1,OB35,OB40,OB80, - Loại khối FC (Program block): Khối chương trình với những chức năng riêng giống như 1 chương trình con hoặc một hàm ( chương trình con có biến hình thức).Một chương trình ứng dụng có thể có nhiều khối FC và các khối FC này được phân biệt với nhau bằng một số nguyên sau nhóm kí tự FC. Ví dụ: FC1,FC2 . - Loại khối FB ( Function Block) :Là loại khối FC đặc biệt có khả năng trao đổi 1 lượng dữ liệu lớn với các khối chương trình khác .Các dữ liệu này phhải được tổ chức thành khối dữ liệu riêng có tên gọi là Data block.Một chương trình ứng dụng có thể có nhiều khối FB và các khối Fb này được phân biệt với nhau bằng một số nguyên sau nhóm kí tự FB.Chẳng hạn như FB1,FB2 - Loại khối DB ( Data Block) : Khối chứa các dữ liệu cần thiết để thực hiện chương trình .Các tham số của khối do người dùng tự đặt .Một chương trình ứng dụng có thể có nhiều khối DB và các khối DB này được phân biệt với nhau bằng một số nguyên sau nhóm kí tự DB Ví dụ: DB1,DB2 . Chương trình trong các khối được liên kết với nhau bằng các lệng gọi khối ,chuyển khối.Xem những phần chương trình trong các khối như là các chương trình con thì S7_300 cho phép gọi chương trình con lồng nhau ,tức là chương trình con này gọi một chương trình con khác và từ một chương trình con được gọi lại gọi tới một chương trình con thứ 3 Số các lệnh gọi lồng nhau phụ thuộc vào từng chủng loại module CPU mà ta đang sử dụng. Ví dụ đối với module CPU 314 thì số lệnh gọi lồng nhau nhiều nhất có thể cho phép là 8.Nếu số lần gọi khối lồng nhau mà vượt quá con số giới hạn cho phép ,PLC sẽ tự chuyển qua chế độ Stop và đặt cờ báo lỗi. 7/ Các khối OB đặc biệt: Trong khi khối OB được thực hiện đều đặn ở từng vòng quét trong giai đoạn thực hiện chương trình thì các khối OB khác chỉ được thực hiện khi xuất hiện tín hiệu báo ngắt tương ứng ,nói cách khác chương trình viết cho các khối OB này chính là chương trình xử lí tín hiệu ngắt (event).Chúng bao gồm: Người soạn : Hà văn Trí 8
  9. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS OB10 ( Time of Day Interrupt):Chương trình trong khối sẽ được thực hiện khi giá trị của đồng hồ thời gian thực nằm trong một khoảng thời gian đã được quy định.OB10 có thể gọi một lần ,nhiều lần cách đều nhau từng phút, từng giơ,từng ngày .Việc quy định khoảng thời gian hay số lần gọi OB10 được thực hiện nhờ chương trình hệ thống SFC28 hoặc trong bảng tham số của module CPU nhờ phần mềm Step 7. OB20 ( Time Day Interrupt): Chương trình trong khối sẽ được thực hiện sau một khoảng thời gian trễ đặt trước kể từ khi gọi chương trình hệ thống SFC32 để đặt thời gian trễ. OB35 (Cyclic Interrupt): Chương trình trong OB35 sẽ được thực hiện cách đều nhau 1 khoảng thời gian cố định.Mặc định khoảng thời gian này sẽ là 100ms,xong ta có thể thay đổi nó trong bảng tham số của module CPU ,nhờ phần mềm Step7. OB40 (Hardware Interrupt) : Chương trình trong OB sẽ được thực hiện khi xuất hiện 1 tín hiệu báo ngắt từ ngoại vi đưa vào module CPU thông qua các cổng vào ra số onboard đặc biệt,hoặc thông qua các module SM,CP,FM OB80 (Cycle Time Fault): Chương trình trong khối OB80 sẽ được thực hiện khi thời gian vòng quét(Scan time) vượt quá khoảng thời gian cực đại đã được quy định hoặc khi có một tín hiệu ngắt gọi một khối OB nào đó mà khối OB này chưa kết thúc ở lần gọi trước.Mặc định thời gian Scan time cực đại là 150ms ,nhưng có thể thay đổi nó thông qua bảng tham số của module CPU nhờ phần mềm Step 7. OB81 (Power Supply fault): CPU sẽ gọi chương trình trong khối OB81 khi phát hiện thấy có lỗi về nguồn nuôi. OB82( Diagnostic Interrupt):Chương trình trong OB82 được gọi khi CPU phát hiện sự cố từ các Modul vào ra OB85( Not Load fault):Chương trình trong OB82 được gọi khi CPU phát hiện thấy chương trình ứng dụng có sử dụng chế độ ngắt nhưng chương trình sử lí tín hiệu ngắt lại không có trong khối OB tương ứng. OB87 ( Communication fault):Khối OB87 sẽ được gọi khi CPU phát hiện thấy lỗi trong truyền thông ví dụ như không có tín hiệu trả lời từ các đối tác. OB100 ( Start Up Information):Khối OB100 sẽ được thực hiện 1 lần khi CPU chuyển trạng thái Stop sang Run. OB121 ( Synchronous error):Khối OB121 sẽ được gọi khi CPU phát hiện thấy lỗi logic trong chương trình như đổi sai kiểu dữ liệu hoặc lỗi truy nhập khối DB ,FC,FB không có trong bộ nhớ CPU. OB122 ( Synchronous error):Khối OB122 sẽ được gọi khi CPU phát hiện thấy lỗi truy cập module trong chương trình,ví dụ chương trình có lệnh truy nhập module vào ra mở rộng nhưng lại không tìm thấy module này. 8/Các Loại CPU: CPU 312: Bộ nhớ làm việc 16KB ,chu kì lệnh 0.1us Người soạn : Hà văn Trí 9
  10. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS CPU 312C : Bộ nhớ làm việc 16KB,chu kì lệnh 0.1us,tích hợp sẵn 10DI/6DO,2 Xung tốc độ cao 2.5KHz,2 kênh đọc xung tốc độ cao 10Khz. CPU 312IFM : Bộ nhớ làm việc 6KB,chu kì lệnh 0.6us,tích hợp sẵn 10DI/6DO CPU 313 : Bộ nhớ làm việc 12KB,chu kì lệnh 0,6us CPU 313C : Bộ nhớ làm việc 32KB,chu kì lệnh 0,1us, tích hợp sẵn 24DI,16DO,5AI ,2AO ,3 Kênh xuất xung tốc độ cao (2.5Khz) ,3 kênh đọc xung tốc độ cao (30Khz) CPU 313C-2DP: Bộ nhớ làm việc 32KB,chu kì lệnh 0.1us ,tích hợp sẵn 24DI,16DO,5AI ,2AO ,3 Kênh xuất xung tốc độ cao (2.5Khz) ,3 kênh đọc xung tốc độ cao (30Khz),có 2 cổng giao tiếp . CPU 313C-2PtP : Bộ nhớ làm việc 32KB,chu kì lệnh 0.1us ,tích hợp sẵn 24DI,16DO,5AI ,2AO ,3 Kênh xuất xung tốc độ cao (2.5Khz) ,3 kênh đọc xung tốc độ cao (30Khz),có 2 cổng giao tiếp . MPI+ PtP connector (RS-422/485 (ASCII, ) CPU 314: Bộ nhớ làm việc 24KB ,chu kì lệnh 0.3us CPU 314IFM : Bộ nhớ làm việc 24KB,chu kì lệnh 0.3us, tích hợp sẵn 20DI/16DO ,4AI / 1AO CPU 314C-2DP:Bộ nhớ làm việc 48KB,chu kì lệnh 0.1us,tích hợp sẵn 24DI / 16DO ,5AI / 2AO , 4 kênh xuất xung tốc độ cao,4 kênh đọc xung tốc độ cao.2 cổng giao tiếp . CPU 314C-2PtP:Bộ nhớ làm việc 48KB,chu kì lệnh 0.1us,tích hợp sẵn 24DI / 16DO ,5AI / 2AO , 4 kênh xuất xung tốc độ cao,4 kênh đọc xung tốc độ cao.2 cổng giao tiếp . CPU 315 : Bộ nhớ làm việc 48KB ,chu kì lệnh 0.3us CPU 315-2DP: Bộ nhớ làm việc 48KB ,chu kì lệnh 0.3us , MPI + DP CPU 315F-2DP : Bộ nhớ làm việc 128KB,chu kì lệnh 0.3us , 2 cổng giao tiếp. CPU 316 : Bộ nhớ làm việc 128KB ,chu kì lệnh 0.3us CPU 316-2DP: Bộ nhớ làm việc 128KB,chu kì lệnh 0.3us , 2 cổng MPI + DP CPU 317-2: Bộ nhớ làm việc 512KB ,chu kì lệnh 0.3us,2 cổng giao tiếp MPI + DP CPU 317F-2: Bộ nhớ làm việc 512KB,chu kì lệnh 0.3us ,2 cổng giao tiếp MPI + DP ( DP master hoặc Slave) CPU 318-2: Bộ nhớ làm việc 256KB ,chu kì lệnh 0.3us ,2 cổng giao tiếp MPI + DP ( DP Master hoặc Slave). CPU 614: Bộ nhớ làm việc 192KB,chu kì lệnh 0.3us , tích hợp sẵn 512DI/DO CPU M7: RS232,MPI 64KB SRAM 10/ Các loại Function Module : FM300: Controller Module: FM 355C PID Module: Module điều khiển PID ,4 kênh điều khiển PID ,4AI + 8DI + 4AO FM 355S PID Module: Module điều khiển PID ,4 kênh điều khiển PID ,4AI + 8DI + 8DO Người soạn : Hà văn Trí 10
  11. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS FM 355 Temperature Controller: Module điều khiển nhiệt độ 4 kênh 4AI + 8DI + 4AO FM 355 Temperature Controller: Module điều khiển nhiệt độ 4 kênh 4AI + 8DI + 8DO M7 Application Module: 4MB,RS232,64KB Sram. CAM Controller : FM352 CAM Module : 1 kênh điều khiển. CNC Controller : NCU 570 FM-NC : Điều khiển CNC Counter Module : FM350-1 Counter Module : Module đếm ở tốc độ cao 1 kênh FM350-2 : Module đếm ở tốc độ cao 8 kênh Possition Module : Module điều khiển vị trí FM351 FIXED SPEED POS : Module điều khiển vị trí FM353 Fstepper Motor : Module điều khiển động cơ bước 4DI + 4DO FM354 F Servo Motor : Module điều khiển động cơ Servo 4DI + 4DO Modul Nguồn :Có 3 loại Modul nguồn 10A,5A,2A PS 307 Modul Rack : Chọn Rack (Rail) để định dạng cho cấu hình phần cứng. Modul SM300 : Bao gồm các loại Modul : Modul Analog Input (AI): Modul đọc 2 kênh,đọc 8 kênh với các loại tín hiệu khác nhau như dòng :4-20mA (theo cách đấu 2 dây và 4 dây ) ,đọc tín hiệu áp 0-10VDC , đọc tín hiệu RTD,TC Modul AI/AO : Modul vừa đọc AI ,vừa xuất tín hiệu Analog OutPut Modul AO : Modul xuất tín hiệu Analog Output. Modul DI : Modul đọc tín hiệu số Modul DO: Modul xuất tín hiệu số Modul DI/DO : Modul vừa đọc và xuất tín hiệu số. 1/ Các vùng nhớ S7_300: Trong S7_300 có các vùng nhớ sau: I: Input, các ngõ vào số. Q:Output, các ngõ ra số. M: Internal Memory, vùng nhớ nội. DB: Data Block, dữ liệu. Khi sử dụng vùng nhớ này thì phải khai báo trong phần mềm. PIW: Analog Input, ngõ vào analog. PQW: Analog Output, ngõ ra analog. T: Timer. C: Counter. Định dạng dữ liệu: * Kiểu Bool: VD: Q0.0, I0.0, DB1.DBX2.3, M1.7 . M1.7 Số bit của Byte Tên vùng nhớ Người soạn : Hà văn TríSố Byte 11
  12. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS DB1.DBX2.3 Số bit của Byte Tên vùng nhớ (khối DB1) Số Byte Kiểu dữ liệu là BOOL Một biến kiểu Bool chỉ có 2 giá trị là 0 hoặc 1 (TRUE hoặc FALSE). Đối với ngõ IN Trạng thái mức 0: OV Trạng thái mức 1:24V Đối với ngõ OUT: Trạng thái mức 0: xuất 0V hoặc hở tiếp điểm Trạng thái mức 1: xuất 24V hoặc đóng tiếp điểm * Kiểu Byte: 1 Byte = 8 Bit. Suy ra, giá trị 1 Byte trong khỏang: 0 -(28-1) hay 0-255 VD: QB0, MB3, VB10, SMB2, DB1,DBB10 QB0 Số Byte Tên vùng nhớ Viết tắt của Byte Người soạn : Hà văn Trí 12
  13. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS DB1.DBB10 Tên vùng nhớ (khối DB1) Số Byte Kiểu dữ liệu là BYTE * Kiểu Word: 1 Word = 2 Byte = 16 Bit. Suy ra, giá trị 1 Word trong khỏang: 0 -(216-1) VD: IW0, QW0, MW3, DB1.DBW10, QW0 Số Word Tên vùng nhớ Viết tắt của Word DB1.DBW10 Tên vùng nhớ (khối DB1) Số WORD Kiểu dữ liệu là WORD QW0=QB0+QB1, Trong đó, QB0 là byte cao, QB1 là Byte thấp. DB1.DBW10=DB1.DBB10 + DB1.DBB11 Byte thấp Byte cao * Kiểu DWord: 1 DWord = 2 Word = 4 Byte = 32 Bit. Suy ra, giá trị 1 Word trong khỏang: 0 -(232-1) VD: ID0, QD0, MD3, DB1.DBD10, QD0 Số DWord Tên vùng nhớ Người soạn : Hà văn Trí 13
  14. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Viết tắt của DWord DB1.DBD10 Tên vùng nhớ (khối DB1) Số DOUBLE WORD Kiểu dữ liệu là DOUBLE WORD MD0=MW0+MW2=MB0+MB1+MB2+MB3, Trong đó, MB0 là byte cao nhất,MB3 là Byte thấp nhất. * Kiểu Int: Số nguyên Một biến kiểu Int tường đương một Word, nghĩa là dung lượng của 1 biến kiểu Int cũng gồm 16 bit. Tuy nhiên, biến kiểu Int và Word cũng có những điểm khác nhau như sau: 1/ Biến kiểu Word là biến ko dấu, biến kiểu Int có dấu(bit trọng số cao nhất là bit dấu). 2/ Giá trị 1 Word: 0 -(216-1), giá trị một Int (-215) – (215-1) 3/ Định dạng một biến kiểu Word phải có W#16# đứng đầu, còn Int thì không. VD: W#16#1234, W#16#ABCD: một Word 1,5,100,250 : một Int * Kiểu DInt: Số nguyên Một biến kiểu DInt tường đương một DWord, nghĩa là dung lượng của 1 biến kiểu Int cũng gồm 32 bit. Tuy nhiên, biến kiểu DInt và DWord cũng có những điểm khác nhau như sau: 1/ Biến kiểu DWord là biến ko dấu, biến kiểu DInt có dấu(bit trọng số cao nhất là bit dấu). 2/ Giá trị 1 DWord: 0 -(232-1), giá trị một Int (-231) – (231-1) 3/ Định dạng một biến kiểu DWord phải có DW#16# đứng đầu. Định dạng một biến kiểu DInt phải có L# đứng đầu. VD: DW#16#12345678, DW#16#ABCDABCD: một DWord L#1,L#5,L# -2,L#12345: một Dint * Kiểu Real: Số thực. Một biến kiểu Real 32 bit, nghĩa là vùng nhớ cũng là Dword. Định dạng: phải có dấu “.” Thập phân. VD: 1.5, 2.3, 0.09, 1.0, 100.2 Người soạn : Hà văn Trí 14
  15. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS I/Tập lệnh trong S7_300: Kí hiệu: KQ là kết quả thu được sau phép tính KT là kết quả trước phép tính A.Thanh Ghi Trạng Thái: Khi thực hiện lệnh ,CPU sẽ ghi nhận lại trạng thái của phép tính trung gian cũng như của kết quả vào một thanh ghi đặc biệt 16 Bits,được gọi là thanh ghi trạng thái ( Status Word) >Mặc dù thanh ghi trạng thái này có độ dài 16 Bits nhưng chỉ sử dụng 9 Bits với cấu trúc như sau: BR CC1 CC0 OV OS OR STA RLO FC -FC ( First check) : Khi phải thực hiện một dãy các lệnh logic liên tiếp nhau gồm các phép tính giao ,hợp và nghịch đảo,bit FC có giá trị bằng 1,hay nói cách khác ,FC=0 khi dãy lệnh Logic tiếp điểm vừa được kết thúc. -RLO (Result of logic operation) : Kết quả tức thời của phép tính logicvừa được thực hiện -STA (Status bit) : Bit trạng thái này luôn có giá trị logic của tiếp điểm được chỉ định trong lệnh. -OR :Ghi lại giá trị của phép tính logic giao cuối cùng được thực hiện để phụ giúp cho việc thực hiện phép toán hợp sau đó.Điều này là cần thiết vì trong một biểu thức hàm 2 trị ,phép tính giao bao giờ cũng phải được thực hiện trước các phép tính hợp. -OS (Stored overflow bit) : Ghi lại giá trị Bit bị tràn ra ngoài mảng ô nhớ. -OV(Overflow Bit): Bit báo cáo kết quả phép tính bị tràn ra ngoài mảng ô nhớ. -CC0 và CC1 ( Condition code) : Hai bit báo trạng thái của kết quả phép tính với số nguyên,số thực phép dịch chuyển hoặc phép tính logic trong ACCU CC1 CC0 Ý nghĩa 0 0 Kết quả bằng 0 (=0) 0 1 Kết quả nhỏ hơn 0 ( 0 ) Khi thực hiện lệnh toán học như cộng trừ nhân chia với số nguyên hoặc số thực CC0 CC1 Ý Nghĩa 0 0 Kết quả quá nhỏ khi thực hiện lệnh cộng (+I,+D) 0 1 Kết quả quá nhỏ khi thực hiện lệnh nhân (*I,*D) hoặc quá lớn khi thực hiện lệnh cộng trừ (+I,+D,-I,-D) 1 0 Kết quả quá lớn khi thực hiện lệnh nhân chia (*I,*D,/I,/D ) hoặc quá nhỏ khi thực hiện lệnh cộng trừ (+I,+D,-I,-D) 1 1 Kết quả bị tràn do thực hiện lệnh chia cho 0 (/I,/D) Khi thực hiện lệnh toán học với số nguyên nhưng kết quả bị tràn ô nhớ CC0 CC1 Ý Nghĩa 0 0 Kết quả có số mũ e quá lớn 0 1 Kết quả có mantissa quá nhỏ 1 0 Kết quả có mantissa quá lớn 1 1 Phép tính sai quy chuẩn Người soạn : Hà văn Trí 15
  16. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Khi thực hiện lệnh toán học với số thực nnhưng kết quả bị tràn ô nhớ CC0 CC1 Ý Nghĩa 0 0 Giá trị của bit bị đẩy ra bằng 0 1 0 Giá trị của Bit bị đẩy ra bằng 1 Khi thực hiện lệnh dịch chuyển CC0 CC1 Ý Nghĩa 0 0 Kết quả bằng 0 1 0 Kết quả khác 0 Khi thực hiện lệnh logic trong ACCU BR ( Binary result bit) : Bit trạng thái cho phép liên kết hai loại ngôn ngữ lập trình STL và LAD .Chẳng hạn cho phép người sử dụng có thể viết một khối chương trình FB hoặc FC trên ngôn ngữ STL nhưng gọi và sử dụng chúng trong một chương trình khác viết trên LAD .Để tao ra được mối liên kết đó,ta cần phải kết thúc chương trình trong FB,FC bằng lệnh ghi BR = 1 ,nếu chương trình chạy không có lỗi BR = 0 ,nếu chương trình chạy có lỗi Khi sử dụng các khối hàm đặc biệt của hệ thống ( SFC hoặc SFB) ,trạng thái làm việc của chương trình cũng được thông báo ra ngoài qua bit trạng thái BR như sau: BR=1 nếu SFC hay SFB thực hiện không có lỗi BR=0 nếu có lỗi khi thực hiện SFC hay SFB 1/ Lệnh về bit: Tiếp điểm thường hở: KQ=KT nếu I0.0=1. KQ=0 nếu I0.0=0 Tiếp điểm thường đóng : KQ=KT nếu I0.0=0. KQ=0 nếu I0.0=1 Lệnh Not: KQ thu được bằng đảo giá trị của KT Nếu KT=1 thì KQ=0 ; Nếu KT=0 thì KQ=1 Ngõ ra ( cuộn coil) : Gán KQ cho ngõ ra Q0.0 Xác định kết quả: Gán KQ tại vị trí mà lệnh được chèn Vd: M0.0 lưu kết quả sau 2 phép tính qua I0.0 và I0.1 Người soạn : Hà văn Trí 16
  17. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh Reset Bit: Gán giá trị 0 cho M0.0 Lệnh Set Bit: Gán giá trị 1 cho M0.0 Lệnh RS: Nếu I0.0=1 , I0.1=0 thì M0.0=1, Q0.0=0 Nếu I0.0=0 ,I0.1=1 thì M0.0=0 ,Q0.0=1 Nếu I0.0=I0.1=0 Thì không có gì thay đổi. Nếu I0.0=I0.1=1 thì M0.0=Q0.0=1 Lệnh SR: Nếu I0.0=1 , I0.1=0 thì M0.0=1, Q0.0=1 Nếu I0.0=0 ,I0.1=1 thì M0.0=0 ,Q0.0=0 Nếu I0.0=I0.1=0 Thì không có gì thay đổi. Nếu I0.0=I0.1=1 thì M0.0=Q0.0=0 Vi phân cạnh lên : M0.0 lưu giá trị KQ ở vòng quét trước Khi I0.0 chuyển trạng thái từ 0 sang 1 và M0.0 =0 thì Q0.0 =1 Vi phân cạnh xuống: M0.0 lưu giá trị KQ ở vòng quét trước Khi I0.0 chuyển trạng thái từ 1 xuống 0 và M0.0=1 thì Q0.0=1 Người soạn : Hà văn Trí 17
  18. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Như vậy trong cả 2 lệnh vi phân cạnh xuống và vi phân cạnh lên thì Q0.0 chỉ ON trong 1 chu kì tại thời điểm thoả điều kiện. Lệnh Save : Lưu giá trịRLO ( KQ) vào Bit cờ BR (Binary Result Bit) Lệnh NEG: Khi I0.0=1 và I0.1 chuyển trạng thái từ 1 xuống 0 thì Q0.0 ON trong 1 chu kì Hay nói cách Khác Q0.0 chỉ ON tại thời điểm thoả điều kiện bài toán. Lệnh POS: : Khi I0.0=1 và I0.1 chuyển trạng thái từ 0 lên 1 thì Q0.0 ON trong 1 chu kì Hay nói cách Khác Q0.0 chỉ ON tại thời điểm thoả điều kiện bài toán. 2/ Lệnh về Timer : Lệnh S_PULSE: Nếu I0.0=1 Timer được kích chạy,khi I0.0=0 hoặc chạy đủ thời gian đặt 2s thì Timer dừng Hoặc có tín hiệu I0.1 thì Timer cũng dừng Timer chỉ chạy lại khi có tín hiệu mới từ I0.0 ( tức là I0.0 chuyển trạng thái từ 0 lên 1 ) Q0.0=1 khi Timer đang chạy. MW100 lưu giá trị đếm của Timer theo dạng Integer MW102 lưu giá trị của Timer theo dạng BCD Chức năng của Timer này là tạo xung có thời gian được đặt sẵn Người soạn : Hà văn Trí 18
  19. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh S_PEXT: Timer kích có nhớ,Khi có tín hiệu cạnh lên ở I0.0 Timer T5 chạy,nếu đủ thời gian đặt Timer dừng. Trong quá trình chạy nếu có tín hiệu mới từ chân I0.0 thì thời gian Timer lại được tính lại từ đầu. Trong quá trình chạy nếu có tín hiệu I0.1 thì Timer dừng Q0.0 =1 khi Timer đang chạy. Các ô nhớ MW100 và MW102 lưu giá trị hiện thời của Timer theo dạng Integer và dạng BCD Lệnh S_ODT: Nếu I0.0=1 Timer bắt đầu chạy khi đủ thời gian thì ngưng khi đó ngõ Q0.0 sẽ lên 1 nếu I0.0 vẫn còn giữ trạng thái 1,khi có tín hiệu I0.1 thì tất cả phải được Reset về 0 Người soạn : Hà văn Trí 19
  20. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Các ô nhớ MW100 và MW102 lưu giá trị hiện thời của Timer theo dạng Integer và dạng BCD Lệnh S_ODTS: Timer kích có nhớ,khi có xung cạnh lên ở I0.0 Timer bắt đầu chạy ,ngõ ra Q0.0=1 khi Timer ngưng và chỉ tắt khi có tín hiệu Reset (tín hiệu I0.1) Trong quá trình Timer chạy nếu có sự chuyển đổi tín hiệu từ chân I0.0 them 1 lần nữa thì Timer sẽ nhớ và tiếp tục chạy khi hết thời gian lần trước. Người soạn : Hà văn Trí 20
  21. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh S_OFFDT: Khi I0.0 ON , Q0.0 =1 ,khi I0.0 OFF Timer bắt đầu chạy và Q0.0 chỉ tắt khi đủ thời gian và I0.0 vẫn OFF Khi có tín hiệu Reset I0.1 thì tất cả tín hiệu đều OFF Người soạn : Hà văn Trí 21
  22. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh TON: Số hiệu timer Giá trị đặt cho timer Số Timer trong S7_300 phụ thuộc vào loại CPU. CPU 312: có 128 Timer CPU 313 trở lên: có 256 Timer. Có 2 cách cài đặt giá trị cho Timer: 1/ Cài thông số thời gian trực tiếp: Để cài giá trị trực tiếp cho Timer ta phải thêm kí tự S5T# trước giá trị đặt. Các kí tự kế tiếp là thông số thời gian muốn cài đặt cho Timer. Tổng quát như sau: S5T#aH_bM_cS_dMS. Trong đó: H: giờ M: phút S: giây MS: mili giây a,b,c,d: các thông số cài đặt. VD: S5T#3S: thời gian cài đặt là 3s S5T#7S500MS: thời gian cài đặt là 7,5s S5T#1M8S200MS: thời gian cài đặt là 1 phút 8 giây 200 ms S5T#1H1M10S: thời gian cài đặt là 1 giờ 1 phú 10 giây. Trong VD trên thì T0 được cài thời gian là 1 giờ 30 phút. Người soạn : Hà văn Trí 22
  23. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Trong VD trên, khi I0.0 ON, Timer T5 sẽ được kích hoạt. Đủ thời gian cài đặt là 2 s thì bit T5 tác động làm cho Q0.0 ON. Khi ngõ vào I0.1 tác động thì Timer được reset. Giá trị hiện tại của Timer cũng như Bit T5 được Reset về 0. 2/ Cài đặt thông số thời gian thông qua biến nhớ: Giá trị cài đặt cho timer thông qua một biến kiểu WORD 16 bit: Hai bit cao nhất trong WORD không sử dụng Hai bit kế tiếp (Time base) cài thông số đơn vị thời gian cho Timer, cụ thể: 12 bit kế tiếp là giá trị cài đặt thời gian cho Timer dưới dạng số BCD (giá trị từ 0-999). Như trong VD trên thì giá trị cài đặt cho Timer sẽ là 127s. Người soạn : Hà văn Trí 23
  24. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Như vậy để có thể cài đặt giá trị cho Timer thay đổi theo ô nhớ: Ta phải thực hiện các bước: Giá trị Timer phải bé hơn hoặc bằng 999 Chuyển giá trị đó sang dạng BCD dùng lệnh I_BCD Sau đó chọn Time Base theo mong muốn như bảng trên bằng cách chọn 4 Bit đầu. TOFF: Số hiệu timer Giá trị đặt cho timer Trong VD trên, khi I0.0 ON, Bit T5 sẽ ON ngay khi I0.0 ON. Khi I0.0 chuyển từ ON sang OFF, Timer T5 sẽ được kích hoạt. Đủ thời gian cài đặt là 2 s thì Timer T5 tác động, bit T5 OFF làm cho Q0.0 OFF. Khi ngõ vào I0.1 tác động thì Timer được reset. Giá trị hiện tại của Timer cũng như Bit T5 được Reset về 0. Cách cài đặt thông số thời gian của Timer OFF tương tự như Timer ON. TON có nhớ: Người soạn : Hà văn Trí 24
  25. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Số hiệu timer Giá trị đặt cho timer Trong VD trên, khi I0.0 ON, Timer T5 sẽ được kích hoạt. Đủ thời gian cài đặt là 2 s thì bit T5 tác động làm cho Q0.0 ON. Trong trường hợp thời gian chưa đủ 2S mà I0.0 chuyển OFF sang ON một lần nữa, giá trị đếm của Timer sẽ được khởi động lại. Giữa Timer ON và Timer ON có nhớ còn khác nhau một điểm nữa như sau: Timer ON: sau khi Timer tác động, Bit của Timer được bật ON, nếu tín hiệu kích Timer mất đi thì Timer sẽ được Reset, Bit timer sẽ OFF. Timer ON có nhớ: sau khi Timer tác động, Bit của Timer được bật ON, nếu tín hiệu kích Timer mất đi thì Timer vẫn không Reset, Bit timer sẽ vẫn ON. Khi ngõ vào I0.1 tác động thì Timer được reset. Giá trị hiện tại của Timer cũng như Bit T5 được Reset về 0. Timer xung: Số hiệu timer Giá trị đặt cho timer Người soạn : Hà văn Trí 25
  26. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Mô tả: Khi I0.0 chuyển từ 0 lên 1, Timer T5 sẽ được khởi động, ngõ ra bit T5 sẽ ON ngay lập tức. Khi hết thời gian cài đặt là 2s thì bit T5 OFF (nếu ngõ vào I0.0 vẫn còn ON). Trong trường hợp chưa đủ 2s mà ngõ vào I0.0 đã OFF, Timer sẽ được reset và ngõ ra bit T5 OFF. Trong khi Timer chạy mà chưa đủ 2s, nếu I0.1 chuyển từ 0 lên 1. Ngõ ra bit T5 sẽ OFF và thời gian được reset. Timer xung mở rộng: Số hiệu timer Giá trị đặt cho timer Người soạn : Hà văn Trí 26
  27. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Mô tả: Khi I0.0 chuyển từ 0 lên 1, Timer T5 sẽ được khởi động, ngõ ra bit T5 sẽ ON ngay lập tức. Khi hết thời gian cài đặt là 2s thì bit T5 OFF (bất kể ngõ vào I0.0 vẫn còn ON hay đã OFF). Trong trường hợp chưa đủ 2s mà ngõ vào I0.0 chuyển từ OFF lên ON một lần nữa, Timer sẽ được khởi động lại. Khi I0.1 chuyển từ 0 lên 1. Ngõ ra bit T5 sẽ OFF và thời gian được reset. Người soạn : Hà văn Trí 27
  28. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS 3/ Counter: Lệnh đếm lên xuống S_CUD: Ngõ vào I0.2=1 : đưa giá trị đếm vào PV Khi I0.0 chuyển trạng thái từ 0 lên 1 ,C0 đếm tăng lên 1 Khi I0.1 chuyển trạng thái từ 0 lên 1 ,C0 đếm giảm xuống 1 Khi cả I0.0 và I0.1 đều chuyển trạng thái thì C0 không thay đổi Khi I0.3=1 thì C0 bị Reset về 0 Giá trị bộ đếm hiện thời nằm trong 2 ô nhớ MW100 và MW102 dưới dạng Integer và dạng BCD ,giá trị này có tầm từ 0 – 999. Ngõ ra Q0.0=1 khi giá trị đếm lớn hơn 0 Lệnh đếm lên S_CU: Ngõ vào I0.1=1 : đưa giá trị đếm vào PV Khi I0.0 chuyển trạng thái từ 0 sang 1 , C0 đếm tăng lên 1 Khi I0.2 = 1 Counter bị Reset Ngõ ra Q0.0=1 khi giá trị đếm lớn hơn 0 Giá trị bộ đếm hiện thời nằm trong 2 ô nhớ MW100 và MW102 dưới dạng Integer và dạng BCD ,giá trị này có tầm từ 0 – 999. Ngõ ra Q0.0=1 khi giá trị đếm lớn hơn 0 Lệnh đếm xuống S_CD: Ngõ vào I0.1=1 : đưa giá trị đếm vào PV Khi I0.0 chuyển trạng thái từ 1 sang 0 , C0 giảm đi 1 Khi I0.2 = 1 Counter bị Reset Ngõ ra Q0.0=1 khi giá trị đếm lớn hơn 0 Người soạn : Hà văn Trí 28
  29. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Giá trị bộ đếm hiện thời nằm trong 2 ô nhớ MW100 và MW102 dưới dạng Integer và dạng BCD ,giá trị này có tầm từ 0 – 999. Ngõ ra Q0.0=1 khi giá trị đếm lớn hơn 0 Lệnh Set Counter: (SC) Số hiệu Counter Giá trị đặt cho Counter S7_300 có 1000 counter (từ C0 đến C999) Mô tả: Khi I0.0 ON, giá trị 100 sẽ được nạp cho Counter C5. Khi I0.0 OFF, giá trị Counter sẽ phụ thuộc vào các tín hiệu kích đếm. Lệnh đếm lên: (CU) Số hiệu Counter Người soạn : Hà văn Trí 29
  30. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Mô tả: Khi I0.0 chuyển từ 0 lên 1, giá trị 100 sẽ được nạp vào cho Counter C10. Cứ mỗi xung cạnh lên ở ngõ vào I0.1, bộ đếm C10 sẽ tăng 1 đơn vị. Khi giá trị tăng đến 999 thì tín hiệu kích tăng không còn tác dụng. Khi I0.2 chuyển từ 0 lên 1, giá trị bộ đếm và bit C10 sẽ được reset. Lệnh đếm xuống: (CD) Số hiệu Counter Mô tả: Khi I0.0 chuyển từ 0 lên 1, giá trị 100 sẽ được nạp vào cho Counter C10. Cứ mỗi xung cạnh lên ở ngõ vào I0.1, bộ đếm C10 sẽ giảm 1 đơn vị. Khi giá trị giảm đến 0 thì tín hiệu kích giảm không còn tác dụng, đồng thời lúc đó C10 sẽ OFF. Nếu bộ đếm khác 0, C10 sẽ ON. Khi I0.2 chuyển từ 0 lên 1, giá trị bộ đếm và bit C10 sẽ được reset. 4/Lệnh So Sánh: a/Lệnh so sánh số nguyên: Lệnh EQ_I ( Equal Integer): So sánh MW100 và MW102, nếu 2 số nguyên này bằng nhau thì KQ=KT Lệnh NE_I ( Not Equal Integer) : So sánh MW100 và MW102,nếu 2 số này khác nhau thì KQ=KT. Người soạn : Hà văn Trí 30
  31. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh GT_I ( Greater than Integer) : So sánh 2 số MW100 và MW102 ,nếu MW100 lớn hơn MW102 thì KQ=KT Lệnh LT_I ( Less than Integer ) : So sánh 2 số MW100 và MW102,Nếu MW100 bé hơn MW102 thì KQ=KT Lệnh GE_I ( Greater than or equal Integer ) : So sánh 2 số MW100 và MW102, Nếu MW100 lớn hơn hoặc bằng MW102 thì KQ=KT Lệnh LE_I ( Less than or equal Integer ) : So sánh 2 số MW100 và MW102, Nếu MW100 bé hơn hoặc bằng MW102 thì KQ=KT b/ Lệnh so sánh số Double Integer: Lệnh EQ_D ( Equal Double Integer): So sánh MD100 và MD104, nếu 2 số nguyên này bằng nhau thì KQ=KT Người soạn : Hà văn Trí 31
  32. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh NE_D ( Not Equal Double Integer) : So sánh MD100 và MD104,nếu 2 số này khác nhau thì KQ=KT. Lệnh GT_D ( Greater than DoubleInteger) : So sánh 2 số MD100 và MD104 ,nếu MD100 lớn hơn MD104 thì KQ=KT Lệnh LT_D ( Less than DoubleInteger ) : So sánh 2 số MD100 và MD104,Nếu MD100 bé hơn MD104 thì KQ=KT Lệnh GE_D ( Greater than or equal DoubleInteger ) : So sánh 2 số MD100 và MD104, Nếu MD100 lớn hơn hoặc bằng MD104 thì KQ=KT Lệnh LE_D ( Less than or equal DoubleInteger ) : So sánh 2 số MD100 và MD104, Nếu MD100 bé hơn hoặc bằng MD104 thì KQ=KT Người soạn : Hà văn Trí 32
  33. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS b/ Lệnh so sánh số thực ( Real): Lệnh EQ_R ( Equal Real): So sánh MD100 và MD104, nếu 2 số nguyên này bằng nhau thì KQ=KT Lệnh NE_R ( Not Equal Real) : So sánh MD100 và MD104,nếu 2 số này khác nhau thì KQ=KT. Lệnh GT_R ( Greater than Real) : So sánh 2 số MD100 và MD104 ,nếu MD100 lớn hơn MD104 thì KQ=KT Lệnh LT_R ( Less than Real ) : So sánh 2 số MD100 và MD104,Nếu MD100 bé hơn MD104 thì KQ=KT Lệnh GE_R ( Greater than or equal Real ) : So sánh 2 số MD100 và MD104, Nếu MD100 lớn hơn hoặc bằng MD104 thì KQ=KT Người soạn : Hà văn Trí 33
  34. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh LE_R ( Less than or equal Real ) : So sánh 2 số MD100 và MD104, Nếu MD100 bé hơn hoặc bằng MD104 thì KQ=KT 5 /Lệnh chuyển đổi: Lệnh BCD_I : Chuyển đổi từ số định dạng dưới dạng BCD ( chứa 3 Digit)sang số nguyên 16 Bit Số BCD có tầm (+/- 999) chứa trong 12Bit. Vd: MW100 =22 được định dạng dưới dạng BCD như sau: 0000 0010 0010 2 2 Sau khi thực hiện lệnh chuyển đổi thành số Integer 16 Bit được định dạng: 0000 0000 0001 0110 := 1*24 + 1*22 + 1*21 =22 Lệnh I_BCD: Chuyển đổi từ số nguyên sang số được định dạng dưới dạng BCD ( chứa 3 Digit), do số BCD tối đa 999 nên số nguyên phải tối đa 999 Lệnh I_DI : Chuyển đổi số nguyên từ 16Bit sang số nguyên 32 Bit để thực hiện cho các phép toán trên số 32 Bit. Lệnh BCD_DI : : Chuyển đổi từ số định dạng dưới dạng BCD ( chứa 7 Digit)sang số nguyên 32 Bit Số BCD có tầm (+/- 9999999) chứa trong 28Bit. Người soạn : Hà văn Trí 34
  35. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Vd: MD100 =22 được định dạng dưới dạng BCD như sau: 0000 0000 0000 0000 0000 0010 0010 2 2 Sau khi thực hiện lệnh chuyển đổi thành số DoubleInteger 32 Bit được định dạng: 0000 0000 0000 0000 0000 0000 0001 0110 := 1*24 + 1*22 + 1*21 =22 Lệnh DI_BCD: : Chuyển đổi từ số nguyên 32 Bit sang số được định dạng dưới dạng BCD ( chứa 7 Digit), do số BCD tối đa 9999999 nên số nguyên phải tối đa 9999999 Lệnh DI_R : Chuyển đổi từ số nguyên 32 Bit sang số thực để phục vụ cho các phép toán trên số thực. Vd: MD100= 457 ; Sau phép toán giá trị mới là MD100=457.0 Lệnh INV_I : Đảo tất cả các Bit của số nguyên 16 Bit Vd : MW100 ban đầu là 0101 0111 1000 0101 ; sau lệnh chuyển đổi MW100 lúc sau 1010 1000 0111 1010 Lệnh INV_DI: : Đảo tất cả các Bit của số nguyên 32 Bit Lệnh NEG_I : Đổi dấu số nguyên 16 Bit Vd: MW100 = 8 sau lệnh MW100 = -8 Người soạn : Hà văn Trí 35
  36. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh NEG_DI : Đổi dấu số nguyên 32 Bit Lệnh NEG_R : Đổi dấu số thực Lệnh Round : Lệnh chuyển đổi số thực thành số nguyên 32 Bit bằng cách làm tròn Vd: MD100 = 20.35 làm tròn thành 20 Lệnh Trunc: Lệnh chuyển đổi số thực thành số nguyên 32 Bit bằng cách cắt phần nguyên Vd: MD100 = 20.56 chuyển thành 20 Lệnh Ceil: Lệnh chuyển đổi số thực thành số nguyên 32 Bit bằng cách làm tròn lên Vd: MD100 = 20.04 làm tròn lên thành 21 Lệnh Floor: Lệnh chuyển đổi số thực thành số nguyên 32 Bit bằng cách làm tròn xuống Vd: MD100 = 23.45 làm tròn xuống còn 23 6 / Các lệnh về số học: a/ Phép Toán trên số nguyên 16 Bit: Lệnh ADD_I : Lệnh thực hiện việc cộng 2 số nguyên 16 Bit ,kết quả cất vào số nguyên 16 Bit,nếu kết quả vượt quá 16 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MW104 = MW100 + MW102 Người soạn : Hà văn Trí 36
  37. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh SUB_I : Lệnh thực hiện việc trừ 2 số nguyên 16 Bit ,kết quả cất vào số nguyên 16 Bit , nếu kết quả vượt quá 16 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MW104 = MW100 - MW102 Lệnh MUL_I : : Lệnh thực hiện việc nhân 2 số nguyên 16 Bit ,kết quả cất vào số nguyên 16 Bit , nếu kết quả vượt quá 16 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MW104 = MW100 * MW102 Lệnh DIV_I : : Lệnh thực hiện việc chia 2 số nguyên 16 Bit ,kết quả cất vào số nguyên 16 Bit , nếu kết quả vượt quá 16 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MW104 = MW100 : MW102 b/ Phép Toán trên số nguyên 32 Bit: Lệnh ADD_DI : Lệnh thực hiện việc cộng 2 số nguyên 32 Bit ,kết quả cất vào số nguyên 32 Bit,nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 + MD104 Người soạn : Hà văn Trí 37
  38. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh SUB_DI : Lệnh thực hiện việc trừ 2 số nguyên 32 Bit ,kết quả cất vào số nguyên 32 Bit , nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 - MD104 Lệnh MUL_DI : : Lệnh thực hiện việc nhân 2 số nguyên 32 Bit ,kết quả cất vào số nguyên 32 Bit , nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 * MD104 Lệnh DIV_DI : : Lệnh thực hiện việc chia 2 số nguyên 32 Bit ,kết quả cất vào số nguyên 32 Bit , nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 : MD104 Lệnh MOD_DI : : Lệnh xác định phần dư của phép chia 2 số nguyên 32 Bit ,kết quả cất vào số nguyên 32 Bit , nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 mod MD104 Người soạn : Hà văn Trí 38
  39. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS c/ Phép Toán trên số nguyên 32 Bit ( Floating Point Function): Lệnh ADD_R : Lệnh thực hiện việc cộng 2 số thực ,kết quả cất vào số thực,nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 + MD104 Lệnh SUB_R : Lệnh thực hiện việc trừ 2 số thực ,kết quả cất vào số thực , nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 - MD104 Lệnh MUL_R : : Lệnh thực hiện việc nhân 2 số thực ,kết quả cất vào số thực , nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 * MD104 Lệnh DIV_R : : Lệnh thực hiện việc chia 2 số thực ,kết quả cất vào số thực , nếu kết quả vượt quá 32 Bit thì cờ OV sẽ bật lên 1 ,cờ OS sẽ lưu Bit bị tràn đó. MD108 = MD100 : MD104 Người soạn : Hà văn Trí 39
  40. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh ABS: Lệnh xác định giá trị tuyệt đối của số thực,kết quả cất vào số thực Lệnh SIN: Lệnh tính SIN của số thực,kết quả cất vào số thực.Nếu kết quả nằm ngoài khoảng [-1,1] thì cờ OV bật lên 1 Lệnh COS: Lệnh tính COS của số thực,kết quả cất vào số thực.Nếu kết quả nằm ngoài khoảng [-1,1] thì cờ OV bật lên 1 Lệnh TAN: Lệnh tính TAN của số thực,kết quả cất vào số thực.Nếu kết quả nằm ngoài khoảng 16Bit thì cờ OV bật lên 1 Lệnh ASIN: Lệnh tính Arcsin của số thực,số thực phải nằm trong khoảng [-1,1] kết quả là 1 số thực trong khoảng [-pi/2,pi/2]và được cất vào số thực. Lệnh ACOS: Lệnh tính Arccos của số thực,số thực phải nằm trong khoảng [-1,1] kết quả là 1 số thực trong khoảng [-pi,0]và được cất vào số thực. Người soạn : Hà văn Trí 40
  41. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh ATAN: Lệnh tính Arctang của số thực,kết quả là 1 số thực trong khoảng [- pi/2,pi/2]và được cất vào số thực. Lệnh SQR: Lệnh tính bình phương của số thực, kết quả là 1 số thực không âm được cất vào số thực. Lệnh SQRT: Lệnh tính căn bậc hai của số thực,số thực này phải là 1 số thực không âm, kết quả là 1 số thực không âm được cất vào số thực. Lệnh Ln: Lệnh tính ln(x) của số thực,số thực này phải là 1 số thực không âm, kết quả là 1 số thực được cất vào số thực. Lệnh EXP: Lệnh tính ex của số thực, kết quả là 1 số thực không âm được cất vào số thực. 7/ Lệnh Di chuyển : Lệnh MOV : Lệnh đưa giá trị một ô nhớ sang 1 ô nhớ khác,lệnh này có thể áp dụng cho mọi kiểu số khác nhau.( Int,Dint,Real,Byte .) Người soạn : Hà văn Trí 41
  42. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS 8/Lệnh Dịch Bit : lệnh SHR_I: Lệnh thực hiện việc dịch phải ô nhớ 16Bit,kết quả cất vào ô nhớ 16 Bit,N là số Bit dịch. lệnh SHR_DI: Lệnh thực hiện việc dịch phải ô nhớ 32Bit,kết quả cất vào ô nhớ 32 Bit,N là số Bit dịch. lệnh SHL_W: Lệnh thực hiện việc dịch trái ô nhớ16Bit,kết quả cất vào ô nhớ 16 Bit,N là số Bit dịch. Ô nhớ này được định dạng theo kiểu Word. Nếu N lớn hơn 16 thì MW100 =0 và cờ CC0,OV trong thanh ghi trạng thái đều bằng 0 Người soạn : Hà văn Trí 42
  43. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS lệnh SHR_W: Lệnh thực hiện việc dịch phải ô nhớ16Bit,kết quả cất vào ô nhớ 16 Bit,N là số Bit dịch. Ô nhớ này được định dạng theo kiểu Word. lệnh SHL_DW: Lệnh thực hiện việc dịch trái ô nhớ 32Bit,kết quả cất vào ô nhớ 32 Bit,N là số Bit dịch. Ô nhớ này được định dạng theo kiểu Word. lệnh SHR_DW: Lệnh thực hiện việc dịch phải ô nhớ 32Bit,kết quả cất vào ô nhớ 32 Bit,N là số Bit dịch. Ô nhớ này được định dạng theo kiểu Word. lệnh ROL_DW: Lệnh thực hiện việc dịch trái xoay tròn ô nhớ 32Bit,N là số Bit dịch. Ô nhớ này được định dạng theo kiểu Word. Người soạn : Hà văn Trí 43
  44. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS lệnh ROR_DW: Lệnh thực hiện việc dịch phải xoay tròn ô nhớ 32Bit,N là số Bit dịch. Ô nhớ này được định dạng theo kiểu Word. 9/ Các phép tính trên Word: Lệnh WAND_W : Lệnh thực hiện việc giao 2 Word,kết quả được cất vào ô Word. Lệnh WOR_W : Lệnh thực hiện việc hợp 2 Word,kết quả được cất vào ô Word. Lệnh WXOR_W : Lệnh thực hiện việc Xor 2 Word,kết quả được cất vào ô Word. Người soạn : Hà văn Trí 44
  45. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh WAND_DW : Lệnh thực hiện việc giao 2 DoubleWord,kết quả được cất vào ô DoubleWord. Lệnh WOR_DW : Lệnh thực hiện việc hợp 2 DoubleWord,kết quả được cất vào ô DoubleWord. Lệnh WXOR_DW : Lệnh thực hiện việc Xor 2 DoubleWord,kết quả được cất vào ô DoubleWord. 10/Các phép tính trên thanh ghi trạng thái : Người soạn : Hà văn Trí 45
  46. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh ==0: Lệnh tính KQ:= KT + (CC0^CC1) Lệnh 0>=: Lệnh tính KQ:= KT + CC0 Lệnh 0 : Lệnh tính KQ:= KT + (CC0^CC1) Lệnh 0<>: Lệnh tính KQ:= KT + [(CC0^CC1)+( CC0^CC1)] 11 / Lệnh nhảy: Lệnh JMP: Nhảy nếu RLO=1,Nếu RLO=1 chương trình sẽ nhảy đến nhãn “nhảy” Người soạn : Hà văn Trí 46
  47. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh JMPN: Nhảy nếu RLO=0,Nếu RLO=0 chương trình sẽ nhảy đến nhãn “nhảy” Lệnh OPN : Lệnh mở khối DB để có thể truy cập trực tiếp tới khối này B. Ngôn ngữ lập trình STL: Một Chương trình viết trên LAD hoặc FBD có thể chuyển được sang STL,nhưng ngược lại thì không.Trong STL có nhiều lệnhkhông có trong LAD hay FBD. Đối với người mới nhập môn thì ngôn ngữ LAD là ngôn ngữ dễ tiếp cận nhất,nhưng ngôn ngữ STL là hết sức cần thiết cho tương lai,do vậy chúng tôi giới thiệu thêm tập lệnh trong ngôn ngữ STL. 1/ Nhóm lệnh logic tiếp điểm: Lệnh gán: Cú pháp = Toán hạng là địa chỉ bit I,Q,M,L,D Lệnh gán giá trị logic của RLO tới ô nhớ có địa chỉ được chỉ thị trong toán hạng Ví dụ : A I0.0 // Đọc nội dung của I0.0 vào RLO = Q0.0 // Đưa kết quả ra cổng Q0.0 Lệnh thực hiện phép tính giao: Cú pháp A Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic của toán hạng vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính giao giữa RLO với toán hạng và ghi lại kết quả vào RLO. Ví dụ: A I0.0 // Đọc nội dung I0.0 đưa vào RLO A I0.1 // Giao RLO với I0.1 kết quả đưa vào RLO = Q0.0 // Gán giá trị RLO cho Q0.0 Lệnh thực hiện phép tính giao với giá trị nghịch đảo: Cú pháp AN Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính giao giữa RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO. Ví dụ : A I0.0 // Đọc nội dung của I0.0 đưa vào RLO AN I0.1 // Giao RLO với giá trị nghịch đảo của I0.1 kết quả đưa vào RLO Người soạn : Hà văn Trí 47
  48. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS = Q0.0 // Gán giá trị RLO cho Q0.0 Lệnh thực hiện phép tính hợp: Cú pháp O Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic của toán hạng vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính hợp giữa RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO. Ví dụ : A I0.0 // Đọc nội dung của I0.0 đưa vào RLO O I0.1 // hợp RLO với giá trị I0.1 kết quả đưa vào RLO = Q0.0 // Gán giá trị RLO cho Q0.0 Lệnh thực hiện phép tính hợp với giá trị nghịch đảo: Cú pháp ON Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính hợp giữa RLO với giá trị nghịch đảo của toán hạng và ghi lại kết quả vào RLO. Ví dụ : A I0.0 // Đọc nội dung của I0.0 đưa vào RLO ON I0.1 // hợp RLO với giá trị nghịch đảo của I0.1 kết quả đưa vào RLO = Q0.0 // Gán giá trị RLO cho Q0.0 Lệnh thực hiện phép tính giao với giá trị một biểu thức: Cú pháp A ( Lệnh không có toán hạng Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính giao giữa RLO với giá trị logic của biểu thức trong dấu ngoặc sau nó ghi lại kết quả vào RLO. Ví dụ : A( O I0.0 O I0.1 ) // Giá trị biểu thức I0.0+I0.1 được chuyển vào RLO A( ON I0.2 O I0.3 ) = Q0.0 Lệnh thực hiện phép tính hợp với giá trị một biểu thức: Cú pháp O ( Lệnh không có toán hạng Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính hợp giữa RLO với giá trị logic của biểu thức trong dấu ngoặc sau nó ghi lại kết quả vào RLO. Ví dụ : Người soạn : Hà văn Trí 48
  49. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS A M0.0 O( O I0.0 O I0.1 ) // Giá trị biểu thức I0.0+I0.1 được chuyển vào RLO = Q0.0 Lệnh thực hiện phép tính giao với giá trị nghịch đảo của một biểu thức: Cú pháp AN ( Lệnh không có toán hạng Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính giao giữa RLO với giá trị nghịch đảo logic của biểu thức trong dấu ngoặc sau đó ghi lại kết quả vào RLO. Ví dụ : AN( O I0.0 O I0.1 ) // Giá trị biểu thức I0.0+I0.1 được chuyển vào RLO = Q0.0 // Giá trị Q0.0 bằng giá trị nghịch đảo của RLO Lệnh thực hiện phép tính hợp với giá trị nghịch đảo một biểu thức: Cú pháp ON ( Lệnh không có toán hạng Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của biểu thức trong dấu ngoặc sau nó vào RLO.Ngược lại khi FC=1 nó sẽ thực hiện phép tính hợp giữa RLO với giá trị nghịch đảo logic nghịch đảo của biểu thức trong dấu ngoặc sau đó ghi lại kết quả vào RLO. Ví dụ : A M0.0 ON( O I0.0 O I0.1 ) // Giá trị biểu thức I0.0+I0.1 được chuyển vào RLO = Q0.0 // Lệnh thực hiện phép exclusive or: Cú pháp x Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Nếu FC=0 lệnh sẽ gán giá trị logic của toán hạng vào RLO.Ngược lại khi FC=1 lệnh sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có khác nhau không .Trong trường hợp khác nhau thì ghí vào RLO,ngược lại thì ghi 0.Nói cách khác ,lệnh sẽ đảo nội dung của RLO nếu toán hạng có giá trị là1. Ví dụ : A I0.0 // Đọc nội dung của I0.0 đưa vào RLO X I0.1 // nghịch đảo giá trị RLO nếu I0.1 =1 = Q0.0 // Gán giá trị RLO cho Q0.0 Lệnh thực hiện phép exclusive or not: Cú pháp XN Toán hạng làdữ liệu kiểu Bool hoặc địa chỉ bit I,Q,M,L,D,T,C Người soạn : Hà văn Trí 49
  50. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO.Ngược lại khi FC=1 lệnh sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có khác nhau không .Trong trường hợp khác nhau thì ghí 1 vào RLO,ngược lại thì ghi 0.Nói cách khác ,lệnh sẽ đảo nội dung của RLO nếu toán hạng có giá trị là 0. Ví dụ : A I0.0 // Đọc nội dung của I0.0 đưa vào RLO XN I0.1 // nghịch đảo giá trị RLO nếu I0.1 =0 = Q0.0 // Gán giá trị RLO cho Q0.0 Lệnh thực hiện phép exclusive or với giá trị của biểu thức: Cú pháp X( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc vào RLO.Ngược lại khi FC=1 lệnh sẽ đảo nội dung của RLO khi biểu thức trong dấu ngoặc sau nó có giá trị 1. Lệnh thực hiện phép exclusive or not với giá trị của biểu thức: Cú pháp XN( Lệnh không có toán hạng. Nếu FC=0 lệnh sẽ gán giá trị logic nghịch đảo của biểu thức trong dấu ngoặc vào RLO.Ngược lại khi FC=1 lệnh sẽ đảo nội dung của RLO khi biểu thức trong dấu ngoặc sau nó có giá trị 0. Lệnh ghi giá trị logic 1 vào RLO: Cú pháp SET Lệnh không có toán hạng và có tác dụng ghi 1 vào RLO Lệnh ghi giá trị logic 0 vào RLO: Cú pháp CLR Lệnh không có toán hạng và có tác dụng ghi 0 vào RLO Lệnh đảo giá trị RLO: Cú pháp NOT Lệnh không có toán hạng và có tác dụng đảo nội dung của RLO Lệnh gán có điều kiện giá trị logic 1 vào ô nhớ: Cú pháp S Toán hạng là địa chỉ Bit I,Q,M,L,D Nếu RLO =1,lệnh sẽ ghi giá trị 1 vào ô nhớ có địa chỉ trong toán hạng Lệnh gán có điều kiện giá trị logic 0 vào ô nhớ: Cú pháp R Toán hạng là địa chỉ Bit I,Q,M,L,D Nếu RLO =1,lệnh sẽ ghi giá trị 0 vào ô nhớ có địa chỉ trong toán hạng Lệnh phát hiện sườn lên Cú pháp FP Toán hạng là địa chỉ Bit I,Q,M,L,D và được sử dụng như một biến cờ để ghi nhận lại giá trị của RLO tại vị trí này trong chương trình ,nhưng của vòng quét trước Tại mỗi vòng quét lệnh sẽ kiểm tra:nếu biến cờ ( toán hạng)có giá trị 0 và RLO có giá trị 1 thì sẽ ghi 1 vào RLO,các trường hợp khác thì ghi 0,đồng thời chuyển nội dung của RLO vào lại biến cờ.Như vậy RLOsẽ có giá trị 1 trong vòng quét khi có sườn lên trong RLO Nếu RLO =1,lệnh sẽ ghi giá trị 0 vào ô nhớ có địa chỉ trong toán hạng Người soạn : Hà văn Trí 50
  51. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Ví dụ: Đoạn lệnh sau: A I0.0 FP M10.0 =Q0.0 Sẽ tương đương với đoạn lệnh: A I0.0 AN M10.0 = Q0.0 A I0.0 = M10.0 Lệnh phát hiện sườn xuống Cú pháp FN Toán hạng là địa chỉ Bit I,Q,M,L,D và được sử dụng như một biến cờ để ghi nhận lại giá trị của RLO tại vị trí này trong chương trình ,nhưng của vòng quét trước Tại mỗi vòng quét lệnh sẽ kiểm tra:nếu biến cờ ( toán hạng)có giá trị 1 và RLO có giá trị 0 thì sẽ ghi 1 vào RLO,các trường hợp khác thì ghi 0,đồng thời chuyển nội dung của RLO vào lại biến cờ.Như vậy RLO sẽ có giá trị 1 trong vòng quét khi có sườn xuống trong RLO Lệnh chuyển giá trị của RLO vào BR Cú pháp SAVE Lệnh chuyển nội dung của RLO vào bit trạng BR.Lệnh không làm thay đổi nội dung các bit còn lại của thanh ghi trạng thái. 2/ Lệnh đọc,ghi và đảo vị trí bytes trong thanh ghi ACCU : Các CPU của S7_300 thường có hai thanh ghi Accumulator ( ACCU) kí hiệu là ACCU1 và ACCU2.Hai thanh ghi ACCU có cùng kích thước 32 bits ( 1 từ kép).Mọi phép tính toán trên số thực ,số nguyên,các phép tính logic với mảng nhiều bit đều được thực hiện trên hai thanh ghi này Byte cao Byte thấp Byte cao Byte thấp Từ cao Từ thấp Lệnh đọc vào ACCU: Cú pháp L Toán hạng là dữ liệu ( số nguyên , thực , nhị phân ) hoặc địa chỉ . Nếu là địa chỉ thì - Byte IB,QB,PIB,MB,LB,DBB,DIB trong khoảng 0 - 255 - Từ IW,QW,PIW,MW,LW,DBW,DIW trong khoảng 0 - 216 - 1 - Từ kép ID,QD,PID,MD,LD,DBD,DID trong khoảng 0 - 232 – 1 Nếu là kiểu dữ liệu: L +5 : Ghi 5 vào từ thấp của ACCU1 ( số nguyên 16 Bit) L B#(1,8) : Ghi 1 vào Byte cao của từ thấp và ghi 8 vào Byte thấp của từ thấp L L#5 : Ghi 5 vào ACCU1 ( số nguyê 32 Bit) L B#16#2E :Dữ liệu dạng cơ số 16 L 2#10001110 : Dữ liệu dạng cơ số 2 Người soạn : Hà văn Trí 51
  52. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS L ‘AB’ :Dữ liệu dạng kí tự L C#1000 : Dữ liệu dạng đặt trước cho bộ đếm ( PV ) L S5TIME#2S : Dữ liệu dạng đặt trước cho Timer ( PV ) L P#M10.2 : Dữ liệu là địa chỉ ô nhớ ( dùng con trỏ) L D#2006-1-1: Dữ liệu là giá trị về ngày/tháng /năm (16 bit) L T#0H_1M_10S : Dữ liệu về thời gian giờ / phút /giây ( 32 Bit) Lệnh L có tác dụng chuyển nội dung của ô nhớ có địa chỉ là toán hạng vào thanh ghi ACCU1 . Nội dung cũ của ACCU1 được chuyển vào ACCU2.Trong trường hợp giá trị chuyển vào nhỏ hơn từ kép thì chúng sẽ được ghivào theo thứ tự Byte thấp của từ thấp,Byte thấp của từ cao,Byte cao của từ cao.Nhũng Bit còn trống trong ACCU1 được ghi 0. Ví dụ : Lệnh L IB0 Sẽ chuyển nội dung IB0 vào Byte thấp của từ thấp thanh ghi ACCU1 Lệnh chuyển nội dung của ACCU tới ô nhớ: Cú pháp T Toán hạng là địa chỉ: - Byte IB,QB,PIB,MB,LB,DBB,DIB trong khoảng 0 - 255 - Từ IW,QW,PIW,MW,LW,DBW,DIW trong khoảng 0 - 216 - 1 - Từ kép ID,QD,PID,MD,LD,DBD,DID trong khoảng 0 - 232 – 1 Lệnh chuyển nội dung của ACCU1 vào ô nhớ có địa chỉ là toán hạng Ví dụ: T VB100 // Chuyển nội dung Byte thấp của từ thấp thanh ghi ACCU1 vào ô nhớ VB100. Lệnh đọc nội dung thanh ghi trạng thái vào ACCU1: Cú pháp L STW Lệnh chuyển nội dung thanh ghi trạng thái vào từ thấp của ACCU1 Lệnh ghi nội dung của ACCU1 vào thanh ghi trạng thái : Cú pháp T STW Lệnh chuyển 9 bits của từ thấp của ACCU1 vào thanh ghi trạng thái . Lệnh chuyển nội dung của ACCU2 vào ACCU1 : Cú pháp POP Lệnh chuyển nội dung của ACCU2 vào ACCU1,nội dung của thanh ghi ACCU2 không đổi . Lệnh chuyển nội dung của ACCU1 vào ACCU2 : Cú pháp PUSH Lệnh chuyển nội dung của ACCU1 vào ACCU2,nội dung của thanh ghi ACCU1 không đổi . Lệnh đảo nội dung của hai thanh ghi ACCU1 và ACCU2 : Cú pháp TAK Lệnh chuyển nội dung của ACCU1 vào ACCU2 và ngược lại . Lệnh đảo nội dung hai Byte của từ thấp trong thanh ghi ACCU1 : Cú pháp CAW Lệnh có tác dụng đảo nội dung hai byte của từ thấp trong thanh ghi ACCU1. Lệnh đảo nội dung các Byte trong thanh ghi ACCU1 : Cú pháp CAD Lệnh có tác dụng đảo nội dung tất cả 4 Byte trong thanh ghi ACCU1. Lệnh đảo giá trị các Bits trong từ thấp của thanh ghi ACCU1 : Cú pháp INVI Người soạn : Hà văn Trí 52
  53. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh có tác dụng đảo nội dung tất cả các Bits trong từ thấp của thanh ghi ACCU1. Lệnh đảo giá trị các Bits trong thanh ghi ACCU1 : Cú pháp INVD Lệnh có tác dụng đảo nội dung tất cả các Bits trong thanh ghi ACCU1. 3/ Các lệnh Logic thực hiện trên thanh ghi ACCU: Lệnh thực hiện phép giao giữa các bits trong từ thấp của ACCU1,ACCU2: Cú pháp: AW [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng,lệnh thực hiện phép tính giao giữa các bits thuộc từ thấp của hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào từ thấp của thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 16 bits.Khi đó lệnh thực hiện phép tính giao giữa dữ liệu với từ thấp của ACCU1.Kết quả được ghi lại vào từ thấp của ACCU1 Lệnh thực hiện phép giao giữa các bits của hai thanh ghi ACCU1,ACCU2: Cú pháp: AD [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng,lệnh thực hiện phép tính giao giữa hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 32 bits.Khi đó lệnh thực hiện phép tính giao giữa dữ liệu với thanh ghi ACCU1.Kết quả được ghi lại vào thanh ghi ACCU1 Lệnh thực hiện phép hợp giữa các bits trong từ thấp của ACCU1,ACCU2: Cú pháp: OW [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng,lệnh thực hiện phép tính hợp giữa các bits thuộc từ thấp của hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào từ thấp của thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 16 bits.Khi đó lệnh thực hiện phép tính hợp giữa dữ liệu với từ thấp của ACCU1.Kết quả được ghi lại vào từ thấp của ACCU1 Lệnh thực hiện phép giao giữa các bits của hai thanh ghi ACCU1,ACCU2: Cú pháp: OD [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng,lệnh thực hiện phép tính hợp giữa hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 32 bits.Khi đó lệnh thực hiện phép tính hợp giữa dữ liệu với thanh ghi ACCU1.Kết quả được ghi lại vào thanh ghi ACCU1 Lệnh thực hiện phép tính exclusive or 16 bits: Cú pháp: XOW [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng,lệnh thực hiện phép tính exclusive or giữa các bits của hai từ thấp của hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào từ thấp của thanh ghi ACCU1. Người soạn : Hà văn Trí 53
  54. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 16 bits.Khi đó lệnh thực hiện phép tính exclusive giữa dữ liệu với từ thấp của ACCU1.Kết quả được ghi lại vào từ thấp của ACCU1 Lệnh thực hiện phép tính exclusive or 16 bits: Cú pháp: XOD [ ] Lệnh có thể hoặc không có toán hạng - Nếu không có toán hạng,lệnh thực hiện phép tính exclusive or giữa các bits của hai hai thanh ghi ACCU1 và ACCU2. Kết quả ghi vào thanh ghi ACCU1. - Nếu có toán hạng thì toán hạng phải là dữ liệu hằng 32 bits.Khi đó lệnh thực hiện phép tính exclusive giữa dữ liệu với thanh ghi ACCU1.Kết quả được ghi lại vào thanh ghi ACCU1 4/ Nhóm lệnh tăng giảm nội dung thanh ghi ACCU: Lệnh tăng nội dung thanh ghi ACCU1: Cú pháp INC Toán hạng là số nguyên 8 bits Lệnh thực hiện phép cộng giữa byte thấp trong ACCU1 với toán hạng .Kết quả được ghi vào byte thấp của từ thấp của ACCU1.Nội dung của các Byte khác không thay đổi. Lệnh giảm nội dung thanh ghi ACCU1: Cú pháp DEC Toán hạng là số nguyên 8 bits Lệnh thực hiện phép trừ giữa byte thấp trong ACCU1 với toán hạng .Kết quả được ghi vào byte thấp của từ thấp của ACCU1.Nội dung của các Byte khác không thay đổi. 5/ Nhóm lệnh dịch chuyển nội dung thanh ghi ACCU: Lệnh xoay tròn các bits của ACCU1 theo chiều trái. Cú pháp RLD [ ] -Lệnh có thể có hoặc không có toán hạng là số nguyên không dấu trong khoảng 0 – 32.Khi đó lệnh thực hiện phép tính xoay tròn các Bits của ACCU1 theo chiều trái.Số Bits được xoay được chỉ định trong toán hạng .Tại mỗi lần xoay ,bit thứ 31 (bit cuối) bị đẩy ra khỏi ACCU1sẽ được ghi đồng thời vào CC1 và vào bit 0 ( bit đầu tiên).Nếu toán hạng là một số 0,lệnh sẽ không làm gì cả.Nếu toán hạng bằng 32,nội dung của ACCU1không bị thay đổi và bit CC1 trong thanh ghi trạng thái có giá trị là bit thứ 0 của ACCU1. Hai bits CC0 và 0V trong thanh ghi trạng thái sẽ bằng 0 khi toán hạng là một số lớn hơn 0. - Nếu không có toán hạng ,lệnh thực hiện phép tính xoay tròn các bits của ACCU1 theo chiều trái .Số bits được xoay tròn được chỉ thị trong byte thấp của từ thấp trong ACCU2.Tại mỗi lần xoay bit thứ 31 ( bit cuối) bị đẩy ra khỏi ACCU1 sẽ được ghi đồng thời vào CC1 và vào bit thứ 0 ( bit đầu tiên) .Nếu byte thấp của từ thấp trong thanh ghi ACCU2 bằng 0 thì lệnh không làm gì cả ,và nếu bằng 32 thì nội dung thanh ghi ACCU1 không bị thay đổi gì cảvà bit CC1 trong thanh ghi trạng thái có giá trị là bit thứ 0 của ACCU1.Hai bits CC0 và 0V trong thanh ghi trạng thái sẽ bằng 0 khi nội dung của byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0. ACCU1 CC1 Người soạn : Hà văn Trí 54
  55. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh xoay tròn ACCU1 theo chiều trái 1 bit. Cú pháp RLDA Lệnh không có toán hạng Lệnh thực hiện xoay tròn theo chiều trái 1 bit. Bit thứ 31 (bit cuối ) bị đẩy ra khỏi ACCU1 được ghi vào CC1,nội dung bit CC1 được chuyển vào bit 0( bit đầu tiên). ACCU1 CC1 Lệnh xoay tròn các bits của ACCU1 theo chiều phải. Cú pháp RDD [ ] Lệnh có thể có hoặc không có toán hạng ACCU1 CC1 Lệnh xoay tròn ACCU1 theo chiều phải 1 bit. Cú pháp RRDA Lệnh không có toán hạng CC1 Lệnh dịch trái các bits của từ thấp của ACCU1. Cú pháp SLW [ ] Lệnh có thể có hoặc không có toán hạng -Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0 – 16.Khi đó lệnh thực hiện dịch trái các bits trong từ thấp của ACCU1.Số bits được dịch được chỉ thị trong toán hạng .Nội dung của từ cao trong ACCU1 không bị thay đổi .Tại 1 lần dịch ,bit thứ 15 bị đẩy ra khỏi ACCU1 sẽ được ghi vào CC1 còn bit đầu (bit thứ 0) được ghi 0.Nếu toán hạng là một số 0,lệnh sẽ không làm gì cả Nếu toán hạng bằng 16 ,nội dung của thanh ghi ACCU1 không thay đổi và bit CC1 trong thanh ghi trạng thái có giá trị là bit thứ 0 của ACCU1.Hai bit CC0 và OV sẽ bằng 0 khi toán hạng là 1 số lớn hơn 0. Người soạn : Hà văn Trí 55
  56. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS -Nếu không có toán hạng ,lệnh thực hiện phép tính dịch trái của các bit trong từ thấp của ACCU1 với số bit được dịch là nội dung của byte thấp trong từ thấp của ACCU2.Nội dung của từ cao trong ACCU1 không bị thay đổi .Tại mỗi lần dịch ,bit thứ 15 bị đẩy ra khỏi ACCU1 sẽ được ghi vào CC1,còn bit đầu ( bit thứ 0) được ghi 0.Nếu byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0,hai bits CC0 và OV sẽ bằng 0. 15 0 Lệnh dịch trái các bits của ACCU1. CC1 Cú pháp SLD [ ] Lệnh có thể có hoặc không có toán hạng 31 0 CC1 Lệnh dịch phải các bits của từ thấp của ACCU1. Cú pháp SRW [ ] Lệnh có thể có hoặc không có toán hạng. 15 CC1 0 Lệnh dịch phải các bits của ACCU1. Cú pháp SRD [ ] Lệnh có thể có hoặc không có toán hạng. 31 CC1 0 Lệnh dịch phải số nguyên 16 bit trong ACCU1. Cú pháp SSI [ ] Lệnh có thể có hoặc không có toán hạng. - Nếu có toán hạng thì toán hạng là số nguyên không dấu trong khoảng 0 – 16 . Khi đó lệnh thực hiện phép tính dịch phải các bits trong từ thấp của ACCU1.Số bits được dịch là toán hạng .Nội dung của từ cao trong ACCU1 không bị thay đổi .Tại mỗi lần dịch ,bit 0 ( bit đầu) bị đẩy từ ACCU1 sang CC1còn bit thứ 15 được ghi lại đúng bằng giá trị cũ của nó .Nếu toán hạng là số lớn hơn 0 ,hai bits CC0 và OV sẽ bằng 0 - Nếu không có toán hạng ,lệnh thực hiện phép tính dịch phải các bits trong từ thấp của ACCU1 .Số bit được dịch là nội dung của byte thấp trong từ thấp của ACCU2.Nội dung của từ cao trong Người soạn : Hà văn Trí 56
  57. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS ACCU1 không bị thay đổi .Tại mỗi lần dịch ,bit thứ 0 bị đẩy ra khỏi ACCU1 sẽ được ghi vào CC1 ,bit thứ 15 được ghi lại đúng bằng giá trị cũ của nó .Nếu byte thấp của từ thấp trong ACCU2 là một số lớn hơn 0 ,hai bits CC0 và OV sẽ bằng 0 15 CC1 Lệnh dịch phải số nguyên 32 bit trong ACCU1. Cú pháp SSD [ ] Lệnh có thể có hoặc không có toán hạng. 31 CC1 6 / Nhóm lệnh so sánh số nguyên 16 bits: Trong tất cả những lệnh so sánh hai số nguyên 16 bits nằm trong 2 từ thấp của 2 thanh ghi ACCU1 và ACCU2 được trình bày sau đây đều tác động vào thanh ghi trạng thái như sau: CC1 CC0 Ý Nghĩa 0 0 Từ thấp ACCU2= từ thấp ACCU1 0 1 Từ thấp ACCU1 từ thấp ACCU1 Lệnh so sánh 2 số nguyên 16 bits: Cú pháp : = = I Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong từ thấp của ACCU1 có nội dung giống như số nguyên trong từ thấp của ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh không bằng nhau 2 số nguyên 16 bits: Cú pháp : I Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong từ thấp của ACCU2 lớn hơn số nguyên trong từ thấp của ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh nhỏ hơn 2 số nguyên 16 bits: Cú pháp : < I Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong từ thấp của ACCU2 nhỏ hơn số nguyên trong từ thấp của ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh lớn hơn hoặc bằng 2 số nguyên 16 bits: Người soạn : Hà văn Trí 57
  58. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Cú pháp : >= I Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 16 bits nằm trong hai từ thấp trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong từ thấp của ACCU2 lớn hơn hoặc bằng số nguyên trong từ thấp của ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh bé hơn hoặc bằng 2 số nguyên 16 bits: Cú pháp : ACCU1 Lệnh so sánh 2 số nguyên 32 bits: Cú pháp : = = D Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong thanh ghi ACCU1 có nội dung giống như số nguyên trong thanh ghi ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh không bằng nhau 2 số nguyên 32 bits: Cú pháp : D Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong thanh ghi ACCU2 lớn hơn số nguyên trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh nhỏ hơn 2 số nguyên 32 bits: Cú pháp : < D Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong thanh ghi ACCU2 nhỏ hơn số nguyên trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Người soạn : Hà văn Trí 58
  59. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh so sánh lớn hơn hoặc bằng 2 số nguyên 32 bits: Cú pháp : >= D Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số nguyên 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số nguyên trong thanh ghi ACCU2 lớn hơn hoặc bằng số nguyên trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh bé hơn hoặc bằng 2 số nguyên 32 bits: Cú pháp : ACCU1 Lệnh so sánh 2 số thực 32 bits: Cú pháp : = = R Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số thực trong thanh ghi ACCU1 có nội dung giống như số thực trong thanh ghi ACCU2 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh không bằng nhau 2 số thực 32 bits: Cú pháp : R Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số thực trong thanh ghi ACCU2 lớn hơn số thực trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh nhỏ hơn 2 số thực 32 bits: Cú pháp : < R Lệnh không có toán hạng . Người soạn : Hà văn Trí 59
  60. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số thực trong thanh ghi ACCU2 nhỏ hơn số thực trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh lớn hơn hoặc bằng 2 số thực 32 bits: Cú pháp : >= R Lệnh không có toán hạng . Lệnh thực hiện phép so sánh hai số thực 32 bits nằm trong hai thanh ghi ACCU1 và ACCU2.Nếu số thực trong thanh ghi ACCU2 lớn hơn hoặc bằng số thực trong thanh ghi ACCU1 thì bit trạng thái RLO sẽ nhận giá trị 1,ngược lại sẽ có giá trị 0. Lệnh so sánh bé hơn hoặc bằng 2 số thực 32 bits: Cú pháp : 0) a/ Nhóm lệnh làm việc với số nguyên 16 bits: Lệnh cộng: Cú pháp + I Lệnh thực hiện phép cộng hai số nguyên nằm trong từ thấp của ACCU1 và ACCU2.Kết quả được ghi lại vào từ thấp của ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm – 32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh trừ: Cú pháp - I Lệnh thực hiện phép trừ hai số nguyên nằm trong từ thấp của ACCU1 và ACCU2.Kết quả được ghi lại vào từ thấp của ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm – 32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh nhân: Cú pháp * I Lệnh thực hiện phép nhân hai số nguyên nằm trong từ thấp của ACCU1 và ACCU2.Kết quả là số nguyên 32 Bits được ghi lại vào thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm – 32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh chia: Cú pháp / I Người soạn : Hà văn Trí 60
  61. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh thực hiện phép chia hai số nguyên nằm trong từ thấp của ACCU2 cho từ thấp của ACCU1.Kết quả được ghi lại vào từ thấp của ACCU1,phần dư được ghi vào từ cao thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm – 32768 – 32767 thì hai bit OV và OS sẽ cùng nhận giá trị là 1. b/ Nhóm lệnh làm việc với số nguyên 32 bits: Lệnh cộng: Cú pháp + D Lệnh không có toán hạng Lệnh thực hiện phép cộng hai số nguyên 32 bit nằm trong hai thanh ghi ACCU1 và ACCU2.Kết quả được ghi lại vào thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm (– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh trừ: Cú pháp - D Lệnh không có toán hạng Lệnh thực hiện phép trừ hai số nguyên 32 bit nằm trong hai thanh ghi ACCU1 và ACCU2.Kết quả được ghi lại vào thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm (– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh nhân: Cú pháp * D Lệnh thực hiện phép nhân hai số nguyên 32 bit trong hai thanh ghi ACCU1 và ACCU2.Kết quả là số nguyên 32 Bits được ghi lại vào thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm (– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh chia: Cú pháp / D Lệnh thực hiện phép chia hai số nguyên 32 bit trong ACCU2 cho số nguyên 32 bit trong thanh ghi ACCU1.Kết quả là số nguyên 32 bit sẽ được ghi lại vào thanh ghi ACCU1.Nếu giá trị vượt tầm(– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh lấy phần dư: Cú pháp MOD Lệnh không có toán hạng và xác định phần dư của phép chia số nguyên 32 bit trong ACCU2 cho số nguyên 32 bit trong ACCU1.Kết quả là số nguyên 32 bit được ghi lại vào ACCU1. Nếu giá trị vượt tầm(– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. c/ Nhóm lệnh làm việc với số thực: Lệnh cộng: Cú pháp + R Lệnh không có toán hạng Lệnh thực hiện phép cộng hai số thực nằm trong hai thanh ghi ACCU1 và ACCU2.Kết quả được ghi lại vào thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm (– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh trừ: Cú pháp - R Lệnh không có toán hạng Người soạn : Hà văn Trí 61
  62. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh thực hiện phép trừ hai số thực nằm trong hai thanh ghi ACCU1 và ACCU2.Kết quả được ghi lại vào thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm (– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh nhân: Cú pháp * R Lệnh thực hiện phép nhân hai số thực trong hai thanh ghi ACCU1 và ACCU2.Kết quả là số thực được ghi lại vào thanh ghi ACCU1.Nội dung của thanh ghi ACCU2 không bị thay đổi .Nếu giá trị vượt tầm (– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh chia: Cú pháp / R Lệnh thực hiện phép chia hai thực trong ACCU2 cho số thực trong thanh ghi ACCU1.Kết quả là số thực sẽ được ghi lại vào thanh ghi ACCU1.Nếu giá trị vượt tầm(– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh lấy phần dư: Cú pháp MOD Lệnh không có toán hạng và xác định phần dư của phép chia số nguyên 32 bit trong ACCU2 cho số nguyên 32 bit trong ACCU1.Kết quả là số nguyên 32 bit được ghi lại vào ACCU1. Nếu giá trị vượt tầm(– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh lấy giá trị tuyệt đối: Cú pháp ABS Lệnh không có toán hạng và xác định giá trị tuyệt đối của số thực trong ACCU1.Kết quả sẽ được ghi lại vào ACCU1.Đặc biệt lệnh này không làm thay đổi nội dung của các bit trạng thái. Lệnh tính Sin: Cú pháp SIN Lệnh không có toán hạng và xác định sin của số thực trong ACCU1.Kết quả sẽ được ghi lại vào ACCU1. Lệnh tính Cos: Cú pháp COS Lệnh không có toán hạng và xác định cos của số thực trong ACCU1.Kết quả sẽ được ghi lại vào ACCU1. Lệnh tính Tan: Cú pháp TAN Lệnh không có toán hạng và xác định tang của số thực trong ACCU1.Kết quả sẽ được ghi lại vào ACCU1. Nếu giá trị vượt tầm(– 2147483648 , 2147483648) thì hai bit OV và OS sẽ cùng nhận giá trị là 1. Lệnh tính Arsin: Cú pháp ASIN Lệnh không có toán hạng và xác định arcsin của số thực trong ACCU1,số thực này phải nằm trong khoảng (-1,1).Kết quả là một số thực trong khoảng (-pi/2,pi/2)sẽ được ghi lại vào ACCU1. Lệnh tính Arcos: Cú pháp ACOS Lệnh không có toán hạng và xác định arccos của số thực trong ACCU1,số thực này phải nằm trong khoảng (-1,1).Kết quả là một số thực trong khoảng (-pi,0)sẽ được ghi lại vào ACCU1. Người soạn : Hà văn Trí 62
  63. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Lệnh tính Artg: Cú pháp ATAN Lệnh không có toán hạng và xác định arctg của số thực trong ACCU1.Kết quả là một số thực trong khoảng (-pi/2,pi/2)sẽ được ghi lại vào ACCU1. Lệnh tính bình phương: Cú pháp SQR Lệnh không có toán hạng và xác định giá trị bình phương của số thực trong ACCU1.Kết quả sẽ được ghi lại vào ACCU1. Lệnh tính căn bậc hai: Cú pháp SQRT Lệnh không có toán hạng và xác định căn bậc hai của số thực trong ACCU1,số thực này phải là số thực không âm.Kết quả là một số thực không âm sẽ được ghi lại vào ACCU1. Lệnh đảo dấu: Cú pháp NERG Lệnh không có toán hạng và có tác dụng đổi dấu số thực trong ACCU1.Kết quả sẽ được ghi lại vào ACCU1.Đặc biệt lệnh này không làm thay đổi nội dung của các bit trạng thái. 10 / Lệnh đổi kiểu dữ liệu: Trong ngôn ngữ lập trình STL của S7_300 có nhiều dạng dữ liệu khác nhau như: - Số nguyên 16 Bits. - Số nguyên 32 Bits - Số nguyên dạng BCD - Số thực dấu phẩy động - Và một số dạng dữ liệu khác Việc làm với nhiều dạng dữ liệu khác nhau đặt ra cho ta vấn đề cần phải chuyển đổi chúng .Ví dụ khi đọc tín hiệu tương tự từ cổng tương tự ta nhận được số liệu dạng nguyên 16 bits mang giá trị tín hiệu tương tự chứ không phải bản thân giá trị đó,bởi vậy để xử lý tiếp thì cần thiết phải chuyển số nguyên đó thành đúng giá trị thực,dấu phẩy động của tín hiệu tượng tự ở cổng. a/ Chuyển đổi số BCD thành số nguyên và ngược lại: Lệnh chuyển đổi BCD thành số nguyên 16 bits: Cú pháp BTI Lệnh không có toán hạng và chuyển đổi một số BCD có 3 chữ số nằm trong 12 Bits đầu của ACCU1 thành số nguyên 16 bits.Kết quả được cất lại vào 16 bits cuối (từ thấp) của ACCU1.Lệnh không làm thay đổi nội dung của thanh ghi trạng thái. 31 12 11 8 7 4 3 0 4 5 9 BTI 31 16 15 0 Số nguyên định dạng 16 bits Người soạn : Hà văn Trí 63
  64. Bài giảng S7-300 Công ty TNHH TM&DV Kĩ thuật SIS Nếu số BCD cần chuyển đổi có cấu trúc sai ,ví dụ như có 1 chữ số 4 bits nhị phân không nằm trong khoảng từ 0 đến 9,CPU sẽ gọi chương trình ngắt xử lí lỗi OB121 hoặc chuyển qua chế độ Stop (nếu OB121 không có chương trình). Lệnh chuyển đổi BCD thành số nguyên 32 bits: Cú pháp BTD Lệnh không có toán hạng và chuyển đổi một số BCD có 7 chữ số nằm trong 28 Bits đầu của ACCU1 thành số nguyên 32 bits.Kết quả được cất lại vào thanh ghi ACCU1.Lệnh không làm thay đổi nội dung của thanh ghi trạng thái. 31 27 16 15 0 1 4 0 9 8 2 0 BTD 31 16 15 0 Số nguyên định dạng 32 bits Nếu số BCD cần chuyển đổi có cấu trúc sai ,ví dụ như có 1 chữ số 4 bits nhị phân không nằm trong khoảng từ 0 đến 9,CPU sẽ gọi chương trình ngắt xử lí lỗi OB121 hoặc chuyển qua chế độ Stop (nếu OB121 không có chương trình). Lệnh chuyển đổi số nguyên 16 bits thành số BCD: Cú pháp ITB Lệnh không có toán hạng và chuyển đổi một số nguyên 16 bits thành số BCD có 3 chữ số.Kết quả được cất lại vào từ thấp của thanh ghi ACCU1. Nếu số nguyên 16 bits cần chuyển đổi có giá trị tuyệt đối lớn hơn 999 ,CPU sẽ thông báo trong thanh ghi trạng thái dưới dạng kết quả tràn Lệnh chuyển đổi số nguyên 32 bits thành số BCD: Cú pháp DTB Lệnh không có toán hạng và chuyển đổi một số nguyên 32 bits thành số BCD có 7 chữ số.Kết quả được cất lại vào thanh ghi ACCU1. Nếu số nguyên 32 bits cần chuyển đổi có giá trị tuyệt đối lớn hơn 9999999 ,CPU sẽ thông báo trong thanh ghi trạng thái dưới dạng kết quả tràn b/ Chuyển đổi số nguyên 16 bits thành số nguyên 32 bits: Cú pháp : ITD Lệnh không có toán hạng và thực hiện việc chuyển đổi một số nguyên 16 bits trong từ thấp của ACCU1 thành số nguyên 32 bits .Kết quả được cất vào lại ACCU1.Lệnh không làm thay đổi nội dung của thanh ghi trạng thái. c/ Chuyển đổi số nguyên 32 bits thành số thực: Cú pháp : DTR Lệnh không có toán hạng và thực hiện việc chuyển đổi một số nguyên 32 bits trong thanh ghi ACCU1 thành số thực .Kết quả được cất vào lại ACCU1.Lệnh không làm thay đổi nội dung của thanh ghi trạng thái. d/ Chuyển đổi số thực thành số nguyên 32 bits: Lệnh làm tròn: Người soạn : Hà văn Trí 64