-
Thành viên cấp 3
nmh_bk:
1. Ở đây bạn thanhke_auto dùng con trỏ AR1, em xin trích nguyên văn câu hỏi này:
"Em có cái thắc mắc này muốn hỏi. tại sao khi dùng con trỏ ARn trong STL hay có cái đoạn như sau:
L #diachitruyxuat
SLW 3
LAR1
L 100.0
T MW [AR1 , P#0.0]
vd địa chỉ truyền thông của m bắt đầu là 3000. thì biến truyền vào #diachitruyxuat sẽ là 3000 trong chương trình gọi nó. nhưng tại sao lại luôn có dòng lệnh SLW 3"
cái sai ở đây là cách khai báo lệnh Load một giá trị vào ACCU1:
L #diachitruysuat => sai
L L#diachitruysuat => đúng
ví dụ:
L L#3000 => ghi giá trị 3000 vào thanh ghi ACCU1(32bit nhé),sau đó tiếp lệnh
SLW 3 => dịch chuyển 3 bit trong ACCU1 về bên trái, mục đích để trùng với cấu trúc của con trỏ AR1 mới thu về giá trị đúng.
....
2. xin trích câu trả lời của bạn nmh_bk nha: "con trỏ toàn cục theo em biết thì thường dụng lệnh L D [ARx,P#2.0] để lấy địa chỉ"
- lệnh L D [ARx,P#2.0] của bạn để load địa chỉ một bit trong vùng nào đó của plc bằng cách sử dụng con trỏ ARx, còn P#2.0 chỉ là giá trị offset tùy vào bit bạn muốn load. Do đó, tùy vào mục đích người dùng là lệnh thay đổi chứ không phải "con trỏ toàn cục thì thường dụng lệnh L D [ARx,P#2.0] để lấy địa chỉ"
mọi người cho ý kiến thêm nhé!
-
-
Thành viên cấp 3
![Trích dẫn](images/styles/lifeSpace/misc/quote_icon.png)
Gửi bởi
minhhungspk
nmh_bk:
1. Ở đây bạn thanhke_auto dùng con trỏ AR1, em xin trích nguyên văn câu hỏi này:
"Em có cái thắc mắc này muốn hỏi. tại sao khi dùng con trỏ ARn trong STL hay có cái đoạn như sau:
L #diachitruyxuat
SLW 3
LAR1
L 100.0
T MW [AR1 , P#0.0]
vd địa chỉ truyền thông của m bắt đầu là 3000. thì biến truyền vào #diachitruyxuat sẽ là 3000 trong chương trình gọi nó. nhưng tại sao lại luôn có dòng lệnh SLW 3"
cái sai ở đây là cách khai báo lệnh Load một giá trị vào ACCU1:
L #diachitruysuat => sai
L L#diachitruysuat => đúng
ví dụ:
L L#3000 => ghi giá trị 3000 vào thanh ghi ACCU1(32bit nhé),sau đó tiếp lệnh
SLW 3 => dịch chuyển 3 bit trong ACCU1 về bên trái, mục đích để trùng với cấu trúc của con trỏ AR1 mới thu về giá trị đúng.
....
2. xin trích câu trả lời của bạn nmh_bk nha: "con trỏ toàn cục theo em biết thì thường dụng lệnh L D [ARx,P#2.0] để lấy địa chỉ"
- lệnh L D [ARx,P#2.0] của bạn để load địa chỉ một bit trong vùng nào đó của plc bằng cách sử dụng con trỏ ARx, còn P#2.0 chỉ là giá trị offset tùy vào bit bạn muốn load. Do đó, tùy vào mục đích người dùng là lệnh thay đổi chứ không phải "con trỏ toàn cục thì thường dụng lệnh L D [ARx,P#2.0] để lấy địa chỉ"
mọi người cho ý kiến thêm nhé!
bạn thử dùng lệnh L 10 với lệnh L L#10 xem thử ACC 1 chứa cái gì? bạn có biết con trỏ toàn cục là gì không? bạn có biết kiểu dữ liệu pointer có độ dài 6 byte không? còn any pointer là 10 byte? mấy cái byte đó chứa cái gì? tại sao lại dùng L D [ARx,P#2.0] đối với kiểu pointer, còn any pointer thì load kiểu khác nha?thanh ghi AR của bạn chỉ dài 4byte thôi
Lần sửa cuối bởi nmh_bk, ngày 02-09-2015 lúc 08:29 PM.
-
-
Thành viên cấp 3
![Trích dẫn](images/styles/lifeSpace/misc/quote_icon.png)
Gửi bởi
nmh_bk
bạn thử dùng lệnh L 10 với lệnh L L#10 xem thử ACC 1 chứa cái gì? bạn có biết con trỏ toàn cục là gì không? bạn có biết kiểu dữ liệu pointer có độ dài 6 byte không? còn any pointer là 10 byte? mấy cái byte đó chứa cái gì? tại sao lại dùng L D [ARx,P#2.0] đối với kiểu pointer, còn any pointer thì load kiểu khác nha?thanh ghi AR của bạn chỉ dài 4byte thôi
![36](images/smilies/onion/36.gif)
xin lỗi bạn nhưng mình đã cố gắng giải thích, còn bạn thì cứ cố gắng hỏi và hỏi.
không biết bạn có đọc kỹ câu hỏi của bạn thanhke_auto không, cú pháp bạn ấy đưa ra là: L #diachitruyxuat. xin hỏi bạn cú pháp của lệnh đọc vào thanh ghi này có đúng chưa? ( ví dụ: L #10), còn bạn đem so sánh L 10 và L L#10 là đều đúng cú pháp, chỉ khác về ý nghĩa lệnh thôi, nhưng lại lệch với ý mình muốn trả lời. mình nghĩ bạn nên đọc lại kỹ trước khi trả lời. còn hỏi any pointer, ko liên quan ở đây.
-
-
Thành viên cấp 3
![Trích dẫn](images/styles/lifeSpace/misc/quote_icon.png)
Gửi bởi
minhhungspk
xin lỗi bạn nhưng mình đã cố gắng giải thích, còn bạn thì cứ cố gắng hỏi và hỏi.
không biết bạn có đọc kỹ câu hỏi của bạn thanhke_auto không, cú pháp bạn ấy đưa ra là: L #diachitruyxuat. xin hỏi bạn cú pháp của lệnh đọc vào thanh ghi này có đúng chưa? ( ví dụ: L #10), còn bạn đem so sánh L 10 và L L#10 là đều đúng cú pháp, chỉ khác về ý nghĩa lệnh thôi, nhưng lại lệch với ý mình muốn trả lời. mình nghĩ bạn nên đọc lại kỹ trước khi trả lời. còn hỏi any pointer, ko liên quan ở đây.
mình nghĩ bạn dùng con trỏ thì cần phải biết pointer với any pointer thôi
còn mấy cái load gì ấy, mình không biết,
mình chỉ quan tâm nội dung của máy thanh ghi chứa cái gì thôi, con bạn muốn làm gì thì tùy bạn thôi
-
-
-
-
Thành viên cấp 3
hi.mình cũng tự đặt câu hỏi tự trả lời ko đó chứ. có gì trao đổi thêm để tiến bộ.thân!
-
-
Thành viên cấp 1
thấy mấy bác trao đổi em đọc không hiểu gì hết, e có nghe nói về lập trình STL. mấy bác cho e xin 1 ít tài liệu loại này được không ah. e muốn lần sau vào đây sẽ hiểu được các bác chia sẽ nội dung gì. thanks all
-
-
Thành viên cấp 4
![Trích dẫn](images/styles/lifeSpace/misc/quote_icon.png)
Gửi bởi
minhhungspk
nmh_bk:
1. Ở đây bạn thanhke_auto dùng con trỏ AR1, em xin trích nguyên văn câu hỏi này:
"Em có cái thắc mắc này muốn hỏi. tại sao khi dùng con trỏ ARn trong STL hay có cái đoạn như sau:
L #diachitruyxuat
SLW 3
LAR1
L 100.0
T MW [AR1 , P#0.0]
vd địa chỉ truyền thông của m bắt đầu là 3000. thì biến truyền vào #diachitruyxuat sẽ là 3000 trong chương trình gọi nó. nhưng tại sao lại luôn có dòng lệnh SLW 3"
cái sai ở đây là cách khai báo lệnh Load một giá trị vào ACCU1:
L #diachitruysuat => sai
L L#diachitruysuat => đúng
ví dụ:
L L#3000 => ghi giá trị 3000 vào thanh ghi ACCU1(32bit nhé),sau đó tiếp lệnh
SLW 3 => dịch chuyển 3 bit trong ACCU1 về bên trái, mục đích để trùng với cấu trúc của con trỏ AR1 mới thu về giá trị đúng.
....
2. xin trích câu trả lời của bạn nmh_bk nha: "con trỏ toàn cục theo em biết thì thường dụng lệnh L D [ARx,P#2.0] để lấy địa chỉ"
- lệnh L D [ARx,P#2.0] của bạn để load địa chỉ một bit trong vùng nào đó của plc bằng cách sử dụng con trỏ ARx, còn P#2.0 chỉ là giá trị offset tùy vào bit bạn muốn load. Do đó, tùy vào mục đích người dùng là lệnh thay đổi chứ không phải "con trỏ toàn cục thì thường dụng lệnh L D [ARx,P#2.0] để lấy địa chỉ"
mọi người cho ý kiến thêm nhé!
Ở đây bạn Hùng hiểu sai ý rồi:
1. L #diachitruysuat Không phải là L#10. Ý của bạn kia ở đây #diachitruysuat la 1 biến IN trong FC. Địa chỉ (VD 10) sẽ được đưa vào chân IN (diachitruysuat) của FC mình vừa viết chứ k phải là nhập L#10
2. Cái này bạn Hùng nói đúng, mà lệnh L D [ARx,P#2.0] là load 1 doubleword chứ k phải 1 bít nha
Lần sửa cuối bởi Mechatronic_Hieu, ngày 02-24-2015 lúc 09:10 PM.
Nhận hợp tác lập trình các loại PLC và xử lý sự cố về hệ thống tự động hóa
Gm:
Hidden Content
-
Bài viết của "Mechatronic_Hieu" đã được cám ơn bởi các thành viên:
-
Thành viên cấp 3
![Trích dẫn](images/styles/lifeSpace/misc/quote_icon.png)
Gửi bởi
quanglocbp
thấy mấy bác trao đổi em đọc không hiểu gì hết, e có nghe nói về lập trình STL. mấy bác cho e xin 1 ít tài liệu loại này được không ah. e muốn lần sau vào đây sẽ hiểu được các bác chia sẽ nội dung gì. thanks all
2 bạn, trên diễn đàn đã có rồi, bạn chauvinhloi đã up, mình chỉ đưa link lại thôi: http://www.mediafire.com/?rqmtyij75ivyp#rqmtyij75ivyp. thân!
-
Tag của Chủ đề này
Quyền viết bài
- Bạn Không thể gửi Chủ đề mới
- Bạn Không thể Gửi trả lời
- Bạn Không thể Gửi file đính kèm
- Bạn Không thể Sửa bài viết của mình
-
Nội quy - Quy định
Back to Top
Múi giờ GMT +7. Bây giờ là 08:24 PM.
Phiên bản 4.2.5
Phát triển bởi thành viên PLCVietNam®.
Đánh dấu