-
Thành viên cấp 3
Rảnh rỗi nên em viết code chơi cho không quên kiến thức
không biết nó có ích không, sau đây là chức năng ạ
hàm cộng nhiều số liên tiếp, có gì sai mấy anh chỉ em với ạ
ví dụ muốn cộng 10 byte bắt đầu từ mb10 ---> nhập p#m10.0 byte 10
cộng 10 số int bắt đầu từ mw10--> nhậpp#m10.0 int 10
cộng 10 số dint bắt đầu từ md10--> nhậpp#m10.0 dint 10
FUNCTION "sum" : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
IN : ANY ;
END_VAR
VAR_OUTPUT
sum : DINT ;
END_VAR
VAR_TEMP
data_type : BYTE ;
n : INT ;
count : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##IN;
LAR1 ;
L B [AR1,P#1.0];
T #data_type;
L W [AR1,P#2.0];
T #n;
L D [AR1,P#6.0];
LAR1 ;
//------------------------------------------
A( ;
L #data_type;
L B#16#2;
==I ;
) ;
JNB lb1;
L 0;
T #data_type;
JU next;
lb1: A( ;
L #data_type;
L B#16#5;
==I ;
) ;
JNB lb2;
L 1;
T #data_type;
JU next;
lb2: A( ;
L #data_type;
L B#16#7;
==I ;
) ;
JNB err;
L 2;
T #data_type;
next: NOP 0;
L 0;
T #sum;
L #n;
lap: T #count;
L #data_type;
JL er;
JU l0;
JU l1;
JU l2;
er: JU err;
l0: L B [AR1,P#0.0];
L #sum;
+D ;
T #sum;
+AR1 P#1.0;
JU lb3;
l1: L W [AR1,P#0.0];
L #sum;
+D ;
T #sum;
+AR1 P#2.0;
JU lb3;
l2: L D [AR1,P#0.0];
L #sum;
+D ;
T #sum;
+AR1 P#4.0;
lb3: NOP 0;
L #count;
LOOP lap;
BEU ;
err: NOP 0;
BEU ;
END_FUNCTION
-
-
Thành viên cấp 3
mấy anh cho em hỏi xíu ạ...
khi em mở khóa mấy khối FC thì em thấy đa số mấy khối đó người ta thường dùng lệnh OPN để mở khối DB
, em không biết người ta mở khối DB đó ra làm gì,sau khi mở khôi thì dữ liệu sẽ như thế nào, nêu có ghi vào khối thì làm để xem được dữ liệu đó ạ
OPN DB [#BLOCK_NO]
-
-
Thành viên cấp 3
Truyền time từ HMI xuống PLC
chức năng giống hàm trong #64, vì #64 em viết dài quá nên em viết lại
FUNCTION FC 2 : VOID
TITLE =
//truyen time tu HMI xuong PLC
//vi du de truyen 2h46m30s tren hmi ta nhap 02h46m30s tag tren HMI kieu string
VERSION : 0.1
VAR_INPUT
time_add : POINTER ; //dia chi bat dau cua chuoi timer
END_VAR
VAR_OUTPUT
timer_out : WORD ;
END_VAR
VAR_TEMP
giay : INT ;
count : INT ;
TEMP0 : BYTE ;
d_pointer : DWORD ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##time_add;
LAR1 ;
L D [AR1,P#2.0];
T #d_pointer;
LAR1 ;
A( ;
L B [AR1,P#2.0];
L 47;
>D ;
) ;
JNB exit;
//-----------------------------------------------
L 8;
lap: T #count;
L B [AR1,P#2.0];
L '0';
-I ;
T B [AR1,P#100.0];
+AR1 P#1.0;
L #count;
LOOP lap;
//-----------------------------------------------
L #d_pointer;
LAR1 ;
LAR2 ;
+AR1 P#100.0;
+AR2 P#110.0;
//------------------------------------------------
L 3;
lap2: T #count;
L B [AR1,P#0.0];
SLW 4;
T #TEMP0;
L #TEMP0;
L B [AR1,P#1.0];
OW ;
BTI ;
T B [AR2,P#0.0];
+AR1 P#3.0;
+AR2 P#1.0;
L #count;
LOOP lap2;
//----------------------------------------------
L #d_pointer;
LAR2 ;
+AR2 P#110.0;
//----------------------------------------------
L B [AR2,P#0.0];
L 3600;
*I ;
T #giay;
L B [AR2,P#1.0];
L 60;
*I ;
L #giay;
+I ;
T #giay;
L B [AR2,P#2.0];
L #giay;
+I ;
DTB ;
T #giay;
//------------------------------------------------
A( ;
L #giay;
L W#16#999;
<D ;
) ;
JNB lb1;
L #giay;
L W#16#2000;
OW ;
T #timer_out;
JU exit;
lb1: L #giay;
SRD 4;
L W#16#3000;
OW ;
T #timer_out;
JU exit;
exit: SET ;
SAVE ;
BEU ;
END_FUNCTION
Lần sửa cuối bởi nmh_bk, ngày 03-07-2014 lúc 08:08 PM.
-
-
Thành viên cấp 3
em mới tìm hiểu về đóng ngắt thì thấy có đong ngắt dương và đóng ngắt âm, các anh cho em hỏi là khi nào dùng đóng ngắt dương và khi nào dùng đóng ngăt âm ạ...
... cho em hỏi câu nữa là cái nut stop trong hệ thống cái nút to đùng màu đỏ đập cái là hệ thống dừng, muốn chạy lại thì phải vặn hoặc có cái chìa khóa mới mở được ấy ạ... cho em hỏi là cái nút đó người ta thường lập trình cho nó hay chỉ kết nối phần cứng cho nó thôi, và nếu dùng kết nói phần cứng thì thường dùng đóng ngắt âm hay đóng ngắt dương ạ (đóng ngắt ở đây ý em là đóng ngắt nguồn của mấy cái phần tử đáp ứng ạ)
-
-
Thành viên cấp 3
truyền timer từ HMI xuống PLC: STRING_TO_S5TIME
nhập vào 1 chuỗi ví dụ: 100m10s, 900s,10m,1m30s, phần số tối đa 3 số, qua hàm này nó sẽ tính toán và cho ra dữ liệu kiểu S5TIME
Cái này em viết bằng SCL build ra STL share lên đây: http://www.mediafire.com/download/8t..._to_s5time.txt
-
-
Thành viên Mới

Gửi bởi
nmh_bk
hàm set nhiều bít liên tiếp
FUNCTION "set bit" : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
IN : POINTER ;
N : INT ;
END_VAR
VAR_TEMP
cont : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##IN;
LAR1 ;
L D [AR1,P#2.0];
LAR1 ;
A( ;
L #N;
L 0;
<>I ;
) ;
JNB exit;
L #N;
lap: T #cont;
S [AR1,P#0.0]; // doi S=>R =>reset
+AR1 P#0.1;
L #cont;
LOOP lap;
exit: NOP 0;
END_FUNCTION
anh nmh_bk giải thích giúp em mấy dòng lệnh cuối được không , em đọc mãi cũng không hiểu
-
-
Thành viên cấp 3

Gửi bởi
thienan
anh nmh_bk giải thích giúp em mấy dòng lệnh cuối được không , em đọc mãi cũng không hiểu
có gì đâu mà bạn k hiểu...
vòng lặp giống for .. next ấy, đó là set nhiêu bit, muôn đời thành hàm reset nhiều bit thì S=>R... thế thôi
-
-
Thành viên cấp 1
Sao nhìn đoạn code này phức tạp quá. Mình đang định ôn lại kiến thức mà nhìn đoạn này chẳng hiểu được là bao.
-
-
Thành viên cấp 3
đây toàn lệnh cơ bản thôi
-
-
Thành viên cấp 4
-
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à 06:27 PM.
Phiên bản 4.2.5
Phát triển bởi thành viên PLCVietNam®.
Đánh dấu