วันอาทิตย์ที่ 10 ตุลาคม พ.ศ. 2564

SENDING ASCII WITH RS COMMAND.

 วันนี้เขียนเรื่องการส่ง 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


     


ไม่มีความคิดเห็น:

แสดงความคิดเห็น

MAPs

วันก่อนได้ลองเขียนแบบ แบบตัวนั้นมันต้องแนบแผนที่สังเขปของโครงการ ลองๆ แล้วก็ใช้ snazzymaps แล้วก็เอามาทำต่อใน inkscape มันก็ออกมาดูได้ระดับห...