Modbus
communication เป็นการสื่อสารระหว่างPLCกับอุปกรณ์ต่างๆ เช่นเซ็นเซอร์
อุปกรณ์ที่ใช้ในการสื่อสารของPLC FX คือ FX3U-485ADP-MBและFX3U-232ADP-MB
(MB คือ modbus)
ในหัวข้อนี้จะกล่าวถึงการสื่อสารกับเซ็นเซอร์วัดค่าออกซิเจนรุ่น OXY-LC-485
1.การ wiring

2. การเดินสายไฟในการสื่อสารแบบ MODBUS

3. การตั้งค่าการสื่อสารที่PLCและเซ็นเซอร์
การ ตั้งค่ารูปแบบการสื่อสารคือการตั้งค่ารายละเอียดต่างๆเช่นdata length ความเร็วในการสื่อสาร(baud rate) เป็นต้น โดยจะต้องค่าที่PLCและเซ็นเซอร์ให้ตรงกัน การตั้งค่าการสื่อสารที่PLC ทำได้โดยเขียนค่าคงที่ไปยัง special data register กรณีใช้ Ch1 ตั้งค่าที่ D8400
กรณีใช้ Ch1 ตั้งค่าที่ D8420
การ เลือกรูปแบบการสื่อสารขึ้นอยู่กับการกำหนดของผู้ใช้งานรูปที่3 เป็นรายละเอียดการสื่อสารซึ่งเป็นค่าเริ่มต้นของเซ็นเซอร์ เราสามารถกำหนดแตกต่างจากนี้ก็ได้

ส่วน การตั้งค่ารูปแบบการสื่อสารที่อุปกรณ์อื่นๆ จะต้องเขียนค่าคงที่ไปยังหน่วยความจำของอุปกรณ์นั้น โดยจะต้องทราบว่า หน้าที่ของหน่วยความจำของอุปกรณ์นั้นคืออะไร การเขียนข้อมูลจะต้องใช้คำสั่ง ADPRW หน่วยความจำของอุปกรณ์ที่ใช้กำหนดหน้าที่และการทำงานเรียกว่า Holding register

ตัวอย่าง เช่นต้องการตั้งค่า baud rate ของ OXY-LC-485 ให้เท่ากับ 9600 ก็ทำได้โดยการเขียนค่าคงที่ K2 ไปยัง Holding register 9C47 เป็นต้น

4. การตั้งค่ารูปแบบการสื่อสารของPLC โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์พิเศษ D8400,D8420
กรณีใช้ Ch1 ตั้งค่าที่ D8400
กรณีใช้ Ch2 ตั้งค่าที่ D8420
ตัวอย่างนี้ใช้ ch2
ตาราง D8400 และ D8420

เราสามารถกำหนดค่าต่างๆได้เอง ตารางที่ 2เป็นตัวอย่างการเลือกค่าการสื่อสารสำหรับPLC

เนื่อง จากใช้ch2 ดังนั้นการตั้งค่ารูปแบบการสื่อสารทำได้โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์ พิเศษD8420 ค่าคงที่คือค่าของบิต0ถึงบิต15 ที่เรากำหนดไว้ตามตารางที่3.75 ซึ่งค่าb0ถึงb15ที่ได้คือ 0001 0000 1000 0001 (เลขฐาน2)

การ เขียนค่าคงที่ไปD8420 จะใช้เลขฐาน2โดยตรงไม่ได้ จะต้องใช้เลขฐาน10หรือเลขฐาน16 และการใช้เลขฐาน16จะง่ายกว่า เนื่องจากการเปลี่ยนเลขฐาน2เป็นเลขฐาน16 ทำได้ง่ายกว่าการเปลี่ยนเลขฐาน2 เป็นเลขฐาน10 เมื่อเราใช้เลขฐาน16 จะได้ค่าที่เขียนไปD8420คือH1081 วงจรรูปที่3.241 เป็นการเขียนค่าคงที่ H1081ไปยังD8420 การเขียนค่าไปD8420 กำหนดให้ใช้หน้าสัมผัส M8411 (กรณีCh1ใช้M8038)

ตัวอย่างกรณีCh1

5. การตั้งค่า Protocol (ch1=D8401,Ch2=D8421)

เนื่อง จากใช้ch2 ดังนั้นการตั้งค่าprotocol ทำได้โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์พิเศษD8421 เนื่องจากPLC คืออุปกรณ์master ดังนั้นb4=0 และเลือกการใช้งานเป็นแบบRTU ก็จะได้ b8=0 ซึ่งค่าb0ถึงb15ที่ได้คือ 0000 0000 0000 0001 (เลขฐาน2)

เมื่อเปลี่ยน 0000 0000 0000 0001 เป็นเลขฐาน16จะได้ H01
นอกจากนั้นก็มีค่าต่างๆที่จำเป็นคือ

รายละเอียดของspecial register อ่านได้จากmanual modbus communication
สรุปค่าที่เขียนให้กับPLCคือ

6. การตั้งค่าการสื่อสารของเซ็นเซอร์
เรา ไม่ต้องตั้งค่าการสื่อสารที่เซ็นเซอร์อีก ถ้าเราใช้ค่าdefault ของเซ็นเซอร์ ดังนั้นจะต้องตั้งค่าการสื่อสารของPLCให้ตรงกับเซ็นเซอร์ก็พอ จากหัวข้อที่แล้ว เป็นการตั้งค่าcommunicationที่ตรงแล้ว คือ baud=9600, parity = none , stopbits= 1 bit มาถึงตรงนี้เราสามารถใช้คำสั่ง ADPRW อ่านค่าจากเซ็นเซอร์ได้เลย

ใน การใช้งานเซ็นเซอร์ เราต้องการอ่านค่าจากเซ็นเซอร์ดังนั้นก็จะต้องทราบว่า holding register อะไรของเซ็นเซอร์ที่เราต้องการอ่าน จากตาราง input registers 7532 คือ holding register ที่เก็บค่าออกซิเจนของเซ็นเซอร์

7. คำสั่ง Modbus read/write
คือคำสั่งที่อนุญาตให้ MODBUS master สื่อสารกับ slave รูปแบบคำสั่งคือ


S คือจำนวน slave เราใช้เซ็นเซอร์หนึ่งตัว ดังนั้นเท่ากับ 01H
S1 คือ command code เป็นคำสั่งที่เราต้องการสั่ง sensor ซึ่งต้องดูจากตารางด้านล่าง เช่น H04 คือ read input register (อ่านค่า input register ของ slave)
S2 S3 S4/D คือ command parameter

สรุปวงจรทั้งหมดคือ


command code

จาก วงจร เมื่อ PLC RUN M8002 ON จะทำให้ M0 ON และทำให้คำสั่ง ADPRW ทำงาน โดยการเขียนค่าคงที่ 1 ไปยัง 9C41 และสั่งเซ็นเซอร์ให้ ON เพื่อวัดค่าออกซิเจน
เมื่อส่งข้อมูลไปยังเซ็นเซอร์แล้ว M8029จะ ON โดยอัตโนมัติ และรีเซ็ต M0
ส่วนคำสั่ง ADPRW อีกบรรทัดจะอ่านค่าจาก input register 7531 และนำค่าไปเก็บที่ D100 และเราก็นำค่าไปใช้งานในโปรแกรม

2. การเดินสายไฟในการสื่อสารแบบ MODBUS

3. การตั้งค่าการสื่อสารที่PLCและเซ็นเซอร์
การ ตั้งค่ารูปแบบการสื่อสารคือการตั้งค่ารายละเอียดต่างๆเช่นdata length ความเร็วในการสื่อสาร(baud rate) เป็นต้น โดยจะต้องค่าที่PLCและเซ็นเซอร์ให้ตรงกัน การตั้งค่าการสื่อสารที่PLC ทำได้โดยเขียนค่าคงที่ไปยัง special data register กรณีใช้ Ch1 ตั้งค่าที่ D8400
กรณีใช้ Ch1 ตั้งค่าที่ D8420
การ เลือกรูปแบบการสื่อสารขึ้นอยู่กับการกำหนดของผู้ใช้งานรูปที่3 เป็นรายละเอียดการสื่อสารซึ่งเป็นค่าเริ่มต้นของเซ็นเซอร์ เราสามารถกำหนดแตกต่างจากนี้ก็ได้

ส่วน การตั้งค่ารูปแบบการสื่อสารที่อุปกรณ์อื่นๆ จะต้องเขียนค่าคงที่ไปยังหน่วยความจำของอุปกรณ์นั้น โดยจะต้องทราบว่า หน้าที่ของหน่วยความจำของอุปกรณ์นั้นคืออะไร การเขียนข้อมูลจะต้องใช้คำสั่ง ADPRW หน่วยความจำของอุปกรณ์ที่ใช้กำหนดหน้าที่และการทำงานเรียกว่า Holding register

ตัวอย่าง เช่นต้องการตั้งค่า baud rate ของ OXY-LC-485 ให้เท่ากับ 9600 ก็ทำได้โดยการเขียนค่าคงที่ K2 ไปยัง Holding register 9C47 เป็นต้น

4. การตั้งค่ารูปแบบการสื่อสารของPLC โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์พิเศษ D8400,D8420
กรณีใช้ Ch1 ตั้งค่าที่ D8400
กรณีใช้ Ch2 ตั้งค่าที่ D8420
ตัวอย่างนี้ใช้ ch2
ตาราง D8400 และ D8420

เราสามารถกำหนดค่าต่างๆได้เอง ตารางที่ 2เป็นตัวอย่างการเลือกค่าการสื่อสารสำหรับPLC

เนื่อง จากใช้ch2 ดังนั้นการตั้งค่ารูปแบบการสื่อสารทำได้โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์ พิเศษD8420 ค่าคงที่คือค่าของบิต0ถึงบิต15 ที่เรากำหนดไว้ตามตารางที่3.75 ซึ่งค่าb0ถึงb15ที่ได้คือ 0001 0000 1000 0001 (เลขฐาน2)

การ เขียนค่าคงที่ไปD8420 จะใช้เลขฐาน2โดยตรงไม่ได้ จะต้องใช้เลขฐาน10หรือเลขฐาน16 และการใช้เลขฐาน16จะง่ายกว่า เนื่องจากการเปลี่ยนเลขฐาน2เป็นเลขฐาน16 ทำได้ง่ายกว่าการเปลี่ยนเลขฐาน2 เป็นเลขฐาน10 เมื่อเราใช้เลขฐาน16 จะได้ค่าที่เขียนไปD8420คือH1081 วงจรรูปที่3.241 เป็นการเขียนค่าคงที่ H1081ไปยังD8420 การเขียนค่าไปD8420 กำหนดให้ใช้หน้าสัมผัส M8411 (กรณีCh1ใช้M8038)

ตัวอย่างกรณีCh1

5. การตั้งค่า Protocol (ch1=D8401,Ch2=D8421)

เนื่อง จากใช้ch2 ดังนั้นการตั้งค่าprotocol ทำได้โดยการเขียนค่าคงที่ไปยังรีจิสเตอร์พิเศษD8421 เนื่องจากPLC คืออุปกรณ์master ดังนั้นb4=0 และเลือกการใช้งานเป็นแบบRTU ก็จะได้ b8=0 ซึ่งค่าb0ถึงb15ที่ได้คือ 0000 0000 0000 0001 (เลขฐาน2)

เมื่อเปลี่ยน 0000 0000 0000 0001 เป็นเลขฐาน16จะได้ H01

นอกจากนั้นก็มีค่าต่างๆที่จำเป็นคือ

รายละเอียดของspecial register อ่านได้จากmanual modbus communication
สรุปค่าที่เขียนให้กับPLCคือ

6. การตั้งค่าการสื่อสารของเซ็นเซอร์
เรา ไม่ต้องตั้งค่าการสื่อสารที่เซ็นเซอร์อีก ถ้าเราใช้ค่าdefault ของเซ็นเซอร์ ดังนั้นจะต้องตั้งค่าการสื่อสารของPLCให้ตรงกับเซ็นเซอร์ก็พอ จากหัวข้อที่แล้ว เป็นการตั้งค่าcommunicationที่ตรงแล้ว คือ baud=9600, parity = none , stopbits= 1 bit มาถึงตรงนี้เราสามารถใช้คำสั่ง ADPRW อ่านค่าจากเซ็นเซอร์ได้เลย

ใน การใช้งานเซ็นเซอร์ เราต้องการอ่านค่าจากเซ็นเซอร์ดังนั้นก็จะต้องทราบว่า holding register อะไรของเซ็นเซอร์ที่เราต้องการอ่าน จากตาราง input registers 7532 คือ holding register ที่เก็บค่าออกซิเจนของเซ็นเซอร์

7. คำสั่ง Modbus read/write
คือคำสั่งที่อนุญาตให้ MODBUS master สื่อสารกับ slave รูปแบบคำสั่งคือ


S คือจำนวน slave เราใช้เซ็นเซอร์หนึ่งตัว ดังนั้นเท่ากับ 01H
S1 คือ command code เป็นคำสั่งที่เราต้องการสั่ง sensor ซึ่งต้องดูจากตารางด้านล่าง เช่น H04 คือ read input register (อ่านค่า input register ของ slave)
S2 S3 S4/D คือ command parameter

สรุปวงจรทั้งหมดคือ


command code

จาก วงจร เมื่อ PLC RUN M8002 ON จะทำให้ M0 ON และทำให้คำสั่ง ADPRW ทำงาน โดยการเขียนค่าคงที่ 1 ไปยัง 9C41 และสั่งเซ็นเซอร์ให้ ON เพื่อวัดค่าออกซิเจน
เมื่อส่งข้อมูลไปยังเซ็นเซอร์แล้ว M8029จะ ON โดยอัตโนมัติ และรีเซ็ต M0
ส่วนคำสั่ง ADPRW อีกบรรทัดจะอ่านค่าจาก input register 7531 และนำค่าไปเก็บที่ D100 และเราก็นำค่าไปใช้งานในโปรแกรม
ไม่มีความคิดเห็น:
แสดงความคิดเห็น