三菱PLC编程口协议
- 格式:doc
- 大小:349.00 KB
- 文档页数:11
S L M P 通信相关实验 1、 实验1:以太网模块/内置以太网接口预定义协议功能A 、 内置以太网接口设定如下:B 、 对方以太网模块设定如下:本站端口号选择“通信协议” 选择“主动打开” 对方IP 及端口号本站IP始终允许打开帧格式BIN(必须 ) 本站端口号被动打开 有顺序Socket 通C、设定通信协议内容注意:设定时请务必注意数据帧元素占用的软元件个数,不要重复占用.D、制作梯形图程序梯形图程序包括以下部分:通信建立及中断(端口的打开及关闭)设定帧数据执行预定义协议E、检查执行结果读取数据的存储首地址D204为数据长度2(2字节) D204为读取的实际数据(K123)F、注意要点:两方以太网参数必须相对应,包括:端口号、IP地址、帧格式等预定义协议中,帧数据格式固定为BIN.2、实验2:使用Socket tool调试工具A、对方以太网设备参数设定同实验1B、在Socket Tool2软件中,新建客户端C、点击“连接”按键当前状态:已连接对方及本站端口号D、在数据发送窗口中输入SLMP报文,并点击发送E 、 BIN 格式报文(读M100~M107)5400 3412 0000 00 FF FF03 00 0C00 1000 0104 0100Subheader 序列号 固定值 网络号 站号 起始IO 多重站号 数据长 等待时间 指令 子指令640000 90 0800软元件号 软元件类型 读写长度D400 3412 0000 00 FF FF03 00 0600 0000固定值 序列号 固定值 网络号 站号 起始IO 多重站号 数据长 完成代码 读取数据(从低至高)000000ffff03000c00800发送数据接收数据发送模式,当前为BIN000000ffff03000c00d000(读M2000)D4 00 34 12 00 00 00 FF FF 03 00 06 00 00 00 00 00 0000F、BIN格式报文(写M100~M107)5400 3412 0000 00 FF FF03 00 1000 1000 0114 0100Subheader 序列号固定值网络号站号起始IO 多重站号数据长等待时间指令子指令640000 90 0800 00000000软元件号软元件类型读写长度数据区(从低位开始)D400 3412 0000 00 FF FF03 00 02000000固定值序列号固定值网络号站号起始IO 多重站号数据长完成代码000000ffff011111D4 00 34 12 00 00 00 FF FF 03 00 02 00 00 00G、ASCII格式报文(读M100~M107)5400 1234 0000 00 FF 03FF 000018 0010 0401 0001Subheader 序列号固定值网络号站号起始IO 多重站号数据长等待时间指令子指令M 000100 0008软元件类型软元件号读写长度D400 1234 0000 00 FF 03FF 00 000C 0000固定值序列号固定值网络号站号起始IO 多重站号数据长完成代码读取数据(从低至高)000000FF03FF00001M0001000008D00000FF03FF00000C0000H、报文元素说明Subheader:SLMP报文报首识别码,默认5400.序列号:任意值,用于识别返回报文,与发送报文相同.网络号/站号: 跨网访问时用,访问本站时默认为00/FF起始IO:访问多CPU系统或通过CPU连接的Multidrop 网络时用,单CPU为03FF.多重站号访问通过Multidrop网络连接的CPU时用,不使用时为00.数据长:此数据帧之后所有数据帧长度(16进制,以字节计算).等待时间:数据反馈超时等待时间,单位:250ms.00代表无限等待.指令/子指令: SLMP指令,详细请参考SLMP协议手册.软元件类型:访问的软元件类型.BIN时,为2进制代码,请参考SLMP协议手册.软元件号:访问软元件的起始地址.读写长度:读写软元件长度.完成代码:SLMP报文执行结果代码,正常完成为“00”,异常时为故障代码.I、跨网访问ASCII格式报文(读N1S2的U0\G18515)5400 1234 0000 01 02 03FF 000024 0010 0401 0080Subheader 序列号固定值网络号站号起始IO 多重站号数据长等待时间指令子指令00 U000 000 G018515 000 0001固定值软元件类型固定值软元件号固定值读写长度54003FF00002400U000000G0D400 1234 0000 01 02 03FF 00 0008 0000 01F4固定值序列号固定值网络号站号起始IO 多重站号数据长完成代码读取数据(从低至高)Subheader:SLMP报文报首识别码,默认5400.序列号:任意值,用于识别返回报文,与发送报文相同.网络号/站号: 跨网访问时用,此次为访问1号网络2号站(R08 CPU)起始IO:访问多CPU系统或通过CPU连接的Multidrop网络时用,单CPU为03FF.多重站号访问通过Multidrop网络连接的CPU时用,不使用时为00.数据长:此数据帧之后所有数据帧长度(16进制,以字节计算).等待时间:数据反馈超时等待时间,单位:250ms.00代表无限等待.指令/子指令: SLMP指令,详细请参考SLMP协议手册.(子指令规定了后续软元件地址指定格式)软元件类型:访问的软元件类型.BIN时,为2进制代码,请参考SLMP协议手册.软元件号:访问软元件的起始地址.读写长度:读写软元件长度.完成代码:SLMP报文执行结果代码,正常完成为“00”,异常时为故障代码.J、跨网访问ASCII格式报文(读取模块名称)54003FF00000C0000D4003FF0000180000RCPU 0360K、跨网访问ASCII格式报文(远程复位,对于PLC,复位报文仅在Stop情况下生效)54003FF000000001D4003FF000016C05E02000(反馈报文为PLC复位完成后回送,格式与手册不符)实验中遇到的问题:1、跨网访问必须设置路由参数,否则无反馈报文.2、访问CC-IE Field主站时,站号固定为“7D”,而不是“00”.3、对于CC-Link IE Field远程模拟量模块,上述报文无效,反馈错误代码为“D0A0”D4003FF000016D0A0017D03FF00原因不明,有可能该模块不支持ASCII码格式数据帧(测试工具仅支持ASCII码格式)3、MC报文通信实验:Q系列PLC内置以太网口、FX以太网接口模块/适配器不支持SLMP协议(4E帧格式).以下为使用MC协议1E帧格式进行的通信实验.A、模块参数设定FX3GE&FX3U-ENET-ADPFX3U-ENETFX3U-ENET-LQ PLC内置以太网接口B、MC报文格式(读取M100~M107,ASCII码格式)00 FF 000A 4D20 00000064 08 00Subheader PC号 ACPU监视时间软元件类型软元件号读写长度固定值80 00Subheader 完成代码读取数据(从低至高)C、报文元素说明Subheader:MC报文报首指令码,“00”为读取位软元件,请参考MC协议手册.网络号/站号: 跨网访问时用,访问本站时默认为00/FFPC号:访问多CPU系统时用,单CPU为FF.监视时间:数据反馈超时等待时间,单位:250ms.00代表无限等待.软元件类型:访问的软元件类型.请参考MC协议手册.软元件号:访问软元件的起始地址.读写长度:读写软元件长度.完成代码:报文执行结果代码,正常完成为“00”,异常时为故障代码.以下为使用MC协议3E帧格式进行的通信实验.B、MC报文格式(读取D0~D3,ASCII码格式)5000 00 FF 03FF 00 0018 0010Subheader 网络号站号PC号目标模块数据长度监视时间0401 0000 D 000000 0004指令子指令软元件名软元件起始地址读写长度500000FF03FF00000D0000000004D000 00 FF 03FF 00 0014 0000Subheader 网络号站号PC号目标模块数据长度完成代码0000 0000 0000 0000数据1 数据2 数据3 数据4C、报文元素说明Subheader:MC报文报首指令码,请求报文固定为“5000”,反馈报文固定为“D000”请参考MC协议手册.网络号/站号: 跨网访问时用,访问本站时默认为00/FFPC号:访问多CPU系统时用,单CPU为03FF.目标模块:定义不明数据长度:从“CPU监视时间”(或“完成代码”)到最后一个报文数据的长度,以字节为单位.监视时间:数据反馈超时等待时间,单位:250ms.00代表无限等待.指令:指令代码,请参考MC协议手册.子指令:子指令代码,请参考MC协议手册.软元件名:访问软元件类型软元件号:访问软元件的起始地址.读写长度:读写软元件长度.完成代码:报文执行结果代码,正常完成为“00”,异常时为故障代码.请参考对应模块的手册手册4、其他问题点:A、Q系列PLC内置以太网接口不支持SLMP(4E帧)协议.B、FX系列PLC以太网模块或适配器不支持SLMP协议,使用SLMP协议通信时会出现“54”报警(ASCII码格式)或“50”报警(BIN码格式).C、SLMP/MC报文由于BIN码和ASCII帧格式不同(BIN码存在高低字节交换的情况),发送端和接收端数据类型必须一致,都是BIN或都是ASCII.D、使用预定义协议功能进行通信时,SLMP报文数据格式为BIN码,接收端必须设定为BIN,发送端设定BIN或ASCII都可以.E、SLMP/MC协议通信时,接收方无需成对打开,打开方式选择“发送”或“接收”都可以通信.F、QPLC内置以太网接口及FX PLC以太网接口模块/适配器支持MC协议中的1E帧.帧格式如下:00 FF 000A 4D20 00000064 08 00Subheader PC号 ACPU监视时间软元件软元件号读取长度固定值80 00Subheader 完成代码读取数据(从低至高)G、iQ-R PLC SLMP报文格式中,软元件CODE和首地址与Q/L系列不同.BIN格式下,iQ-R为4位+8位,Q/L系列为2位+4位.。
三菱FX系列PLC编程口通讯协议实例三菱FX系列PLC编程口通讯协议实例一、协议介绍通过编程口通讯协议,计算机可以通过串口或USB接口向PLC读写数据,以及置位或复位软元件,但PLC不能主动向计算机发送信息。
具体可操作的软元件有:X/Y/M/S/T/C/D。
由于只需要PLC主机和一根编程线缆即可简单通讯,无需另外购置如232-BD等通讯板,因此编程口通讯实际上非常实用。
可惜的是,三菱的官方手册《FX通讯用户手册》却根本没有介绍这个通讯协议,网络上能找到的资料也很少。
仅找到的一篇如下,其中也有很多语焉不详的地方,埋了不少坑。
本文通过实际操作,简单总结一下该协议的使用方法和注意点。
链接: 三菱PLC编程口协议.二、通讯设置必须设置为:波特率9600,偶校验,7位数据位。
否则无法通讯。
三、读写操作时数据的基本格式:注意:通讯协议中的所有字符是用它们的十六进制ASCII码表示。
如果有十进制数据,要先转化为十六进制数,再把十六进制数的每个字符用它相应的十六进制ASCII码表示。
以下有详解。
参数详解:STX: ASCII码,含义为Start of Text,十六进制代码为02H;CMD:读操作时为0,即十六进制代码30H;写操作时为1,即十六进制代码31H;ADDR:要操作的软元件的起始地址,查表可得,如下。
注意是起始地址,例如要查询D0、D11寄存器的数据,写入D0的地址即可。
ADDR为4个十六进制ASCII码。
如D0查表地址为1000,每个字符均用十六进制ASCII码表示,即为:31 30 30 30。
NUM:字节数,用两个十六进制ASCII码表示,取值范围为01H-40H。
这个数据是比较tricky的地方,一定要注意。
理论上它是指“要操作的所有软元件对应的字节数”,比如:要读D0中的数据,因为D软元件是用2个字节表示的,则NUM 为02,十六进制ASCII码为 30 32;要读D0、D1两个D软元件中的数据,则NUM为04,十六进制ASCII码为 30 34;如果是读Y0-Y7这8个位软元件的状态,因为8个位为一个字节,所以NUM为01,十六进制ASCII码为 30 31;如果是写数据,比如写十六制数122F到D0中,则NUM一样为02,写数据到D0、D1中,则NUM为04。
三菱FX系列PLC编程口通信协议举例简介三菱FX系列是一种常见的工业自动化控制设备,用于自动化控制领域。
该系列PLC(可编程逻辑控制器)具有可编程控制、数据传输、数据处理等功能,被广泛应用于各种控制领域。
在三菱FX系列PLC编程中,常用的通信协议有三种,分别是RS232C、RS485和USB。
本文将着重介绍编程口通信协议,以举例说明该系列PLC的编程方法。
编程口通信协议编程口通信协议是FX系列PLC常用的通信协议之一。
在进行编程时,需要将PLC连接到计算机,使用编程软件进行编程操作。
这时,就需要使用编程口通信协议来进行数据传输。
在进行编程口通信时,需要准备一个编程口线缆,将线缆连接到PLC的编程接口上。
然后将线缆的另一端连接到计算机的串口或USB口上。
接下来,需要在计算机上安装编程软件,例如三菱的GX Developer软件,然后进行数据传输和编程操作。
编程口通信的实现步骤下面,我们将以三菱FX2N系列PLC为例,介绍编程口通信的具体实现步骤。
1.准备编程口线缆首先,需要准备一个编程口线缆,将该线缆连接到FX2N系列PLC的编程口接口上。
然后将线缆的另一端连接到计算机的串口或USB口上。
2.安装编程软件在计算机上安装三菱的GX Developer编程软件,并打开软件。
3.打开PLC通信设置界面在GX Developer软件的菜单中,选择“PLC通信设置”选项,打开PLC通信设置界面。
4.设置PLC型号和通信协议在PLC通信设置界面中,需要设置PLC的型号和通信协议。
对于FX2N系列PLC,通信协议通常选择“串口通信”或“USB通信”。
5.设置通信参数在设定PLC型号和通信协议之后,需要设置通信参数,例如波特率、数据位、校验位等。
这些参数需要与PLC的通信设置相一致。
6.连接PLC在设置完通信参数之后,需要连接PLC。
在GX Developer软件的PLC通信设置界面中,单击“连接”按钮,软件将自动连接PLC。
三菱FX系列PLC编程口通信协议总览三菱FX系列PLC编程口通信协议是用于与三菱FX系列可编程逻辑控制器(PLC)之间进行数据交互的协议。
它定义了数据报文格式、通信命令、数据传输等规范,使得用户可以通过编程接口与PLC进行通信,并实现对PLC的控制、监控和数据采集等功能。
FX系列PLC编程口通信协议支持多种通信接口,包括串行接口(如RS232和RS485)、以太网接口等。
不同的接口对应不同的通信命令和数据传输格式,但大部分规范是相似的。
在FX系列PLC编程口通信协议中,主要定义了以下几个方面的内容:1.帧格式:通信数据以帧的形式进行传输,每个帧由起始字符、数据长度、数据内容、校验和和结束字符组成。
帧格式使得数据的传输更加可靠,并且能够有效地区分不同的数据报文。
2.通信命令:通信命令定义了与PLC进行各种操作的指令。
包括读取PLC的输入和输出状态、读写PLC的数据寄存器、设置PLC的操作模式和参数等。
不同的通信命令对应不同的操作,用户可以根据需要选择合适的命令进行通信。
3.数据传输:通信协议支持从PLC读取数据和向PLC写入数据。
用户可以通过命令指定要读取的数据寄存器或写入的数据值,并通过通信接口传输。
数据传输操作可以实现对PLC的实时控制和监控,以及和其他设备的数据交换。
4.数据编解码:通信协议中定义了对数据内容的编解码规则,使得数据在传输过程中可以正确解析和还原。
编解码规则包括数据格式、数据类型、字节顺序、数据长度等方面的规定,确保在不同的设备之间能够正确地解析和使用数据。
FX系列PLC编程口通信协议是一种非常常用和成熟的通信协议,广泛应用于工业自动化领域。
它具有简单、可靠、高效、灵活等特点,适用于各种PLC控制系统的通信需求。
用户可以根据协议规范进行开发、集成和应用,实现对PLC的控制和监控,并与其他设备进行数据交换,提高自动化生产系统的可靠性和效率。
终和校验STX CMD GROUP ADDRESS BYTES ETX SUM例子:从D123开始读取4个字节数据02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h地址算法:address=address*2+1000h再转换成ASCIISTX 1ST DATA 2ND DATA ..... LAST DA TA ETX S UM注:最多可以读取64个字节的数据例子:从指定的存储器单元读到3584这个数据02h 33h 35h 38h 34h 03h 44h,36h2、DEVICE WRITE(向PLC软设备写入值)始命令首地址位数数据终和校验STX CMD GROUP ADDRESS BYTES 1ST DATA 2ND DATA ... LAST DATA ETX SUM 例子:向D123开始的两个存储器中写入1234,ABCD30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 34h,39h/复位地址终和校验STX CMD ADDRESS ETX SUMaddress 03h sum地址终和校验STX CMD ADDRESS ETX SUM说明: 1.帧中的BYTES表示需要读取或者写入的字节数。
2.地址算法上有说明。
3.累加和是从STX后面一个字节开始累加到ETX的和。
通讯格式:(该协议实际上适用于PLC编程端口以及FX-232AW 模块的通信。
)命令命令码目标设备DEVICE READ CMD "0" X,Y,M,S,T,C,DDEVICE WRITE CMD "1" X,Y,M,S,T,C,DFORCE ON CMD " 7" X,Y,M,S,T,C例子:STX ,CMD ,ADDRES , BYTES , ETX , SUM02H 30H , 31H,30H,46H,36H, 30H,34H, 03H, 37H, 34HSUM=CMD+......+ETX;30h+31h+30h+46h+36h+30h+34h+03h=74h;累加和超过两位取低两位1. 设置密码等级:第一次指拨6在off状态(指拨8在on状态),在密码表中设置完各等级密码后,将指拨6设置为on,然后输入相应等级的密码,就可以对相应等级的元件进行操作。
三菱plc,通讯协议篇一:三菱PLC通讯协议三菱PLC编程口通讯协议一、三菱PLC编程口通讯协议三菱PLC编程口的通讯协议比较简单,只有四个命令,即: 命令命令码目标设备DEVICE READ CMD0X,Y,M,S,T,C,DDEVICE WRITE CMD 1X,Y,M,S,T,C,DFORCE ON CMD7 X,Y,M,S,T,CFORCE OFF CMD 8X,Y,M,S,T,C五个标示:ENQ05H 请求ACK06H PLC正确响应NAK15H PLC错误响应STX02H 报文开始ETX03H 报文结束使用累加方式的和校验,帧格式如下:STX CMD DATA ...... DATA ETX SUM(upper)1SUM(lower)和校验:SUM= CMD+??+ETX。
如SUM=73H,SUM=“73”。
1、DEVICE READ(读出软设备状态值)计算机向PLC发送:始命令首地址位数终和校验STXCMD GROUP ADDRESS BYTESETX SUMPLC 返回STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM 2、DEVICE WRITE(向PLC 软设备写入值)计算机向PLC发送:始命令首地址位数数据终和校验PLC 返回ACK (06H) 接受正确NAK (15H) 接受错误3、位设备强制置位/复位FORCE ON 置位始命令地址终和校验STX CMD ADDRESSETXSUM02h 37h address03hsumFORCE OFF 复位始命令地址终和校验2STX CMD ADDRESSETXSUM02h 38h address03hsumPLC 返回ACK(06H) 接受正确NAK(15H) 接受错误以上可以看出,协议非常简单,但是由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢,下面就是三菱Fx系列PLC地址对应表: Public Const PLC_D_Base_AddRess = 4096Public Const PLC_D_Special_Base_AddRess = 3584 Public Const PLC_Y_Group_Base_AddRess = 160 Public Const PLC_PY_Group_Base_AddRess = 672 Public Const PLC_T_Group_Base_AddRess = 192 Public Const PLC_OT_Group_Base_AddRess = 704 Public Const PLC_RT_Group_Base_AddRess = 1216 Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)Public Const PLC_M_Group_Base_AddRess = 256 Public Const PLC_PM_Group_Base_AddRess = 768 Public Const PLC_S_Group_Base_AddRess = 0Public Const PLC_X_Group_Base_AddRess = 128 Public Const PLC_C_Group_Base_AddRess = 4483Public Const PLC_OC_Group_Base_AddRess = 960 Public Const PLC_RC_Group_Base_AddRess = 1472 Public Const PLC_TV_Group_Base_AddRess = 2048 Public Const PLC_CV16_Group_Base_AddRess = 2560 Public Const PLC_CV32_Group_Base_AddRess = 3072 当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。
FXPLC编程口通信协议分析FX PLC编程口通信协议分析摘要:通过监视串口数据的收发,分析FX2N PLC编程口的通信协议,从而获得PLC底层通信的方法。
该协议可用于PLC与上位机的直接通信。
关键词:FX2N PLC,通信协议,编程口1 前言三菱FX2N系列PLC的通信方式有多种:(1)N:N网络;(2)并行连接;(3)计算机链连接(使用专用协议);(4)无协议通信(使用RS485,RS指令);(5)编程口通信。
这几种通信方式各有特点,前4种协议需要对PLC进行设置或采用专用指令,编程口通信协议无需对PLC进行编程就可以直接读写PLC。
通过对三菱自带编程软件与PLC通信的监控与分析,可以得到PLC编程口通信的底层通信协议,从而获得PLC底层通信的方法,实现对PLC内部资源的访问。
2 分析思路三菱FXGP编程软件是FX PLC的编Array程开发软件,PC机RS232通过FX-232A W 模块与编程口直接通信。
为了分析FXGP与PLC的通信协议,在PC与PLC之间插入一个检测器,实时截获PC机串口上的收发数据。
根据编程手册,有关通信参数为:9600,7,E,1,ASCII码方式。
检测线路见图1。
3 通信协议分析FX PLC的内部数据主要包括:D寄存器(每个寄存器二字节长)、M(位地址)、S(位地址)、T(位地址)、C(位地址)、X (位地址)、Y(位地址)。
数据帧基本格式:表1 FX2N PLC 数据帧基本格式Tab.1 FX2N PLC basic protocol format16进制控制码:表2 FX2N PLC 控制码 Tab.2 FX2N PLC control code3.1 读D 寄存器读PLC 软设备的状态值。
读命令码30h, 读命令数据帧格式:表3 FX2N PLC 读命令数据帧格式Tab.3 FX2N PLC protocol format of read data例:从D123开始读取4个字节数据。
三菱FX系列PLC编程口通信协议举例三菱FX系列PLC编程口通信协议举例1、DEVICE READ(读出软设备状态值)计算机向PLC发送:始命令首地址GROUP ADDRESS 位数 BYTES 终 ETX 和校验 SUM STX CMD 例子:从D123开始读取4个字节数据 02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h 地址算法:address=address*2+1000h 再转换成ASCII 31h,30h,46h,36h PLC返回 STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM 注:最多可以读取64个字节的数据例子:从指定的存储器单元读到3584这个数据 02h2、DEVICE WRITE(向PLC软设备写入值)和校验 33h 35h 38h 34h 03h 44h,36h 始命令首地址位数数据终 GROUP 1ST 2ND LAST STX CMD BYTES ...... ETX SUM ADDRESS DATA DATA DATA 例子:向D123开始的两个存储器中写入1234,ABCD02h 31h 31h,30h,46h,36h 30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 34h,39h PLC返回ACK (06H) 接受正确 NAK (15H) 接受错误3、位设备强制置位/复位 FORCE ON置位始 STX 02h 命令 CMD 37h 地址 ADDRESS address 终 ETX 03h 和校验 SUM sum FORCE OFF复位始 STX 02h PLC返回ACK(06H) 接受正确 NAK(15H) 接受错误设备强制中的地址公式:Address=Address/8+100h命令 CMD 38h 地址 ADDRESS address 终 ETX 03h 和校验 SUM sum 说明: 1.帧中的BYTES表示需要读取或者写入的字节数。
三菱q系列plc网口通讯协议随着计算机技术的不断发展,各行各业纷纷开始采用自动化控制系统来提高生产效率和降低成本。
而在自动化控制系统中,PLC(可编程逻辑控制器)起到了至关重要的作用,它能够完成对各种设备和工艺的准确控制。
而其中,三菱Q系列PLC则以其高性能和可靠性受到了广泛的认可和应用。
在PLC与计算机之间的通信中,网口通讯协议扮演着重要的角色。
三菱Q系列PLC支持的网口通讯协议有许多种:如Modbus TCP、MC Protocol、Ethernet/IP等。
这些协议不仅保证了PLC与计算机之间的可靠通信,还实现了数据的高速传输和实时监控。
首先,我们先来了解一下Modbus TCP协议。
Modbus是一种基于串行通信协议的工业通信协议,而Modbus TCP是在以太网上使用的基于TCP/IP的版本。
使用Modbus TCP协议,PLC可以与计算机进行高速的数据交换,实现实时监控和数据采集。
这种协议的优点在于简单易用,能够满足大部分自动化控制系统的通讯需求。
其次,MC Protocol是三菱自主开发的一种通讯协议。
MC Protocol通过以太网实现PLC与计算机之间的通信。
与ModbusTCP相比,MC Protocol更加高效和稳定。
它不仅可以实现与计算机之间的通信,还可以实现多个PLC之间的通讯,从而实现更加复杂的自动化控制系统。
最后,Ethernet/IP协议是基于工业以太网的应用层协议,它不仅具备Modbus TCP和MC Protocol的优点,还支持更多的功能和特性。
Ethernet/IP可以实现对PLC的远程监控和远程控制,同时可以与其他设备和系统进行无缝对接。
这种协议的高度兼容性和可扩展性使得它在自动化控制系统中得到了广泛的应用。
通过对三菱Q系列PLC网口通讯协议的了解,我们可以看到这些协议的共同点在于都实现了高速、可靠和实时的数据传输。
同时,它们也具备了一定的差异性,以满足不同自动化控制系统的需求。
最近做一个PC通过编程口与FX PLC通讯的程序,在网上找好久,内部软元件的地址还是找不全。
没办法,只好使用串口监视软件分析GX Developer PLC编程软件发送的代码由于没有寄存器类型信息,所以地址的计算十分关键,如D100和M100分别对应哪个地址呢?下面就是三菱Fx系列PLC地址对应表:Public Const PLC_D_Base_AddRess = 4096Public Const PLC_D_Special_Base_AddRess = 3584Public Const PLC_Y_Group_Base_AddRess = 160Public Const PLC_PY_Group_Base_AddRess = 672Public Const PLC_T_Group_Base_AddRess = 192Public Const PLC_OT_Group_Base_AddRess = 704Public Const PLC_RT_Group_Base_AddRess = 1216Public Const PLC_M_SINGLE_Base_AddRess = 2048(命令为7或8时)Public Const PLC_M_Group_Base_AddRess = 256Public Const PLC_PM_Group_Base_AddRess = 768Public Const PLC_S_Group_Base_AddRess = 0Public Const PLC_X_Group_Base_AddRess = 128Public Const PLC_C_Group_Base_AddRess = 448Public Const PLC_OC_Group_Base_AddRess = 960Public Const PLC_RC_Group_Base_AddRess = 1472Public Const PLC_TV_Group_Base_AddRess = 2048Public Const PLC_CV16_Group_Base_AddRess = 2560Public Const PLC_CV32_Group_Base_AddRess = 3072当我们用DEVICE READ命令时,D100地址=100*2+4096;M100地址=100+256;不同的是D类型寄存器存放的是字,M寄存器存放的是位,同样是读两个字节,D100返回的就是PLC中D100地址的值,M类型寄存器返回的是M100到M116的值。
所以当我们用FORC E ON 命令时,M100寄存器地址=100+2048;这也没有什么复杂的,不是吗?可是三菱公司好像不甘于如此,FORCE ON/Off命令中地址排列与DEVICE READ/WRITE不同,是低位在前高位在后。
如Y20,地址是0510H,代码中4个字节地址表示为:1005。
(注意:Y寄存器为八进制,如Y20 地址=16+1280=0510 H)三菱FX系列PLC编程口通信协议总览该协议实际上适用于PLC编程端口以及FX-232AW 模块的通信。
感谢网友visualboy 提供。
通讯格式:命令命令码目标设备DEVICE READ CMD "0" X,Y,M,S,T,C,D//设备读DEVICE WRITE CMD "1" X,Y,M,S,T,C,D //设备写FORCE ON CMD " 7" X,Y,M,S,T,C //置位FORCE OFF CMD "8" X,Y,M,S,T,C //复位传输格式: RS232C波特率: 9600bps奇偶: even校验: 累加方式(和校验)字符: ASCII16进制代码:ENQ 05H 请求ACK 06H PLC正确响应NAK 15H PLC错误响应STX 02H 报文开始ETX 03H 报文结束帧格式:STX CMD DATA ...... DATA ETX SUM(upper) SUM(lower) 例子:STX ,CMD ,ADDRESS, BYTES, ETX, SUM02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H SUM=CMD+......+ETX;30h+31h+30h+46h+36h+30h+34h+03h=74h;累加和超过两位取低两位命令格式1、DEVICE READ(读出软设备状态值)计算机向PLC发送:始命令首地址位数终和校验STX CMD GROUP ADDRESS BYTES ETX SUM例子:从D123开始读取4个字节数据02h 30h 31h,30h,46h,36h 30h,34h 03h 37h,34h地址算法:address=address*2+1000h再转换成ASCII31h,30h,46h,36hPLC返回STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM 注:最多可以读取64个字节的数据例子:从指定的存储器单元读到3584这个数据02h 33h 35h 38h 34h 03h 44h,36h2、DEVICE WRITE(向PLC软设备写入值)始命令首地址位数数据终和校验STX CMD GROUP ADDRESS BYTES 1ST DATA 2ND DATA ...... LAST DATA ETX SUM例子:向D123开始的两个存储器中写入1234,ABCD02h 31h 31h,30h,46h,36h 30h,34h 33h,34h,31h,32h,43h,44h,41h,42h 03h 3 4h,39hPLC返回ACK (06H) 接受正确NAK (15H) 接受错误3、位设备强制置位/复位FORCE ON置位始命令地址终和校验STX CMD ADDRESS ETX SUM02h 37h address 03h sumFORCE OFF复位始命令地址终和校验STX CMD ADDRESS ETX SUM02h 38h address 03h sumPLC返回ACK(06H) 接受正确NAK(15H) 接受错误设备强制中的地址公式:Address=Address/8+100h说明:1.帧中的BYTES表示需要读取或者写入的字节数。
2.地址算法上有说明。
3.累加和是从STX后面一个字节开始累加到ETX的和。
通过串口监视得到的数据如下:PLC型号:FX0N使用GX Developer 的在线-调试-软元件测试功能以下列出不同的操作发送的不同内容,前面一段是Hex码后面一段是对应的AS CII码//////////////////////////////////CMD ON YO//////////////////02 37 30 30 30 35 03 46 46 .70005.FF//////////////////////////////////CMD OFF YO///////////////////// 02 38 30 30 30 35 03 30 30 .80005.00//////////////////////////////////CMD ON Y1////////////////////02 37 30 31 30 35 03 30 30 .70105.00//////////////////////////////////CMD OFF Y1//////////////////02 38 30 31 30 35 03 30 31 .80105.01//////////////////////////////////CMD ON XO//////////////////02 37 30 30 30 34 03 46 45 .70004.FE//////////////////////////////////CMD OFF XO///////////////////// 02 38 30 30 30 34 03 46 46 .80004.FF//////////////////////////////////CMD ON X1//////////////////02 37 30 31 30 34 03 46 46 .70104.FF//////////////////////////////////CMD OFF X1//////////////////02 38 30 31 30 34 03 30 30 .80104.00//////////////////////////////////CMD ON T0//////////////////02 37 30 30 30 36 03 30 30 .70006.00//////////////////////////////////CMD OFF T0//////////////////02 38 30 30 30 36 03 30 31 .80006.01//////////////////////////////////CMD ON T1//////////////////02 37 30 31 30 36 03 30 31 .70106.01//////////////////////////////////CMD OFF T1/////////////////02 38 30 31 30 36 03 30 32 .80106.02//////////////////////////////////CMD ON C0//////////////////02 37 30 30 30 45 03 30 46 .7000E.0F//////////////////////////////////CMD OFF C0////////////////////// 02 38 30 30 30 45 03 31 30 .8000E.10//////////////////////////////////CMD ON C1//////////////////02 37 30 31 30 45 03 31 30 .7010E.10//////////////////////////////////CMD OFF C1////////////////////// 02 38 30 31 30 45 03 31 31 .8010E.11//////////////////////////////////CMD ON M0//////////////////02 37 30 30 30 38 03 30 32 .70008.02//////////////////////////////////CMD OFF M0//////////////////////02 38 30 30 30 38 03 30 33 .80008.03//////////////////////////////////CMD ON M1//////////////////02 37 30 31 30 38 03 30 33 .70108.03//////////////////////////////////CMD OFF M1//////////////////////02 38 30 31 30 38 03 30 34 .80108.04//////////////////////////////////CMD ON S0//////////////////02 37 30 30 30 30 03 46 41 .70000.FA//////////////////////////////////CMD OFF S0//////////////////////02 38 30 30 30 30 03 46 42 .80000.FB//////////////////////////////////CMD ON S1//////////////////02 37 30 31 30 30 03 46 42 .70100.FB//////////////////////////////////CMD OFF S1//////////////////////02 38 30 31 30 30 03 46 43 .80100.FC//////////////////////////////////CMD WRITE D0 15AB 16Bit //////////// /////02 31 31 30 30 30 30 32 41 42 31 35 03 .1100002AB15.34 3040//////////////////////////////////CMD WRITE D1 15AB15AB 32Bit //////// /////////02 31 31 30 30 30 30 34 41 42 31 35 41 .1100004AB15A42 31 35 03 32 42B15.2B//////////////////////////////////CMD WRITE T0 15AB 16Bit //////////// /////02 31 30 38 30 30 30 32 41 42 31 35 03 .1080002AB15.34 3747//////////////////////////////////CMD WRITE T1 15AB15AB 32Bit //////// /////////02 31 30 38 30 30 30 34 41 42 31 35 41 .1080004AB15A42 31 35 03 33 32B15.32//////////////////////////////////CMD WRITE C0 15AB 16Bit //////////// /////02 31 30 41 30 30 30 32 41 42 31 35 03 .10A0002AB15.35 3050//////////////////////////////////CMD WRITE C1 15AB15AB 32Bit //////// /////////02 31 30 41 30 30 30 34 41 42 31 35 41 .10A0004AB15A42 31 35 03 33 42B15.3B以上是用FX-0N PLC 时的情况,从上面的数据很容易分析出内部软元件的地址,有趣的是在换成FX-1N 时发现有所不同FX-1N PLC以下列出不同的操作发送的不同内容//////////////////////////////////CMD ON YO//////////////////02 45 37 30 30 30 43 03 35 32 .E7000C.52//////////////////////////////////CMD OFF YO/////////////////////02 45 38 30 30 30 43 03 35 33 .E8000C.53//////////////////////////////////CMD ON Y1////////////////////02 45 37 30 31 30 43 03 35 33 .E7010C.53//////////////////////////////////CMD OFF Y1//////////////////02 45 38 30 31 30 43 03 35 34 .E8010C.54//////////////////////////////////CMD ON XO//////////////////02 45 37 30 30 31 32 03 34 32 .E70012.42//////////////////////////////////CMD OFF XO/////////////////////02 45 38 30 30 31 32 03 34 33 .E80012.43//////////////////////////////////CMD ON X1//////////////////02 45 37 30 31 31 32 03 34 33 .E70112.43//////////////////////////////////CMD OFF X1//////////////////02 45 38 30 31 31 32 03 34 34 .E80112.44//////////////////////////////////CMD ON T0//////////////////02 45 37 30 30 31 30 03 34 30 .E70010.40//////////////////////////////////CMD OFF T0//////////////////02 45 38 30 30 31 30 03 34 31 .E80010.41//////////////////////////////////CMD ON T1//////////////////02 45 37 30 31 31 30 03 34 31 .E70110.41//////////////////////////////////CMD OFF T1/////////////////02 45 38 30 31 31 30 03 34 32 .E80110.42//////////////////////////////////CMD ON C0//////////////////02 45 37 30 30 30 46 03 35 35 .E7000F.55//////////////////////////////////CMD OFF C0////////////////////// 02 45 38 30 30 30 46 03 35 36 .E8000F.56//////////////////////////////////CMD ON C1//////////////////02 45 37 30 31 30 46 03 35 36 .E7010F.56//////////////////////////////////CMD OFF C1////////////////////// 02 45 38 30 31 30 46 03 35 37 .E8010F.57//////////////////////////////////CMD ON M0//////////////////02 45 37 30 30 30 30 03 33 46 .E70000.3F//////////////////////////////////CMD OFF M0////////////////////// 02 45 38 30 30 30 30 03 34 30 .E80000.40//////////////////////////////////CMD ON M1//////////////////02 45 37 30 31 30 30 03 34 30 .E70100.40//////////////////////////////////CMD OFF M1////////////////////// 02 45 38 30 31 30 30 03 34 31 .E80100.41//////////////////////////////////CMD ON S0//////////////////02 45 37 30 30 31 34 03 34 34 .E70014.44//////////////////////////////////CMD OFF S0////////////////////// 02 45 38 30 30 31 34 03 34 35 .E80014.45//////////////////////////////////CMD ON S1//////////////////02 45 37 30 31 31 34 03 34 35 .E70114.45//////////////////////////////////CMD OFF S1////////////////////// 02 45 38 30 31 31 34 03 34 36 .E80114.46//////////////////////////////////CMD WRITE D0 15AB 16Bit //////////// /////02 45 31 30 34 30 30 30 30 32 41 42 31 35 03 .E10400002A B15.42 38B8//////////////////////////////////CMD WRITE D1 15AB15AB 32Bit //////// /////////02 45 31 30 34 30 30 32 30 34 41 42 31 35 41 .E10400204A B15A42 31 35 03 41 35B15.A5//////////////////////////////////CMD WRITE T0 15AB 16Bit //////////// /////02 45 31 30 31 30 30 30 30 32 41 42 31 35 03 .E10100002A B15.42 35B5//////////////////////////////////CMD WRITE T1 15AB15AB 32Bit //////// /////////02 45 31 30 31 30 30 32 30 34 41 42 31 35 41 .E10100204AB1 5A42 31 35 03 41 32B15.A2//////////////////////////////////CMD WRITE C0 15AB 16Bit //////////// /////02 45 31 30 30 41 30 30 30 32 41 42 31 35 03 .E100A0002A B15.43 35C5//////////////////////////////////CMD WRITE C1 15AB15AB 32Bit /////////////////02 45 31 30 30 41 30 32 30 34 41 42 31 35 41 .E100A0204A B15A42 31 35 03 42 32B15.B2不同的地方在发送的命令多了个"E" Hex代码是"45"CMD fx- 0N fx- 1NREAD CMD "0" CMD "E0"WRITE CMD "1" CMD "E1"ON CMD " 7" CMD "E 7"OFF CMD "8" CMD "E8"另外软元件地址也有所不同但是通过实验证实第一种不带"E"的命令格式和地址对fx-1N同样可以正确操作,也就是说fx-1N兼容fx-0N的通讯格式。