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

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

สำหรับในหัวข้อนี้เราจะกล่าวถึงการนำเอา S7-1200 มาใช้เป็น Modbus RTU Master เพื่อไปอ่านข้อมูลจากอุปกรณ์อื่นๆผ่านทาง serial port ซึ่งในกรณีนี้เราจะทำการสื่อสารผ่านทาง Communication board CB1241 ซึ่งสามารถใช้งานเป็นแบบ RS485 (2-wire) ซึ่งติดตั้งลงบนตัว PLC ได้เลยMBRTU_Master_00.png

ขั้นตอนการตั้งค่าให้เป็น Modbus RTU Master

1. ตรวจสอบ Hardware identifier ของตัวบอร์ด CB1241 ก่อนว่าเป็นหมายเลขอะไรโดยไปที่ Device configuration เราจำเป็นต้องใช้หมายเลข Hardware identifier ตัวนี้เพื่อไปใช้งานใน block ของ Modbus ต่อไป  กรณีนี้เป็นหมายเลข 269
MBRTU_Master_01

2. ทำการวาง block Modbus_Comm_Load เพื่อใช้เป็นตัวกำหนดพารามิเตอร์ของการสื่อสารของ Modbus ซึ่งอยู่ใน Communication -> Communication processor มาวางที่โปรแกรมหลักของเรา แต่ยังไม่ต้องทำอะไรเพิ่มเติม
MBRTU_Master_02.png

3. ให้สังเกตว่า เมื่อเราวาง block Modbus_Comm_Load แล้ว จะเกิด Data block ตัวหนึ่งขึ้นมาใน System blocks ที่ชื่อว่า Modbus_Comm_Load_DB
MBRTU_Master_03.png

4. ทำการวาง block Modbus_Master ที่อยู่ใน Communication -> Communication processor มาวางที่โปรแกรมหลักของเรา แต่ยังไม่ต้องทำอะไรเพิ่มเติม
MBRTU_Master_04.png

5. สังเกตว่าเมื่อเราวาง block Modbus_Master ขึ้นมาแล้ว จะเกิด System block ตัวใหม่ขึ้นมาชื่อว่า Modbus_Master_DB
MBRTU_Master_05.png

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

7. ในส่วนของขา MD_DB นั้น ให้เราเลือกเป็น System block ของ Modbus_Master_DB.MB_DB
MBRTU_Master_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_Master_08.png

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

9. ให้ทำการใส่ขาให้ block Modbus_Master ให้ครบ
MBRTU_Master_10.png

  • REQ คือหาเพื่อสั่งใช้งาน Block Modbus_Master
  • MB_ADDR คือการบอกว่าต้องการไปอ่าน/เขียนค่าจาก Modbus Slave station ที่เท่าไหร่ ซึ่งต้องตั้งให้ตรงกับที่ตั้ง station ไว้ในอุปกรณ์ Modbus slave
  • DATA_ADDR คือบอกว่าต้องการไปอ่าน/เขียน Modbus address อะไรจากตัว slave
  • DATA_LEN คือบอกว่าต้องการไปอ่าน/เขียนกี่ address
  • DATA_PTR เป็น pointer ที่ชี้ไปยัง address ที่ต้องการใช้เก็บค่าที่อ่าน/เขียนกับตัว slave ซึ่งดูวิธีการจากขั้นตอนต่อไป

10. สร้าง Data block ขึ้นมาใหม่เพื่อใช้เป็นตัวกลางที่อ่าน/เขียนค่ากับอุปกรณ์ slave
MBRTU_Master_11.png

11. กรณีนี้เราจะสร้าง array ขึ้นมาโดยมี 2 ข้อมูลอยู่ภายใน
MBRTU_Master_12.png

12. ให้ตั้ง Propery ของ Data block ที่เราเพิ่งสร้างมาเป็นตัวกลางในการอ่านเขียนนี้ โดยเลือกในส่วนของ Attribute ให้เอา Optimized block access ออก
MBRTU_Master_13.png

13. จากนั้นที่ขา DATA_PTR ของ block Modbus_Master ให้เราชี้ไปที่ Data block MฺB_Data.Data หากเราตั้งค่าก่อนหน้ามาถูกต้อง ข้างบนข้อความ MB_Data.Data จะขึ้นสัญลักษณ์ P#DBx.DBXx.x ดังรูป
MBRTU_Master_14.png

14. จากนั้นทำการ Compile และ download โปรแกรมลง PLC เมื่อ PLC พร้อมทำงาน ให้ทำการ enable ขา EN และ REQ ของ block Modbus_Comm_Load เพื่อ activate parameter ของการสื่อสาร Modbus  ซึ่งจริงๆแล้วทั้งสองขานี้ไม่ต้อง ON ค้างก็ได้ เมื่อ activate เสร็จแล้วสามารถ OFF ได้เลย
MBRTU_Master_15

15. และเมื่อทำการ enable ขา REQ ของ block Modbus_Master แล้ว ก็จะเริ่มทำการไปอ่าน/เขียนค่าจากอุปกรณ์ slave ทันที สังเกตว่า ERROR จะต้องไปเกิดขึ้นจึงจะถูกต้อง
MBRTU_Master_16.png

16. ตัวอย่างการอ่านค่าจากอุปกรณ์ Modbus slave จากพอร์ท RS485 station1
MBRTU_Master_17.png

 

Mode ของ Modbus RTU Master

ตัว Modbus RTU Master จะตัดสินใจว่าจะทำการอ่านหรือเขียนอุปกรณ์ slave จาก Mode ที่เราใส่ไว้ใน block Modbus_Master นั่นเอง โดยอ้างอิงจากตารางด้านล่างนี้MBRTU_Master_19MBRTU_Master_20

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