三菱通信协议完整版及程序
三菱FX系列PLC编程口通讯协议实例

三菱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。
三菱FX3U 485无协议通讯程序详解(含程序)

三菱FX2N PLC串行通讯指令(FNC 80 RS)串行通讯指令(FNC 80 RS)1、指令格式:[RS D0 K8 D10 K8]发送数据帧起始地址和数目↓接收数据帧起始地址和数目2、功能和动作:※RS指令是为使用RS232C、RS-485功能扩展板及特殊适配器,进行发送和接收串行数据的指令。
※传送的数据格式在后面讲述的特殊寄存器D8120设定。
RS指令驱动时即使改变D8120的设定,实际上也不接收。
※在只发送的系统中,可将接收数设定为K0。
(K表示常数)※在只接收的系统中,可将发送数设定为K0。
※在程序中可以多次使用RS指令,但在同一时间必须保证只有一个RS指令被驱动。
※在一次完整的通讯过程中,RS指令必须保持一直有效,直至接收数据完成。
D8120说明:※根据MD320的通讯协议,无帧头和帧尾,则(bit9,bit8)=(0,0)。
※bit13~15是计算机链接通讯时的设定项目,使用RS指令时必须设定为0。
※RS485未考虑设置控制线的方法,使用FX2N-485-BD、FX0N-485ADP时,(bit11,bit10 )=(1,1)。
※若PLC和变频器之间的通讯参数如下:8位数据位,无校验,2位停止位,波特率9600,无帧头无帧尾,无协议模式,则D8120=H0C89(H表示16进制)(0000 1100 1000 1001B)M8002│──||────────── [ MOV H0C89 D8120 ]5、相关标志位:一.基本指令介绍※M8122:数据发送请求标志当PLC处于接收完成状态或接收等待状态时,用脉冲触发M8122,将使得从D0开始的连续8个数据被发送。
当发送完成后,M8122自动被复位。
当RS指令的驱动输入X0变为ON状态时,PLC就进入接收等待状态。
※M8123:数据接收完成标志当M8123置位时,表明接收已经完成,此时需要将接收到的数据从接受缓冲区转移到用户指定的数据区,然后手工复位M8123。
三菱 FX RS485通信

三菱 FX-PLC 与三菱变频器的 RS-485 通讯2009-11-01 13:03要:本文介绍了三菱FX系列PLC与三菱变频器之间RS-485通讯控制及数据格式,详细分析了通讯控制调系统与一般模拟量控制调速系统相比的优越性。
并给出了应用实例及其PLC程序。
键词: PLC 变频器通讯协议引言现代工业控制系统中,PLC和变频器的综合应用最为普遍。
比较传统的应用一般是使用PLC的输出接点驱动间继电器控制变频器的启动、停止或是多段速;更为精确一点的一般采用PLC加D/A 扩展模块连续控制变频的运行或是多台变频器之间的同步运行。
但是对于大规模自动化生产线,一方面变频器的数目较多,另一方电机分布的距离不一致。
采用D/A扩展模块做同步运动控制容易受到模拟量信号的波动和因距离不一致而造的模拟量信号衰减不一致的影响,使整个系统的工作稳定性和可靠性降低。
而使用RS-485通讯控制,仅通一条通讯电缆连接,就可以完成变频器的启动、停止、频率设定;并且很容易实现多电机之间的同步运行。
系统成本低、信号传输距离远、抗干扰性强。
系统硬件组成和连接系统硬件组成如图 1 所示,主要由下列组件构成;图 1 :系统硬件组成1、FX2N-32MT-001 为系统的核心组成。
2、FX2N-485-BD 为 FX2N 系统 PLC 的通讯适配器,主要用于 PLC 和变频器之间的数据的发送和接收。
3、SC09 电缆用于 PLC 和计算机之间的数据传送。
4、通讯电缆采用五芯电缆自行制作。
下文介绍通讯电缆的制作方法和连接方式:频器端的 PU 接口用于 RS485 通讯时的接口端子排定义如下图 2 所示:(从变频器下面看)图 2 :变频器接口端子排定义图 3 : PLC 和变频器的通讯连接示意图户自行按图 3 所示定义五芯电缆线的一端接 FX2N-485BD ,而另一端 ( 如图 2) 用专用接口压接五芯电缆变频器的 PU 口。
(将 FR-DU04 面板取下即可)PLC 和变频器之间的 485 通讯协议和数据定义C 和变频器之间进行通讯,通讯规格必须在变频器的初始化中设定,如果没有进行设定或有一个错误的设定,据将不能进行通讯。
三菱plc网口与计算机通讯设置

三菱plc网口与计算机通讯设置现代工业自动化生产中,PLC(可编程逻辑控制器)被广泛应用于各种设备和机器的控制与调节。
而与计算机通讯是PLC的一个重要功能之一,通过与计算机的通信,可以实现实时监控、数据采集、远程调试等功能。
本文将介绍如何进行三菱PLC网口与计算机的通讯设置。
一、准备工作首先,我们需要确保PLC与计算机之间可以通过网口进行通讯。
网口是PLC与计算机之间的物理连接,通常通过网线将PLC与计算机相连。
在连接过程中,需要注意插头的方向以及网线的质量,以保证通讯信号的稳定和可靠性。
二、配置PLC设置在正式进行通讯设置之前,我们需要登录到PLC的编程软件中,进行相关配置。
首先,选择编辑功能菜单中的通讯参数设置,进入PLC与计算机通讯设置界面。
在该界面中,我们需要设置通讯口的类型、端口号、通信方式等参数。
通常情况下,三菱PLC的网口通信支持以太网、Modbus TCP等协议,根据实际需求进行选择,并按照说明书上的要求设置通讯参数。
三、计算机网络配置在进行PLC网口与计算机通讯之前,我们还需要进行计算机网络的配置。
首先,打开计算机的控制面板,选择网络和Internet选项,进入网络设置界面。
在网络设置界面中,选择适配器选项,找到与PLC相连的网卡,进行相关设置。
根据PLC的要求,设置网卡的IP地址、子网掩码、默认网关等参数。
需要注意的是,计算机的IP地址和PLC的IP地址必须处于同一子网中,才能进行通信。
四、编写通讯程序经过以上配置之后,我们就可以编写通讯程序来实现PLC与计算机之间的通讯了。
在编写通讯程序时,我们可以使用编程软件提供的相关函数和指令,或者使用专门的通讯库来进行开发。
根据具体的需求,可以实现不同的通讯方式,比如周期轮询、事件驱动等。
通讯程序中需要包括与PLC建立连接、数据交换、错误处理等逻辑,以确保通讯的稳定和可靠。
五、调试与优化通讯程序编写完成后,我们需要进行调试和优化,以确保通讯的正常运行。
三菱FX系列PLC下载通信协议说明

三菱FX系列PLC下载通信协议说明作者声明:转摘时请注明出处: ,谢谢。
------------------------------------------------------------------------------------------三菱FX系列PLC编程口通信协议总览该协议实际上适用于PLC编程端口以及FX-232AW模块的通信通讯格式命令(CMD)命令码目标设备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,CFORCE OFF CMD "8" X,Y,M,S,T,C扩展命令码读配置"E00"写配置"E10"读程序"E01"写程序"E11"传输格式: RS232C波特率: 9600bps奇偶: even校验: 累加方式和校验字符: ASCII命令16进制代码命令解释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指令解释如下:STX, "0", "10F6", "04", ETX , "74"报文开始, 读命令, 地址10F6H处, 04H字节数据, 报文结束, 累加方式和校验其中 SUM=CMD+......+ETX=30h+31h+30h+46h+36h+30h+34h+03h=74h;累加和超过两位取低两位,转换成ascii码,分 SUM(upper),SUM(lower)二次传送。
PC与三菱PLC之间的RS232通讯协议

例2:读取PLC内部数据X、Y、Z的值 (读取D0-D5的数据)
代码编写步骤:(思路与上例一样) 1、将固定读取的数字代码发送给PLC, 固定读取D0-D5的数字代码为:02H 30H 31H 30H 30H 30H 30H 43H 03H 36H 37H 2、发送成功后,则有数据信息反馈;不成功则返回15; 3、将返回的窗口输出字符串依次保存在字符串数组char s1[84]中; 4、将数组s1转化为数字保存在数据b中;类似:字符串数字51=“3”; 5、将数组b转为16进制ASCII,再转化为10进制保存在数组c中; 例如:“3”“5”=3*10+5=35;再如:35H=5D; 6、将数组c转为2进制,方便判断正负数和后期运算,保存在数值c2中; 7、判断正负数,设立标志位flog; 如果为负数,则将其二进制取反加1后转化为10进制整数; 如果不为负数,则直接转化为10进制整数; 8、得到的数分别保存在D0、D1、D2、D3、D4、D5中(IPC内部变量区别开PLC内部数据寄存 器); 自定义运算; 可以得到 X=D0/(10^D1);//D0除以10的D1次方 Y=D2/(10^D3); Z=D4/(10^D5);
二、IPC读取PLC内部数据时:
首先将需要读取的PLC内部元件的地址找到,主要内部元件地址如下: D: m_address*2+1000H; T: m_address+00C0H; C: m_address*2+01C0H; S: m_address*3; M: m_address*2+0100H; Y: m_address+00A0H; X: m_address+0080H;(只能读不能写,输入寄存器必须由外部信号驱动) m_address元件是指最低位开始后的第N个元件的位置。 数据通讯举例: 例1:读D0的值 D0的内部地址为1000H=31H 30H 30H 30H LEN表示我们需要读字节的个数,0-7为一个字节,D0占两个字节,所以LEN=30H 32H. 计算CHK校验码=CMD0+ADD+LEN+EXT =30H+31H+30H+31H+30H+30H+32H+03H=157H 所以校验码为35H 37H. 得到完整的数字命令格式为:02H 30H 31H 30H 30H 30H 30H 32H 03H 35H 37H 将这段数字代码发送给PLC, 返回代码:02H 30H 30H 30H 30H 03H 43H 33H 得到数据段DATA为30H,31H,30H,30H=0001B(低位先发,高位后发)=1D 至此得到D0=1. 完成IPC读取PLC内部数据的全部过程。
三菱PLC与变频器通讯-ModbusRTU协议Word
Modbus是Modicon公司为其PLC与主机之间的通讯而发明的串行通讯协议。
其物理层采用RS232、485等异步串行标准。
由于其开放性而被大量的PLC及RTU厂家采用。
Modbus通讯方式采用主从方式的查询-相应机制,只有主站发出查询时,从站才能给出响应,从站不能主动发送数据。
主站可以向某一个从站发出查询,也可以向所有从站广播信息。
从站只响应单独发给它的查询,而不响应广播消息。
MODBUS通讯协议有两种传送方式:RTU方式和ASCII方式。
三菱700系列变频器能够从RS-485端子使用ModbusRTU 通讯协议,进行通讯运行和参数设定。
对象:1. 三菱PLC:FX2N+FX2N-485-BD2. 三菱变频器:F700系列,A700系列。
两者之间通过网线连接,具体参照下图。
FX2N-485-BD与n台变频器的连接图一.三菱变频器的设置PLC与变频器之间进行通讯时,通讯规格必须在变频器中进行设定,每次参数初始化设定后,需复位变频器或通断变频器电源。
参数号名称设定值说明Pr331 通讯站号 1 设定变频器站号为1Pr332 通讯速度 96 设定通讯速度为9600bpsPr334 奇偶校验停止位长 2 偶校验,停止位长1位Pr539 通讯校验时间 9999 不进行通讯校验Pr549 协议选择 1 ModbusRTU协议Pr551 PU模式操作权选择 2 PU运行模式操作权作为PU接口进行ModbusRTU协议通讯时,Pr551必须设置为2,Pr340设置为除0以外的值,Pr79设置为0或2或6。
通过RS-485端子进行ModbusRTU协议通讯时,必须在NET网络模式下运行。
一.三菱PLC的设置对通讯格式D8120进行设置D8120设置值为0C87,即数据长度为8位,偶校验停止位1位,波特率9600pbs,无标题符和终结符。
修改D8120设置后,确保通断PLC电源一次。
二.通讯程序采用ModbusRTU协议与变频器通讯的部分PLC程序如下:三:程序说明:1.当X1接通一次后,变频器进入正转状态。
三菱plc通讯协议
三菱plc通讯协议
三菱FX系列plc作为三菱基本的PLC,它们之间的通讯有几种常用的方式,分别如下:CC-LINK,N:N网络连接,并联连接。
1.CC-LINK连接
CC-LINK连接图如下:
对应的PLC可为FX1N、FX1NC、FX2N、FX2NC、FX3U、FX3UC,因为在使用CC-LINK通讯时要扩展CC-LINK模块,而FX1S没有扩展模块功能,故FX1S不能用于此通讯方式。
2)FX1N/FX2N/FX3U即可以作为主站,也可以作为远程设备站使用。
此种通讯因为要加CC-LINK通讯模块,所以成本较高。
3)在CC-LINK网络中还可以加入变频器伺服等符合CC-LINK规格的设备。
2.N:N网络连接
N:N网络连接连接图如下:
3.并联连接
并联连接图如下:
1)通讯对象是FX1S、FX1N、FX1NC、FX2N、FX2NC、FX3U、FX3UC 同一系列的PLC之间。
2)该通讯在PLC间进行1:1通讯,进行数据交换,只能满足2台
PLC的通讯。
自编三菱PLC通讯协议概要
FX 系列可编程控制器( PLC)通信常用方法目录1、基本通信方法§1.1 常用的通信方法§1.2 计算机与 FX-PLC 通信构造2、通信格式§2.1 通信基本格式§2.2 PLC 有关通信存放器标记§2.3 通信格式详解§2.4 举例3、通信过程§3.1 基本知识§3.2 专用通信协议框图§3.3 专用通信控制命令4、附录ASCII 码表1、基本通信方法§1.1 常用通信方法FX 系列 PLC 支持 5 种通信方法1)计算机链接:用计算机做主机,经过 RS485 接口与 16 台 PLC 组网,采纳专用通信协议,在计算机与 PLC 之间互换数据,本资料要点解决心算机链接问题,包含硬件连结、通信参数设置、通信格式等。
2)N 网络:能够将 8 台 PLC 组成网络,无需协议,自成网络。
3)并联:能够将 2 台 PLC 并联成网络,也无需协议,自成网络。
4)PLC 用 RS 指令发送、接收数据,与计算机等设施进行无协议通信互换数据。
5)经过 PLC 编程接口,与计算机等设施进行数据互换,本厂采纳该方式在MCGS 工业组态软件基础上,开发出各种锅炉专用的计算机监控系统。
§1.2 计算机链接通信构造RS232C FX-485RC-IF FX1N-485-BD⋯⋯⋯ 1 2 16上述构是一种采纳算机串行口与PLC 接的最基本方法,最通距离50M,其通有关参数下表:通接口: FXON-485ADP /FX-485ADP/FX1N-485BD/FX1N-CNV-BD/FX1N-232BD 可。
通距离: FX1N-485BD 50M ,其余某些件,最500M。
从站接数:最大16 台通方法:半双工数据度: 7 位 /8 位可校:不用 /奇/偶可停止位: 1 位/2 位可波特率: 300/600/1200/2400/4800/9600/19200可超始符:不用 /有效可:格式 1/格式 4 可乞降:不用 /有效可可 PLC 型: FX2N ,FX2NC ,FX1N ,FX1S,FXON , FX,FX2C算机与PLC 通所需的,可通算获取。
三菱q系列plc网口通讯协议
三菱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网口通讯协议的了解,我们可以看到这些协议的共同点在于都实现了高速、可靠和实时的数据传输。
同时,它们也具备了一定的差异性,以满足不同自动化控制系统的需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
http://www.5130cn.com 三菱工控网 文章:三菱PLC通讯协议参考,总17页之第1页 三菱FX系列PLC编程口通信协议总览 三菱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 校验: 累加方式(和校验) 字符: ASCII
16进制代码: 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, SUM 02H, 30H, 31H,30H,46H,36H, 30H,34H, 03H, 37H,34H SUM=CMD+......+ETX; 30h+31h+30h+46h+36h+30h+34h+03h=74h; http://www.5130cn.com 三菱工控网 文章:三菱PLC通讯协议参考,总17页之第2页 累加和超过两位取低两位 三菱FX系列PLC编程口通信协议举例
三菱FX系列PLC专用协议通信指令一览 FX系列PLC专用协议通信指令一览 以下将详细列出PLC专用协议通信的指令: 指令 注释 BR 以1点为单位,读出位元件的状态 WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值 BW 以1点为单位,写入位元件的状态 WW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件 BT 以1点为单位,SET/RESET 位元件 WT 以16点为单位,SET/RESET 位元件,或写入值到字元件 RR 控制PLC运行RUN RS 控制PLC停止STOP PC 读出PLC设备类型 TT 连接测试
注:位元件包括X,Y,M,S以及T,C的线圈等; 字元件包括D,T,C,KnX,KnY,KnM等。
FX系列PLC编程口通信协议II 三菱FX系列PLC编程口通信协议举例 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 再转换成ASCII http://www.5130cn.com 三菱工控网 文章:三菱PLC通讯协议参考,总17页之第3页 31h,30h,46h,36h PLC返回 STX 1ST DATA 2ND DATA ..... LAST DATA ETX SUM 注:最多可以读取64个字节的数据 例子:从指定的存储器单元读到3584这个数据 02h 33h 35h 38h 34h 03h 44h,36h
2、DEVICE WRITE(向PLC软设备写入值) 始 命令 首地址 位数 数据 终 和校验 STX CMD GROUP ADDRESS BYTES 1ST DATA 2ND DATA ...... LAST DATA ETX SUM
例子:向D123开始的两个存储器中写入1234,ABCD 02h 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 CMD ADDRESS ETX SUM 02h 37h address 03h sum
FORCE OFF复位 始 命令 地址 终 和校验 STX CMD ADDRESS ETX SUM 02h 38h address 03h sum http://www.5130cn.com 三菱工控网 文章:三菱PLC通讯协议参考,总17页之第4页
PLC返回 ACK(06H) 接受正确 NAK(15H) 接受错误
设备强制中的地址公式:Address=Address/8+100h
说明: 1.帧中的BYTES表示需要读取或者写入的字节数。 2.地址算法上有说明。 3.累加和是从STX后面一个字节开始累加到ETX的和。
三菱FX系列PLC编程口通信源代码 fx_comm.h #define DELAY_TIMES 30000L #define TRUE 1 #define FALSE 0 #define TRUE 1 #define FALSE 0 #define FORCE_ON 0x37 #define FORCE_OFF 0x38 void init_plc(void); int check_plc(void); int _read_data_register(unsigned int uAddress,unsigned int number); int _read_mdata_register(unsigned int uAddress,unsigned int number); int _write_data_register(unsigned int uAddress,unsigned int number); int _force_m_contact(unsigned int uAddress,unsigned char ucOn_off); int read_data_register(unsigned int uAddress,unsigned int number); int read_mdata_register(unsigned int uAddress,unsigned int number); int writedataregister(unsigned int uAddress,unsignedintnumber); http://www.5130cn.com 三菱工控网 文章:三菱PLC通讯协议参考,总17页之第5页 int force_m_contact(unsigned int uAddress,unsigned char ucOn_off); int _read_m_register(unsigned int uAddress,unsigned int number); int read_m_register(unsigned int uAddress,unsigned int number); int TESTING=0; unsigned int uRead_value[25]; unsigned int uWrite_value[25]; unsigned int COMM_PORT=1; unsigned int STATS_PORT=0x2fd; unsigned int DATA_PORT=0x2f8;
void init_plc(void) { _AX=0xfa; _DX=COMM_PORT; geninterrupt(0x14); while((inportb(STATS_PORT)&1)!=0) inportb(DATA_PORT);
} //返回顶部
int check_plc(void) { long lTmp; if(TESTING==1)return TRUE; init_plc(); for(lTmp=0L;lTmp{ if((inportb(STATS_PORT)&0x20)!=0) break; } if(lTmp>=DELAY_TIMES) return(FALSE); outportb(DATA_PORT,5); disable(); for(lTmp=0L;lTmp{ if((inportb(STATS_PORT)&1)!=0) break; } if(lTmp>=DELAY_TIMES) { enable(); return(FALSE); } if((lTmp=inportb(DATA_PORT))==6) { enable(); return(TRUE); http://www.5130cn.com 三菱工控网 文章:三菱PLC通讯协议参考,总17页之第6页 } else { enable(); return(FALSE); } } //返回顶部
int read_data_register(unsigned int uAddress,unsigned int number) { int i; for(i=0;i<3;i++) if(_read_data_register(uAddress,number)==TRUE) return TRUE; return FALSE; } //返回顶部
int _read_data_register(unsigned int uAddress,unsigned int number) { unsigned char uSend[]={2,0x30,0x30,0x30,0x30,0x30,0x30,0x32,3,0x30,0x30}; unsigned char uReceive[104]; unsigned int uTmp; unsigned int uSum; unsigned int num; long lTmp; int i,j; if(TESTING==1) { for(i=0;ireturn TRUE; } init_plc(); num=number*2; if((num/16)>=10) uSend[6]=(unsigned char)(num/16+0x41-10); else uSend[6]=(unsigned char)(num/16+0x30); if((num%16)>=10) uSend[7]=(unsigned char)((num%16)+0x41-10); else uSend[7]=(unsigned char)((num%16)+0x30); uAddress=uAddress*2+0x1000; uTmp=uAddress & 0x000f; uSend[5]=(uTmp<10)?(uTmp+0x30):(uTmp+0x41-0xa);