PUT-GET เป็นคำสั่งในส่วนของ S7 connection คือเป็นคำสั่งเพื่อให้ PLC Siemens คุยกับ PLC Siemens ด้วยกันเอง เช่นนำ S7-1200 ไปคุยกับ S7-300 เป็นต้น ซึ่งการคุยกันระหว่าง PLC S7 ทั้งคู่นั้น จะมีตัวหนึ่งที่ทำตัวเป็น Main PLC และอีกตัวหนึ่งทำตัวเป็น Partner PLC และการเขียนโปรแกรม PUT-GET นั้นจะเกิดขึ้นที่ Main PLC เท่านั้น ตัว Partner PLC ไม่ต้องทำการโปรแกรมใดๆเลย เพียงแต่ทำการตั้งค่าและเตรียมข้อมูลให้เหมาะสมเท่านั้น
1. เตรียมข้อมูลใน Data block ของฝั่ง Main PLC เพื่อให้เป็นตัวเก็บข้อมูลที่จะอ่านมาได้จาก Partner PLC ตามจำนวนที่ต้องการ ตัวอย่างนี้แปลว่าเราต้องการเก็บข้อมูลจากคำสั่ง GET ไว้ที่ DB2
2. ตั้งค่า Property Attribute ของ Data block โดยเลือกไม่ใช้ “Optimized block access”
1. เตรียมข้อมูลใน Data block ของฝั่ง Partner PLC เพื่อเป็นพื้นที่ที่ให้ Main PLC เอาอ่านจากพื้นที่นี้ ตัวอย่างนี้แปลว่าเราต้องการเปิดพื้นที่ DB10 ของ Partner PLC ให้ Main PLC มาอ่านไปได้
2. ตั้งค่า Property Attribute ของ Data block โดยเลือกไม่ใช้ “Optimized block access”
3. ตั้งค่า Connection mechanism โดยทำการ enable “Permit access with PUT/GET communication from remote partner”
1. ในส่วนของ Device configuration -> Network view ตั้งค่า Connections เลือกเป็น S7 connection จากนั้นโปรแกรมจะทำการ highlight อุปกรณ์ที่สามารถเชื่อมต่อกันได้ดังรูป
2. นำ mouse ลากเพื่อเชื่อมต่อระหว่าง 2 PLC (อุปกรณ์ตัวแรกที่ click จะเป็น Main PLC และตัวที่ถูกลากไปหาจะเป็น Partner PLC)
3. เมื่อลากการเชื่อมต่อสมบูรณ์แล้ว โปรแกรมจะแสดง S7 connection ทั้งในส่วนของ Main PLC (Local PLC) กับ Partner PLC
4. สิ่งที่เราควรจะต้องโน้ตเอาไว้คือ Local ID ของ S7 connection นี้ เพราะเราต้องใช้เลขนี้มาใส่ใน block PUT/GET ต่อไป ตัวอย่างนี้ Local ID คือ W#16#100 เป็นต้น
การเขียนโปรแกรมนั้น เราจะทำการเขียนที่ฝั่งของ Main PLC เท่านั้น
1. วาง block GET ที่ network แล้วเลือก Partner PLC ใน Properties ของ block GET ให้ถูกต้อง
2. สังเกตว่าถ้าเราเลือก Partner PLC ถูกต้อง Local ID จะใส่ให้เราอัตโนมัติและตรงกับตัวเลข Local ID ที่เราได้โน้ตเอาไว้ก่อนหน้านี้ หรือเราจะใส่ Local ID เอาเองก็ได้ (แต่แนะนำให้เลือกจาก Partner PLC จะดีกว่า)
3. ทำการระบุตัวแปรให้กับขาตัวแปรที่เหลือ
ตัวอย่างนี้หมายความว่า เราจะไปทำการอ่านค่าจาก DB10 ของ Partner เริ่มจาก DBX0.0 จำนวน 2 word แล้วนำมาเก็บไว้ที่ DB2 ของ Main PLC ที่จำนวนเท่ากัน
โดยรูปแบบของ Pointer ที่ต้องใช้คือ “P#bit address” “data type” “length”
1. ใส่ค่า DB10 ของ Partner PLC เพื่อทดสอบ
2. ทำการ trig สัญญาณ REQ ที่ตัว block GET ของ Main PLC
3. Main PLC จะอ่านค่าจาก DB10 ของ Partner PLC จำนวน 2 word แล้วนำมาเก็บไว้ที่ DB2 ของ Main PLC
========================================================================================================================================================
สำหรับคำสั่ง PUT นี้ เราขอใช้ Data block เดียวกับที่ใช้ในคำสั่ง GET ไปแล้ว เพื่อให้เห็นการทำงานและการใส่ค่าของ pointer ได้ดีขึ้นด้วย
1. เตรียมข้อมูลใน Data block ของฝั่ง Main PLC เพื่อให้เป็นตัวที่จะส่งข้อมูลออกไปยัง Partner PLC ตามจำนวนที่ต้องการ ตัวอย่างนี้แปลว่าเราต้องการส่งข้อมูลตั้งแต่ offset ที่ 4 ไปยัง Partner PLC
2. กรณีที่สร้าง Data block ขึ้นมาใหม่ เรายังคงจำเป็นต้องตั้งค่า Property Attribute ของ Data block โดยเลือกไม่ใช้ “Optimized block access” เหมือนกับตอนใช้งานคำสั่ง GET เพียงแต่กรณีนี้ Data block นี้ถูก disable “Optimized block access” มาแล้ว จึงไม่ได้แสดงให้ดูอีก
1. เตรียมข้อมูลใน Data block ของฝั่ง Partner PLC เพื่อเป็นพื้นที่ที่ให้ Main PLC มาเขียนข้อมูลลงไปได้ ตัวอย่างนี้แปลว่าเราต้องการเปิดพื้นที่ DB10 ตั้งแต่ offset ที่ 4 ของ Partner PLC ให้ Main PLC มาเขียนลงได้
2. กรณีที่สร้าง Data block ขึ้นมาใหม่ เรายังคงจำเป็นต้องตั้งค่า Property Attribute ของ Data block โดยเลือกไม่ใช้ “Optimized block access” เหมือนกับตอนใช้งานคำสั่ง GET เพียงแต่กรณีนี้ Data block นี้ถูก disable “Optimized block access” มาแล้ว จึงไม่ได้แสดงให้ดูอีก
เนื่องจากกรณีนี้ S7 connection ได้ถูกสร้างตั้งแต่ตอนที่เราทำการตั้งค่าเพื่อใช้คำสั่ง GET แล้ว จึงไม่ต้องสร้างอีก แต่ถ้าหากยังไม่เคยถูกตั้งค่ามาก่อนให้ทำเช่นเดียวกับการสร้าง S7 connection ในขั้นตอนของคำสั่ง GET
การเขียนโปรแกรมนั้น เราจะทำการเขียนที่ฝั่งของ Main PLC เท่านั้น
1. วาง block PUT ที่ network แล้วเลือก Partner PLC ใน Properties ของ block PUT ให้ถูกต้อง
2. สังเกตว่าถ้าเราเลือก Partner PLC ถูกต้อง Local ID จะใส่ให้เราอัตโนมัติและตรงกับตัวเลข Local ID ที่เราได้โน้ตเอาไว้ก่อนหน้านี้ หรือเราจะใส่ Local ID เอาเองก็ได้ (แต่แนะนำให้เลือกจาก Partner PLC จะดีกว่า)
3. ทำการระบุตัวแปรให้กับขาตัวแปรที่เหลือ
ตัวอย่างนี้หมายความว่า เราจะไปทำการเขียนค่าจาก DB2 ของ Main PLC เริ่มจาก DBX4.0 จำนวน 2 word ไปใส่ใน DB10 ของ Partner PLC ที่จำนวนเท่ากัน และเริ่มจาก DBX4.0 เช่นกัน
โดยรูปแบบของ Pointer ที่ต้องใช้คือ “P#bit address” “data type” “length”
1. ใส่ค่า DB2 ของ Main PLC เพื่อทดสอบ
2. ทำการ trig สัญญาณ REQ ที่ตัว block PUT ของ Main PLC
3. ค่าจาก Main PLC จะถูกเขียนไปยัง Partner PLC
========================================================================================================================================================
กรณีที่นำ S7-1200/S7-1500 ไปคุย PUT/GET กับ PLC ตระกูล S7-300/S7-400 ให้เราตั้งค่า Rack และ Slot ของ S7 connection ให้เป็น Rack0 Slot2 สำหรับการใช้งานกับ S7-300 และ Rack0 Slot2/3 (แล้วแต่การตั้งค่าของ S7-400 ว่า CPU ไปอยู่ slot ไหน) สำหรับการใช้งานกับ S7-400
ใน TIA V15 พบว่าหากตั้งค่า Rack/Slot ผิดตั้งแต่แรกแล้วโหลดลง PLC เวลามาเปลี่ยนภายหลัง PLC จะไม่จำค่าใหม่ เมื่อ online ดูจะเห็นค่าเดิมอยู่ คาดว่าน่าจะเป็น bug ดังนั้นต้องสร้าง project ใหม่แล้วสร้างให้ถูกตั้งแต่แรก
![]() |
![]() |
![]() |
PLC, HML, TIA, Siemens, Technical Information, IOT
INDUSTRIAL ELECTRICAL CO., LTD.
© 2014 Copyright by ie.co.th . All Rights Reserved. |
GOOGLE MAP |
SITE MAP |
|