0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

DDT變量鏈接到定位變量方法

藍(lán)牙 ? 來(lái)源:工控論壇 ? 作者: 董偉 ? 2021-08-10 09:52 ? 次閱讀

一、概述

工業(yè)控制系統(tǒng)使用中,上位機(jī)組態(tài)軟件、HMI觸摸屏等顯示設(shè)備與控制設(shè)備PLC按指定通訊協(xié)議進(jìn)行數(shù)據(jù)交換是最為基本的功能了,以施耐德Modbus TCP協(xié)議為例,只要提供了支持此協(xié)議的PLC中變量的Modbus寄存器地址和數(shù)據(jù)類(lèi)型,不管此PLC是哪個(gè)廠家的,都能實(shí)現(xiàn)HMI與PLC之間的數(shù)據(jù)交換。

二、問(wèn)題的引出

目前PLC編程的主流思路不再是使用基于絕對(duì)地址的定位變量了,而是使用變量名+數(shù)據(jù)類(lèi)型的非定位變量方式。以施耐德M580為例,其X80的I/O模塊的通道值都是用Device DDT非定位變量表示的,并且不能直接指定%M、%MW等地址與其對(duì)應(yīng)上。

這種表示方式對(duì)于OPC DA/UA及施耐德自己的HMI觸摸屏來(lái)說(shuō)沒(méi)有什么問(wèn)題,可以直接對(duì)應(yīng)上,但是對(duì)于支持標(biāo)準(zhǔn)Modbus TCP協(xié)議的其它廠家觸摸屏和上位機(jī)組態(tài)軟件來(lái)說(shuō)就不方便了,因?yàn)樾枰兞繉?duì)應(yīng)上標(biāo)準(zhǔn)Modbus寄存器地址才行。

三、解決辦法

孔乙己說(shuō)過(guò),回字有四種寫(xiě)法。同樣的,解決上述問(wèn)題也有多種方法可以實(shí)現(xiàn)。思路是將M580里面的DDT地址對(duì)應(yīng)到%M及%MW寄存器中,從而能和HMI進(jìn)行MODBUS TCP通訊,

3.1復(fù)制 Device DDT變量類(lèi)型直接鏈接絕對(duì)地址

此種方法的思路是新建一個(gè)結(jié)構(gòu)體變量,類(lèi)型輸入與X80 I/O模塊數(shù)據(jù)類(lèi)型一致如T_U_DIS_STD_IN_32,然后編寫(xiě)程序鏈接上絕對(duì)地址如%MW10,詳見(jiàn)下圖:

d75927e0-f86d-11eb-9bcf-12bb97331649.png

3.2 ST編程FOR循環(huán)鏈接絕對(duì)地址

第一種方法比較費(fèi)地址數(shù)量,適用于I/O模塊不多,地址富余的工程項(xiàng)目。

如果I/O模塊過(guò)多,可以嘗試?yán)肍OR循環(huán)編程批量鏈接地址的方式,如下圖:每一個(gè)I/O模塊使用一個(gè)FOR循環(huán)指令,將通道值(.VALUE)鏈接到%M或者%MW寄存器地址。

這種方式的優(yōu)勢(shì)在于省寄存器地址,不像方法1,不管開(kāi)關(guān)量還是模擬量,都必須關(guān)聯(lián)%MW寄存器地址,而且不需要的狀態(tài)等DDT變量也必須鏈接%MW寄存器地址。不過(guò),ST編程FOR循環(huán)鏈接絕對(duì)地址有一個(gè)缺點(diǎn),就是因?yàn)镈DT變量名稱(chēng)太過(guò)接近并且I/O模塊通道數(shù)不一樣,修改的時(shí)候容易眼花誤操作。

3.3編寫(xiě)自定義DFB功能塊鏈接絕對(duì)地址

舉例32通道點(diǎn)X80的DI模塊,DDT中變量眾多,我們只需要轉(zhuǎn)換32個(gè)通道數(shù)值即可;

新建DFB塊DI_EXCHANGE,輸入管腳DI_INT,數(shù)據(jù)類(lèi)型T_U_DIS_STD_IN_32(調(diào)用DFB時(shí),輸入就可只填寫(xiě)MOD_DIS_32_2),輸出管腳DO_OUT,數(shù)據(jù)類(lèi)型ARRAY[0..31] OF EBOOL;

編寫(xiě)邏輯程序,采用ST編程方式,把輸入點(diǎn)的值一個(gè)一個(gè)賦值到輸出,鏈接到%M寄存器,然后在MAST里面程序段中調(diào)用DI_EXCHANG即可,實(shí)現(xiàn)32點(diǎn)的DI模塊的通道值批量鏈接到了%M中。

同樣的,32點(diǎn)DO模塊的處理方法是類(lèi)似的,新建X80_DDO_32,定義輸入IN1,數(shù)據(jù)類(lèi)型T_U_DIS_STD_OUT_32,輸出OUT1,OUT2,數(shù)據(jù)類(lèi)型INT,編寫(xiě)ST程序鏈接上%M寄存器,在MAST里面調(diào)用新建的功能塊X80_DDO_32即可。

這些DFB功能塊做好后直接右鍵導(dǎo)出的功能塊類(lèi)型XDB格式,可以再導(dǎo)入到其它程序段中直接調(diào)用即可,移植方便,無(wú)須再次制作此DFB塊。

四 小結(jié)

針對(duì)M580的X80 I/O模塊的通道值都是用Device DDT非定位變量表示,并且不能直接指定%M、%MW等地址與其對(duì)應(yīng)上,但是觸摸屏和上位機(jī)組態(tài)軟件來(lái)說(shuō)需要變量對(duì)應(yīng)上標(biāo)準(zhǔn)Modbus寄存器地址的問(wèn)題,提出了3種解決方法。這3種方法特點(diǎn)明確,各有優(yōu)劣。

復(fù)制 Device DDT變量類(lèi)型直接鏈接絕對(duì)地址法簡(jiǎn)單明晰,適合剛?cè)胧┠偷戮幊檀箝T(mén)的初級(jí)工程師;ST編程FOR循環(huán)鏈接絕對(duì)地址法和編寫(xiě)自定義DFB功能塊鏈接絕對(duì)地址法對(duì)工程師編程水平要求稍高,通用性更強(qiáng),適合對(duì)施耐德Unity軟件編程操作有一定了解的工程師使用。

不管白貓還是黑貓,能夠抓住老鼠的貓就是好貓,同樣,不管使用何種方法操作,能耐解決實(shí)際問(wèn)題就是工程師能力的體現(xiàn),解決上述問(wèn)題的方法也不止這三種,更多的可能性等待你去探索實(shí)踐。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5004

    文章

    13050

    瀏覽量

    460920
  • DFB
    DFB
    +關(guān)注

    關(guān)注

    1

    文章

    25

    瀏覽量

    9889
  • OPC
    OPC
    +關(guān)注

    關(guān)注

    7

    文章

    320

    瀏覽量

    46047
  • HMI
    HMI
    +關(guān)注

    關(guān)注

    9

    文章

    578

    瀏覽量

    48384

原文標(biāo)題:施耐德M580系列的X80 I/O模塊通道值非定位Device DDT變量鏈接到定位變量方法

文章出處:【微信號(hào):TalkBT,微信公眾號(hào):藍(lán)牙】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux環(huán)境變量配置方法

    Linux上環(huán)境變量配置分為設(shè)置永久變量和臨時(shí)變量兩種。環(huán)境變量設(shè)置方法同時(shí)要考慮環(huán)境Shell類(lèi)型,不同類(lèi)型的SHELL設(shè)置臨時(shí)
    的頭像 發(fā)表于 10-23 13:39 ?55次閱讀

    C語(yǔ)言變量應(yīng)用詳解

    變量其實(shí)只不過(guò)是程序可操作的存儲(chǔ)區(qū)的名稱(chēng)。C 中每個(gè)變量都有特定的類(lèi)型,類(lèi)型決定了變量存儲(chǔ)的大小和布局,該范圍內(nèi)的值都可以存儲(chǔ)在內(nèi)存中,運(yùn)算符可應(yīng)用于變量上。
    發(fā)表于 03-18 11:18 ?318次閱讀
    C語(yǔ)言<b class='flag-5'>變量</b>應(yīng)用詳解

    Tasking的鏈接選項(xiàng)配置,怎樣影響const變量的地址定位?

    Tasking的鏈接選項(xiàng) 配置 怎樣影響 const 變量的地址定位
    發(fā)表于 02-02 09:19

    C語(yǔ)言:指針中內(nèi)存是如何存放變量

    在程序中定義一個(gè)變量,那么在程序編譯的過(guò)程中,系統(tǒng)會(huì)根據(jù)你定義變量的類(lèi)型來(lái)分配「相應(yīng)尺寸」的內(nèi)存空間。那么如果要使用這個(gè)變量,只需要用變量名去訪問(wèn)即可。
    發(fā)表于 01-08 10:14 ?387次閱讀

    如何使用GPT監(jiān)控變量

    在項(xiàng)目調(diào)試過(guò)程中,需要監(jiān)控變量通常采用ICS(In Circuit Scope)和DA兩種方法。使用ICS會(huì)占用MCU的資源(UART)以及增加硬件的成本(ICS硬件板);如果MCU的DA引腳已被
    的頭像 發(fā)表于 01-04 12:21 ?1144次閱讀
    如何使用GPT監(jiān)控<b class='flag-5'>變量</b>

    Linux環(huán)境變量配置方法

    想必大家平時(shí)工作中也會(huì)配置Linux的環(huán)境變量,但是可能也僅僅是為解決某些工具的運(yùn)行環(huán)境,對(duì)于Linux環(huán)境變量本身的配置學(xué)問(wèn)還沒(méi)深入了解。今天浩道跟大家分享Linux環(huán)境變量的硬核干貨,讓你一次盤(pán)個(gè)夠!
    的頭像 發(fā)表于 01-04 09:51 ?458次閱讀

    ros怎么設(shè)置環(huán)境變量

    設(shè)置ROS環(huán)境變量是使用ROS的重要步驟之一。本文將詳細(xì)介紹如何設(shè)置ROS環(huán)境變量,包括什么是環(huán)境變量、為什么要設(shè)置ROS環(huán)境變量、如何設(shè)置ROS環(huán)境
    的頭像 發(fā)表于 12-28 13:52 ?1779次閱讀

    python環(huán)境變量的配置pip

    Python環(huán)境變量的配置和使用是每個(gè)Python開(kāi)發(fā)者都需要了解和掌握的基本技能之一。在本文中,我們將詳細(xì)介紹如何正確配置Python環(huán)境變量,并展示一些常見(jiàn)問(wèn)題的解決方法。我們將從環(huán)境變量
    的頭像 發(fā)表于 12-15 15:41 ?2230次閱讀

    變量的聲明和定義有什么區(qū)別和聯(lián)系

    變量的聲明和定義是編程中的兩個(gè)重要概念,它們?cè)谡Z(yǔ)法和語(yǔ)義上有一些區(qū)別和聯(lián)系。在本文中,我將詳細(xì)介紹變量的聲明和定義之間的區(qū)別和聯(lián)系。 首先,讓我們從變量的定義開(kāi)始。變量的定義是在程序中
    的頭像 發(fā)表于 12-07 16:14 ?965次閱讀

    oracle sql 定義變量并賦值

    賦值可以通過(guò)使用PL/SQL語(yǔ)句塊或使用SQL*Plus工具來(lái)實(shí)現(xiàn)。下面將詳細(xì)介紹這兩種方法以及它們的具體用法。 使用PL/SQL語(yǔ)句塊定義和賦值變量: 在Oracle SQL中,PL/SQL是一種過(guò)程化語(yǔ)言,允許在代碼中定義和使用變量
    的頭像 發(fā)表于 12-06 10:46 ?2367次閱讀

    實(shí)戰(zhàn)經(jīng)驗(yàn) | Keil、IAR、CubeIDE 中變量不被初始化方法

    關(guān)鍵詞:不被初始化,編譯環(huán)境 目錄預(yù)覽 1、前言 2、IAR 實(shí)現(xiàn)變量不初始化方法 3、Keil 實(shí)現(xiàn)變量不被初始化方法 4、CubeIDE 實(shí)現(xiàn)
    的頭像 發(fā)表于 11-24 18:05 ?3530次閱讀

    python變量命名規(guī)則

    Python是一種高級(jí)編程語(yǔ)言,廣泛應(yīng)用于軟件開(kāi)發(fā)、數(shù)據(jù)分析和科學(xué)計(jì)算等領(lǐng)域。在Python中,變量是用來(lái)存儲(chǔ)數(shù)據(jù)的容器,它們具有名稱(chēng)以及與之關(guān)聯(lián)的值。然而,變量的命名并不是隨意的,而是需要遵循一定
    的頭像 發(fā)表于 11-23 15:44 ?1126次閱讀

    for循環(huán)里的變量是局部變量

    對(duì)于一個(gè)普通for循環(huán)而言,循環(huán)變量是局部變量。在大多數(shù)編程語(yǔ)言中,循環(huán)變量只在循環(huán)內(nèi)部的作用域中可見(jiàn)。換句話說(shuō),循環(huán)變量的聲明和賦值僅在循環(huán)的每次迭代中有效,并且不能在循環(huán)外部訪問(wèn)或
    的頭像 發(fā)表于 11-23 14:50 ?2243次閱讀

    Python怎樣存儲(chǔ)變量性能最優(yōu)

    工作時(shí)我們經(jīng)常會(huì)遇到需要臨時(shí)保存結(jié)果變量的場(chǎng)景,尤其是一些數(shù)據(jù)處理、模型開(kāi)發(fā)的場(chǎng)景,加載處理速度是個(gè)很漫長(zhǎng)的過(guò)程,于是經(jīng)常會(huì)把這些變量儲(chǔ)存起來(lái)。 而儲(chǔ)存變量最常見(jiàn)、最普遍的方法是用pi
    的頭像 發(fā)表于 10-30 15:33 ?332次閱讀
    Python怎樣存儲(chǔ)<b class='flag-5'>變量</b>性能最優(yōu)

    Shell腳本中的變量詳解

    使用 unset 命令可以刪除變量。變量被刪除后不能再次使用。unset 命令不能刪除只讀變量。
    的頭像 發(fā)表于 10-27 11:21 ?476次閱讀