วันนี้เขียนเรื่องการส่ง ASCII ด้วยชุดคำสั่ง RS ใน FX3U PLC (Chinese version) บางทีจะใช้ในการส่งค่าต่างๆ ไปยังอุปกรณ์อื่นๆ สัญญาณออกทาง RS485 Port
รูปแบบของคำสั่งนั้นมันต้องเตรียมข้อมูลให้ครบ จากนั้นก็ส่งไป ต้องเตรียม data register สำหรับจัดเก็บข้อมูลตอบกลับด้วย
command input 1 2 3 4 5
|----||-----------------------------[ RS D100 K9 D200 K9 ]--------|
|----||--------------------[SET Transmit Message (กำหนดข้อความ) ]--------|
| |------------------------------------------------------[SET M8122 ]----|
|----|M8123|-----------------------[ PROCESS RECEIVED MESSAGE ]---|
| |---------------------------------------------------[RST M8123]---|
โดยที่
1. กำหนดชุดคำสั่ง เพื่อเริ่มการใช้งาน
2. Data register สำหรับจัดเก็บข้อมูลที่จะส่งออกไปด้วยคำสั่ง RS (ข้อมูล ASCII ทั้งหลายแหล่จะเก็บไว้ที่นี่) โดยเริ่มจาก D100 เป็นต้นไป คือเริ่มเก็บใน D100 D101 D102...
3. จำนวน character ที่จะส่ง
4. สำหรับเก็บข้อมูลตอบกลับ เริ่มเก็บจาก D200...
5. จำนวนของข้อมูลตอบกลับมาที่จะเก็บ
เรื่องที่ต้องเข้าใจต่อไปก็คือ การจัดเก็บข้อมูลของ Data Register ว่ามันเก็บข้อมูลแบบไหน เรียงกันยังไง
byte order
Fig.1 Byte order [source:Intel byte order https://cse.unl.edu] |
PLC นี้ Data register( D) มันเก็บได้ 1word หรือ 2 characters โดยที่ 1 character = 1 byte = 8 bit จำได้ไหมว่า 8 bit นี่มันประกอบด้วย Hex 2 ตัว (อย่างเช่น FF = 255 DEC = 1111 1111 BIN )
การจัดเรียงข้อมูลใน Data register( D) นั้นมันเรียงแบบไม่เข้ากับสามัญสำนึกเรา ทั้งนี้มันเลือกได้ว่าจะเก็บ 16bit หรือ 8bit ใน 1 Register ทีนี้ลองดู 16bit เทียบกับ 8 bit เมื่อเก็บข้อมูล String ABCD
8bit 16bit
UPPER LOWER UPPER LOWER
[ -] [A ] D100 [B] [A] D100
[ -] [B ] D101 [D] [C] D101
[ -] [C ] D102 [-] [-] D102
[ -] [D ] D103 [-] [-] D103
16 bit ใช้ D น้อยกว่า คำสั่งก็สั้น แต่ก็เข้าใจยากหน่อย
การจะใช้ 8 หรือ 16bit สามารกำหนดได้ โดยใช้ flag M8161 ถ้า ON 8bit และ OFF 16bit
|----|M8002|-----------[SET M8161]---| กำหนดแบบนี้ใช้การเก็บ 8bit
อยากส่งค่าอะไร ก็ MOV Hxx Dxxx
ตัวอย่าง Ladder ที่เขียนไว้ ใช้แบบ 16 bit ส่งคำว่า TEST ออกไป ค่าที่ส่งต้องเปิดตาราง ASCII Table เพื่อเอาค่า Hex มาใช้งาน
ลืมเขียนถึงการกำหนดรูปแบบสื่อสารเลย ต้องกำหนด protocol สื่อสาร เพราะเราต้องส่งข้อมูลหาอุปกรณ์อื่น ฉะนั้นต้องตั้งค่าไว้ให้เหมือนกัน ไม่เหมือนกันก็ส่งหากันไม่ได้
กำหนดค่าให้กับ flag M8120 อ้างอิงตามคู่มือ ตามตัวอย่างใช้ HC086 ( 9600bps 7E1)
Fig.2 Example Ladder |
Fig.3 Devices Monitoring. |
Fig.4 Receiving message from RS command. |
เอาคร่าวๆ แค่นี้ก่อน
ที่ทดลองไว้มันส่งข้อมูลออกทาง RS485 port ของ FX3U ผ่านตัวแปลงสัญญาณ RS485/TTL เข้า FX2N
FX3U ---------------->[RS485/TTL]------------------>[FX2N]
A-------------------------A/ RX----------------------------RX
B-------------------------B/ TX-----------------------------TX
/VCC---------------------------VCC
/GND---------------------------GND
At Dormitory
Oct10,2021
ไม่มีความคิดเห็น:
แสดงความคิดเห็น