由于公司最近做的項目都是同樣的,并且都采用S7-1500/S7-1200 與G120 系列做為主控系統,所以我一直在思考一個問題:如何標準化并且快速的編程調試。這樣可以極大的縮短項目的調試周期,減少公司工程成本,同時也免去工程師在項目上做過多的重復勞動;
開題首先介紹一下SiVArc到底能幫助我們在項目中能夠做什么事情。具體的演示通過下文的圖文來跟大家說明;
可以看到圖一的項目中只有一個PLC工程,并且OB1中只調用了一個"10007.G120無紡布設備"的FB塊;
圖二的步驟為在網絡視圖中添加一個②TP1200 Comfort HMI,并且將①處選擇為 連接 連接類型選擇為 HMI連接 ,然后通過拖拽的方式將HMI的以太網口連接到PLC的以太網口(此操作可逆),此時我們會看到③已經建立一個HMI連接,如果再去HMI的 連接 中查看會發現TIA已經為我們生成一個如③處一樣的連接,且連接名稱也相同;
由圖三可見HMI的項目并未新建任何畫面,到此下面就到見證奇跡的時刻了;
通過右鍵HMI工程選擇 生成可視化(SiVArc)然后在下一級菜單中選擇 生成可視化
此時會彈出一個窗口我們勾選HMI 和 PLC 然后點擊生成按鈕;
現在項目已經自動生成一個與圖一中程序段1 ?"10007.G120無紡布設備"FB 塊背景數據塊名稱相同的畫面 ① 主螺桿 且畫面的圖標與以前有所不同,它的右下角會呈現一個 SiV 的字樣。在此畫面中會生成一個面板實例② 且此面板實例的接口③中均已經連接變量;此生成過程基本在10秒以內。
相信大家通過上述的圖文已經明白SiVArc 到底能為我們做一個什么樣子的工作,接下來為大家講述一下想要實現 SiVArc 這樣的功能我們要怎樣去對PLC進行編程。
首先編程我們要養成良好的習慣,一個設備中有大于或等于三個以上的重復單元,我們就可以使用模塊化的編程思路;例如有3個需要單按鈕啟停的星三角啟動電機,如果們采用一個程序段一個程序段那樣的去編寫程序,那么程序的可讀性就會很差,并且也加重了自身的工作量。
個人建議:在使用FB或者FC時我們對參數的命名也需要遵循一定的規范,不然在調試FBFC的時候容易把自己看暈;
我就以AutoStart舉例;
在Input,Output,InOut中采用的寫法均為AutoStart。
在Static中采用的寫法則為 _AutoStart。
在Temp中采用的寫法則為 _autoStart。
在Constant中采用的寫法則為 AUTOSTART。
實現SiVArc 對項目有一些要求,必須要保證項目中功能單元的重復度高,可以重復調用寫好的某一個FB塊,同時HMI界面也相似;
在我看來實現SiVArc 的FB塊有三種做法:
第一種:直接使用FB塊的背景數據塊,但是這樣有個缺陷不便于程序的規范化,所有與HMI連接的變量都是分布式的,所有的連接狀態都只能去背景數據塊中查看,如果項目使用的是SIEMENS HMI 與 SIEMENS PLC 則沒有很大的問題,如果采用第三方的HMI則在做HMI的編程的時候就會非常繁瑣;
第二種:在編寫FB塊的時候將FB塊所需要連接到 HMI 的變量做成一個 PLC數據類型(UDT) ,同時在FB塊的輸入輸出中新建此數據類型的參數①,之后新建一個HMIData 的DB塊用于專門與HMI建立連接②,這樣可以避免HMI連接的變量在程序中比較分散,便于查找與監控;
第三種:第三種與第二種有點類似,但是在寫FB塊的時候完全不要去考慮如何連接HMI ,只需要按照功能編寫FB就可以了①,但是PLC數據類型這個步驟還是不能省略,之后同第二種一樣新建一個HMIData 的DB塊用于專門與HMI建立連接③;此時接FB塊的接口上連接的就是 HMIData 中實例化的數據類型相應的地址;
了解了這三做法我們就依據第三種方式來做一個例子:
首先我們在程序塊中新建一個FB塊 名稱就叫 11006.星三角電機 11006的前綴表示這個功能塊號,同時這樣做的好處為在程序文件夾下各個功能塊能夠依據前綴排序。
然后依據我上述的規范來新建各種參數,并且保證紅色框線內的鉤均已選中;
因為我們的FB塊有些管腳是給硬件IO使用的所以我們在新建PLC數據類型的時候可以選擇性的建立只在HMI上作用的參數,在建立的時候我們最好是多建立幾個 Struct 以來區分各個接口功能。
然后我們再建立與HMI建立連接的DB塊 HMIData 并且在此DB塊內實例化剛才新建的 PLC數據類型,同樣保證紅色框線內的鉤均已選中。
最后一步在OB1塊中實例化 11006.星三角電機 并且給功能塊的管腳連接上 HMIData或者 硬件IO 變量;
至此PLC編程這塊的工作就已經完成
我們以上已經介紹到如何使用標準化的理念編寫一個通用性較強的功能塊,那么今天我們將依據昨天示例中的功能塊(圖一)來編寫一個 HMI面板。
編寫之前我們需要確定我們這面板里面需要包含多少個元素,以 11006.星三角電機 我們可以看出,我們所需的元素有一下幾點:
已知有六種元素那么我們就可以開始來創建一個 HMI面板(圖二):
1.選擇右側導航器點擊庫①;
2.展開項目庫→展開類型→雙擊添加類型②;
3.選擇面板③;
4.選擇 面板/WinCC Runtime Advanced ④;
6.為此面板命名⑤(最好是與FB塊同名,以方便查找);
在點擊生成后TIA Portal 會進入如下圖所示的一個界面(圖三),在圖中的①處是面板的編輯窗口。
在上圖的編輯窗口中我們拖入上述的元素并且將元素按照表格里面的第三欄命名(圖四①),然后按照自己的習慣排列這些元素后我們會得到如下圖所示的一個窗口(圖四)。
完成上述步驟后接下來就是將這些需要控制的點連接到 接口 上(仔細觀察圖四),但是連接變量也是有兩種方案,這兩種方案我先列出出來,這兩種方案的各種特點我將在演示完這兩種方案之后給大家闡述。
第一種:直接連接的方式,也就使用上一章節中的 第一種 方式;
首先我們在 接口 中為所需連接的變量添加屬性①,做好命名并且指定好數據類型。將②處 電機標簽中所包含的對象中的文本拖拽至接口中動態屬性中的電機名稱上。此時我們會發現中間空白部分會生成一條帶右箭頭的線由①→②處,這就意味著我們已經將此屬性關聯到接口中。
繼續添加下一個動態屬性 延時時間
第一步①我們選中延時時間的I/O域,在屬性②中的常規欄目中選擇變量③,單擊變量窗口中的下拉列表,④選擇延時時間⑤。
之后我們通過同樣的操作將所有的功能都連接至接口里的動態屬性,連接完畢后我們將得到這樣一個界面(圖七)。
所有項都連接完畢后,選中面板(點擊面板的空白處)圖八①,選擇 插件② ,此時SiVArc屬性中的屬性接口會出現四個動態屬性,這四個動態屬性就是來給我們連接 SiVArc 變量表達式的。
之后我們單擊右上角的感嘆號(圖九)①,選擇發行版本②。
第二種方式:在接口中的動態屬性中采用UDT (PLC數據類型)。
在HMI面板中使用UDT的話我們首先需要將在項目中的UDT添加到項目庫中,也就是將圖十中的UDT①拖拽至②處;
然后我們在接口中新建一個動態屬性,它名稱就叫 11006.星三角電機UDT 他的數據類型則選擇我們在項目庫中新建好的 11006.星三角電機UDT。
我們再將數據如同第一種方式那樣關聯起來,此時我們會發現圖十二①處SiVArc屬性中的屬性接口只有兩個動態屬性,其中電機名稱是必須另外新建的。
相信通過上述的兩種方式的描述大家也能看出這兩種方式的,明顯的區別,前者更加的適應于SiVArc,因為他的接口變量中所填寫的參數均為自動生成的,雖然他比較多,但是并會不加重工作量。而第二種則應用則適用性更強,它不僅能夠適用于SiVArc,而且在做非SiVArc項目時也能給我們帶來便捷,因為他的接口變量較少,能夠減輕一部分的工作量
至此HMI面板這塊的工作也就已經完成。
編輯:黃飛
?
評論
查看更多