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
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
ở đâ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.
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
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
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!
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
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 đó.
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
Đánh dấu