2010年6月27日 星期日

2010年6月22日 星期二

SIEMENS-WinCC-[ PROCESS/SCADA/POWER SCADA 應用系列軟體 ]

SIEMENS-WinCC-[ PROCESS/SCADA/POWER SCADA 應用系列軟體 ]



SIMATIC®WinCC®基於 Windows 平台,能為工業領域提供完備的
監控與數據采集(SCADA)功能,涵蓋單用戶系統直到支援雙備援
伺服器和遠端 Web Client機的解決方案的多用戶系統。WinCC 是跨公
司垂直整合交換訊息的基礎,它採用了工廠智能,可以實現更大
程度的生產過程的透明性。
WinCC 基本系統是各種不同應用的核心。它不僅包含開放的編寫程式VBS/C
界面,還包含大量已經開發了的 WinCC 選件(由西門子 A&D 完
成)和 WinCC 附加件(由西門子內部和外部合作方完成),用於
給用戶提供各種功能的擴展。
SIMATIC WinCC V7.0 大大增強了基本系統及其選件的功能。
• WinCC 基本系統的創新:
- 具有 Windows Vista 主題風格和外觀的營運界面。
- 全新控件︰趨勢、報警、配方等。
- 基於對象的編程模式,面板技術。
- 免費整合進階用戶管理工具 SIMATIC Logon。
- 增強的安全性,支援 Windows 防火牆和病毒掃描。
• WinCC 工廠智能選件的創新:
- WinCC/DataMonitor,現下支援報表發布和網頁定製功能。
- 全新選件︰WinCC/DowntimeMonitor,可以檢測並分析機器和工廠的停機時間。
- 全新選件︰WinCC/ProcessMonitor,管理資訊系統,支援線上質量分析。
- WinCC/Connectivity Pack,提供訪問分佈式系統中數據的方便界面。
- 全新選件︰WinCC/Connectivity Station,任何一台 Windows 計算機都可以透過 Connectivity Station 訪問分佈式系統的數據。
• 針對 WinCC 選件的更新:
- WinCC/Web Navigator,集成在全廠集中用戶管理系統中的Web Client端。
- WinCC/Central Archive Server,集中處理並提供數據歸檔。
- WinCC/Audit,整合項目版本管理工具。
- 新特點︰WinCC/Change Control,可以跟蹤組態的更改 WinCC/Redundancy,可以同步消息狀態和內部變數。
- 新特點︰SIMATIC Maintenance Station,用於系統的高效維護。




圖一: 使用者定義介面



圖二: 使用者定義數據分析圖形



圖三: 使用者定義製程分析KPI



圖四: WinCC/ConnectivityPack︰透過 OPC模型 & WinCC OLE-DB 訪問 WinCC架構

WinCC/Connectivity Pack V7.0:

可以方便地訪問分佈式系統中的數據,Connectivity Pack 是為了外部電腦或應用程式方便
的訪問 WinCC 歸檔數據、製程值和報警訊息。

外部應用程式可以使用 WinCC OLE-DB(僅適合製程值)、OPC DA、OPC A&E 和 OPC HAD 等常規模式,透過Connectivity Pack 有選擇性地訪問 WinCC 伺服器或中央檔案伺服器上的 WinCC 製程數據(報警、製程值和用戶數據等)。這些數據可以採用標準工具進行分析和進一步處理,或者直接用於更高一級的資訊系統(MIS、MES、ERP 等)。

新版本中,改善了 WinCC 對 OLE-DB 的訪問,簡化了分布式系統的編寫程式工作。現今從 WinCC 多Client端,透過OLE DB,可以透明地訪問分佈式系統所有過程數據,包括 WinCC 雙備援系統和中央歸檔伺服器的分佈式系統。

在歸檔變數尋址時,僅需使用符號名稱即可。

WinCC/Connectivity Station:
可以從任何一台 Windows 電腦訪問 WinCC 數據
如果不需要進行製程監控,可以將任何一台 Windows電腦組態為 WinCC 的 Connectivity Station,這台計算機中無須安裝 WinCC。

Connectivity Station 的規劃可以採用 SIMATIC NCM-PC
或者 SIMATIC Manager 完成。

筆者體驗後果然,以及察看到周邊附屬軟體,只能說果然是夠份量得獎的軟體,用在連續製程自動化上是不錯的全體解決方案.

待續~~

2010年6月3日 星期四

SIEMENS-Safety & PC-Base 6/3日研討大會-[ 閒談-winAC即時核心與Live Demo ]

SIEMENS-Safety & PC-Base 6/3日研討大會-[ winAC即時核心與Live Demo ]

本次的PC-BASE研討大會中,筆者被征召去幫忙撰寫Deom程式及設置我製作的系統,雖然讓生活很忙碌,也淋著大雨東奔西跑,熬夜趕工,架設系統,回家後倒頭就直接昏睡到底,雖然很辛苦及快爆肝了,老是覺得身體怪怪的,並且會後結束還要轉場到台中台南舉辦,但能夠把訊息分享業界先進夥伴,把歐美的訊息帶給台灣,讓IPC/PAC (PLC+PC) solution解決方案更加的資訊OPEN化,也是對台灣自動化一絲絲的貢獻,讓我們台灣能夠更前進,帶給後代更好的競爭環境,這樣就很開心了,當然也不同於在場幾家發表Process案例系統的經銷商了,從在場看官表情看的出來,畢竟Process 使用PLC就遊刃有餘,更大的分散風險架構才是符合Process製程精神,當然在這短短幾個月日以繼夜的付出下,在談話內容當中就已分出,某外商大企業德國顧問沃夫根,課後休息時間透過人轉告,對我講了令我驚訝的話,讓我愣住了,得到了更符合IPC/PAC的大膽應用訊息~!!

應用介紹:(這是筆者這輩子中第一次使用的IPC/PAC)

1.) S7-mec 系統 跟plc長的一模一樣,但他的核心是西門子的pc 核心,也使用Intel Core Duo cpu 使用Windows XP embedded 嵌入式os,giga的乙太網路介面,使用Intel 高階晶片,使用防震,防熱工業cf卡,可在擴充CF/SD/USB介面,PCI 104 3片,裡面我把他用力了跑了50 PID 多種應用程式,和大量的data report 處裡系統介面,使用vb.net 和c#.net 語法處裡,與windows時間同步功能,及winAC real time核心處裡器還是穩定跑了1ms執行速度,只可惜我來不及把承載效能的資訊PO上,這強而有力的心臟,真是讚嘆!!各位partner,你們有福了!!

筆者如果有時間會再用力挑戰100 PID程式看看.

我只能說這是投在Process 製程當中,另外在搭配不斷電專用PID卡,如果我在開啟Redundancy Function我會給他拍拍手,抱著他睡覺了!!



A.) s7-mec中我使用的程式

使用了wcf圖控系統 與vb.net / c#.net 整合介面,微軟.net的語法,我真的愛上它了,我也感謝我另一個業界朋友Colin Tsai大師的灌頂加持,真是良師益友,不過我們倆都是窮小子哈哈,互相扶持.




應用介紹:(這外形和配色質感我只能說他是我美麗的便當盒,難怪我三餐都面對他)

2.) 西門子SIMATIC IPC427C / Microbox427C 這一個程式真的是一個巧遇,正好我在協助日本體系的儀控製造廠商撰寫這支程式,剛剛好撰寫完成遇上了研討會,就整組給它搬過來了,這系統當中使用 SIEMENS Microbox + winAC real time核心,使用12M 的通訊速度,有別於傳統通訊架構115200的速度,通過Profibus總線,經過Profibus Gateway,撰寫Protocol Frame 去整合日本的儀表,讀寫溫控訊息,由於各大科技大廠,都規定使用profibus總線居多,當然我也要多多幫忙,幫忙這儀控製造商,上這條紫色很貴的總線,讓東西方融合一下!!.





a.) 系統中的畫面winAC Real time即時核心的控制軟體,和wcf圖控軟體(雖然簡單但精隨意思到了,其他的轉移給儀控商了,由他們任意自由用力的發揮了,也祝福他們在高精度要求的科技廠上遍地開花)



b.) 我思考了一下,站在使用者立場想讓大家更好用,因為我看了日本的程式,發現很攏長,重複使用率不高,於使我把他拆了,把程式最佳精簡化,用了scl(類似Pascal程式語言,符合IEC61131-3國際規範語法)語法讓程式變的很短,更加清楚簡單,所以我把程式封裝了,變成Function block,在會展當中,單然也是open的,供大家和各經銷商參考,筆者功力實在粗淺愚笨,程式寫的不好,見笑了~卡拍謝!!



(此原始碼再我的Blg 別的角落可以發現的到,拆解完之後原本日本的露露長的程式便的很短,也變的不同很清楚,可以讓我的夥伴任意大改重複使用,相片中是最後被我包成FB的監控長相,記憶體位置也可慮到可以隨模組任意配置,所以把記憶體位置也規劃拉出去了!!,小東西,大方便,重複開發利用的精神在提升,或許隨著儀控商
會很多人拿去用,散佈到世界各地去,那真的造福太多人了~如果是這樣真的很開心!!)

應用介紹:(IPC+影像辨識系統)

3.) 西門子SIMATIC IPC427C / Microbox427C 與全球視覺系統領導廠商Cognex 美國康耐視視覺系統,搭載一起,應用於太陽能晶圓對位,破片檢測,及尺寸量測,1D/2D讀碼/文字辨識,比對,使用歐美流行的POE聵電技術,精簡化配線,只需配一條線,就完成跟CCD的佈線,並且使用乙太網路即時通訊總線Profinet同時傳輸tcp/ip 影像,資料封包與winAC交流的資訊,資訊傳輸速度達1ms刷新擷取,當然如果Profinet 也可搭載IRT模式,速讀可達微秒,當然錢錢可以打造一切,那速度為什麼可以照麼快,當跳脫乙太網路傳輸OSI 7層規則,及搭載實體MAC Address 就可以實現,Windows上的winAC-RTX即時核心,穩定的時序,就可以實現乙太網路RT傳輸.



a.) 用於太陽能晶元的對位,及破片檢查,檢查可達1個pixel,那精度隨CCD而變,系統驅動部分因為太長了,來不及搬,因此收掉了~


b.) CCD改採模式:使用對位座標定位回報功能,和量測尺吋,讀碼,文字辨識功能,物體辨識,功能,由於Cognex康耐視CCD開放的系統架構,提供API SDK讓我有機會選擇打造我需要的介面,與西門子即時核心winAC-RTX,非同步資料交換1ms 速度實現在windows上,當然你也可以選擇他現有的介面,不需要打造界面就可以使用的軟體,他然他也有出CCD專用的小人機介面可以接4 支ccd使用poe網路聵電技術節省配線,最令我欣賞的是他的io端子臺,也是使用poe聵電技術,同時供電給CCD,又同時傳輸資料及io控制.







身旁的就是臨時收到通知要去支援寫程式,短短1~2天,硬擠把他擠出來的,還好之前就一直建程式模型了,不然我只能被內心懲罰,無法帶給會場所有人資訊了,內心的罪惡自責慚愧.



後面這些東西我真的只能說,歐州科技領導帶動全球趨勢,連PC-Base都上了Safety標章及規範了,等於是全球唯一商品,並且在siemens的通訊總線上,Profinet & Profibus 也可以混合使用,跑一般plc資訊,和Safety plc資訊,這樣的理念大大大OPEN 架構,等於使用者買家,可以在一條總線上跑一般的plc,跑3rd Device 跑等時同步運動控制,跑Safety 資訊,真的的難怪德國人老外跟我解釋open總線開放式的定義,而不只單單會員的開放,所以siemens 2條總線Profinet & Profibus 解決一切,符合老外個性,大方,貴一點沒關係,方便好用理想就好.真是世界強國做風,很強勢,不過我很喜歡身旁的那一顆雷射區域掃瞄,當然單價也是20~30萬,我也很欣賞上次來台灣演講的那幾位德國萊茵總部Safety核考通過的技師,畢竟是全球榜上有名認可,真的厲害,欣賞程度只能說肝腦塗地了.

2010年6月1日 星期二

[SIEMENS SCL FB ] 使用日本神港Profibus GateWay 發送protocol packet整合溫度表封裝FB語法 應用介紹-[SCL-FB][IEC 61131-3]

protocol packet封裝FB語法 應用介紹-[SCL-FB][IEC 61131-3]

*開發模式需在SCL原代碼之下開發封裝

(*********************************************************
作者: PeterShen
TEL: 0921-945-070
E-MAIL:fa.net.petre@gmail.com
日期: 2010/06/01
功能: IFP100_Procedure_SP
版本: V1.00
備註: sp值寫出
修改:
***********************************************************)


FUNCTION_BLOCK IFP100_Procedure_SP

//know_how_protect //程式保護

//PI INPUT BUFF
VAR_INPUT
ID:BYTE; //Address
SP:WORD; //SP_Data
SW:BOOL; //CLOCK_通訊寫入旗標
END_VAR

//PQ OUTPUT BUFF
VAR_OUTPUT
OUT_BYTE1:BYTE; //Information
OUT_BYTE2:BYTE; //Address
OUT_BYTE3:BYTE; //Sub address
OUT_BYTE4:BYTE; //Command type
OUT_WORD5:WORD; //Data item
OUT_WORD6:WORD; //Data
END_VAR

BEGIN

IF SW = TRUE THEN
OUT_BYTE1:=B#16#1;
ELSE
OUT_BYTE1:=B#16#81;
END_IF;

OUT_BYTE2:=ID; //Address
OUT_BYTE3:=B#16#20; //Sub address
OUT_BYTE4:=B#16#50; //Command type
OUT_WORD5:=B#16#1; //Data item
OUT_WORD6:=SP; //Data
;
END_FUNCTION_BLOCK




(*********************************************************
作者: PeterShen
TEL: 0921-945-070
E-MAIL:fa.net.petre@gmail.com
日期: 2010/06/01
功能: IFP100_Procedure_PV
版本: V1.00
備註: pv值讀取
修改:
***********************************************************)


FUNCTION_BLOCK IFP100_Procedure_PV
//know_how_protect //程式保護

//PI INPUT BUFF
VAR_INPUT
ID:BYTE; //Address
SW:BOOL; //CLOCK_通訊寫入旗標

IN_WORD6:WORD; //PV_Data
END_VAR

//PQ OUTPUT BUFF
VAR_OUTPUT
OUT_BYTE1:BYTE; //Information
OUT_BYTE2:BYTE; //Address
OUT_BYTE3:BYTE; //Sub address
OUT_BYTE4:BYTE; //Command type
OUT_WORD5:WORD; //Data item
OUT_WORD6:WORD; //Data
END_VAR

BEGIN

IF SW = TRUE THEN
OUT_BYTE1:=B#16#1;
ELSE
OUT_BYTE1:=B#16#81;
END_IF;

OUT_BYTE2:=ID; //Address
OUT_BYTE3:=B#16#20; //Sub address
OUT_BYTE4:=B#16#20; //Command type
OUT_WORD5:=B#16#80; //Data item
OUT_WORD6:=B#16#00; //Data
;
END_FUNCTION_BLOCK

*原代碼開發環境




*SP原代碼封裝後成FB結果




*PV原代碼封裝後成FB結果

2010年4月13日 星期二

淺談PAC -[ PAC Part 1]

PC+PLC的解決方案-[PAC]

以下是筆者個人自己的見解,進請批評或指教,感謝.

寫這篇文章之前,我想說一段自己的故事,身在自動控制領域9年的人生中,在25歲退伍的時候,筆者一直鎖定觀察PAC市場的發展,在工作中使用各大日系PLC非常的順手,順勢也對自己人生佈局了PC程式語言撰能力,和英文語言能力補上過去消耗自己人生的專業知識.

在這段時間當中,因為不斷面對應用例的挑戰,使用PLC和HMI及其他Device解決各種應用例,其中體會到發現越來越難處理了,就算解決了自己也不滿意這樣的架構,也更深刻體會到PLC的封閉性,但由於常常聽到PLC與PC對抗的正負面消息,於是正式轉向PAC架構的解決方案,把PLC和PC兩大特色與問題綜合掉的商品.

由於因為本土廠商就有再生產PAC商品,所以去了解其中特性,但覺得很可惜,因為遷就在硬體平台零組件方面開發與發展,阻礙了PAC商品的特性開發美意,本來是個美好的夢想產品,卻變成有待開發改版升級的產品,反觀歐美市場,卻發現大膽的設計,讓PAC有更大想像力和發揮空間,能發揮多大的力量和價值,全都由使用者的應用開發團隊自己掌握,應用上可以創造很一般的應用例,也可以創造讓人贊嘆的應用例,其中的發揮空間,非常的強大,正好於是剛好遇上金融大海嘯,企業的解體與改組,我決定放下一切,改變自己的人生,走別人不敢走的路,抱著虛心請益PAC的心,投入PAC的世界,我也沒想到一個做PLC背景的人有這麼大的勇氣,走進須具備PC與PLC兩大能量和在亞洲市場是處女第未開發的商品.

筆者會在斟酌時間介紹 PAC軟體核心揭開更多知識分享給大家

以下即時核心系統品牌,全都符合IEC 61131-3語法規範,俗稱OPEN PLC,
[CoDeSys, TwinCAD, KW-Soft, winAC]

這些核心系統,都受國內外知名控制器,互相爭奪合作,加持在自己的商品硬體上,並且提供更優於PLC的解決方案,不管是在速度性能,應用例,整合度,都有更上一層樓的表現和發揮空間.

勇於改變自己或許就是機會!!

PeterShen

2010年4月5日 星期一

[c#] 事件2Human 應用介紹-[Event 2Human ]

事件 應用介紹-[Event]

//人員 事件類別
namespace even_tst
{
delegate void weightEvent(int weight);

class Human
{
private int 身高;
private int 體重;
public static int 人數;

public event weightEvent Wei;

public Human()
{
身高 = 180;
體重 = 65;
人數++;
}
public Human(int 身高,int 體重)
{
this.身高 = 身高;
this.體重 = 體重;
人數++;
}


//存取子方式-設定重量並判斷
public int Weight
{
get
{
return 體重;
}
set
{
if (value > 100)
if (Wei != null)
Wei(value);

體重 = value;

}

}

public void 秀身高體重()
{
Console.WriteLine("身高={0},體重={1},人數={2}", 身高, 體重, 人數);

}

//設定重量並判斷
public void set體重(int x)
{
if (x> 100)
if (Wei != null)
Wei(x);

體重 = x;
}

}
}

///////////////////
//測試程式
//////////////////

namespace even_tst
{
class Program
{

static void Main(string[] args)
{
test事件1();
Console.ReadLine();
}

//
public static void test事件1()
{
Human p1 = new Human();

//指定 Danger事件由 TooFast方法來處理

p1.Wei += new weightEvent(Too胖);

p1.set體重(150);
p1.Weight = 200;
}

static void Too胖(int x)
{
Console.WriteLine("目前的體重 {0},超過 100,請減肥!!!", x);
}
}
}

[c#] 事件1Car 應用介紹-[Event 1Car]

事件 應用介紹-[Event]

//Car 事件類別
namespace even_car
{
//事件委派
delegate void DangerEvent(int Speed);

class Car
{
private int m_speed;

//宣告事件
public event DangerEvent Danger;

public int Speed
{
get
{
return m_speed;
}
set
{
if (value >200)
if (Danger != null)
{
Danger(value);
}

m_speed = value;
}
}
}
}

//測試程式
namespace even_car
{
class Program
{
static void Main(string[] args)
{
test事件();
Console.ReadLine();
}

static void test事件()
{
Car Benz = new Car();
//指定Danger事件由ToolFast方法來處理
Benz.Danger += new DangerEvent(ToolFast);
//車子速度屬性指定
Benz.Speed = 300;
}


static void ToolFast(int vSpeed)
{
Console.WriteLine("目前的速度{0},高過200,請減速!!", vSpeed);
}
}
}

2010年3月12日 星期五

SIEMENS-PC-Base MicroBox-[ Motion VS Vision 影片 ]

SIEMENS-PC-Base MicroBox-[ Motion VS Vision 應用例 ]
應用介紹:

系統利用西門子高速,極高運算力的PC-Base 系統,精簡配線通訊總線IO系統,搭配使用通訊總線運動控制器,與影像辨識1000fps 高速分色辨識自由落體,並使用同步非同步,winAC-RTX windows 即時核心技術,做完美的結合.

點選下方play鍵播放收看影片,並且注意分色轉盤的快慢速度變化.




(其中軟硬體精隨另行備載)

2010年1月26日 星期二

[c#] 如何處理例外錯誤狀況 應用介紹-[try-catch-finally]

如何處理例外錯誤狀況 應用介紹-[try-catch-finally]

1.) NG程式
//錯誤程式,程式直接當掉(原因被除數不得維0)

private void button1_Click(object sender, EventArgs e)
{
int a = 0;
int b =100/a;
Console.WriteLine("b is {0}", b);

Console.WriteLine("End of job ");
}

2.) 攔截NG程式

//try-catch-finally語法(程式不會當掉,但提報錯誤)
private void button2_Click(object sender, EventArgs e)
{
int a = 0;
try
{
int b = 100 / a;
Console.WriteLine("b is {0}", b);
}
//錯誤攔截訊息
catch (Exception err1)
{
Console.WriteLine("Divided by zero ");
Console.WriteLine("Divided by zero {0}",err1 );
MessageBox.Show(err1.ToString ());
}
//最後一定會執行
finally
{
Console.WriteLine("End of job");
}

3.) 自行判斷NG錯誤跳轉攔截錯誤訊息(throw 使用)

//自行判斷錯誤跳轉攔截錯誤訊息(程式不會當掉,但提報錯誤)
private void button3_Click(object sender, EventArgs e)
{
int a = 100, b = 0;
try
{
if (b == 0)
{
//跳轉呼叫丟出錯誤
throw new ArithmeticException("Div by zero");
}
else
{
int c = a / b;
Console.WriteLine("Resoult is " + c);
}
Console.WriteLine("After divide2");
}
//
catch (ArithmeticException error)
{
Console.WriteLine("Caught!{0}",error );
}


===========================================
自訂錯誤類別-待續

2010年1月19日 星期二

[c#] String字串處理Split 應用介紹-[Split]

String字串處理Split 應用介紹-[Split]

//split
private void button_Click(object sender, EventArgs e)
{

char[] del = new char[] { ',','/' }; //多符號分離
//char del = ','; //單符號分離

string line = "datalog_mo1_0,2010/1/19下午 01:47:52,691,1,40197574905.7755";

string[] split = line.Split(del);

foreach (string s in split)
{
listBox1.Items.Add(s); //送到目標 listbox檢視
}

}

2010年1月2日 星期六

[SIEMENS SCL FC ] 由函式FC回傳演算計算 應用介紹-[SCL-FC ][IEC 61131-3]


由函式FC回傳演算計算 應用介紹-[SCL-FC][IEC 61131-3]


FUNCTION SQUARE : INT //帶回傳值


(*********************************************************

This function returns as its function value the square of the

input value or if there is overflow, the maximum value that

can be represented as an integer.

***********************************************************)


//know_how_protect //程式保護


//變數宣告in類型
VAR_INPUT

value : INT;

END_VAR


//程式開始
BEGIN


IF value <= 181 THEN

SQUARE := value * value; //計算含式

ELSE

SQUARE := 32_767; // overflow, 設定最大值並回傳當成錯誤碼

END_IF;


END_FUNCTION