FX3U編程口通訊


FX3U編程口采用422通訊方式(232,422全雙工,可同時收發,485半雙工,不能同時收發)。

一、單個ASCII碼分解

三菱對編程口做了一些限制,只能使用:

波特率:9600bps,通信字碼ASCII碼

一個ASCII碼通信中占用10個bit,數據位占用7個bit,數據表示范圍0-127(00H-7FH),低位4個bit,高位3個bit

1位起始位、7位數據位、1位極性位(偶校驗)、1位停止位

0,b0,b1,b2,b3,b4,b5,b6,p,1

  16進制低   16進制高

例如報文第一個字為STX(02H),分解成01字符串就是:

0,0,0,1,0,0,0,0,1,1

報文第二個字為讀命令0(30H),分解成01字符串就是:

0,0,0,0,0,0,1,1,0,1

 

二、多個ASCII碼組成報文

FX系列支持4種指令

讀出  0

寫入  1

強制ON  7

強制OFF  8

 

讀取時:

PC發送報文格式(FXPLC端接收報文格式):STX,CMD,元件地址(4個ASCII碼),字節數(2個ASCII碼),ETX,和校驗(2個ASCII碼)

PC發送報文格式(FXPLC端接收報文格式):STXCMDASCII,ASCII,ASCII,ASCIIASCII,ASCIIETXASCII,ASCII

PC接收報文格式(FXPLC端發送報文格式):STX,第一個字節高位ASCII碼,第一個字節低位ASCII碼,第二個字節高位ASCII碼,第二個字節低位ASCII碼……,ETX,和校驗(2個ASCII碼)

PC接收報文格式(FXPLC端發送報文格式):STX,ASCII,ASCII,ASCII,ASCII……,ETX,ASCII,ASCII

 

1、從Y0開始讀出兩個字節數據(Y0-Y7,Y10-Y17),Y0地址轉換:0+160=160(16進制00A0)

發送報文:02H30H30H、30H、41H、30H30H、32H03H36H、36H

           (30H +30H + 30H +41H + 30H +30H + 32H +03H=166H取右邊2位66,分解成2個ASCII碼就是36H,36H)

假設Y7-Y0為:00110101,第一個字節高位3,ASCII碼33H,第一個字節低位5,ASCII碼35H

  Y17-Y10為:10000100,第二個字節高位8,ASCII碼38H,第二個字節低位4,ASCII碼34H

接收報文:02H33H、35H、38H、34H03H44H、37H

         (33H + 35H +38H + 34H +03H=D7H取右邊2位D7,分解成2個ASCII碼就是44H、37H)

2、從D123讀出4個字節數據(D123、D124),D123地址轉換:123*2+4096=4342(16進制10F6)

發送報文:02H30H31H、30H、46H、36H30H、34H03H37H、34H

            (30H +31H + 30H +46H + 36H +30H + 34H +03H=174H取右邊2位74,分解成2個ASCII碼就是37H,34H)

假設D123,b15-b0為:0001 0010 0011 0100 即存儲16進制1234H,第一個字節高位是b7,b6,b5,b4,第一個字節低位是b3,b2,b1,b0,第二個字節高位是b15,b14,b13,b12,第二個字節低位是b11,b10,b9,b8

       D124,b15-b0為:1010 1011 1100 1101 即存儲16進制ABCDH,第一個字節高位是b7,b6,b5,b4,第一個字節低位是b3,b2,b1,b0,第二個字節高位是b15,b14,b13,b12,第二個字節低位是b11,b10,b9,b8

接收報文:02H33H、34H、31H、32H、43H、44H、41H、42H03H44H、37H

         (33H +34H + 31H +32H + 43H +44H + 41H +42H+ 03H=1D7H取右邊2位D7,分解成2個ASCII碼就是44H,37H)

 

寫入時:

PC發送報文格式(FXPLC端接收報文格式):STX,CMD,元件地址(4個ASCII碼),字節數(2個ASCII碼),第一個字節高位ASCII碼,第一個字節低位ASCII碼,第二個字節高位ASCII碼,第二個字節低位ASCII碼……ETX,和校驗(2個ASCII碼)

PC發送報文格式(FXPLC端接收報文格式):STXCMDASCII,ASCII,ASCII,ASCIIASCII,ASCIIASCII,ASCII,ASCII,ASCII……ETXASCII,ASCII

 

 3、將2個字節數據寫入Y0起始的地址中

假設要寫入的值為:Y7-Y0 ==>0011 0101,Y17-Y10為:1000 0100

發送報文:02H31H30H、30H、41H、30H30H、32H33H、35H、38H、34H03H33H、42H

                        (31H+ 30H+ 30H + 41H + 30H +30H + 32H + 33H+ 35H+ 38H + 34H +03H=23BH,取右邊2位3B,分解成2個ASCII碼就是33H、42H)

4、將4個字節數據寫入D123起始的4個字節中(寫入D123,D124)

假設要寫入的值為:

  D123,b15-b0為:0001 0010 0011 0100 即存儲16進制1234H,第一個字節高位是b7,b6,b5,b4,第一個字節低位是b3,b2,b1,b0,第二個字節高位是b15,b14,b13,b12,第二個字節低位是b11,b10,b9,b8

       D124,b15-b0為:1010 1011 1100 1101 即存儲16進制ABCDH,第一個字節高位是b7,b6,b5,b4,第一個字節低位是b3,b2,b1,b0,第二個字節高位是b15,b14,b13,b12,第二個字節低位是b11,b10,b9,b8

發送報文:02H31H31H、30H、46H、36H30H、34H33H、34H、31H、32H、43H、44H、41H、42H03H34H、39H

                        (31H+31H+30H+46H+36H+30H+34H+33H+34H+31H+32H+43H+44H+41H+42H+03H=349H,取右邊2位49,分解成2個ASCII碼就是34H,39H)

 總結:串口通訊涉及ASCII碼,需要用到轉換。PLC數據2進制->16進制,字符->ASCII碼,ASCII碼->01串高低電平


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM