999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

CFC功能塊開發中指針應用研究

2016-05-05 01:52:31曹忠華劉洋李志鋒秦大偉張巖鞍鋼集團鋼鐵研究院遼寧鞍山4009鞍鋼建設集團有限公司機電安裝工程分公司遼寧鞍山400
鞍鋼技術 2016年2期

曹忠華,劉洋,李志鋒,秦大偉,張巖(.鞍鋼集團鋼鐵研究院,遼寧鞍山4009;.鞍鋼建設集團有限公司機電安裝工程分公司,遼寧鞍山400)

?

CFC功能塊開發中指針應用研究

曹忠華1,劉洋2,李志鋒1,秦大偉1,張巖1
(1.鞍鋼集團鋼鐵研究院,遼寧鞍山114009;2.鞍鋼建設集團有限公司機電安裝工程分公司,遼寧鞍山114010)

摘要:針對西門子控制器在工業控制領域的廣泛應用,闡述如何采用C語言的方法編程實現CFC功能塊。分析了CFC功能塊的基本結構,同時給出了CFC功能塊如何基于C語言的代碼實現向量數據的指針方式傳遞,對基于C語言的功能塊的生成過程進行了分析。研究表明,靈活運用C語言的指針功能可以開發出滿足向量運算所需的CFC功能塊。

關鍵詞:C語言;指針;SIMATIC TDC;CFC功能塊

曹忠華,信息系統項目管理師,2004年畢業于吉林大學通信工程學院自動化專業。E-mail:bigczh@139.com

西門子公司的SIMATIC TDC是一種多處理器自動化系統,擅長解決處理復雜的控制、通訊和驅動任務,它采用自由組態、模塊化的設計思想,通過多處理器并行運行方式可以實現性能的近乎無限擴展。作為西門子公司功能最強大的控制器,TDC采用實時操作系統(固定時隙為25μs),擁有高速的采樣頻率和強大的數據循環處理能力,近年來在鋼鐵、航空航天、電力、交通、印刷、有色金屬制造、造紙等行業都取得了杰出業績。鞍鋼自2003年冷軋硅鋼生產線投產以來,已有多條冷軋生產線使用了TDC系統。目前鞍鋼冷軋1號線也正在進行電控系統向TDC系統轉化的改造,在改造過程中需要實現TDC自動化系統的自主編程。

本文對CFC編程方式進行了介紹,分析了CFC功能塊的結構,就如何利用C語言的指針功能開發滿足向量傳遞和運算的CFC功能塊進行了詳細的闡述。

1 CFC編程方式介紹

TDC編程使用CFC編程方式。CFC(Continuous Function Chart)是一種開放的編程平臺,它將詳細的程序算法進行封裝,預制成標準功能塊(CFC block)。在功能塊中只留有少量的輸入/輸出引腳作為程序間的接口。相同類型的功能塊集合為庫,用戶可以根據編程需要將其導入安裝至編程環境,用戶程序由這些標準功能塊連接組合。系統集成了廣泛的預制的功能塊庫,提供了包括閉環控制、算術運算、數據類型轉換、邏輯功能、服務與診斷、通訊功能、順序控制、特殊功能等類型的約330多個經過驗證的標準功能塊[1]。

與普通的梯形圖或語句表語言編程方式相比,CFC圖形化編程和標準程序塊庫的使用意味著編程人員無需復雜的專業編程知識。同時,CFC提供了功能強大的在線功能,可在線優化、插入、修改和刪除功能塊,顯著縮短調試時間。因此,工藝技術人員可以快速靈活的完成程序的設計、修改和調試。

CFC功能塊在程序中可多次自由調用,圖形化連接,每個功能塊都可賦值5種循環周期中的一種。功能塊還可放置在特定的運行時間組中,在指定運行條件下同時運行或停止。另外,CFC還允許用戶通過以下3種方式創建完成特定功能的自定義功能塊:

(1)Chart in Chart(程序嵌套)功能,使用標準功能塊完成特定功能,并將相關的CFC程序封裝作為子程序調用。

(2)Compile Chart as Block Type同樣使用標準功能塊完成特定功能,并將相關的詳細算法步驟隱藏封裝編譯成標準功能塊的樣式,供程序調用。

(3)使用Function Block generator(下文稱為D7-FB-GEN),通過標準ANSI-C語言創建用戶專用功能塊,以保護用戶的專有技術。這種方式可以完成復雜的程序算法,并且可以處理硬件相關的數據和功能。

2 CFC功能塊結構

利用FB generator通過C語言創建用戶專用功能塊時,須嚴格遵守西門子定義的結構和語法。CFC功能塊(FB)從定義文件生成。這些定義文件通過SIMATIC D7功能塊生成器轉換成目標碼和說明。每一個CFC功能塊FB都通過下面3個文件定義:

.dat:功能塊的I/O輸入輸出和CFC信息定義模塊

.c:功能塊運行源碼模塊(C語言編寫)。

.bmp:功能塊圖形模塊。

2.1輸入輸出和信息定義模塊

在CFC編程平臺中,功能塊顯示為一個具有少量輸入輸出管腳的塊狀視圖,功能塊之間的數據交換以管腳間的連線表示。這些管腳都具有自己的數據類型、管腳名稱、管腳注釋等,功能塊本身也具有一定的特殊屬性。DAT文件就是功能塊結構中用來定義輸入輸出管腳和功能塊自身信息屬性的模塊。在開發CFC功能塊時,需嚴格按照特定的特殊規則來完成功能塊的屬相設置和輸入輸出定義。在DAT文件中可以定義功能塊的名稱、功能塊注釋說明、是否可以在線插入、是否可以配置在中斷任務中;同時還可以定義輸入輸出管腳的名稱、數據類型、管腳默認初始值、管腳注釋說明、管腳是否可以被連接、管腳是否可以被監視和修改等。

2.2源碼模塊

CFC功能塊都是按照功能或者算法定義的,每一個功能塊都位于某一個特定的循環周期之中,每個周期功能塊實現一些特定的算法或邏輯判斷操作。這些算法或邏輯判斷運行代碼都位于.c文件中,由C語言格式編寫而成。這些代碼包括由操作系統直接調用的主函數(NRM)、初始化函數(INI)以及由這兩個函數直接或間接調用的其他輔助函數。功能塊初始化函數(INI)在系統復位后或功能塊的第一次加載時執行一次,完成功能塊管腳的初始化工作和內部變量的內存分配等工作。功能塊的主函數(NRM)每個運行周期執行一次,完成特定的算法和邏輯判斷等功能。輔助函數使用時必須在程序開始處聲明函數原型及參數,而函數體放在主函數之后。在調用外部函數前,必須使用#include指令,在源碼模塊中包含有外部函數的原形定義的頭文件。輔助函數和外部函數的調用通常在都位于主函數(NRM)中。輔助函數和外部函數的使用有利于系統的維護以及源文件的可重復利用。

2.3圖形模塊

在CFC編程時,功能塊顯示為一個具有若干個不同功能管腳的塊狀視圖,但進行功能塊編程時無需關注。

3 CFC功能塊的實現和指針應用

使用D7-FB-GEN創建CFC功能塊時,首先需要建立一個項目,項目名稱最長不超過50個字符。每一個項目下可以創建多個庫,每個庫又可以包含多個功能塊。庫的名稱前3個字符必須為FBA,余下3個字符可自定義;功能塊的名稱最多由6個字符構成。每個庫和項目每次編譯前可設置版本號,以便在導入到CFC編程平臺時方便地區別新的版本。

在創建CFC功能塊時,根據功能設計需求,可以選擇使用簡單模板或復雜模板,編程環境會自動創建前文所描述的3個文件。相對于簡單模板,復雜模板提供了功能塊初始化函數(INI),并演示了如何在程序中使用結構變量和指針,并演示了如何在初始化函數中完成內存的分配。通過簡單模板和復雜模板,工藝技術人員可以很方便地完成功能塊的編制工作。

在現代控制領域中,向量的運算隨處可見,比如在板形閉環控制算法和邊緣降控制算法中,更是離不開向量計算。而在西門子的模板和幫助文件中并沒有明確的展示如何進行向量的數據傳遞。下面以兩個簡單的塊來說明如何利用指針進行向量的發送和接收。

3.1功能說明和I/O管腳的定義

向量發送功能塊(S2V1)將輸入的8個float型數據整合成一個向量,并將指向該向量的指針通過輸出管腳傳送給下一個功能塊使用。根據功能需求的信息,設計該功能塊具有8個輸入管腳(X1~X8:REAL)和2個輸出管腳(VY:DWORD、QTS:BOOL),如圖1所示。由于發送向量需要在內存中開辟專用的內存空間,因此還定義了一個內部變量(PTR:DINT)用于保存該內存空間的指針。

向量接收功能塊(V2S4)根據接收到的向量指針,將該向量復制到自己的內存空間中,并根據另一個輸入管腳決定輸出該向量中的哪4個元素。根據功能需求的信息,設計該功能塊具有2個輸入管腳(VX:DWORD、FE:INT)和5個輸出管腳(Y01~Y01:REAL、QTS:BOOL),如圖2所示。以及用于保存向量數據而開辟的內存空間指針的內部變量(PTR:DINT)。

圖1 S2V1功能塊

圖2 V2S4功能塊

3.2功能模塊的實現

向量發送和接收功能塊有一個共同點,就是都需要開辟內存空間用來存儲向量數據,這個動作一般來說都在功能塊初始化函數(INI)中實現。在向量發送和接收功能塊的初始化函數中,利用malloc函數申請了內存空間,若申請失敗則將輸出管腳QTS置位報警,若申請成功則將指向該內存空間的指針保存在了內部變量PTR中。

INI()

{float*pointer;

pointer=(float*)malloc(sizeof(float)*8);

if(pointer==NIL)SET_B1_LOG1(QTS);

else{SET_B1_LOG0(QTS);

PTR=(u_int32)pointer;}}在向量發送功能塊中,直接將輸入管腳X1~ X8的值依次存入PTR指向的內存空間,最后將該內存空間的指針轉化為無符號32位整型數據格式賦值給輸出管腳VY,完成了向量指針的傳遞工作。

NRM()

{float*ptr_data;

if(IS_B1_LOG1(QTS));

else{ptr_data=(float*)PTR;

*(ptr_data)=X1;

*(ptr_data+1)=X2;省略若干行

*(ptr_data+7)=X8;

VY=(int32*)ptr_data;}}

在向量接收功能塊中,將輸入管腳VX強制類型轉換為指針,通過C語言中的內存拷貝函數將VX所指向的內存空間復制到PTR指向的內存空間,最后根據輸入管腳PE決定將哪4個向量元素賦值給Y01~Y04,從而完成向量元素的分解工作。

NRM()

{float*ptr_data;

if(IS_B1_LOG1(QTS));

else{ptr_data=(float*)PTR;

memcpy(ptr_data,(float*)VX,sizeof(float)*8);

Y01=*(ptr_data+FE);

Y02=*(ptr_data+FE+1);

Y03=*(ptr_data+FE+2);

Y04=*(ptr_data+FE+3);}}

3.3功能塊的編譯與導入

DAT文件和源碼文件編寫完成后,功能塊并不能被工程項目直接引用。D7-FB-GEN首先必須將相應的文件轉換成可編譯或可引用的文件。輸入輸出和信息定義模塊與圖形模塊集合在一起,轉換成MASK文件(以msk為后綴名的文件)。每個功能塊的源碼文件都被編譯成一個對象目標文件(以o為后綴名的文件),再將每個庫里面的個對象目標文件打包成可以使用的庫文件(以a為后綴名的文件)[2]。庫文件與MASK文件一起組成了可被引用的模塊集合,D7-FB-GEN在編譯完成后自動將其復制安裝到CFC編程平臺下。在CFC編程控制平臺下,通過Options-> Block Types命令可以打開庫導入對話框,在此可以將編譯完成的功能塊庫導入或更新到項目編程環境中。

向量發送功能塊(S2V1)與向量接收功能塊(V2S4)僅僅是一個簡單的試例程序,完成的功能并不復雜,但成功的實現了向量數據的指針方式傳遞。這兩個功能塊在實際編程過程中可以根據實際需要安排在合適的系統循環周期內進行調用,其在實際運行中的狀態如圖3所示。

圖3 運行中的S2V1與V2S4功能塊

4 結論

CFC編程平臺界面友好、調試方便,與使用CFC標準功能塊相比,使用C語言創建自定義功能塊的方法可以更加靈活的實現更為復雜的功能,同時靈活使用C語言的指針功能還可以完成硬件地址操作和向量傳遞運算等諸多高級功能。隨著西門子TDC控制器在工業控制領域的使用范圍越來越廣泛,開發適合項目需求的特定功能塊完善程序功能顯得越來越重要。

參考文獻

[1]鮑伯祥,陸章杰,王世寧.西門子TDC編程及應用指南[M].北京:北京航空航天大學出版社,2007.

[2]鄭家玲,周澤雁,徐士浩,等.基于C語言的SIMATIC TDC功能塊的研究開發[J].寶鋼技術,2009(1):35-38.

(編輯袁曉青)

修回日期:2015-05-07

Research on App lication of Pointers for CFC Function Blocks during Development

Cao Zhonghua1,Liu Yang2,Li Zhifeng1,Qin Dawei1,Zhang Yan1
(1.Iron&Steel Research Institutes of Ansteel Group Corporation,Anshan 114009,Liaoning, China;2.Electromechanical Installation Engineering Branch of Angang Construction Group Co.,Ltd.,Anshan 114010,Liaoning,China)

Abstract:In view of the facts that Siemens controllers are widely used in the industrial control field,itwas discussed how the CFC function blocks can be established by using C language for programming.And the basic structures of the CFC function blocks was analyzed while it was simultaneously explained how the codes based on the C language are transmitted to the pointers with quantity data by application of the CFC function blocks and subsequently the formation process of the function blocks based on C language was analyzed.Analytical results show that the CFC function blocks demanded in vector operations can be developed by the flexible application of the pointing function of C language.

Key words:C language;pointer;SIMATIC TDC;CFC function block

中圖分類號:TG232

文獻標識碼:A

文章編號:1006-4613(2016)02-0045-04

主站蜘蛛池模板: 91视频国产高清| 国产一区二区三区在线无码| 中文字幕日韩欧美| 中文字幕乱码二三区免费| 久久精品最新免费国产成人| 四虎精品黑人视频| 日本91视频| 精品国产美女福到在线直播| 国产麻豆永久视频| 久久婷婷五月综合色一区二区| 五月天久久婷婷| 99热最新网址| 亚洲AV无码乱码在线观看裸奔| 欧美色综合久久| 91小视频在线| 亚卅精品无码久久毛片乌克兰 | 日韩中文字幕免费在线观看| 国产丝袜91| 尤物在线观看乱码| 色哟哟国产精品| 热99精品视频| 91无码视频在线观看| 97精品国产高清久久久久蜜芽| 国产精品专区第一页在线观看| 国产91丝袜在线播放动漫| 亚洲欧洲日韩综合色天使| 日韩在线第三页| 亚洲成a人在线观看| 欧美综合在线观看| 久久精品丝袜高跟鞋| 精品少妇人妻一区二区| 欧美成人一区午夜福利在线| AV网站中文| 国模私拍一区二区| 1024国产在线| 日韩人妻少妇一区二区| 国产浮力第一页永久地址| 国产啪在线91| 青青草一区二区免费精品| av在线人妻熟妇| 经典三级久久| 无码人中文字幕| 欧美成人国产| 99精品热视频这里只有精品7| 亚洲天堂网站在线| 成·人免费午夜无码视频在线观看 | 亚洲高清日韩heyzo| 亚洲色无码专线精品观看| 国产欧美自拍视频| 国产流白浆视频| 色婷婷狠狠干| 天天综合色网| 99久久精品美女高潮喷水| 日韩欧美综合在线制服| 日韩小视频在线观看| 久久99精品久久久久纯品| 九色91在线视频| 国产99视频在线| 国产91精品调教在线播放| 午夜啪啪福利| 最新午夜男女福利片视频| 欧美在线三级| 久久精品无码国产一区二区三区 | 日韩精品免费在线视频| 中文字幕在线观| 亚洲福利一区二区三区| 中文成人无码国产亚洲| 久久亚洲中文字幕精品一区| 亚洲久悠悠色悠在线播放| 2021精品国产自在现线看| 这里只有精品在线| 免费人欧美成又黄又爽的视频| 国产成人麻豆精品| 日本午夜影院| 免费 国产 无码久久久| 免费无码网站| 久久综合丝袜长腿丝袜| 美女被躁出白浆视频播放| 69av在线| 大香网伊人久久综合网2020| 自拍欧美亚洲| 免费国产高清视频|