-
Thành viên cấp 4
Gửi bởi
nmh_bk
em thì mới tìm hiểu con trỏ được vài tuần
Con trỏ có con trỏ địa phương và con trỏ toàn cục (em đọc trong sách của Nguyễn Doãn Phước)
Con trỏ mà anh đang dùng là con trỏ địa phương
cấu trúc con trỏ thì như hình
Đính kèm 1323
theo cái hình thì 3 bit cuối luôn là đỉa chỉ bít vì vậy cần dịch trái 3 bít thì mới thu được dữ liệu có cấu trúc của con trỏ như hình
vì con trỏ của anh là con trỏ địa phương nên mới phải làm thế, còn nếu là con trỏ toàn cục thì k có
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ỉ
Hình như bạn có sự nhầm lẫn ở đây, SLW3 và LD[ARx,P#2.0] là 2 câu lện ra kết quả khác nhau và k cùng mục đích
Chúc mọi người năm mới vui vẻ
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
-
-
Thành viên cấp 4
L D[ARx,P#2.0]: lấy địa chỉ sau 2 byte từ byte đầu tiên của con trỏ, sau khi lấy thì cần slw3 nữa mới ra đúng--> cho nên 2 cái này khác nhau. K biết vậy đúng k, chờ anh em cho ý kiến
Lần sửa cuối bởi Mechatronic_Hieu, ngày 01-25-2014 lúc 10:05 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
-
-
Thành viên cấp 3
Gửi bởi
Mechatronic_Hieu
LB[ar p2.0] chi la tro no toi bit 23 cua pointer thoi, (con ban LD[p2.0] thi k biet lay dc cai gi nua)no se ra kq truoc khi slw3, k biet minh nghi vay co nham lan cho nao k, cho anh e cho y kien
Xin loi moi nguoi vi dung MTB nen k biet viet dau
anh chưa hiểu ý em, làm việc với con trỏ địa phương thì em mới dùng SLW3 còn nếu làm việc với con trỏ toàn cục thì em dung L D[ARx,P#2.0]
-
-
Thành viên cấp 3
ở đây em dùng L D[ARX,p#2.0] chứ không phải là L B[ARX,p#2.0] vì AR là thanh ghi 32 bít, em dùng L D vì em muốn data thu được sau lẹnh L D[ARX,p#2.0] em load nó vào lại AR
ví dụ như em muốn pointer trỏ đến địa chỉ M100.0 thay vì mấy lệnh lằng nhằng ta có thể tính toán gán thẳng vào pointer luôn ví dụ như sau:
L d#16#83000320
LARx
sau 2 lệnh này pointer đã trỏ tới M100.0
Lần sửa cuối bởi nmh_bk, ngày 02-06-2014 lúc 03:43 PM.
-
-
Thành viên cấp 3
Gửi bởi
Mechatronic_Hieu
L D[ARx,P#2.0]: lấy địa chỉ sau 2 byte từ byte đầu tiên của con trỏ, sau khi lấy thì cần slw3 nữa mới ra đúng--> cho nên 2 cái này khác nhau. K biết vậy đúng k, chờ anh em cho ý kiến
theo em biết ví dụ với con trỏ toàn cục
L p#m100.0
LARx
L D[ARx,P#2.0]
nếu dùng con trỏ toàn cục thì không cần dịch thêm bít gì nữa, địa chỉ thu được đã đúng rồi
còn với con trỏ địa phương kiểu như cái ví dụ của anh gì ở phần đầu bắt buộc phải dịch 3 bít để thu được địa chỉ chính xác
ví dụ như sau ạ:
L 100
SLW 3
LARx
hoặc khỏi phải dịch, theo cấu trúc của pointer ta có tính và gán trục tiếp luôn, đoạn lệnh sau cho kết quả trùng với 3 lệnh trên
L D#16#00000320
LARx
đó là em hiểu thế, có gì sai mong anh chỉ thêm
-
-
Thành viên cấp 4
Gửi bởi
nmh_bk
theo em biết ví dụ với con trỏ toàn cục
L p#m100.0
LARx
L D[ARx,P#2.0]
nếu dùng con trỏ toàn cục thì không cần dịch thêm bít gì nữa, địa chỉ thu được đã đúng rồi
còn với con trỏ địa phương kiểu như cái ví dụ của anh gì ở phần đầu bắt buộc phải dịch 3 bít để thu được địa chỉ chính xác
ví dụ như sau ạ:
L 100
SLW 3
LARx
hoặc khỏi phải dịch, theo cấu trúc của pointer ta có tính và gán trục tiếp luôn, đoạn lệnh sau cho kết quả trùng với 3 lệnh trên
L D#16#00000320
LARx
đó là em hiểu thế, có gì sai mong anh chỉ thêm
Chính xác, vấn đề là L 100 nó khác L #100.0 nên cần phải dịch
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
-
-
Thành viên cấp 3
Gửi bởi
nmh_bk
em thì mới tìm hiểu con trỏ được vài tuần
Con trỏ có con trỏ địa phương và con trỏ toàn cục (em đọc trong sách của Nguyễn Doãn Phước)
Con trỏ mà anh đang dùng là con trỏ địa phương
cấu trúc con trỏ thì như hình
Đính kèm 1323
theo cái hình thì 3 bit cuối luôn là đỉa chỉ bít vì vậy cần dịch trái 3 bít thì mới thu được dữ liệu có cấu trúc của con trỏ như hình
vì con trỏ của anh là con trỏ địa phương nên mới phải làm thế, còn nếu là con trỏ toàn cục thì k có
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ỉ
e đang tìm hiểu con trỏ thì tìm được topic này, e thấy câu hỏi bạn này có cấu trúc khai báo lệnh không chính xác thì phải, xin sửa lại như sau:
L L#diachitruyxuat => sai ở chỗ này
SLW 3
LAR1
L 100.0
T MW [AR1 , P#0.0]
p/s nmh_bk: sao phải dùng lệnh L D [ARx,P#2.0] để lấy địa chỉ con trỏ toàn cục, em nghĩ L D [ARx,P#0.0] hay offset giá trị khác cũng ok mà.
xin mọi người cho ý kiến nha!
-
-
Thành viên cấp 3
em xin đóng góp với topic này bằng tài liệu học stl của siemens: https://cache.industry.siemens.com/d...1/s7awl__b.pdf
-
-
Thành viên cấp 3
Nếu bạn có chương trình WinCC nữa thì bạn có thể truy ngược từ WinCC, những tag nào dùng rồi sau đó bạn vào PLC để tìm các tag đó nó nằm ở đâu. Kết hợp với chương trình WinCC thì bạn có thể giải quyết bài toán nhanh hơn, còn một cái nữa là khi mở chương trình PLC (300-400), muốn biết FB, FC nào không dùng thì bạn chọn cột bên trái và trỏ vào Call Structure. Những FB, FC nào có đánh dấu X thì những cái đó không được dùng tới, bạn sẽ ko cần quan tâm đến cái đó.
-
-
Thành viên cấp 3
Gửi bởi
minhhungspk
e đang tìm hiểu con trỏ thì tìm được topic này, e thấy câu hỏi bạn này có cấu trúc khai báo lệnh không chính xác thì phải, xin sửa lại như sau:
L L#diachitruyxuat => sai ở chỗ này
SLW 3
LAR1
L 100.0
T MW [AR1 , P#0.0]
p/s nmh_bk: sao phải dùng lệnh L D [ARx,P#2.0] để lấy địa chỉ con trỏ toàn cục, em nghĩ L D [ARx,P#0.0] hay offset giá trị khác cũng ok mà.
xin mọi người cho ý kiến nha!
bạn tìm hiểu lại nha, có mấy loại con trỏ, cái bạn bảo sai ở trên kia bạn xem lại xem ng ta dùng con tro nào, mình dùng L D [ARx,P#2.0] là có lý do mà, lý do là gì bạn xem lại kiểu dữ liệu pointer nhé,bạn có biết L D [ARx,P#2.0] mình dùng để lấy cái gì không, L D [ARx,P#0.0] sẽ lấy cái khác nha
-
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à 09:31 AM.
Phiên bản 4.2.5
Phát triển bởi thành viên PLCVietNam®.
Đánh dấu