วันศุกร์ที่ 2 พฤศจิกายน พ.ศ. 2555
ขั้นตอนการ Backup Database SQL 2008
1.ไปที่ Start / Program / Microsoft SQL Server 2008 / SQL Server Management
2.Connect
to Server ด้วย Server ที่ใช้งาน
3.คลิก
ขวา เลือก Base ที่ต้องการ Backup จากตัวอย่าง base ชื่อ dbwins_demo ไปที่
Tasks / Backup
4.หน้าต่าง
Back Up Database เลือก Add หากมีข้อมูลค้างที่ช่อง Back Up to ให้เลือก path
เก่าแล้วกดที่ Remove ทิ้งก่อน แล้วค่อยกดที่ Add
5.หน้าต่าง
Select Backup Destination ช่อง file name เลือก Brow
6.Locate
Database เลือกไดร์ ที่จัดเก็บ backup จากภาพเลือก D / ช่อง file name กำหนดชื่อ
base ที่ต้องการ backup ตามตัวอย่างภาพ แล้วกด OK
7.เลือก
OK
8.หน้าต่างสุดท้ายเลือก
OK รอ Progress แสดงผล 100 เปอร์เซ็นต์ backup สำเร็จ
การแบ็คอัพ SQL Database
ถึงแม้ว่าระบบจัดการฐานข้อมูลของ SQL Server จะมีการทำ Automatic
Recovery เมื่อข้อมูลเกิดความเสียหายแล้วก็ตาม
ผู้ใช้งานระบบควรต้องมีการแบ็คอัพข้อมูลไว้ด้วยเพื่อความปลอดภัยให้มากยิ่งขึ้น
เพราะถ้าการทำ Automatic Recovery ของ SQL Server ไม่สำเร็จ
ก็อาจต้องใช้ข้อมูลชุดแบ็คอัพแทน การแบ็คอัพข้อมูลจะสามารถแบ็คอัพดาต้าเบสตั้งแต่
Master,MSDB,Mode,Distribution Database
รวมทั้งดาต้าเบสที่ผู้ใช้สร้างขึ้นด้วย การเลือกประเภทของการแบ็คอัพยังขึ้นกับปริมาณข้อมูลด้วย
Time2 Transaction Log Backup
Time3 Full Backup
Time4 Transaction Log Backup
Time5 System Fail
เมื่อกู้ข้อมูลหลังเวลา Time5 ก็ให้นำ Full Backup ที่เวลา Time3 ลงก่อนจากนั้นค่อยนำ Transaction Log Backup ที่เวลา Time4 ลงแต่เนื่องจาก Log ที่มีในเวลา Time4 นั้นจะเริ่มตั้งแต่หลังจากที่แบ็คอัพ Time2 ซึ่ง่จ่ะคลุม Log ที่ช่วงเวลา Time3 ไปด้วย ดังนั้นจะมีบางส่วนที่ซ้ำกันคือ ช่วง Time2 และ Time3 ทั้งใน Full Backup และ Transaction Log Backup แต่ขณะกู้ข้อมูล SQL Server หากตรวจว่ามีบางส่วนที่ซ้ำกันก็จะข้าม Log ช่วงนั้นใน Transaction Log ไป
4. File and Filegroup ในดาต้าซึ่งประกอบไปด้วยไฟล์และไฟล์กรุ๊ปต่างๆ สามารถเลือกที่จะแบ็คอัพแยกแต่ละไฟล์หรือไฟล์กรุ๊ปได้โดยไม่ต้องแบ็คอัพทั้งดาต้าเบส วิธีนี้เหมาะสำหรับดาต้าเบสที่ขนาดใหญ่มากๆและมีเวลาไม่เพียงพอที่จะแบ็คอัพได้หมด หรือมีการแบงดาต้าเบสแยกเก็บไว้ในหลายๆดิสก์ เมื่อมีดิสก์ใดเกิดเสีย ก็กู้ การกู้ไฟล์ก็ยังต้องใช้ชุดแบ็คอัพ Transaction Log ของไฟล์หรือไฟล์กรุ๊ปนั้นลงตามนอกจากว่าข้อมูลในไฟล์หรือไฟล์กรุ๊ปไม่มีการอัพเดท
ข้อจำกัดระหว่างการแบ็คอัพ
แม้ว่าการแบ็คอัพของ SQL Server จะสามารถทำงานได้ขณะที่ยังมีการใช้งาน SQL Server อยู่แต่ก็มีข้อจำกัดบางอย่างไม่ควรกระทำระหว่างการแบ็คอัพ
สำหรับการแบ็คอัพแบบ Full และ Differential สิ่งที่ไม่ควรทำคือ
ส่วนการแบ็คอัพแบบ Transaction Log จะไม่เกิดขึ้นมา
ตัวอย่างการแบ็คอัพ User Database
- Full Backup เดือนละครั้ง
- Differential ทุกอาทิตย์
- Transction Log ทุกคืน
อ้างอิง http://itd.htc.ac.th/st_it50/it5012/P_2/Implement%20of%20Database/images/B6.htm
- Full Backup คือ การแบ็คอัพข้อมูลทั้งหมดของดาต้าเบส และบางส่วนใน Transation Log ที่เกิดขึ้นขณะทำการแบ็คอัพ ซึ่งสามารถแบ็คอัพขณะที่ดาต้าเบสกำลังถูกใช้งานอยู่ โดยเมื่อเริ่มทำการแบ็คอัพ SQL Server จะเพิ่มรายการแบ็คอัพนี้ไว้ใน Transation Log เพื่อให้รู้ว่าจุดเริ่มต้นอยู่ที่ใด เมื่อแบ็คอัพส่วนที่เป็นดาต้าเบสเสร็จ ก็จะแบ็คอัพ Transation Log ที่เกิดขึ้น Full Backup เป็นวิธีการแบ็คอัพที่สะดวก และสามารถนำไปใช้ในการทำแบ็คอัพล่าสุดเท่านั้น การแบ็คอัพวีธีนี้เหมาะสำหรับ Master,MSDB,Model และยูสเซอร์ดาต้าเบสที่ข้อมูลไม่มากนักและใช้เวลาการแบ็คอัพไม่นาน โดยทั่วไปถ้าดาต้าเบสมีขนาดใหญ่มากและอัพเดทบ่อยๆจะใช้ร่วมกับการแบ็คอัพแบบอื่นๆคือ Differential และTransaction Log ทำให้ไม่เสียเวลามากไป และยังได้ข้อมูลที่ใกล้เคียงกับความเป็นจริงมากที่สุด
- Differential คือ การแบ็คอัพเฉพาะส่วนที่เป็นข้อมูลที่มีการเปลี่ยนแปลง ดังนั้นถ้ามีการแบ็คอัพแบบ Differrntial ทุกคืน ข้อมูลที่แบ็คอัพในคืนวันพุธจะมีข้อมูลที่มีการเปลี่ยนแปลงของทั้งวันจันทร์และอังคารด้วย เวลาที่จะกู้ข้อมูลก็เพียงแต่นำชุด Full Backup ลงก่อน จากนั้นจึงค่อยนำ Differential Backup ครั้งล่าสุดลงถัดไป
- Transaction Log คือการแบ็คอัพเฉพาะส่วนที่เป็น Transaction Log การแบ็คอัพแบบนี้จะใช้เมื่อต้องการแบ็คอัพข้อมูลจนถึงปัจจุบัน เมื่อเสร็จสิ้นการแบ็คอัพนี้แต่ละครั้ง SQL Server จะตัดส่วน (Truncate) ของ Transaction Log ที่สมบูรณ์ไป แล้วนำพื้นที่นี้มาใช้ใหม่เพื่อทำ Transaction Log ครั้งถัดไปช่วยให้ Transaction Log มีขนาดไม่ใหญ่ไป (การทำแบบ Full และ Differential จะไม่ Truncate ส่วน Transaction Log เมื่อจบการแบ็คอัพ) ดังนั้นเมื่อต้องการจะกู้ข้อมูล ก้อจะต้องเริ่มจากการนำ Full Backup หรือ Differential ลงก่อน แล้วจึ่งค่อยทยอยนำ Transaction Log ที่แบ็คอัพไว้แต่ละชุดลงตามลำดับก่อนหลัง ดังตัวอย่าง
Time2 Transaction Log Backup
Time3 Full Backup
Time4 Transaction Log Backup
Time5 System Fail
เมื่อกู้ข้อมูลหลังเวลา Time5 ก็ให้นำ Full Backup ที่เวลา Time3 ลงก่อนจากนั้นค่อยนำ Transaction Log Backup ที่เวลา Time4 ลงแต่เนื่องจาก Log ที่มีในเวลา Time4 นั้นจะเริ่มตั้งแต่หลังจากที่แบ็คอัพ Time2 ซึ่ง่จ่ะคลุม Log ที่ช่วงเวลา Time3 ไปด้วย ดังนั้นจะมีบางส่วนที่ซ้ำกันคือ ช่วง Time2 และ Time3 ทั้งใน Full Backup และ Transaction Log Backup แต่ขณะกู้ข้อมูล SQL Server หากตรวจว่ามีบางส่วนที่ซ้ำกันก็จะข้าม Log ช่วงนั้นใน Transaction Log ไป
4. File and Filegroup ในดาต้าซึ่งประกอบไปด้วยไฟล์และไฟล์กรุ๊ปต่างๆ สามารถเลือกที่จะแบ็คอัพแยกแต่ละไฟล์หรือไฟล์กรุ๊ปได้โดยไม่ต้องแบ็คอัพทั้งดาต้าเบส วิธีนี้เหมาะสำหรับดาต้าเบสที่ขนาดใหญ่มากๆและมีเวลาไม่เพียงพอที่จะแบ็คอัพได้หมด หรือมีการแบงดาต้าเบสแยกเก็บไว้ในหลายๆดิสก์ เมื่อมีดิสก์ใดเกิดเสีย ก็กู้ การกู้ไฟล์ก็ยังต้องใช้ชุดแบ็คอัพ Transaction Log ของไฟล์หรือไฟล์กรุ๊ปนั้นลงตามนอกจากว่าข้อมูลในไฟล์หรือไฟล์กรุ๊ปไม่มีการอัพเดท
ข้อจำกัดระหว่างการแบ็คอัพ
แม้ว่าการแบ็คอัพของ SQL Server จะสามารถทำงานได้ขณะที่ยังมีการใช้งาน SQL Server อยู่แต่ก็มีข้อจำกัดบางอย่างไม่ควรกระทำระหว่างการแบ็คอัพ
สำหรับการแบ็คอัพแบบ Full และ Differential สิ่งที่ไม่ควรทำคือ
- การจัดการเกี่ยวกับดาต้าเบส ได้แก่ ALTER DATABASE,CREATE DATABASE และ DROP DATABASE
- การลดขนาดเนื้อที่ดาต้าเบสด้วยคำสั่ง DBCC SHRINKDATABASE
- การสร้างอินเด็กซ์ (เป็นข้อห้ามเฉพาะเมื่อมีการแบ็คอัพดาต้าเบสเท่านั้น)
- การใช้คำสั่งที่ไม่มีการบันทึกใน Transaction Log ได้แก่ Balk Copy,SELEC INTO ในกรณีที่คำสั่งนี้กำลังทำงานอยู่ แล้วมีการสั่งแบ็คอัพ SQL Server ก็จะยกเลิกการแบ็คอัพ แต่ในทางกลับกันคือ ถ้ากำลังแบ็คอัพอยู่ แล้วมีการส่งคำสั่งเหล่านี้เข้าไป ก็จะทำการยกเลิกคำสั่งเหล่านั้น
ส่วนการแบ็คอัพแบบ Transaction Log จะไม่เกิดขึ้นมา
- กำหนดออปชั่น trunc. Log on chkpt ให้เป็น TRUE ซึ่ง Transaction Log จะถูก Truncate เมื่อเกิด Check Point เท่านั้น
- ไม่มีการบันทึกคำสั่งลงใน Transaction Log เลยเพราะเรียกแต่คำสั่งที่ไม่บันทึกลง Transaction Log หลังจากการแบ็คอัพดาต้าเบสครั้งสุดท้าย
- มีการเพิ่มหรือลบไฟล์ออกจากดาต้าเบส
- Transaction Log ถูก Truncate
ชนิดของดาต้าเบส | ประเภทและเวลาที่ควรทำแบ็คอัพ |
Master | ทำ Full Backup และแบ็คอัพเมื่อมีการเรียกคำสั่งที่มีผลต่อ System Table
ซึ่งได้แก่คำสั่ง *เพิ่ม แก้ไข และยกเลิกรหัสล็อคอิน *CREATE,ALTER และ DROP DATABASE *CREATER,ALTER และ DROP ไฟล์กรุ๊ปหรือแบ็คอัพดีไวซ์ *เปลี่ยนออปชั่นของเซิร์ฟเวอร์หรือดาต้าเบส *เพิ่มหรือยกเลิกการลิงค์เซิร์ฟเวอร์ |
MSDB | ทำ Full Backup และควรทำเมื่อ *สร้างงานที่มีการตั้งเวลาให้ทำงานอัตโนมัติเพราะ MSDB Schedule Task *มีการทำ หรือปรับแต่งออปชั่นการทำ Replicate |
Model | ทำ Full Backup และควรทำเมื่อมีการแก้ไขพร็อพเพอร์ตี้ของดาต้าเบสและเมื่อ เพิ่ม แก้ไข หรือยกเลิกอ๊อปเจ็กต์ในดาต้าเบส Model |
Distribution | เมื่อมีการเปลี่ยนแปลงข้อมูลหรือโครงสร้างของดาต้าเบส |
User Database | ทำ Full Backup ร่วมกันกับ Differential ควรทำเมื่อสร้างดาต้าเบส เพิ่ม ลบ หรือ เปลี่ยนแปลงโครงสร้างของเทเบิล ข้อมูล รวมทั้งการสร้างอินเด็กซ์ |
ตัวอย่างการแบ็คอัพ User Database
- Full Backup เดือนละครั้ง
- Differential ทุกอาทิตย์
- Transction Log ทุกคืน
อ้างอิง http://itd.htc.ac.th/st_it50/it5012/P_2/Implement%20of%20Database/images/B6.htm
Transaction Log และ Check Point กับการกู้ข้อมูล
Transaction Log (.ldf) คือ log file ที่จะบันทึกคำสั่งของการทำงานรวมถึงการเปลี่ยนแปลงที่เกิดขึ้นกับ database ตั้งแต่ Insert, Update และ Delete และเมื่อถึง Check point ก็จะบันทึกลงใน Database โดย Transition Log จะแยกเก็บเป็น Files ซึ่งเมื่อเขียนจนถึงตำแหน่งสุดท้ายของไฟล์แล้ววนกลับไปที่จุดเริ่มต้นของพื้นที่ว่าง แต่ถ้าไม่มีที่ว่าง Log file ก็จะขยายใหญ่ขึ้นเรื่อยๆ
Checkpoint จะถูกสร้างโดยอัตโนมัติเมื่อ Transaction log ถูกเขียน record ไปเรื่อยๆ ระยะเวลาหนึ่ง หรือ stop/start sql server instant, backup, alter database
ทั้ง Transaction Log และ Check Point ถือได้ว่าเป็นบทบาทสำคัญต่อการกู้ข้อมูลเมื่อมีความเสียหายเกิดกับระบบอย่างกะทันหัน และหลังจากสตาร์ทเซอร์วิสของ MSSOL Server ใหม่แล้ว ระบบจัดการฐานข้อมูล (RDBMS) จะทำการกู้ความเสียหายเบื้องต้น โดยจะกู้ดาต้าเบสที่เสียหาย (ถ้ามี) เรียงลำดับ Master,Model,Temp DB,MSDB และดาต้าเบสอื่นๆ เช่น ดาต้าเบสที่สร้างโดยยูสเซอร์ เป็นต้น
ตัวอย่าง
จากรูปอธิบายได้ดังนี้
1. System Failure เกิดขึ้นที่ T(f) และ Check Point ล่าสุดเมื่อเวลา T(c)
2. Transaction T1 เสร็จสิ้นก่อนเวลาT(c)
3. Transaction T2 เกิดก่อนเวลา T(c) และเสร็จสิ้นหลังเวลา T(c)
4. Transaction T3 เกิดก่อนเวลา T(c) แต่ไม่เสร็จสิ้นหลังเวลา T(c) 5. Transaction T4เกิดก่อนเวลา T(c) และเสร็จสิ้นหลังเวลา T(c)
6. Transaction T2 เกิดก่อนเวลา T(c) แต่ไม่เสร็จสิ้นหลังเวลา T(c)
และหลังจากสตาร์ทเซอร์วิส MSSQL Server ใหม่ได้แล้ว ระบบจะทำการกู้ข้อมูลและตรวจสอบทรานแซคชั่นต่างๆจาก Transaction Log ซึ่งพบว่า
- T3 และ T5 จะต้องยกเลิก (Roll Back)
- T2 และ T4 จะต้องเข้าไปทำงานใหม่ (Roll Forward) เพราะข้อมูลที่ทำงานตามคำสั่งใน T2,T4 ยังไม่ได้บันทึกลงในดาต้าเบสเท่านั้น
- T1ไม่ต้อง Roll Back หรือ Roll Forward เพราะระบบได้ทำการบันทึกข้อมูลของการเปลี่ยนแปลงลงดาต้าเบสเรียบร้อยแล้ว
วันพฤหัสบดีที่ 1 พฤศจิกายน พ.ศ. 2555
ปัญหาขนาด database log file .ldf โตไม่หยุด MSSQL server
file .ldf เป็นไฟล์ที่แยกเก็บบันทึก transaction
ของไฟล์ฐานข้อมูล (.mdf file) และจำเป็นต้องใช้งานคู่กัน ถ้าหาก transaction log
ไม่สมบูรณ์หรือเราจัดการผิดวิธี sql server จะเรียกใช้งาน database
ก้อนนั้นไม่ได้เลย
ในการติดตั้ง SQL Server ไม่ได้มี options นี้ให้เราเลือก admin หลายคนกด next >> ไปไม่โดยไม่สนใจบางทีก็คิดไปเองว่า การติดตั้ง database ลงในเซอฟเวอร์เป็นหน้าที่ของผู้พ้ฒนาโปรแกรมน่าจะรู้เรื่องมั้ง (พลาดแล้ว..)
1. ตั้งค่า recovery model ของ database เป็น simple เพื่อให้ database หยุดขยายขนาด log แบบไม่มี limit
2. ลดขนาดของ log file (.ldf) ที่เกินจำเป็น
Options A: Shink database
Option B: detach/attach สร้าง .ldf log file ใหม่ *ควรจะทำ full backup ไว้ก่อน
เลือกคลิ้กขวาที่ database > Tasks > Detach...
สรุปว่า นอกจาก Simple Recovery model แล้วจะต้องมี admin คอยทำหน้าที่จัดการ backup log file และ Shrink database เป็นประจำนั่นเอง
แต่ Size ของ *.mdf และ *.ldf จะเปลี่ยนแปลงหรือ date modified ก็ต่อเมื่อ SQL close file หรือขยาย size ของ Database หรือ restart service
อ้างอิง : http://msdn.microsoft.com/en-us/library/ms189573.aspx
สาเหตุที่ไฟล์ .LDF ขนาดใหญ่ขึ้นไม่หยุด
ปกติค่า default ของฐานข้อมูลใน SQL server จะอยู่ใน full recovery mode แปลว่าถ้าเราไม่ทำอะไรซักอย่างกับ database ก้อนนี้ ขนาดของไฟล์ .ldf ก็จะโตขึ้นเรื่อยๆ ทุกวันจนฮาร์ดดิสเต็มในที่สุดในการติดตั้ง SQL Server ไม่ได้มี options นี้ให้เราเลือก admin หลายคนกด next >> ไปไม่โดยไม่สนใจบางทีก็คิดไปเองว่า การติดตั้ง database ลงในเซอฟเวอร์เป็นหน้าที่ของผู้พ้ฒนาโปรแกรมน่าจะรู้เรื่องมั้ง (พลาดแล้ว..)
วิธีแก้ปัญหาขนาดไฟล์ .LDF
1. ตั้งค่า recovery model ของ database เป็น simple เพื่อให้ database หยุดขยายขนาด log แบบไม่มี limit
- ใช้ SQL Server Management Studio login เข้าไปจัดการเซอฟเวอร์ฐานข้อมูล
- ใน Object Explorer browse ไปที่ไฟล์ database ที่ต้องการ Right click > Properties > Options เลือก Rocovery model : Simple
2. ลดขนาดของ log file (.ldf) ที่เกินจำเป็น
Options A: Shink database
- เลือกคลิ้กขวาที่ database > Tasks > Shrink > Files
- File type: Log
- Shrink action : Release unused space
- กด OK
Option B: detach/attach สร้าง .ldf log file ใหม่ *ควรจะทำ full backup ไว้ก่อน
เลือกคลิ้กขวาที่ database > Tasks > Detach...
- ถ้ามีการใช้งาน database นี้อยู่จะมี Active connections ให้ปิดโปรแกรมที่ใช้งานก่อนติ๊กถูกที่ drop connections กด OK
- ลบ หรือ เปลี่ยนชื่อ ไฟล์ ldf เป็นชื่ออื่น
- เลือก Tasks > Attach ไฟล์ .mdf เข้าไปใหม่
Recovery model ใน SQL server database
- Simple recovery model : เมื่อถึงจุด Checkpoint ระบบจะเคลียร์พื้นทีจาก Record แรกสุด - MinLSN เป็นที่ว่างเขียนทับได้
- Full recovery model : records ทั้งหมดจะห้ามเขียนทับจนกว่าเราจะทำ transaction log backup (Manual)
- Bulk-logged recovery model : จะสร้าง Checkpoint ทุกครั้งที่เรา backup log หรือทำ bulk-copy
สรุปว่า นอกจาก Simple Recovery model แล้วจะต้องมี admin คอยทำหน้าที่จัดการ backup log file และ Shrink database เป็นประจำนั่นเอง
แต่ Size ของ *.mdf และ *.ldf จะเปลี่ยนแปลงหรือ date modified ก็ต่อเมื่อ SQL close file หรือขยาย size ของ Database หรือ restart service
อ้างอิง : http://msdn.microsoft.com/en-us/library/ms189573.aspx
วันศุกร์ที่ 26 ตุลาคม พ.ศ. 2555
ConditionEvent Table ของ Factorytalk Alarm Database
ConditionEvent Table
คือ Table ใน databse AlarmEvent ที่ใช้ในการเก็บ Message Alarm ต่างๆจาก PLC ซึ่งรายละเอียดของแต่ละ field แสดงดังตารางด้านล่าง
Extended Quality Values
The following table describes quality values (in addition to
those provided by the OPC DA specification) that are supported by FactoryTalk
Alarms and Events.
|
วันพุธที่ 24 ตุลาคม พ.ศ. 2555
การ Add และ Restore Database (.bak) ใน SQL Server
1. เปิด Microsoft SQL Server Management Studio
2. Connect SQL ไปยัง Server Name ที่คุณต้องการจะเพิ่ม หรือ Restore Database
3. Click ขวาที่ Database บน Object Explorer แล้วเลือก Restore Database...
4. ที่ช่อง To database : ให้เลือก Database ที่มีอยู่หากต้องการ Restore หรือให้ตั้งชื่อใหม่หากต้องการ Add
5. เลือก Form device : และกดปุ่ม Browse เพื่อเลือก file .bak ที่ต้องการโดยการกดปุ่ม Add
6. เมื่อเลือก file .bak ที่ต้องการแล้วกด OK
7. เสร็จแล้วสามารถลบหรือ replace file .bak ได้
2. Connect SQL ไปยัง Server Name ที่คุณต้องการจะเพิ่ม หรือ Restore Database
3. Click ขวาที่ Database บน Object Explorer แล้วเลือก Restore Database...
4. ที่ช่อง To database : ให้เลือก Database ที่มีอยู่หากต้องการ Restore หรือให้ตั้งชื่อใหม่หากต้องการ Add
5. เลือก Form device : และกดปุ่ม Browse เพื่อเลือก file .bak ที่ต้องการโดยการกดปุ่ม Add
6. เมื่อเลือก file .bak ที่ต้องการแล้วกด OK
7. เสร็จแล้วสามารถลบหรือ replace file .bak ได้
วันจันทร์ที่ 22 ตุลาคม พ.ศ. 2555
การเพิ่ม Tags จาก Control Logix มาเก็บไว้ใน Database ของ FatoryTalk Historian
ค่า Tags จาก PLC (Controller) จะส่งมายัง Data Server (Linx Enterprise) แล้วจึงส่งต่อให้ FTLD Interface เพื่อเก็บค่าลง Database ดังรูป
และเราสามารถปรับแต่งเงื่อนไขในการเก็บข้อมูลลง database ได้เพื่อลดขนาดข้อมูล ได้ดังนี้
1. เลือก Mode ในการเก็บข้อมูล ดังนี้
1.1 Polled Mode
- Linx Enterprise จะดึงข้อมูลจาก PLC ตามเวลา Scan rate ที่กำหนดไว้
- Linx Enterprise จะส่งข้อมูลให้ FTLD ตามเวลา Scan rate ที่กำหนดไว้เหมือนกัน
โดยให้ทำการกำหนด Location3 = 0 และ กำหนดค่า Scan rate ที่ Location4
1.2 Advise Mode
- Linx Enterprise จะดึงข้อมูลจาก PLC ตามเวลา Scan rate ที่กำหนดไว้
- Linx Enterprise จะส่งข้อมูลให้ FTLD เมื่อค่านั้นมีการเปลี่ยนแปลง
โดยให้ทำการกำหนด Location3 = 1 และ กำหนดค่า Scan rate ที่ Location4
2. กำหนดเงื่อนไขการ Filter ข้อมูล ดังนี้
2.1 Exception Test จะเก็บข้อมูลเมื่อค่าของ Sample มากกว่าหรือเท่ากับค่า ExcDev หรือเวลาของ Sample มากกว่าเท่ากับค่า ExcMax ดังรูป
ผลที่จะได้
2.2 Compression Test จะเก็บข้อมูลเมื่อค่าของ Sample มากกว่าหรือเท่ากับ Comdev หรือเวลาของ Sample มากกว่าเท่ากับค่า Compmax ดังรูป
ผลที่จะได้
ส่วนการแสดงผลของ Trend บน HMI ก็สามารถปรับเปลี่ยนได้ที่ type ของ Menu Pen
และเราสามารถปรับแต่งเงื่อนไขในการเก็บข้อมูลลง database ได้เพื่อลดขนาดข้อมูล ได้ดังนี้
1. เลือก Mode ในการเก็บข้อมูล ดังนี้
1.1 Polled Mode
- Linx Enterprise จะดึงข้อมูลจาก PLC ตามเวลา Scan rate ที่กำหนดไว้
- Linx Enterprise จะส่งข้อมูลให้ FTLD ตามเวลา Scan rate ที่กำหนดไว้เหมือนกัน
โดยให้ทำการกำหนด Location3 = 0 และ กำหนดค่า Scan rate ที่ Location4
1.2 Advise Mode
- Linx Enterprise จะดึงข้อมูลจาก PLC ตามเวลา Scan rate ที่กำหนดไว้
- Linx Enterprise จะส่งข้อมูลให้ FTLD เมื่อค่านั้นมีการเปลี่ยนแปลง
โดยให้ทำการกำหนด Location3 = 1 และ กำหนดค่า Scan rate ที่ Location4
2. กำหนดเงื่อนไขการ Filter ข้อมูล ดังนี้
2.1 Exception Test จะเก็บข้อมูลเมื่อค่าของ Sample มากกว่าหรือเท่ากับค่า ExcDev หรือเวลาของ Sample มากกว่าเท่ากับค่า ExcMax ดังรูป
ข้อมูลจาก PLC |
ข้อมูลหลังทำ Exception |
ข้อมูลจาก PLC |
ข้อมูลหลังทำ Compression |
ซึ่งหลังจากที่นำข้อมูลที่ส่งมาจาก PLC ผ่านการทำ Exception และ Compression Test แล้ว ข้อมูลที่จะถูกเก็บใน Historian ก็จะน้อยลง ดังตัวอย่างรูปด้านล่าง
วันเสาร์ที่ 20 ตุลาคม พ.ศ. 2555
การลงโปรแกรม Factorytalk SE 6.0
Factorytalk SE 6.0 จะเป็นโปรแกรมที่รันบน OS 32 bit หรือ 86 bit
ขั้นตอนการลงโปรแกรม Factorytalk SE V6.0
1. ต้องใช้ user ที่เป็น Administrator ของเครื่องที่จะลงโปรแกรม
2. ติดตั้ง Microsoft Internet Information (IIS) ใน Windows Features โดยจะทำการติดตั้ง
2.1 IIS Metabase and IIS 6 configurationcompatibility
2.2 ASP และ ISAPI Extension
2.3 WebDAV Publishing
Windows 7 |
Windows Server 2008 |
4. หากเคยลงโปรแกรม Factorytalk มาก่อนให้เลือก Uninstall FactoryTalk View Site Edition
5. Install FactoryTalk Service Platform ซึ่งเป็นส่วนที่ทำหน้าที่ติดต่อกับ Windows
6. Install FactoryTalk View Site Edition ซึ่งเป็นส่วนที่ใช้ในการ Modify HMI และให้ใส่ Product's Serial Number:0123456789
และระหว่าง install จะมี message windows ถามว่าคุณได้ติดตั้ง IIS แล้วหรือยัง หากคุณได้ติดตั้งแล้วในหัวข้อที่ 2. ให้กด OK
ก่อนที่จะเสร็จสิ้นขั้นตอนนี้ ระบบก็จะถามหา Computer ที่เก็บตัว HMI Project ที่คุณต้องการ Run ซึ่งถ้าหากเครื่องที่กำลังติดตั้งเก็บ HMI Project เองก็ให้กำหนดเป็น This Computer หรือ localhost แต่ถ้าหากเป็น Network และตัว HMI Project เก็บไว้เครื่องอื่นก็ให้เข้าไปเลือกที่ปุ่ม ... ซึ่งในรูปตัวอย่างเครื่อง Server ชื่อ rbf_l1srv01 จะเก็บ HMI Project ไว้
This Computer (Local) |
Network |
7. Install RSLinx Enterprise เพื่อใช้ในการติดต่อกับ PLC ของ Rockwell รุ่น Logic5000 เป็นต้นไป และยังสามารถสร้าง Database เพื่อเก็บ Alarm ต่างๆได้
8. Install RSLinx Classic เพื่อใช้ในการติดต่อกับ PLC ของ Rockwell หรือสามารถติดต่อกับ PLC ยี่ห้อได้โดยใช้ Protocal DH เป็นต้น
Code VB สำหรับส่ง Mail ทาง Outlook
Code VB สำหรับส่ง e-mail และ Attach file ด้วย Outlook ที่คุณมี user อยู่ โดยตัวอย่าง จะส่ง e-mail และ file Test.xlsx ไปยัง To และ Cc. x.automation2012@gmail.com ซึ่งกำหนดไว้ 2 เงื่อนไข คือ
- Show หน้าต่างของ e-mail เพื่อให้กดปุ่ม Send : ให้เลือก .Display
- ส่ง e-mail ทันที: ให้เลือก .Send
ซึ่งเนื่องจากเราจะส่ง e-mail ผ่านทาง Outlook ดังนั้นเราจึงต้องเพิ่ม Microsoft Outlook Component ให้กับ VB Project ก่อนที่จะ Coding โดยให้เพิ่ม "Microsoft Outlook 12.0 Object Library" ดังรูป
ตัวอย่างของโปรแกรม โดยเลือกส่ง e-mail ทันที
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim oapp As Outlook.Application
Dim oEmail As Outlook.MailItem
Set oapp = New Outlook.Application
Set oEmail = oapp.CreateItem(olMailItem)
On Error GoTo SendEmailErr
With oEmail
.To = "x.automation2012@gmail.com"
.CC = "x.automation2012@gmail.com"
.Subject = "Energy Planing"
.BodyFormat = olFormatPlain
.Body = "Test"
'.Importance = olImportanceHigh
.ReadReceiptRequested = True
.Attachments.Add "D:\Test.xlsx", olByValue
.Recipients.ResolveAll
.Save
'.Display 'Show the email message and allow for editing before sending
.Send 'You can automatically send the email without displaying it.
End With
Set oEmail = Nothing
'oapp.Quit
Set oapp = Nothing
Exit_SendEmail:
Set oEmail = Nothing
Set oapp = Nothing
Exit Sub
SendEmailErr:
MsgBox "Error " & Err.description
Resume Exit_SendEmail
End Sub
- Show หน้าต่างของ e-mail เพื่อให้กดปุ่ม Send : ให้เลือก .Display
- ส่ง e-mail ทันที: ให้เลือก .Send
ซึ่งเนื่องจากเราจะส่ง e-mail ผ่านทาง Outlook ดังนั้นเราจึงต้องเพิ่ม Microsoft Outlook Component ให้กับ VB Project ก่อนที่จะ Coding โดยให้เพิ่ม "Microsoft Outlook 12.0 Object Library" ดังรูป
ตัวอย่างของโปรแกรม โดยเลือกส่ง e-mail ทันที
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim oapp As Outlook.Application
Dim oEmail As Outlook.MailItem
Set oapp = New Outlook.Application
Set oEmail = oapp.CreateItem(olMailItem)
On Error GoTo SendEmailErr
With oEmail
.To = "x.automation2012@gmail.com"
.CC = "x.automation2012@gmail.com"
.Subject = "Energy Planing"
.BodyFormat = olFormatPlain
.Body = "Test"
'.Importance = olImportanceHigh
.ReadReceiptRequested = True
.Attachments.Add "D:\Test.xlsx", olByValue
.Recipients.ResolveAll
.Save
'.Display 'Show the email message and allow for editing before sending
.Send 'You can automatically send the email without displaying it.
End With
Set oEmail = Nothing
'oapp.Quit
Set oapp = Nothing
Exit_SendEmail:
Set oEmail = Nothing
Set oapp = Nothing
Exit Sub
SendEmailErr:
MsgBox "Error " & Err.description
Resume Exit_SendEmail
End Sub
รวบรวม Script ที่ใช้ในการติดต่อ Database แบบต่างๆ
SQL Server | ODBC | Standard Security: | "Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;" |
Trusted connection: | "Driver={SQL Server};Server=Aron1;Database=pubs;Trusted_Connection=yes;" | ||
Prompt for username and password: | oConn.Properties("Prompt") = adPromptAlways | ||
oConn.Open "Driver={SQL Server};Server=Aron1;DataBase=pubs;" | |||
OLE DB, OleDbConnection (.NET) | Standard Security: | "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;" | |
Trusted connection: | "Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;" | ||
Prompt for username and password: | oConn.Provider = "sqloledb" | ||
oConn.Properties("Prompt") = adPromptAlways | |||
oConn.Open "Data Source=Aron1;Initial Catalog=pubs;" | |||
SqlConnection (.NET) | Standard Security: | "Data Source=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;" | |
Trusted connection: | "Data Source=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;" | ||
Access | ODBC | Standard Security: | "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;" |
Workgroup: | "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;","admin", "" | ||
Exclusive: | "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Exclusive=1;Uid=admin;Pwd=" | ||
OLE DB, OleDbConnection (.NET) | Standard Security: | "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=asdasd;" | |
Trusted connection: | "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:System Database=system.mdw;","admin", "" | ||
Prompt for username and password: | "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;","admin", "" | ||
Oracle | ODBC | New version: | "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;" |
Old version: | "Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword;" | ||
OLE DB, OleDbConnection (.NET) | Standard security: | "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=Username;Password=asdasd;" | |
Trusted Connection: | "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1;" | ||
OracleConnection (.NET) | Standard: | "Data Source=Oracle8i;Integrated Security=yes"; | |
MySQL | ODBC | Local database: | "Driver={mySQL};Server=mySrvName;Option=16834;Database=mydatabase;" |
Remote database: | "Driver={mySQL};Server=data.domain.com;Port=3306;Option=131072;Stmt=;Database=my-database;Uid=username;Pwd=password;" | ||
OLE DB, OleDbConnection (.NET) | Standard: | "Provider=MySQLProv;Data Source=mydb;User Id=UserName;Password=asdasd;" | |
MySqlConnection (.NET) | eInfoDesigns.dbProvider: | "Data Source=server;Database=mydb;User ID=username;Password=pwd;Command Logging=false" | |
DSN | ODBC | DSN: | "DSN=myDsn;Uid=username;Pwd=;" |
File DSN: | "FILEDSN=c:\myData.dsn;Uid=username;Pwd=;" | ||
Excel | ODBC | Standard: | "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\MyExcel.xls;DefaultDir=c:\mypath;" |
OLE DB | Standard: | "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""" | |
Text | ODBC | Standard: | "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\txtFilesFolder\;Extensions=asc,csv,tab,txt;" |
OLE DB | Standard: | "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended Properties=""text;HDR=Yes;FMT=Delimited""" |
สมัครสมาชิก:
บทความ (Atom)