PC与三菱PLC的通信程序
用VB6.0实现PC机与三菱FX2n系列PLC编程口的通信
用VB6.0实现PC机与三菱FX2n系列PLC编程口的通信华 健 王国强(上海海洋大学 现教中心 上海 200316)摘 要: 介绍三菱FX2n系列PLC编程口串口通信的连接、通信协议、读/写命令和格式,用VB6.0实现读/写PLC数据寄存器的方法。
关键词: PC机;PLC;串口通信;Visual Basic 6.0中图分类号:TP391 文献标识码:A 文章编号:1671-7597(2012)1110175-013)控制字符。
0 引言PC机与三菱FX2n系列PLC的串行通信时,数据是以帧为单三菱公司的FX2n系列PLC(可编程控制器)具有可靠性位发送和接受的,控制字符ENQ(05H)、ACK(06H)、NAK 高、抗干扰能力强、使用方便等特点,广泛应用于工业控制和(15H)可以单独构成字符帧,其余的字符帧在发送或接受时数据采集等场合,由于PLC本身不具有显示和直接操作的功必须用控制字STX(02H)和ETX(03H)分别作为该帧的起始标能,在使用过程中,要监视PLC内部的运行状况和数据,可选志和结束标志,各控制字符的含义如表2所示。
用人机界面或组态软件,虽然它们使用方便、直观,但价格昂贵;PC机的数据处理、数据保存,报表打印等功能是FX2nPLC所不具有的,在PC机上我们用微软公司Visual Basic6.0的通信控件MSCOMM.OCX实现读取和修改PLC内部数据的功能,再利用Access 2003关系数据库系统保存采集的数据和PLC的运行参数。
要实现PC机与FX2n PLC的串口通信,有专用的FX2n-232-BD通讯模块,而三菱FX2n系列PLC自身所带的编程口在完成下4)报文格式。
载程序后就处于闲置状态,因此我们用编程口来实现PC机与FX2nPLC的串口通信。
1 通信的硬件连接三菱FX2n系列PLC的编程口是RS-422接口,PC机的串口通信口是RS-232接口,两者不能直接连接,要用三菱公司的SC-09适配电缆才能实现串口通信。
三菱plc与电脑网口通讯
三菱plc与电脑网口通讯在工业自动化领域,三菱PLC是一种常用的控制器设备。
它能够实现对生产过程的精确控制,并且方便易用。
而与电脑网口通讯则是一种将PLC与计算机连接起来的方式,通过这种方式可以实现对PLC的远程控制和监控。
在传统的工业自动化中,PLC往往独立工作,与其他设备进行直接连接。
然而,随着计算机技术的不断发展,人们迫切需要一种更加灵活、可靠的通讯方式。
而与电脑网口通讯就应运而生了。
与电脑网口通讯的好处不言而喻。
首先,它可以实现远程通讯,无需人们亲身到现场进行操作。
这对于那些危险环境或者遥远地区的工业场所来说是非常有益的。
其次,通过与电脑网口通讯,人们可以通过计算机进行更加精确的监控和控制。
计算机可以处理更多的数据,实现更复杂的算法,从而提高生产效率。
那么如何与电脑网口通讯呢?三菱PLC提供了丰富的通讯接口,其中就包括网口通讯。
通过使用网口通讯,我们可以将计算机与PLC相连,实现双向数据传输。
这样,我们就可以通过编写相应的软件程序,实现对PLC的控制和监控。
与电脑网口通讯的实现需要以下几个步骤。
首先,我们需要确保计算机和PLC在同一个局域网中,可以互相通信。
其次,我们需要选择合适的通讯协议和接口,例如TCP/IP或UDP等。
然后,我们需要通过编程语言(如C、C++或者Python等)编写相应的程序,实现与PLC的通讯。
最后,我们需要对通讯进行测试和调试,确保通讯的可靠性和稳定性。
在实际应用中,与电脑网口通讯可以应用于很多领域。
比如,在智能家居领域,我们可以通过与PLC的网口通讯,实现对家庭设备的控制和监控。
在工业自动化领域,我们可以通过与PLC的网口通讯,实现对生产线的远程操作和监测。
此外,在能源管理、交通控制、医疗设备等领域,与PLC的网口通讯也具有广泛的应用前景。
尽管与电脑网口通讯在工业领域中有着广泛的应用,但它也存在一些挑战和难点。
例如,通讯的稳定性和可靠性是值得关注的问题。
由于网络环境的复杂性和不确定性,通讯可能会受到各种干扰,从而导致数据传输的失败。
基于编程口的三菱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串口通讯
基于VB的三菱FX系列PLC与PC串行通信的实现
维普资讯
1 6
佛 山科 学技 术 学院 学报 ( 自然科 学版 )
维普资讯
第 2 6卷 第 3期
20 0 8年 5月
佛 山科学 技 术学 院学 报 ( 自然 科学版 )
J u n l f o h nUnv ri ( t rl ce c dt n o r a o s a ies y Nau a S i eE io ) F t n i
P I C发 出读数 据命 令 , I P c响应 命 令并将 数据 传 回上 位机 , 位 机通 过 渎通 信 口即可取 的所 需 数据 ; 上 写 数据 时 上位机 通 过通 信 口向 P I C发 出写命 令及数 据 , I 即可 接收 。当 P P c I c未能 正确 响应 时 , I P C返 回未能正 确 响应 标志 。在 该通 信协 议 下 , 据传 输 的一 般格 式如 下 : 数
中图分类号 : TP2 2 4 文献标识码 : A
P 因 可 靠 性 高 、 应 性 好 、 口功 能 强 、 态 灵 活 、 用 方 便 等 优 点 , 在 工 业 控 制 领 域 得 到 了广 I C 适 接 组 使 已
泛应 用 。但是 P I C无法 进 行复 杂 的运算 和 显示 各种 实 时控制 图 表 , 机 交互性 差 , 人 不便 于监 控 。在 当今
转换 , 图 1 示 。 如 所
图 1 系统 硬 件 结 构 图
2 P C 通 信 协 议 L
F 系 列 P X I C的 编程 口与上位 机 间 的 串行通 信采用 十六进 制 表示 的 AS I 码 进 行数据 传输 , 信 CI 通
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;
三菱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接口模块编程简单易学和安装简单等优点成为了现代工控领域运用极为广泛的工控产品
三菱PLC与PC连接步骤
1、A站地址:192.168.1.1. B站地址:192.168.10.2
C站地址:192.168.10.3 D站地址:192.168.10.4
E站地址:192.168.200.5
2、打开GX developer
3、点击online→read from PLC
4、
点击ok
5、
6、点击下边图标:(必须要点击两次,第二次将station置为比较大的数,一般为7)
7、点击下边图标
点击上图标后出现的对话框,按图示方式设置相关内容Station: A-1, B-2, C-3, D-4.
9、点击下边的图标
10、完成上边的所有设置后点击对话框右边的connection test
11、点击ok
12、点击param+prog,然后再单独选中Device Date,最后点击Execute
13、点击atch Setting 输入密码:YANG
14、Ctrl+F5 打开注解
F3 进入监视模式
15、若要修改则需要在Shift+ F3模式下进行:如下图:
修改必须要在Shift+ F3模式下进行,修改完成后用Shift+ F4(在线编译----convert online)写入PLC。
备注:所有的横线和竖线都必须要手工删除!
横线删除:Ctrl+ F9 竖线删除:Ctrl+ F10。
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
PC与三菱PLC之间的RS232通讯协议
IO通讯举例:
例2:IPC置位PLC内部位元件Y1 思路:1、确定Y1地址(读操作已说明); 2、就于写入的原理,需要先读取00A0的值; 3、将读取的值与0010进行&运算,确定Y1是否为0; 4、为0,则将读取值与0010进行或运算,再将得到的值转为数字代码形式发送给PLC; 为1,则表示内部Y1已经为1,不需要重复置位; 5、写入成功后返回06; 编写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写入成功。
二、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内部数据的全部过程。
PC与三菱PLC的通信程序
Module PLCtoPCPublic outdata() As Byte '定义发送数组,用来存放转换后的命令数据Public Rcvlen As Integer '定义接收到的数据长度Public Rcv() As Byte '定义接收数组,用来存放接收到的数据 Public inString As String '定义输入命令字符串Public RcvFinFlag As Boolean '定义接收完成标志Public ReadFlag As Boolean '标志定义读命令Public FinalDataLen As Integer '定义接收到数据的最终长度变量Public SaveString As String '定义输入命令暂存字符串变量Public P_duanFlag As BytePublic P2_duanFlag As BytePublic Rcvtemp As String '定义存放每次接收到的数据的暂存 Public outdata_1 As StringPublic Y(100) As Boolean''' <summary>''' 发送命令函数''' </summary>''' <param name="inString">指令</param>''' <remarks></remarks>Public Sub send(inString As String)Dim length As ByteRcvlen = -1 '接收数据存放数组的下标初始化 length = Len(inString) '求形参传递过来的字符串的长度 ReDim outdata(0 To length)ReDim outdata(0 To length + 1) '重新定义发送数据数组,其元素个数为length+1outdata(0) = &H2 '命令报文以控制代码STX开始outdata(length + 1) = &H3For i = 1 To length '字符串转换为ASCII码,送入发送数组outdata(i) = Asc(Mid(inString, i, 1))Next iCall FCScheck(outdata) '产生校验和,形成发送帧length = UBound(outdata) 'ReDim Preserve outdata(0 To length) '重新定义发送数据数组outdata_1 = BitConverter.ToString(outdata)frmParam.SerialPort1.Write(outdata, 0, outdata.Length) '发送命令帧frmPlc.ListBox1.Items.Add(outdata_1)End Sub'求和校验子程序Private Sub FCScheck(ByRef outdata() As Byte)Dim BufLen As Integer, Buf As String '定义字符串长度变量和字符串变量Dim i As Integer 'Dim CheckSum As Long '定义校验和变量BufLen = UBound(outdata) '求outdata数组可用最大下标CheckSum = 0 '初始化校验和 For i = LBound(outdata) + 1 To UBound(outdata) '求和时不包括的控制代码CheckSum = (CheckSum + outdata(i) And &HFF) '对outdata 数组的元素求和,只保留低位字节Next i'若校验和只有一位,则高位添零,补足为2Buf = IIf(Len(Hex(CheckSum)) = 1, "0" & Hex(CheckSum), Hex(CheckSum)) ReDim Preserve outdata(BufLen + 2)outdata(BufLen + 1) = Asc(Mid(Buf, 1, 1)) '校验和转换为ASCII 码,低位在前outdata(BufLen + 2) = Asc(Mid(Buf, 2, 1))End SubPrivate Sub Y0_Click(sender As Object, e As EventArgs) Handles Y0.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70005"flag += 1ElseinString = "80005"flag = 0End IfCall send(inString) '调用发送子程序End SubPrivate Sub Y1_Click(sender As Object, e As EventArgs) Handles Y1.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70105"flag += 1ElseinString = "80105"flag = 0End IfCall send(inString) '调用发送子程序End SubPrivate Sub Y2_Click(sender As Object, e As EventArgs) Handles Y2.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70205"flag += 1ElseinString = "80205"flag = 0End IfCall send(inString) '调用发送子程序End SubPrivate Sub Y3_Click(sender As Object, e As EventArgs) Handles Y3.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70305"flag += 1ElseinString = "80305"flag = 0End IfCall send(inString) '调用发送子程序End SubPrivate Sub Y4_Click(sender As Object, e As EventArgs) Handles Y4.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70405"flag += 1ElseinString = "80405"flag = 0End IfCall send(inString) '调用发送子程序End SubPrivate Sub Y5_Click(sender As Object, e As EventArgs) Handles Y5.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70505"flag += 1ElseinString = "80505"flag = 0End IfCall send(inString) '调用发送子程序End SubPrivate Sub Y6_Click(sender As Object, e As EventArgs) Handles Y6.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70605"flag += 1ElseinString = "80605"flag = 0End IfCall send(inString) '调用发送子程序End SubPrivate Sub Y7_Click(sender As Object, e As EventArgs) Handles Y7.Click Static Dim flag As BooleanIf flag = 0 TheninString = "70705"flag += 1ElseinString = "80705"flag = 0End IfCall send(inString) '调用发送子程序End Sub【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】。
三菱PLC链接PC教程
代號
是否開始 傳輸
ቤተ መጻሕፍቲ ባይዱ
傳輸中
B接點
函數 A接點 線圈
連線模式
連線 監控
螢幕 顯示
編輯 模式
讀取 模式
撰寫 模式
連線 修改
編輯完,但未 轉換格式,呈 反白色
元件 名稱
元件 樣式
格式 轉換 轉換 模式 格式轉換(全 部程式)
格式轉換 (連線轉換
編輯模式
增加一接點
刪除一接點
增加一行線路
刪除一行線路
由PLC下載程式至電 腦
由電腦傳程式至PLC (更新PLC程式)
選擇PLC類型(AX系 列同FX系列)
連線測試
選擇 COM1,COM2
開始連線
傳輸模式 選擇
PLC接點使用 範圍
開始下載
PLC程式 名稱 傳輸設定
PLC程 式內容
PLC程式 +內容
清除PLC程 式內容
輸入接點 指令名稱 輸出接點 內部接點 步進指令 計時器 起始編號 結束編號 進制 總數
尋找/接替模式
尋找說明 尋找步驟 尋找接點
尋找接點
接點名稱
尋找下一個
取消
由上往下找 由游標 往下找 由游標 往下找 尋找範圍的 指示
直接於畫面 按滑鼠右鍵
連線 模式
寫入 程式
PLC形式
傳輸 選擇 開始 上傳
程式名稱
PLC程式
開始 寫入
程式上傳時, 將PLC選於 STOP
程式上傳完 畢,將PLC 切換於 RUN
三菱PLC傳輸方式,大 綱已講解結束. 相信大家對上傳,下載 已有相當的了解…..
三菱PLC与PC上位机VB通讯
三菱PLC 与PC 上位机VB 通讯三菱 PLC : FX1N + FX1N-232-BDFX2N + FX2N-232-BD计算机: Windows XP 中文企业版 + Visual Basic 6.0中文企业版Windows 98中文版 + Visual Basic 6.0中文企业版两者之间连接使用的是 FX-232CAB-1电缆线(2-3,3-2,4-6( 8), 5-5).三菱PLC 的设置 三菱FX PLC 在进行计算机链接(专用协议)和无协议通讯( RS 指令)时均须对通讯格式(D8120)进行设定。
其中包含有波特率、数据长度、奇偶校验、停止位和协议格式等。
在修改了 D8120的设置后,确保关掉 PLC 的电源,然后再打开。
此外,对于采用 RS485形式1:N 计算机链接的还必须对站点号( D8121 )进行设定。
设定的范围从00H 到0FH (即0到15)。
在这里对D8120采用下述设置: b15 0110 1000 1000 1110 6 8 8 E即数据长度为7位,偶校验,2位停止位,波特率为 9600bps ,无标题符和终结符,采用计 算机链接(RS-232C ),自动添加和校验码,采用专用协议格式 同时设定站号为0。
具体设定如下所示:{M07 (MOVEMD二.上位机程序的编制这里采用 Microsoft 公司的 Visual Basic 6.0 Visual Basic 中提供了一个名为 MSCom 的通信控件便于设计串行通信的程序。
MSCom 控件的主要属性有: 1. Com mPort 属性Comm Port 属性用于指定所要使用的串行端口的号码。
虽然 Win dows 操作系统可以容纳最多256个串行通信端口,不过 Visual Basic 的MSCom 控件则仅限于16个端口。
2. Setti ngs 属性Sett in gs 属性用于设置初始化参数。
以字符串的形式设置波特率、奇偶校验、数据位、停 止位等4个参数。
三菱M70系统PLC与台式电脑连接
三菱M70系统PLC与台式电脑连接
概述
本文档将介绍如何将三菱M70系统PLC与台式电脑成功连接,以便进行数据传输和控制操作。
步骤
1. 确保你已经具备以下设备:
- 三菱M70系统PLC
- 台式电脑
- 编程软件(例如GX Works2)
2. 将PLC与电脑连接:
- 使用适当的通信线缆将PLC的通信端口与电脑的通信端口相连。
通信端口的类型可能会因PLC型号而有所不同,所以请根据
你的实际情况选择正确的线缆。
3. 配置PLC通信参数:
- 打开编程软件,并选择与PLC通信的端口。
在软件中,你可以找到通信设置选项,根据PLC型号和连接方式设置正确的通信参数。
4. 测试连接:
- 创建一个简单的测试程序,并将其上传到PLC中。
确保程序的发送和接收操作可以正常进行。
常见问题解决
- 如果连接失败,请确保通信线缆连接牢固,并再次确认通信参数的正确性。
- 如果仍然遇到问题,请参考三菱M70系统PLC的用户手册,或联系三菱客服以获取更详细的支持。
以上是将三菱M70系统PLC与台式电脑连接的简要步骤和常见问题解决方法。
根据实际情况进行操作和调试,确保连接稳定可靠。
如有进一步疑问,请查阅相关文档或寻求专业支持。
三菱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)个。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Module PLCtoPC
Public outdata() As Byte '定义发送数组,用来存放转换后的命令数据
Public Rcvlen As Integer '定义接收到的数据长度
Public Rcv() As Byte '定义接收数组,用来存放接收到的数据 Public inString As String '定义输入命令字符串
Public RcvFinFlag As Boolean '定义接收完成标志
Public ReadFlag As Boolean '标志定义读命令
Public FinalDataLen As Integer '定义接收到数据的最终长度变量
Public SaveString As String '定义输入命令暂存字符串变量
Public P_duanFlag As Byte
Public P2_duanFlag As Byte
Public Rcvtemp As String '定义存放每次接收到的数据的暂存 Public outdata_1 As String
Public Y(100) As Boolean
''' <summary>
''' 发送命令函数
''' </summary>
''' <param name="inString">指令</param>
''' <remarks></remarks>
Public Sub send(inString As String)
Dim length As Byte
Rcvlen = -1 '接收数据存放数组的下标初始化 length = Len(inString) '求形参传递过来的字符串的长度 ReDim outdata(0 To length)
ReDim outdata(0 To length + 1) '重新定义发送数据数组,其元素个数为length+1
outdata(0) = &H2 '命令报文以控制代码STX开始
outdata(length + 1) = &H3
For i = 1 To length '字符串转换为ASCII码,送入发送数组
outdata(i) = Asc(Mid(inString, i, 1))
Next i
Call FCScheck(outdata) '产生校验和,形成发送帧
length = UBound(outdata) '
ReDim Preserve outdata(0 To length) '重新定义发送数据数组
outdata_1 = BitConverter.ToString(outdata)
frmParam.SerialPort1.Write(outdata, 0, outdata.Length) '发送命令帧
frmPlc.ListBox1.Items.Add(outdata_1)
End Sub
'求和校验子程序
Private Sub FCScheck(ByRef outdata() As Byte)
Dim BufLen As Integer, Buf As String '定义字符串长度变量和字符串变量
Dim i As Integer '
Dim CheckSum As Long '定义校验和变量
BufLen = UBound(outdata) '求outdata数组可用最大下标
CheckSum = 0 '初始化校验和 For i = LBound(outdata) + 1 To UBound(outdata) '求和时不包括的控制代码
CheckSum = (CheckSum + outdata(i) And &HFF) '对outdata 数组的元素求和,只保留低位字节
Next i
'若校验和只有一位,则高位添零,补足为2
Buf = IIf(Len(Hex(CheckSum)) = 1, "0" & Hex(CheckSum), Hex(CheckSum)) ReDim Preserve outdata(BufLen + 2)
outdata(BufLen + 1) = Asc(Mid(Buf, 1, 1)) '校验和转换为ASCII 码,低位在前
outdata(BufLen + 2) = Asc(Mid(Buf, 2, 1))
End Sub
Private Sub Y0_Click(sender As Object, e As EventArgs) Handles Y0.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70005"
flag += 1
Else
inString = "80005"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub
Private Sub Y1_Click(sender As Object, e As EventArgs) Handles Y1.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70105"
flag += 1
Else
inString = "80105"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub
Private Sub Y2_Click(sender As Object, e As EventArgs) Handles Y2.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70205"
flag += 1
Else
inString = "80205"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub
Private Sub Y3_Click(sender As Object, e As EventArgs) Handles Y3.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70305"
flag += 1
Else
inString = "80305"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub
Private Sub Y4_Click(sender As Object, e As EventArgs) Handles Y4.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70405"
flag += 1
Else
inString = "80405"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub
Private Sub Y5_Click(sender As Object, e As EventArgs) Handles Y5.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70505"
flag += 1
Else
inString = "80505"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub
Private Sub Y6_Click(sender As Object, e As EventArgs) Handles Y6.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70605"
flag += 1
Else
inString = "80605"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub
Private Sub Y7_Click(sender As Object, e As EventArgs) Handles Y7.Click Static Dim flag As Boolean
If flag = 0 Then
inString = "70705"
flag += 1
Else
inString = "80705"
flag = 0
End If
Call send(inString) '调用发送子程序
End Sub。