PC与三菱PLC之间的RS 通讯协议
三菱PLC与PLC之间的通讯-CC-LINK方式
三菱PLC与PLC之间的通讯-CC-LINK方式
PLC与PLC之间通讯有很多种,常见的有I/O通讯、232通信、485通信、DP通信、以太网通信等,具体选择哪种主要看你对功能的要求。
各种通讯也有各自的优缺点,本文主要介绍一下通过CCLINK 的方式实现的通讯。
PLC之间通讯常见的就是交互IO信号和传输数据,接下来介绍三菱Q系列与Q系列PLC的通讯和Q系列与FX系列的通讯。
一.Q系列PLC与Q系列PLC通讯设置方法:
1.主控站信息分配为:智能设备站
2.单机设置为:本地站
3.站点分配:主站&本地站往后+10站进行分配远程输入输出
Q系列与Q系列之间通讯只要设置好参数,无需再写PLC指令程序,直接分配相应的信号和数据。
二.Q系列与FX系列PLC通讯方法:
1.主控PLC设置:远程设备站/智能设备站→占用4站
2.FX2N-32CCL设置好相应的站号/波特率/占用站数
3.FX PLC编写程序
FX系列站号设置
FX系列波特率设置
I/O信号交互
数据传送交互
Q系列与FX系列通讯,对于FX系列一侧需要编写程序。
FX系列与FX系列之间的通讯,只要要一侧配置一个FX系列CCLINK主站模块,另一个配置一个从站模块即可。
基于编程口的三菱PLC与PC机串行通信实现 优秀论文
柳 剑 陈於学 杨曙年
( 华中科技大学机械科学与工程学院,湖北 武汉 430074)
摘 制中有着广泛的应用。介绍了一种不使用通信模块而直接通过
PLC 自带编程口与 PC 机实现串行通信的方法,阐述了通信系统内部两种不同标准接口之间通信的基本原理,给出了在 LabVIEW 开发
信号传输,采用的是单向传输方式; RS-422 标准则是 利用传输线之间信 号 的 电 压 差 进 行 传 输 的 ,采 用 的 是
差动传输方式。SC-09 电缆实现了这两种不同的信号 传输方式之间的转换,其内部电路如图 2 所示。
图 2 SC-09 电缆内部电路 Fig. 2 Internal circuit of SC-09 cable
的数据、报文结束标志以及和校验码组成,如图 3 所 示。写入正常时,PLC 应答“ACK”; 写入出错时,PLC 应答“NAK”。
起始 命令
软元件首地址
STX
CMD
16 3
16 2
16 1
16 0
02H 31H
BYTE 数
16 1
16 0
16 1
16 0
第一个字节
数据段 … …
16 1
16 0
末字节
2 通信协议
PC 机与 PLC 之间有两种通信方式: 一种是 PC 机 具有优先权而 PLC 始终被动响应 PC 机发来的命令; 另一种则是 PLC 具有优先权,将命令发送给 PC 机,并 接收来自 PC 机的响应[4]。本文采用的是前一种通信 方式。
为实现 PC 机与 FX 系列 PLC 编程口之间的通信, 系统采用的是编程口专用通信协议[5]。 2. 1 控制字符
环境下设计的通信程序,并在 FX1N-40MR-001 型号的 PLC 上进行了实验验证。实验结果表明,该通信方式稳定可靠,实现了预期功
PC与三菱PLC串口通讯
编写代码对从PLC接收到的数据进行解析,提取 所需信息,如寄存器地址、数据类型等。
3
数据校验
为确保数据传输的准确性,对数据进行校验,如 奇偶校验、CRC校验等。
软件编程的常见问题及解决方案
通讯异常
检查通讯线缆是否完好、端口 设置是否正确、PLC是否正常工
作等。
数据传输延迟
优化数据传输速度、调整缓冲 区大小等。
使用方法
根据所选的调试工具,按照其使用说明进行操作,设置好串口号、波特率、数据位、停止位等参数, 以便与三菱PLC进行正确的串口通讯。
数据传输的测试与验证
测试方法
通过向PLC发送不同的数据,观察PLC的响应,检查数据传输的正确性。
验证方式
可以通过对比PLC的实际输出与预期结果,验证数据传输的准确性。
01
PC与三菱PLC串口通讯是指通过串 行通讯协议,在PC(个人计算机) 和三菱可编程逻辑控制器(PLC) 之间进行数据交换的过程。
02
串口通讯是一种常用的通讯方式 ,通过串行端口进行数据传输, 具有成本低、可靠性高、传输距 离远等优点。
PC与三菱PLC串口通讯的应用场景
工业自动化控制
PC与三菱PLC串口通讯广泛应用 于工业自动化控制系统中,实现 远程监控、数据采集、设备控制 等功能。
PC与三菱PLC串口通讯
目录
CONTENTS
• 概述 • PC与三菱PLC串口通讯的硬件连接 • PC与三菱PLC串口通讯的软件编程 • PC与三菱PLC串口通讯的调试与测试 • PC与三菱PLC串口通讯的应用案例 • PC与三菱PLC串口通讯的发展趋势与展望
01 概述
CHAPTER
什么是PC与三菱PLC串口通讯
三菱plc通信协议
编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载三菱plc通信协议甲方:___________________乙方:___________________日期:___________________三菱plc通信协议篇一:自编三菱plc通讯协议Fx系列可编程控制器(plc )通讯常用方法目录1、基本通讯方法1.1常用的通讯方法1.2计算机与Fx-plc通讯结构2、通信格式2.1通讯基本格式2.2plc相关通讯寄存器标志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计算机链接通讯结构Rs232cFx-485Rc-iFFx1n-485-bd216上述结构是一种采用计算机串行口与plc链接的最基本方法,最远通讯距离50m,其通讯相关参数见下表:通讯接口:Fxon-485adp/Fx-485adp/Fx1n-485bd/Fx1n-cnV-bd/Fx1n-232bd可选。
通讯距离:Fx1n-485bd50m,选其它某些件,最远500mt从站连接数:最大16台通讯方法:半双工数据长度:7位/8位可选校验:不用/奇/偶可选停止位:1位/2位可选波特率:300/600/1200/2400/4800/9600/19200 可选超始符:不用/有效可选协议:格式1/格式4可选求和检查:不用/有效可选可选plc 类型:Fx2n, Fx2nc, Fx1n, Fx1s, Fxon, Fx,Fx2c计算机与plc通讯所需的时间,可通过计算得到。
C# 实现PC与PLC(三菱Fx系列)串口通信
}
}
//The return code of the method is displayed by the hexadecimal.
txt_ReturnCode.Text = String.Format("0x{0:x8} [HEX]", iReturnCode);
C# 实现 PC 与 PLC(三菱 Fx 系列)串口通信 串口是计算机上一种非常通用的设备通信协议。 大多数计算机包含两个基于 RS-232 的串口。 PLC 采用的是三菱公司的 FX1N©系列产品,支持的串口通信协议是 422,不支持 232 协议, 所以要 调用第三方提供的动态库实现 PC 与 PLC 之间串口通信。 1.首先到三菱官网
读写 PLC 常用方法。
4. 主要代码示例
int iReturnCode;
//Return code
//Displayed output data is cleared.
ClearDisplay();
//
//Processing of Open method
//
try
{
//获取端口号
var item =
lpcom_ReferencesProgType.ActUnitType = 0x0f; //设置为 FX1N(C) lpcom_ReferencesProgType.ActCpuType = 0x207; //set PROTOCOL_SERIAL lpcom_ReferencesProgType.ActProtocolType = 0x04; // Specify the baud rate for serial communication. lpcom_ReferencesProgType.ActBaudRate = 9600; //设置端口号 Specify the connection port number of personal computer. lpcom_ReferencesProgType.ActPortNumber = COMPort;
三菱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,通讯协议
三菱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的值。
VC++编程让PC机与三菱PLC串口通讯的实现
VC++编程让PC机与三菱PLC串口通讯的实现随着微电子及控制技术的不断发展,PLC已逐渐成为一种智能型、综合型控制器,由PLC构成的集散控制是现代工业控制的一个重要组成部分。
PLC具有使用简单方便,故障率低,抗干扰能力强等优点;但同时,数据的计算处理与管理能力较弱,且无法提供良好的人机界面。
将计算机与PLC结合起来,可使两者优势互补,充分利用计算机友好的人机界面,实现人机对话和监控功能,并可进行一定的辅助决策,组成高性能价格比的控制系统。
实现计算机与PLC结合的控制系统的关键之一是二者之间的通信。
本设计选用三菱FX2N系列的PLC,以Visual c++6.0作为开发工具对PLC通讯主程序进行设计,串口通讯采用ActiveX控制Microsoft Communication Control 6.0,最后用PLC编程电缆将PLC编程口与计算机串口连接进行调试。
1 三菱PLC与计算机之间通信协议串行通信是指外设和计算机间使用一根数据信号线一位一位地传输数据,每一位数据都占据一个固定的时间长度。
“串行”是指外设与接口电路之间的信息传送方式,CPU与接口之间仍按并行方式工作。
串行通信的四个重要参数:波特率(衡量通信速度的参数)、奇偶校验位(一种简单的检错方式)、数据位(衡量通信中实际数据位的参数)和停止位(表示单个数据包的最后一位)。
(1)三菱FX2N系列通信数据帧格式FX2N系列的PLC与计算机之间的通信采用RS-232C标准,其传输速率一般设为9 600 bps,实际传输过程还可设其它,比如115 200 bps 等。
奇偶校验位采用偶校验。
数据以帧为单位发送和接收。
一个多字符帧由起始字元、命令号码、元件首地址、结束字元、和校验五部分组成,其中和校验值是将命令码STX—ETX之间的字符的ASCII码(十六进制数)相加,取得所得和的最低二位数。
STX和ETX分别表示该字符帧的起始标志和结束标志。
起始字元(STX):ASCII码的起始字元STX对应的16进制数位0x02。
三菱FX2N系列PLC与PC通讯的简易实现
收稿日期:2005-09-07 基金项目:广州市重点科技攻关项目资助(020046) 作者简介:刘杰(1974 -),男,内蒙古包头人,硕士研究生,研究方向为板材液压成形模具 CAD\CAM。
第 28 卷 第 1 期 2006-01 【65】
制造业自动化
图5 PLC返回的响应帧 表 1 FX2N 系列 PLC与计算机通讯
(Guangdong University of Technology,Guangzhou 510640, China)
A b s t r a c t : This paper introduces the communication protocol of FX2N series PLC in detail and realizes the serial communication between super computer and PLC through programming port by using MSComm ActiveX in Visual C++6.0 environment.It also gives detailed design process and codes of the program.
量转化为 ColeSafeArray型变量 len=safearray_inp.GetOneDimSize();//得到数
组里的成员个数 for (k=0;k<len;k++)//转换为BYTE型数组 safearray_inp.GetElement(&k,rxdata+k); for (k=1;k<5;k++)//转换为CString型,此处设
刘杰1974男内蒙古包头人硕士研究生研究方向为板材液压成形模具cadcam0引言plc可编程控制器由其具有的高可靠性强抗干扰能力丰富的io接口模块编程简单易学和安装简单等优点成为了现代工控领域运用极为广泛的工控产品
FXPLC编程口通信协议分析
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个字节数据。
PC与三菱PLC串口通讯
02 30 31 30 46 36 30 34 03 37 34 返回:02 30 32 03 36 35
0.1234
4.PC与PLC串口通讯操作
校验码:31+31+30+31+34+30+34+31+32+41+46+34+33+34+31+03 =314H (0x31、0x34) 发送数据:0x02 0x31 0x31 0x30 0x31 0x34 0x30 0x34 0x31 0x32 0x41 0x46 0x34 0x33 0x34 0x31 0x03 0x31 0x34 如果响应反馈是06表示写入成功,否则写入失败。
17... 10 0000 1000
02 30 30 30 41 44 30 31 03 37 39
4.PC与PLC串口通讯操作
二.对位元件和字元件状态写操作
发送格式:
命令格式: STX CMD1 ADD LEN DATA EXT CHK 解释: 起始符 写命令 元件起始地址 位数 写入的数据 停止符 校验码 数字代码: 0x02 0x31 ...... ..... ...... 0x03 ...... 0x31是写操作指令; DATA是待写入PLC缓冲区的数据,低位先发,高位后发,以ASCII码的形似发送; 其他的和读指令一样。
3.PLC数据类型和储存格式
指数:011 1101 1b=123d 123-127=-4 PLC在储存数值时,第一位都为1,所以不保存在数据里,在分析数据时要加上1. 数值:1111 1100 1011 1001 0010 0011 =1*1/(2^4)+1*1/(2^5)+1*1/(2^5)+1*1/(2^5)+1*1/(2^5)+1*1/(2^5)+0*1/(2^5)+...1*/(2^27) =0.1234
三菱FX系列plc与pc机通讯设置
三菱FX系列plc与pc机通讯设置PC机与PLC实现通信的条件带异步通信适配器的PC机与PLC只有满足如下条件,才能互联通信:(1)带有异步通信接口的PLC才能与带异步通信适配器的PC机互联。
还要求双方采用的总线标准一致,否则要通过“总线标准变换单元”变换之后才能互联。
(2)双方的初始化,使波特率、数据位数、停止位数、奇偶校验都相同。
(3)要对PLC的通信协议分析清楚,严格地按照协议的规定及帧格式编写PC机的通信程序。
PLC中配有通信机制,一般不需用户编程。
3PC机及与FX系列PLC的串行通讯3.1硬件连接PC机与FX系列PLC不能直接连接,要经过FX-232AW单元进行RS232C/RS-422的变换,下图表示了它们之间的连接关系:3.2FX系列PLC的通信协议在PC机中必须依据互联的PLC的通信协议来编写通信程序,因此先介绍FX系列PLC的通信协议。
(1)数据格式FX系列PLC采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,波特率为9600bps,字符为ASCII码。
格式如下:(2)通信命令FX系列PLC有4个通信命令,它们是读命令、写命令、强制通命令、强制断命令,如下表所示。
表中X—输入继电器;Y—输出继电器;M—辅助继电器;S—状态元件;T—定时器;C—计数器;D—数据寄存器。
(3)通信控制字符FX系列PLC采用面向字符的传输规程,用到5个通信控制字符,如下表所示。
*当PLC对PC机发来的ENQ不理解时,用NAK回答。
(4)报文格式PC机向PLC发送的报文格式如下:其中STX为开始标志:02H;ETX为结束标志:03H;CMD为命令的ASCII码;SUMH,SUML为从CMD到ETX按字节求累加和,溢出不计。
由于每字节十六进制数变为两字节ASCII代码,故校验和为SUMH与SUML。
数据段格式与含义如下:*写命令的数据段有数据,读命令的数据段则无数据。
读/写字节数为01H~40H(1~64)个。
三菱PLC通讯协议
四川中鼎电气控制有限公司公用及辅机控制系统PLC通讯协议(三菱FX、A系列通用)公用及辅机控制系统现地PLC控制柜/箱与LCU均采用三菱专用通信协议格式1(有校验和,无CR、LF),以RS485异步方式通信。
所有设备的通信参数均取:波特率9600bps,1位起始位,8位数据位,1位停止位,无奇偶校验位;一、上位机从PLC读取数据的通信顺序为:上位机请求,PLC应答两个步骤。
(一)从上位机发给PLC(请求)请求标志+站号+PLC号+命令字+信息等待时间+正文+校验和1)请求标志:05H,单字节2)PLC站号:双字节的ASCII值3)PLC代号:FX系列PLC,固定为46H 46H双字节,也即:“FF”4)命令:双字节ASCII值“WR”5)等待时间:单字节ASCII值“0”~“F”,表示从PLC收到上位机信息到PLC发出信息所需要等待的时间,0~150ms之间变化6)正文:包括两部分,第一部分是启始寄存器,为5字节ASCII字符。
第二部分是要读取的寄存器数,为2字节ASCII字符7)校验和:2) ~6)的所有字节的二进制数值相加所得的数取低字节,然后用两个ASCII字符来表示。
如:累加和为316H,校验和字段就为“16”,即31H、36H。
例如:1、上位机需要读取5号P LC的X0040 ~X005F连续2个16位寄存器(2个字)的值,等待时间设为0ms,不需要结束符号,上位机发送的信息如下:05H 30H 35H 46H 46H 57H 52H 30H 58H 30H 30H 34H 30H 30H 32H 34H 38H 也就是:ENQ(05H)+”05”+”FF”+”WR”+”0”+”X0040”+”02”+”48”(校验和);2、上位机需要读取4号PLC的D1000 ~D1003连续4个16位寄存器(4个字)的值,等待时间设为0ms,上位机发送的信息如下:05H 30H 34H 46H 46H 57H 52H 30H 44H 31H 30H 30H 30H 30H 34H 33H 32H 也就是:ENQ(05H)+”04”+”FF”+”WR”+”0”+”D1000”+”04”+”32” (校验和);(二)从PLC发给上位机成功接收时:信文开始标志(02H)+ PLC站号+PLC代号+正文+信文结束标志(03H)+校验和1)或上位机的读命令有错时发回:非应答标志(15H)+ PLC机号+PLC代号+错误代码2)信文开始标志:02H,单字节3)PLC站号:双字节的ASCII值4)PLC代号:FX系列PLC,固定为46H 46H双字节,也即:“FF”5)正文:每4个ASCII字符一组,代表一个16位的寄存器的16进制数值,用相应的ASCII字符代替6)信文结束标志:03H,单字节7)校验和:2) ~5)的所有字节的二进制数值相加所得的数取低字节,然后用两个ASCII字符来表示。
三菱FX系列plc与pc机通讯设置
三菱FX系列plc与pc机通讯设置PC机与PLC实现通信的条件带异步通信适配器的PC机与PLC只有满足如下条件,才能互联通信:(1)带有异步通信接口的PLC才能与带异步通信适配器的PC机互联。
还要求双方采用的总线标准一致,否则要通过“总线标准变换单元”变换之后才能互联。
(2)双方的初始化,使波特率、数据位数、停止位数、奇偶校验都相同。
(3)要对PLC的通信协议分析清楚,严格地按照协议的规定及帧格式编写PC机的通信程序。
PLC中配有通信机制,一般不需用户编程。
3PC机及与FX系列PLC的串行通讯3.1硬件连接PC机与FX系列PLC不能直接连接,要经过FX-232AW单元进行RS232C/RS-422的变换,下图表示了它们之间的连接关系:3.2FX系列PLC的通信协议在PC机中必须依据互联的PLC的通信协议来编写通信程序,因此先介绍FX系列PLC的通信协议。
(1)数据格式FX系列PLC采用异步格式,由1位起始位、7位数据位、1位偶校验位及1位停止位组成,波特率为9600bps,字符为ASCII码。
格式如下:(2)通信命令FX系列PLC有4个通信命令,它们是读命令、写命令、强制通命令、强制断命令,如下表所示。
表中X—输入继电器;Y—输出继电器;M—辅助继电器;S—状态元件;T—定时器;C—计数器;D—数据寄存器。
(3)通信控制字符FX系列PLC采用面向字符的传输规程,用到5个通信控制字符,如下表所示。
*当PLC对PC机发来的ENQ不理解时,用NAK回答。
(4)报文格式PC机向PLC发送的报文格式如下:其中STX为开始标志:02H;ETX为结束标志:03H;CMD为命令的ASCII码;SUMH,SUML为从CMD到ETX按字节求累加和,溢出不计。
由于每字节十六进制数变为两字节ASCII代码,故校验和为SUMH与SUML。
数据段格式与含义如下:*写命令的数据段有数据,读命令的数据段则无数据。
读/写字节数为01H~40H(1~64)个。
PC与三菱PLC之间的RS232通讯协议
二、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内部数据的全部过程。
2、位元件和字元件状态写操作;
操作对象元件:PLC内部的XYMSTCU元件 命令通用格式:STX CMD1 ADD LEN DATA EXT CHK 意义: 起始符 读命令 元件起始位 个数 写入的数据 停止符 校验码 数字代码格式:0X02 0X31 …… 0X03 …… 0x031是写操作指令; DATA是待写入PLC缓冲区的数据,低位先发,高位后发,以ASCII码的形式发送; 其他和读指令一样,此处不再重复; 发送后返回值为06,表示写入成功是次读取位元件或字元件的个数最多可以读取0xff个字节的元件len是一次读取位元件或字元件的个数最多可以读取0xff个字节的元件也是以ascii码的形式发送
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
陈安标 交流QQ:458362670
PC与三菱PLC之间的RS232通讯协议
一、VC与PLC的串口通讯主要操作:
1、对位元件和字元件状态读操作; 操作对象元件:PLC内部的X、Y、M、S、T、C、D元件 命令通用格式: STX CMD0 ADD LEN EXT CHK 意义: 起始符 读命令 元件起始位 个数 停止符 校验码 数字代码格式: 0X02 0X30 …… …… 0X03 …… 0x30是读操作指令; ADD是读位元件或字元件的4位起始地址,高位先发,低位后发,以ASCII码的格式发送; LEN是一次读取位元件或字元件的个数,最多可以读取0xff个字节的元件,也是以ASCII码的形式发
6、将数据counts[35]每个数转化为对应的两个ASCII码值保存于counts_ascii[70]中;
例如:“35”转化为“3”和“5”;
7、将ASCII码转化为字符串代码保存于a2[70],累加排列输出;
例如:“3”的字符串代码为48+3=51;
8、返回值06,表示写入成功。
例2:读取PLC内部数据X、Y、Z的值 (读取D0-D5的数据)
编写VC程序时需要用到以上思路; 这里我们假设我们只是写入Y1=1来操作: Y1的PLC内部地址为:00A0H;表示Y7-Y0的地址,Y1只是其中一个位; LEN取2个字节16位=30H 32H; 写入数据:00A0表示的是Y7-Y0 8个位,需要Y1为1,写入00000010B=02H,但是LEN为2, 表示2个字节,所以需要写入0002H转化为30H 32H 30H 30H(低位先发,高位后发); 完整代码:02H 31H 30H 30H 41H 30H 30H 32H 30H 32H 30H 30H 03H 32H 39H 返回:06写入成功。
IO通讯举例:
例2:IPC置位PLC内部位元件Y1
思路:1、确定Y1地址(读操作已说明); 2、就于写入的原理,需要先读取00A0的值; 3、将读取的值与0010进行&运算,确定Y1是否为0; 4、为0,则将读取值与0010进行或运算,再将得到的值转为数字代码形式发送给PLC;
为1,则表示内部Y1已经为1,不需要重复置位; 5、写入成功后返回06;
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内部数据的全部过程。
从而得到 X=10035 ; N1=1;
Y=-4500; N2=0;
Z=31456; N3=4;
2、将X、Y、Z、N1、N2、N3分别转换成16进制;
3、再转化为16进制ASCII码;
4、将得到的16进制ASCII码按照X、N1、Y、N2、Z、N3的顺序排列进counts[35]数组中;
5、计算校验码;
IO通讯举例:
例2:读取Y1的值
Y1的内部地址是00A0=30H 30H 41H 30H,表示的意思是Y7-Y0的地址,Y1只是其中的一个 位。
LEN因为00A0只有一个字节,所以可以去LEN=01D=30H 31H; 计算CHK校验码=36H 35H; 得到完成的数字代码为:02H 30H 30H 30H 41H 30H 30H 31H 03H 36H 35H; 返回代码:02H 30H 32H 03H 36H 35H 数据段为:30H 32H=02D=0010B 从Y7-Y0低往高排列可以知,Y1现在是状态值为1; 如果这里取LEN=2D=30H 32H 发送代码:02H 30H 30H 30H 41H 30H 30H 32H 03H 36H 36H; 返回代码:02H 30H 32H 30H 30H 03H 43H 35H 数据段为:30H 32H 30H 30H=0002B(低位先发,高位后发)=2D 从Y7-Y0低往高排列可以知,Y1现在是状态值为1;
代码编写步骤:(思路与上例一样) 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;
意高低位的转换。 CHK则为DATA,EXT两项的和累计的最后两位转化为ASCII。
2、位元件和字元件状态写操作;
操作对象元件:PLC内部的XYMSTCU元件
命令通用格式:STX CMD1 ADD LEN DATA EXT CHK
意义: 起始符 读命令 元件起始位 个数 写入的数据 停止符 校验码
如果为负数,则将其二进制取反加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);
数字代码格式:0X02 0X31
……
0X03 ……
0x031是写操作指令;
DATA是待写入PLC缓冲区的数据,低位先发,高位后发,以ASCII码的形式发送;
其他和读指令一样,此处不再重复;
发送后返回值为06,表示写入成功;
返回值为15,表示写入失败;
二、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;(只能读不能写,输入寄存器必须由外部信号驱动)
四、数据通讯VC代码编写分析实例:
例1:将IPC端3个数据: X=1003.5;Y=-4500;Z=-3.1456 写入PLC中
代码编写步骤:
1、将XYZ分别转化成整数,然后保存其小数位数,这里将XYZ分别都乘以10的N次方,直到其不
在
-32767-32767范围后分别保存乘以10的个数在N1,N2,N3中;
送; CHK是两位和校验,将CMD0,ADD,LEN,EXT三项进行和累计,将和累计的最低两位转化成ASCII,
高位先发,低位后发。 在发完上述命令格式代码后,就可以直接读取PLC响应返回的信息, 响应信息格式:STX DATA EXT CHK 意义: 起始符 接收的数据 停止符 校验码 数字代码格式:0x02 …… 0x03 …… DATA为我们需要读取的数据; 需要注意的是:读取DATA数据时遵循低位先发,高位后发的原则,所以我们解析数据的时候需要注
注意:全部过程中,PLC内部程序不需要做任何程序编写。
三、PLC读取IPC数据时:
数据通讯举例:
例1:PLC读取IPC内部参数X的值。 思路:1、先将X的值转化成数字代码形式。
2、再讲X的值发送写入PLC内部数据寄存器中; 3、然后PLC直接读取这个数据寄存器的数据。 设:X=2;数据写入PLC内部数据寄存器D0中 则DATA=X=2=0010H=31H 30H 30H 30H(低位先发,高位后发); ADD=31H 30H 30H 30H; LEN=02D=30H 32H.;(D为10进制;H为16进制) CHK=CMD1+ADD+LEN+DATA+EXT; =31H+31H+30H+30H+30H+30H+32H+31H+30H+30H+30H+03H=218H 则校验码为:31H 38H 完整的数字代码为:02H 31H 31H 30H 30H 30H 30H 32H 31H 30H 30H 30H 03H 31H 38H 返回值为06表示写入成功,PLC直接读取D0里面的数据即可。 完成PLC读取IPC数据。 当然这只是即时的读取,如果需要可控性的话,需要增加自定义读取和发送标志位,多加个数 据用来表示控制字节用。