台达DVP-MC系列与DTE温控通信

硬件配置

RS485设置

主要功能块

RS485_Link_Manage

RS485_Link_Manage功能块

RS485_Link_Config

RS485_Link_Config功能块

RS485_Link_Status

RS485_Link_Status功能块

变量声明

范围  |名称                      |地址       |数据类型             |初始值   |注释
VAR   |g_UiWriteBufferAddress   |%MW1000    |ARRAY[1..100] OF UINT      
VAR   |g_UiReadBufferAddress    |%MW1100    |ARRAY[1..100] OF UINT      

Pro_DTE

UiReadDestinationAddress[1]  := 16#1000 ;
UiReadDestinationAddress[2]  := 16#1000 ;
UiReadDestinationAddress[3]  := 16#1000 ;
UiReadDestinationAddress[4]  := 16#1000 ;
UiReadDestinationAddress[5]  := 16#1000 ;
CASE iStep[1]  OF
    1: //设定与读取温度
        FOR UiSite := 1 TO 5 BY 1 DO 
            UiWriteDestinationAddress[UiSite] := 16#1008 ;  
        END_FOR;
        FOR UiAddress := 1 TO 40 BY 1 DO 
            g_UiWriteBufferAddress[UiAddress] := 设定温度[UiAddress] ;
        END_FOR;
        iStep[1] := 10 ;
    2: //温控开关
        FOR UiSite := 1 TO 5 BY 1 DO 
            UiWriteDestinationAddress[UiSite] := 16#10D8 ;
        END_FOR;        
        FOR UiAddress := 1 TO 40 BY 1 DO 
            g_UiWriteBufferAddress[UiAddress] := 温控开关[UiAddress] ;
        END_FOR;
        iStep[1] := 10 ;
    3: //温控整定
        FOR UiSite := 1 TO 5 BY 1 DO 
            UiWriteDestinationAddress[UiSite] := 16#10E0 ;          
        END_FOR;
        FOR UiAddress := 1 TO 40 BY 1 DO 
            g_UiWriteBufferAddress[UiAddress] := g_iHeatSwitch[UiAddress] ;
        END_FOR;
        iStep[1] := 10 ;
    4: //温控控制周期
        FOR UiSite := 1 TO 5 BY 1 DO 
            UiWriteDestinationAddress[UiSite] := 16#10C8 ;          
        END_FOR;
        FOR UiAddress := 1 TO 40 BY 1 DO 
            g_UiWriteBufferAddress[UiAddress] := 1 ;
        END_FOR;
        iStep[1] := 10 ;
    10: 
        bRS485OK := FALSE ;
        FOR UiSite := 1 TO 5 BY 1 DO 
            Link_Config[UiSite].LinkNum                     := UiSite ;
            Link_Config[UiSite].EnableLink                  := TRUE ;
            Link_Config[UiSite].Noncyclic                   := TRUE ;
            Link_Config[UiSite].SlaveNodeID                 := UINT_TO_USINT(In:= UiSite) ;
            Link_Config[UiSite].ObjType                     := 0 ;
            Link_Config[UiSite].En_FunCode17                := FALSE ;
            Link_Config[UiSite].TimeOut                     := 500 ;            
            Link_Config[UiSite].Write_Buffer_Address_Offset := 0 ;
            Link_Config[UiSite].Write_Destination_Address   := UiWriteDestinationAddress[UiSite] ;
            Link_Config[UiSite].Write_Length                := 8 ;      
            Link_Config[UiSite].Read_Buffer_Address_Offset  := 0 ;
            Link_Config[UiSite].Read_Destination_Address    := UiReadDestinationAddress[UiSite] ;       
            Link_Config[UiSite].Read_Length                 := 8 ;
        END_FOR;
        Link_Manage.Open                           := TRUE ;        
        iStep[1]                                   := 100 ;
        iCount[1]                                  := iCount[1] + 1 ;
    100:
        IF  Link_Config[1].Done AND Link_Config[2].Done AND Link_Config[3].Done AND Link_Config[4].Done AND Link_Config[5].Done THEN
            FOR UiAddress := 1 TO 40 BY 1 DO 
                当前温度[UiAddress] := g_UiReadBufferAddress[UiAddress] ;
            END_FOR;
            bRS485OK               := TRUE ;
            Link_Manage.Open       := FALSE ; 
            iStep[1]               := 0 ;
        END_IF;
END_CASE;

IF (iCount[1] = 1 ) AND bRS485OK AND EDGENEG(Link_Manage.Open) THEN
    iStep[1] := 2 ;
ELSIF (iCount[1] = 2 ) AND bRS485OK AND EDGENEG(Link_Manage.Open) THEN
    iStep[1] := 3 ; 
ELSIF (iCount[1] >= 3 ) AND bRS485OK AND EDGENEG(Link_Manage.Open) THEN 
    iStep[1] := 1 ;
    iCount[1] := 0 ;
ELSIF EDGEPOS(bRunOnce) THEN //可以改为上电后触发一次
    iStep[1] := 4 ;
    iCount[1] := 0 ;                                            
END_IF;

Link_Manage(Enable:= TRUE);
Link_Config[1](Execute := Link_Manage.LinkOpened, Write_Buffer_Address := g_UiWriteBufferAddress[1],Read_Buffer_Address :=  g_UiReadBufferAddress[1]);
Link_Config[2](Execute := Link_Manage.LinkOpened, Write_Buffer_Address := g_UiWriteBufferAddress[9],Read_Buffer_Address :=  g_UiReadBufferAddress[9]);
Link_Config[3](Execute := Link_Manage.LinkOpened, Write_Buffer_Address := g_UiWriteBufferAddress[17],Read_Buffer_Address :=  g_UiReadBufferAddress[17]);
Link_Config[4](Execute := Link_Manage.LinkOpened, Write_Buffer_Address := g_UiWriteBufferAddress[25],Read_Buffer_Address :=  g_UiReadBufferAddress[25]);
Link_Config[5](Execute := Link_Manage.LinkOpened, Write_Buffer_Address := g_UiWriteBufferAddress[33],Read_Buffer_Address :=  g_UiReadBufferAddress[33]);
Link_Status[1](Enable:= TRUE,LinkNum:= 1);
Link_Status[2](Enable:= TRUE,LinkNum:= 2);
Link_Status[3](Enable:= TRUE,LinkNum:= 3);
Link_Status[4](Enable:= TRUE,LinkNum:= 4);
Link_Status[5](Enable:= TRUE,LinkNum:= 5);

后期还要优化一下,因为控制周期只需要写入一次即可,而整定的需要是人工确认是否需要采用整定的时候再写入一次2020-08-18 Del

结尾

把程序进行了优化,带五个DTE进行了数据采集和操作。程序可执行。
调用程序的任务采用周期模式,周期时间500ms这点需要注意。时间过短有可能出现采集回来的数据都是0值

Log:
2020-08-17 发布本文
2020-08-18 更新程序内容为5个DTE的站点实例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355