还剩7页未读,继续阅读
文本内容:
三菱FX系列PLC编程口通信协议总览该协议实际上适用于PLC编程端口以及FX-232AW模块的通信感谢网友visualboy提供通讯格式传输格式RS232C波特率9600bps奇偶even校验累加方式(和校验)字符:ASCII16进制代码:帧格式:例子STXCMDADDRESSBYTESETXSUM02H30H31H30H46H36H30H34H03H37H34HSUM=CMD++ETX;30h+31h+30h+46h+36h+30h+34h+03h=74h;累加和超过两位取低两位三菱FX系列PLC编程口通信协议举例三菱FX系列PLC编程口通信协议举例
1、DEVICEREAD(读出软设备状态值)计算机向PLC发送:例子从D123开始读取4个字节数据地址算法address=address^2+1000h再转换成ASCH31h30h46h36hPLC返回STX1STDATA2NDDATA…LASTDATAETXSUM注最多可以读取64个字节的数据例子从指定的存储器单元读到3584这个数据
2、DEVICEWRITE(向PLC软设备写入值)例子向D123开始的两个存储器中写入1234ABCD02h31h31h30h46h.36h30h34h33h34h31h32h43h44h41h42h03h34h39hPLC返回ACK06H接受正确NAK15H接受错误
3、位设备强制置位/复位FORCEON置位FORCEOFF复位PLC返回ACK06H接受正确NAK15H接受错误设备强制中的地址公式:Address=Address/8+100h说明L帧中的BYTES表示需要读取或者写入的字节数.地址算法上有说明.累加和是从STX后面一个字节开始累加到ETX的和FX系列PLC四种通信模式的特性首先讲讲FX系列PLC的通信方式FX系列PLC根据使用的通信模块与协议不同,分为以下四种通信模式
1、PLC的N:N通信方式
2、PLC双机并联通信方式
3、PLC与计算机专有协议通信方式(无须梯形图,电脑直接读写操纵PLC)
4、PLC与计算机无协议通信方式(梯形图RS指令方式,可自定义通信协议)以下将详细列出各通信模式的特性FX系列PLC专用协议通信指令一览以下将详细列出PLC专用协议通信的指令注位元件包括XYMS以及TC的线圈等;字元件包括DTCKnXKnYKnM等FunctiondwriteportAsIntegeraddAsIntegerdataAsIntegerAsVariant写两个字节STX=H2CMD=H31ETX=H3DimsumAsVariantDimTAsLongDimInstringbuffAsStringDimbyasdataAsVariantDimzdatalTo15AsByte,定义待传送数据数组DimaddressAsVariantT=Timer,使用COMloMSComml.CommPort=port*9600波特,无奇偶校验,8位数据,一个停止位MSComml.Settings=9600E71”当输入占用时,’告诉控件读入整个缓冲区MSComml.InputLen=0address=Hexadd*2+4096zdatal=STXzdata2=CMDzdata13=ETXFori=1To4zdatai+2=AscMidaddressi1Nextizdata7=H30zdata8=H32by=TrimHexdata,删除前后空格SelectCaseLenbyby=n000nby,如果DATA长度=1前头补3个0by=n00nby,如果DATA长度=2前头补2个0by=n0nby,如果DATA长度=3前头补1个0EndSelectasdata=Mid$by31zdata9=第3位数Ifasdata=nnThen;数值0作为串对应的Asc码为空““zdata9=H30Elsezdata9=AscasdataEndIfasdata=Mid$by41zdata10=第4位数Ifasdata=ThenzdatalO=H30ElsezdatalO=AscasdataEndIfasdata=Mid$by11zdatan=第1位数Ifasdata=ThenzdataH=H30Elsezdatall=AscasdataEndIfasdata=Mid$by21zdata10=第2位数Ifasdata=Thenzdata12=H30Elsezdata12=AscasdataEndIfsum=0Forj=XTol2sum=sum+zdatal+jNextjsum=Hexsumsum=Rightsum2zdata14=AscMidsum11zdata15=AscMidsum21Fori=1To15Debug.PrintHexzdataiNexti1打开端口MSComml.PortOpen=TrueMSComml.Output=zdataDoDoEventsIfTimerT+6ThenGoToerrorIfMSComml.InBufferCount=1ThenExitDoLoopInstring=MSComml.Input,关闭串行端口MSComml.PortOpen=Falsedwrite=InstringExitFunctionerror:dwrite=8MSComml.PortOpen=FalseEndFunctionFunctiondreadportAsIntegeraddAsIntegerAsVariant,读两个字节STX=H2CMD=H30ETX=H3DimsumAsVariantDimTAsLongDimInstringbuffAsStringDimbyasdataAsVariantDimzdatalTo11AsByteDimaddressAsVariantT=Timer,使用COMloMSComml.CommPort=port*9600波特,无奇偶校验,7位数据,一个停止位MSComml.Settings=9600E71”当输入占用时,告诉控件读入整个缓冲区MSComml.InputLen=0address=Hexadd*2+4096zdatal=STXzdata2=CMDzdata9=ETXFori=1To4zdatai+2=AscMidaddressi1Nextizdata7=H30zdata8=H32sum=0Forj=1To8sum=sum+zdatal+jNextjsum=Hexsumsum=Rightsum2zdatalO=AscMidsum11zdatall=AscMidsum21Tori=1To11Debug.PrintHexzdataiNexti‘打开端口MSComml.PortOpen=TrueMSComml.Output=zdataDoDoEventsIfTimerT+6ThenGoToerrorIfMSComml.InBufferCount=1ThenExitDoIfMSComml.InBufferCount=8ThenExitDoLoopInstring=MSCommlJnput,关闭串行端口MSComml.PortOpen=Falsedread=Instringdread=Middread24,读回的数据十六进制,低两位在前,高两位在后ExitFunctionerror:dread=n!n,通讯错误时,返回!MSComml.PortOpen=FalseEndFunction命令命令码目标设备DEVICEREADCMD“0”XYMSTCDDEVICEWRITECMDU]ftXYMSTCDFORCEONCMD»»7”XYMSTCFORCEOFFCMD“8”XYMSTCENQ05H请求ACK06HPLC正确响应NAK15HPLC错误响应STX02H报文开始ETX03H报文结束STXCMDDATA••••••DATAETXSUMupperSUMlower始命令首地址位数终和校验1STXCMDGROUPADDRESSBYTESETXSUM02h30h31h30h46h36h30h34h03h37h34h02h33h35h38h34h03h44h36h始命令地址终和校验STXCMDADDRESSETXSUM02h37haddress03hsum始命令地址终_和校验STXCMDADDRESSETXSUM02h38haddress03hsumN:N网络PLC并联专用协议计算机连接无协议通信传输标准RS485RS485/RS422RS485/RS422或RS232传输距离500mRS485/RS422:500mRS232:15m连接数量8站1:11:NN=161:1通信方式半双工FXFX2cFXon:半双工FX2n:全双工数据长度固定7bit/8bit校验无/奇/偶停止位lbit/2bit波特率38400bps19200bps300/600/1200/2400/4800/9600/19200头字符固定无/有效尾字符控制线—协议—格式1/格式4无和校验固定无/有效适用机型FX2nFXonFX2nFXFX2cFX2nFXonFXFX2c指令注释BR以1点为单位,读出位元件的状态WR以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值BW以1点为单位,写入位元件的状态WW以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件BT以1点为单位,SET/RESET位元件WT以16点为单位,SET/RESET位元件,或写入值到字元件RR控制PLC运行RUNRS控制PLC停止STOPPC读出PLC设备类型TT连接测试。