การใช้งาน S7-1200 เป็น Modbus RTU Slave

การใช้งาน S7-1200 เป็น Modbus RTU Slave

S7-1200 สามารถรองรับการใช้งานเป็น Modbus RTU Slave ผ่านางพอร์ท serial ได้ โดยขึ้นอยู่กับว่าเราจะใช้บอร์ดสื่อสารตัวไหน การที่ตั้งค่าให้ S7-1200 เป็น Modbus RTU Slave นั้น นั่นหมายความว่า S7-1200 จะสามารถแชร์ค่า address ภายใน PLC ให้อุปกรณ์อื่นๆสามารถที่จะมาดึงค่าจาก PLC ออกไปได้

การตั้งค่าการใช้งาน

1. ตรวจสอบพอร์ทสื่อสารที่เราต้องการใช้ กรณีนี้เาจะใช้ผ่านบอร์ด CB1241 ซึ่งเป็นแบบ RS485 (2-wire) ให้เราดูว่าบอร์ดสื่อสารที่เราใช้มี Hardware identifier หมายเลขอะไร เราจะต้องใช้หมายเลขนี้ในการอ้าง port กับ block Modbus_Comm_Load ต่อไป กรณีนี้บอร์ดของเรามีหมายเลข Hardware identifier = 269
MBRTU_Slave_01.png

2. ที่โปรแกรม วาง block Modbus_Comm_Load แต่ยังไม่ต้องทำอะไรเพิ่มเติม
MBRTU_Slave_02.png

3. สังเกตว่า เมื่อเราวาง block Modbus_Comm_Load แล้ว จะมี Data block เกิดขึ้นมาอัตโนมัติใน System blocks ชื่อว่า Modbus_Comm_Load_DB ซึ่งเราจะต้องไปตั้งค่าเพิ่มเติมใน data block นี้อีกภายหลัง
MBRTU_Slave_03.png

4. วาง block Modbus_Slave ไว้ที่ตัวโปรแกรม แต่ยังไม่ต้องทำอะไรเพิ่มเติม
MBRTU_Slave_04.png

5. สังเกตว่าเมื่อเราวาง block Modbus_Slave แล้ว จะเกิด data block ชื่อว่า Modbus_Slave_DB ขึ้นมาใน System blocks อัตโนมัติ
MBRTU_Slave_05

6. กลับมาที่ block Modbus_Comm_Load ให้เราใส่ tag ให้ขาต่างๆให้ครบ โดยเฉพาะขา PORT ให้เราไปเลือกตัว Communication board CB1241 ซึ่งถ้าเลือกถูกต้องแล้ว จะต้องได้หมายเลข Hardware identifier เป็น 269 ตรงกับที่เราสังเกตในขั้นตอนแรก (จริงๆจะใส่เป็นเลข 269 ตรงๆที่ขานี้เลยก็ได้ แต่ต้องมั่นใจว่าใส่ไม่ผิด แต่ถ้าเลือกจาก drop down list เราจะเห็นชื่อบอร์ดซึ่งโอกาสผิดจะน้อยกว่า)
MBRTU_Slave_06.png

7. ในส่วนของขา MD_DB นั้น ให้เราเลือกเป็น System block ของ Modbus_Slave_DB.MB_DB
MBRTU_Slave_07.png

  • REQ เพื่อสั่งใช้งาน block Modbus_Comm_Load
  • PORT เพื่อเลือกหมายเลข Hardware identifier ของตัวบอร์ดสื่อสาร
  • BAUD คือความเร็วในการสื่อสาร (bps)
  • Parity ใช้ตั้งค่า parity โดย 0=None, 1=Odd , 2=Even

8. ให้เราทำการตั้งค่า Modbus_Comm_Load_DB ที่อยู่ใน System block เพิ่มเติม คือไปที่ข้อมูลที่ชื่อว่า MODE แล้วทำการเปลี่ยนค่า Start value เป็น 4
MBRTU_Slave_08.png

เหตุผลที่ต้องเปลี่ยน Mode เป็น 4 ก็เพราะพารามิเตอร์ตรงนี้เอาไว้ตั้งการสื่อสารว่าจะเป็นแบบ RS232, RS422 หรือ RS485 นั่นเอง กรณีนี้เราใช้บอร์ด CB1241 ซึ่งเป็นแบบ RS485 (2-wire) จึงจำเป็นต้องเปลี่ยนค่า MODE เป็น 4
MBRTU_Master_09

9. ให้ทำการใส่ขาต่างๆให้กับ block Modbus_Slave ให้ครบ
MBRTU_Slave_09.png

  • MB_ADDR คือ หมายเลข station ของ PLC S7-1200 ที่เรากำหนดให้ระบบ serial ของ Modbus RTU ซึ่งอุปกรณ์ master ตัวอื่นต้องมาอ่านข้อมูลของ S7-1200 จากหมายเลข station นี้
  • MB_HOLD_REG คือ pointer ของข้อมูลใน PLC ที่เราต้องแชร์ไปยังอุปกรณ์ Modbus ตัวอื่นๆ

10. ให้ทำการสร้าง data block ขึ้นมาใหม่ เพื่อใช้เป็นตัวแชร์ข้อมูล Modbus
MBRTU_Slave_10

11. สร้างข้อมูลที่ต้องการแชร์เป็น array ของ Integer
MBRTU_Slave_11.png

12. ตั้งค่า Property ของ data block โดยเลือกเอา Optimized block access ออกไป
MBRTU_Slave_12.png

13. ที่ขา MB_HOLD_REG ของ block Modbus_Slave ให้เราทำ pointer ชี้ไปที่ data block ของ MB_Data ที่เราได้สร้างมาเพื่อเป็นตัวแชร์ข้อมูล โดยใช้รูปแบบ “P#bit address” “data type” “length” ดังนั้นในกรณีนี้หากเราต้องชี้ไปที่ data block MB_Data ซึ่งเป็น DB3 ผลที่ได้คือ P#DB3.DBX0.0 WORD 10 (นั่นคือเราต้องการแชร์ข้อมูล 10 word)
MBRTU_Slave_13.png

14. เมื่อทำการ compile และ download โปรแกรมลง PLC แล้ว ทำทำการ enable ขา EN และ REQ ของ Modbus_Comm_Load เพื่อโหลดพารามิเตอร์ Modbus ลงไป (เมื่อโหลดแล้วไม่จำเป็นต้อง on EN และ REQ ค้างไว้ก็ได้)
MBRTU_Slave_14.png

15. ทำการ enable ขา EN ของ block Modbus_Slave เพื่อทำการแชร์ค่าให้อุปกรณ์ Modbus อื่นๆ
MBRTU_Slave_15.png

16. จากการทดสอบด้วย Modscan จะเห็นว่าโปรแกรม Modscan สามารถอ่านค่าจาก PLC S7-1200 ได้แล้ว
MBRTU_Slave_16.png

17. เมื่อเราใช้งาน block MB_SLAVE เราสามารถแชร์พื้นที่ของ input/output ของ PLC ออกไปยัง address Modbus ได้ทันทีโดยไม่ต้องมี pointer ใดๆ โดยเราสามารถอ้างอิง address Modbus เทียบกับ address S7-1200 ได้จากตารางนี้
MBRTU_Slave_17

 

NOTE:

หากทำทุกอย่างถูกต้องแล้ว แต่ยังไม่สามารถเชื่อมต่อ Modbus ได้ ให้ลองทำ MRES รอบนึงก่อน

 

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s