您现在所在的是:

PLC论坛

回帖:7个,阅读:6551 [上一页] [1] [下一页]
967
风火之语
文章数:5
年度积分:50
历史总积分:967
注册时间:2005/3/10
发站内信
发表于:2005/3/14 12:05:00
#0楼
我现在正在做通过计算机来控制PLC,需要PLC与VC的通信协议,初学什么都不懂,请高手发一个给我,参考一个,谢谢!!!
1128
jsmymcn
文章数:62
年度积分:50
历史总积分:1128
注册时间:2004/11/17
发站内信
发表于:2005/3/14 14:52:00
#1楼
三菱PLC与PC机通讯的VB源程序

PLC与PC机通讯的VB源程序大体如下:采用的是FX232BD通讯模块,协议就是FX通讯协议。
‘强制PLC为RUN
Private Sub command1_Click()
Dim dat As String
commli.OutBufferCount = 0
commli.InBufferCount = 0
dat = "01FFRR0"
commli.Output = Chr$(5) + dat + SumChk(dat)

End Sub
‘强制PLC为STOP
Private Sub command2_Click()
Dim dat As String
commli.OutBufferCount = 0
commli.InBufferCount = 0
dat = "01FFRS0"
commli.Output = Chr$(5) + dat + SumChk(dat)

End Sub
‘强制Y0为1
Private Sub command3_Click()
Dim dat As String
commli.OutBufferCount = 0
commli.InBufferCount = 0
commli.Output = “01FFBW0Y001011”

End Sub
‘强制Y0为0
Private Sub command3_Click()
Dim dat As String
commli.OutBufferCount = 0
commli.InBufferCount = 0
commli.Output = “01FFBW0Y001010”

End Sub



''设置电脑通信参数
Private Sub Commlis()

If commli.PortOpen = True Then
commli.PortOpen = False
End If
If Not commli.PortOpen Then
commli.CommPort = 1 ''通信口
commli.Settings = "9600,N,8,1"
commli.Handshaking = 0
commli.InputLen = 0
commli.OutBufferCount = 0
commli.InBufferCount = 0
commli.PortOpen = True
End If
Exit Sub



End Sub
Private Function SumChk(Dats$) As String
Dim i&
Dim CHK&
For i = 1 To Len(Dats)
CHK = CHK + Asc(Mid(Dats, i, 1))
Next i

SumChk = Right(Hex$(CHK), 2)
End Function

好男人不会让心爱的女人受一点伤害
1509
shenhong
文章数:257
年度积分:50
历史总积分:1509
注册时间:2004/3/27
发站内信
发表于:2005/3/14 20:50:00
#2楼
三菱FX系列PLC编程口通信协议总览
该协议实际上适用于PLC编程端口以及 FX-232AW 模块的通信。
通讯格式:
命令 命令码 目标设备
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;
累加和超过两位取低两位
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
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

PLC返回
ACK(06H) 接受正确
NAK(15H) 接受错误
设备强制中的地址公式:Address=Address/8+100h

说明:
1.帧中的BYTES表示需要读取或者写入的字节数。
2.地址算法上有说明。
3.累加和是从STX后面一个字节开始累加到ETX的和。
三菱FX系列PLC编程口通信源代码
fx_comm.h
FX系列PLC四种通信模式的特性
  首先讲讲FX系列PLC的通信方式。
  FX系列PLC根据使用的通信模块与协议不同,分为以下四种通信模式:
  1、PLC的N:N通信方式
  2、PLC双机并联通信方式
  3、PLC与计算机专有协议通信方式(无须梯形图,电脑直接读写操纵PLC)
  4、PLC与计算机无协议通信方式(梯形图RS指令方式,可自定义通信协议)
  以下将详细列出各通信模式的特性:
  N:N网络 PLC并联 专用协议计算机连接 无协议通信
传输标准 RS485 RS485/RS422 RS485/RS422或RS232
传输距离 500m RS485/RS422:500mRS232:15m
连接数量 8站 1:1 1:N(N<=16) 1:1
通信方式 半双工 FX,FX2c,FXon:半双工FX2n: 全双工
数据长度 固定 7bit/8bit
校验 无/奇/偶
停止位 1bit/2bit
波特率 38400bps 19200bps 300/600/1200/2400/4800/9600/19200
头字符 固定 无/有效
尾字符
控制线 ------
协议 --- 格式1/格式4 无
和校验 固定 无/有效
适用机型 FX2n,FXon FX2n,FX,FX2c FX2n,FXon,FX,FX2c
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专用协议通信指令格式详解
 约定说明:
     ENQ为请求标志,ASCII值5,VB中以chr(5)表示;
     ACK为正确标志,ASCII值6,VB中以chr(6)表示;
     STX为请求标志,ASCII值2,VB中以chr(2)表示;
     EXT为请求标志,ASCII值3,VB中以chr(3)表示;
     表格中红色字为需要求和效验的部分;
     和效验为每一项的ASCII值的总和转换成十六进制后区低两位;
     站号、PLC号、元件数量、和效验都是以十六进制表示;
     等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH。
  1、批量读出位元件--BR指令
    格式:
1 2 3 4 5 6 7 8 15 16 17
PC侧: ENQ 站号 PLC号 BR 延时 首地址 数量 和效验 ACK 站号 PLC号
PLC侧: STX 站号 PLC号 数据 EXT 和效验
9 10 11 12 13 14
   [注] 上述中:1、"PLC号"系统默认为"FF";2、"首地址 "应以十进制表示,如首地址"X0018"表示从X寄存器的第18地址单元开始读取I/O量;3、"数量"表示读取的I/O量个数;4、"和效验"是指从"站号"到"数量"之间的各代码的ASCII码的累加和;5、PLC侧的响应码中"和效验"是指从"站号"到"EXT"之间的各代码的ASCII码的累加和。6、可以读出"X"、"Y"和"M"寄存器的内容。
例如:要读出站号为0的Fx2n系列PLC的X00到X08共9点的状态值,延时100ms,假设采用Communication Format(D8120)的Format 1 方式::
注  释: 请求 站号 PLC号 命令 延时 元件首地址 元件数量 和效验
代  码: ENQ 0 0 F F B R A X 0 0 0 0 0 9 4 2
ASCII码: 05H 30H 30H 46H 46H 42H 52H 41H 58H 30H 30H 30H 30H 30H 35H 34H 32H
  您只要将以上兰色部分的代码以字符串形式(VB中可以表示为CHR(5)&" 00FFBRAX00000942")发送到PLC,就会有正确的回应信息,如下:
注 释: 头 站号 PLC号 元件首地址 尾 和效验
代 码: STX 0 0 F F 0 0 1 1 0 1 1 0 1 EXT 0 5
ASCII码: 02H 30H 30H 46H 46H 30H 30H 31H 31H 30H 31H 31H 30H 31H 03H 30H 35H
  若发送码有误,则有以下回应:
注 释: 头 站号 PLC号 和效验
代 码: NAK 0 0 F F 0 6
ASCII码: 15H 30H 30H 46H 46H 30H 36H

2、批量读出字元件--WR指令
  格式:
1 2 3 4 5 6 7 8 15 16 17
PC侧: ENQ 站号 PLC号 WR 延时 首地址 数量 和效验 ACK 站号 PLC号
PLC侧: STX 站号 PLC号 数据 EXT 和效验
9 10 11 12 13 14
  该命令使用方法与1(BR)命令相同,不再赘述。
  3、批量写入位元件--BW指令
  格式:
1 2 3 4 5 6 7 8 9
PC侧: ENQ 站号 PLC号 BW 延时 首地址 数量 写入值 和效验
PLC侧: ACK 站号 PLC号
10 11 12
  4、批量写入字元件--WW指令(M寄存器100单元置"1")
  格式:01FFWWAM01000100010C
1 2 3 4 5 6 7 8 9
PC侧: ENQ 站号 PLC号 WW 延时 首地址 数量 写入值 和效验
PLC侧: 05H 01 FF A M0100 01 0001 0C ACK 站号 PLC号
10 11 12
 请自行分析以上代码。
请继续关注如何控制PLC的运行/停止。
1041
马成
文章数:11
年度积分:50
历史总积分:1041
注册时间:2004/3/18
发站内信
发表于:2005/3/15 10:30:00
#3楼
hao!
1010
雨中漫步
文章数:37
年度积分:50
历史总积分:1010
注册时间:2004/11/9
发站内信
发表于:2005/3/17 23:48:00
#4楼
强啊
957
lrx1982
文章数:3
年度积分:50
历史总积分:957
注册时间:2005/4/27
发站内信
发表于:2005/4/27 10:24:00
#5楼
大家好,我做毕业设计要用VB编一个界面控制PLC,涉及到VB与PLC通信的问题,但是我这方面知识很少,我感到很困惑,哪位高人能帮帮我?我用的欧姆龙的PLC,我qq是76401246,邮箱是ni.shi984@163.com,谢谢
1017
fengyq411
文章数:66
年度积分:50
历史总积分:1017
注册时间:2002/12/8
发站内信
发表于:2005/5/5 13:58:00
#6楼
给我也来一份,謝謝
fengyq411@126.com
1078
cclgd
文章数:31
年度积分:50
历史总积分:1078
注册时间:2007/5/11
发站内信
发表于:2007/5/11 11:38:00
#7楼
to 二楼 jsmymcn
   你好 能不能把你完整的VB编写的PLC与PC的串口通信程序给我发一份!非常感谢!
  caixia336@sina.com          QQ 35270153


[此贴子已经被作者于2007-5-11 11:38:43编辑过]

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

124.8008