台达温控器&施耐德218通信测试程序
PROGRAM wkBtxVAR Address_computation:addm; tx_AddrTable: ADDRESS; F_On: BOOL; S_On: BOOL; // 地址转换上升沿 WKB_AD:ARRAY[1..11] OF STRING:=['2.1', '2.2' ,'2.3' ,'2.4', '2.5', '2.6', '2.7','2.8','2.9','2.10','2.11' ];//加液机地址 WKB_R: READ_VAR;// 读取功能块 WKB_W: Single_Write;//写功能块 CS: REAL:=10;//超时设置 RA:ARRAY[1..3] OF WORD ; RA1:ARRAY[1..3,1..12] OF WORD; WA:ARRAY[1..3] OF WORD ; RCF: BOOL;// 当前重复读取 t1,t2,t3,t4: Ton; r1,r2,r3,r4:R_TRIG; i :INT:=1;
i1,i2,i3,i4,i5: INT; RAW: DINT:=18176;//读取初始地址 WAW: DINT;// 写入数据的开始地址 WCF: BOOL;// 写反复功能块 number: REAL:=10;//最大数 str1: STRING; t5: Ton;
END_VAR
IsFirstMastCycle(IsFirstMastCycle=>F_On);IF i>2 THEN i:=1;END_IF
str1:=WKB_AD[i];//存入从站地址S_ON:=F_On OR r2.Q OR t6.Q ;
Address_computation(Execute:= S_On ,//执行上升沿 addr:=str1,//读取地址 AddrTable:=tx_AddrTable, Done=>);//读参数
WKB_R(Execute:=Address_computation.Done OR RCF,//启动功能 Abort:= r3.Q,//超时中断执行
Addr:=tx_AddrTable,//功能块地址类型 Timeout:=REAL_TO_WORD(CS),//超时时间 ObjType:=16#00,//读取数据类型
FirstObj:=RAW,//FirstObj为要写入的第一个对象的索引。
Quantity:=3,//读取对象的数量1-125 寄存器(MW,IW类型) 1-2000 位(I,Q 类型)
Buffer:=ADR(RA)//Buffer 为要发送数据的缓冲区地址。用户可以通过ADR标准功能指令获取缓冲区的地址);
第 1 页
err1: BYTE;err2: DWORD;t6: Ton;
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn台达温控器&施耐德218通信测试程序
r3(clk:=wkb_r.Error);IF r3.Q THEN i2:=i2+1;END_IF
r1(clk:=WKB_R.Done);IF r1.Q THENi1:=i1+1;raw:=raw+3;WAW:=18177;
ra1[i,3*i1-2]:=ra[1];ra1[i,3*i1-1]:=ra[2];ra1[i,3*i1]:=ra[3];END_IF
IF raw<18188 THEN rCF:=R1.Q; ELSE rCF:=0;END_IF
WCF:=raw>=18188 AND WKB_R.Done;//写参数
WKB_W(Execute:=WCF,//启动引脚,上升沿触发(注意:如果在冷复位、热复位的第一个任务运行周期中将Excute 置位True,则检测不到上升沿) Abort:= r4.Q ,//终止正在执行的操作
Addr:=tx_AddrTable,//目标设备的地址(ADDM功能块的输出) Timeout:=REAL_TO_WORD(CS),//超时时间
ObjType:=ObjectType.MW,//发送数据类型(0-MW保持寄存器,16Bit;1-I数字量输入,1Bit;2-Q 数字量输出,1Bit;3-IW 输入寄存器,16Bit)
FirstObj:=WAW,//FirstObj为要写入的第一个对象的索引。 theWord:=xx//写入Modbus从站设备的数据);
r4(clk:=wkb_w.Error);r2(clk:=WKB_W.Done);IF r2.Q OR r4.q THENraw:=18176; i1:=0;END_IF
IF r4.Q THEN i4:=i4+1; err1:=WKB_W.CommError; err2:=WKB_w.OperError;END_IFwa[1]:=xx;
t6(in:=NOT r2.Q AND NOT t6.Q,PT:=T#1S);IF r2.Q OR t6.q THEN i:=i+1;END_IF
第 2 页
PDF 文件使用 \"pdfFactory Pro\" 试用版本创建 www.fineprint.cn