QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 3494|回复: 11
收起左侧

[已解决] 请问能把电脑做为PLC的显示屏么?

 关闭 [复制链接]
发表于 2009-5-17 21:24:42 | 显示全部楼层 |阅读模式 来自: 中国陕西西安

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
如题,就是说,三菱的PLC能不能直接和电脑通信,将电脑当做人机界面来用?2 E) m/ Q. A/ _
只是用做演示,可以吗?: e% ~' }( z  `6 n
如果可以,需要用什么软件呢?* S. O, C* d$ {& q5 ]. g( N5 N
谢谢各位高手
发表于 2009-5-17 22:29:34 | 显示全部楼层 来自: 中国浙江杭州
没听过可以!楼主可以上网上查查看有没
 楼主| 发表于 2009-5-17 22:36:28 | 显示全部楼层 来自: 中国陕西西安
谢谢~( J# X4 R% l* F
我就是没查到什么才上论坛问的~
# I, c0 W/ M- e5 m3 [+ z请教大家~~
发表于 2009-5-17 23:42:53 | 显示全部楼层 来自: 中国北京
三菱的PLC可以直接和电脑通信,软件要自己设计。
/ V6 \- j2 r/ s5 s0 g8 J. S; aPC与PLC通讯程序的设计。此部分的开发设计较难,需要掌握PC和PLC的有关通讯硬件驱动和通讯协议的知识。但对于小型控制系统来说,主要通过PC串口来通讯,所以通讯程序设计的关键是如何利用Visual Basic 6.0中的串口通信控件——MSComm控件,并根据PLC的串口通信协议设计出上下位机的数据交换程序。4 a7 D& f( K9 S2 y/ B
PC与PLC通讯程序设计分析
# W  B3 P" o& F. y! s+ ]" u4 m在分析具体的VB通讯程序之前,先要介绍有关VB串口通信控件MSComm的应用知识和三菱PLC 通讯协议。
- n8 S6 p5 w! Y6 s3 u1. MSComm控件简介
3 Z  m. q2 W& Y8 O如图所示是Mscomm控件的图标。
' M* G8 L8 E& a* w2 R: Q$ t; ^它可以用来提供简单的串行端口通信功能,也可以用来创建功能完备、事件驱动的高级通信工具。 Mscomm控件提供了一系列标准通信命令的使用界面。使用它可以建立与串行端口的连接,通过串行端口再连接到其它设备(如调制解调器、PLC),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。7 n9 c( l0 a9 \+ [- C1 w
2. MSComm控件的基本属性
' P: l. z6 B/ e! n( b6 Q" zMSComm 控件有很多重要的属性,基本属性如下:1 H5 t  b' u3 _" O5 E
属性     描述
2 G" ^2 S/ j! {0 oCommPort    设置并返回通讯端口号。
% [3 ~4 g4 h6 s3 f1 f7 b% cSettings     以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 6 e9 n) D2 h1 D6 S" s# c/ t
PortOpen    设置并返回通讯端口的状态。也可以打开和关闭端口。
5 \$ e8 W) I: O/ M, H5 i5 o6 AInput     从接收缓冲区返回和删除字符。
$ {: F. O5 `" u5 ]0 |Output     向传输缓冲区写一个字符串。& P% Z# S; P2 Y! ~7 w  k) Q
如下程序打开串行端口COM1
4 ~5 R( J* o- c6 H( U) Y* ~3 Y8 bMSComm1.CommPort = 1         使用 COM1
3 p8 p  E8 W# j$ C, D! X- Q1 cMSComm1.Settings = "9600,N,7,1"   9600波特率,无奇偶校验,7位数据,一个停止位。$ a$ L: _. n8 @0 _% [
MSComm1.PortOpen = True   ''打开端口,开始通信。
1 P. H, [% v# c! G1 ?3. MSComm控件的通信方式
" Y/ X* q, G+ e. `通信控件有2种不同的方式来处理和解决各类通信软件的开发和设计问题。" N- c8 k) ~& r2 e
(1) 事件驱动
6 j$ e" h( t) P6 m- l事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如:当线路数据到达本端或CD线和RTS信号线状态发生变化时,要求我们使用相应的事件来跟踪和出理。在这些情况下, Mscomm控件将触发OnComm事件,CommEvent属性值也将被改变。所以在OnComm事件中读取CommEvent属性值就可以检测和处理通信错误等方面的问题。' i3 B1 S0 ^* y2 i6 l! t  M4 D
(2)查询方式
2 g! T1 Z& ?3 O3 B5 q9 c! ^/ C/ Q利用定时器控件Timer,我们可以设计程序每隔一段时间去读取CommEvent的值并处理所发生错误和事件。% w4 R6 X. k  D/ v2 s4 O
4. 本实例中采用的通讯方式
9 E# l1 V9 |& w% |, {& W$ T) \; B: M在本例子中,PC与PLC 采用无握手协议的串行通信,它们只用两根数据线 TD和RD、一根信号地线连接,数据通信采用查询方式。根据系统功能要求,PC需发送两种类型的命令:' ~8 x" R& R8 P& u
(1) 周期性命令,它由定时器触发引起,每隔0.5秒发送一次。用它来向PLC查询实时显示的数据。如酒、水的瞬时流量,调节阀开度等。
/ E3 U) Y  O4 g2 b. k/ t! Z(2) 非周期性命令,它由操作者按动命令按钮引起,非周期性发送。用它来传送输入参数、操作命令给PLC 。" l, C! x2 P% t
在啤酒稀释的人机操作界面中,有运行时不可见的通信控件(MSComm1)一个、定时器控件一个Timer1。通信控件(MSComm1)用于初始化串口数据并打开串口;定时器控件(Timer1)用于每隔0.5秒执行通讯命令,把查询命令从 PC发送到PLC,同时接收PLC返回的应答数据。设计通讯数据的发送和查询功能,必须掌握PLC所遵循的通讯协议。
! w& Q5 O/ |: ^8 m% @# Z: E5. 三菱FX系列PLC通讯协议5 a) `7 O  J$ [$ B* L# o8 Z& O1 D' ~
三菱FX系列PLC共有四种通信模式,本实例采用的是PLC与计算机专用协议通信方式(无须PLC编程,电脑直接读写操纵PLC),其通讯命令字和通讯格式介绍如下:: ~; r# N2 z+ [7 V2 w
PC发送给PLC的通信命令字
& `4 _' F9 f  U4 n4 N命令字 注释
$ O) C) f% t/ j( t% ]' jBR 以1点为单位,读出位元件的状态5 i1 g) O/ W# t: S$ O9 i; l
WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值
! q; l5 H$ d2 V% v( MBW 以1点为单位,写入位元件的状态
6 \1 ]* v' ^/ y  M9 E, S7 e- eWW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件
) w7 H& J% Q% \1 Y5 ABT 以1点为单位,设置/复位 位元件7 |# d" _7 y- l5 {# [
WT 以16点为单位,设置/复位 位元件,或以1字为单位,写入值到字元件! b6 i- N) J- H8 L% ]
RR 控制PLC运行RUN  p/ M7 G: o7 g$ f- D+ l& E: ^
RS 控制PLC停止STOP' A+ U0 M- n& ], l8 l  J0 h, P' E
PC 读出PLC设备类型; a- Z) r. h8 @. b
TT 连接测试: s. ~( |. Q, X; A  j2 [1 r4 M
PC发送给PLC的通信命令格式1 L/ Q% e8 E& z
约定说明:ENQ为请求标志,ASCII值5,VB中以chr(5)表示;
) j& e7 ~/ m: a% s     ACK为正确标志,ASCII值6,VB中以chr(6)表示; ! I, a# h: |% w7 i
     STX为请求标志,ASCII值2,VB中以chr(2)表示;; `# S% I  Y+ s
     EXT为请求标志,ASCII值3,VB中以chr(3)表示;
# Z8 g1 j: m. ]     表格中粗体字为需要求和效验的部分;
  ~! V( l) y2 v1 h  V     和效验为每一项的ASCII值的总和转换成十六进制后,取其低两位;
' o1 r- z# R# B8 b" K     站号、PLC号、元件数量、和效验都是以十六进制表示;
; p: \: v" |+ t! }       等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH。
" Z4 O6 @2 \9 N1) 批量读出位元件—BR指令格式8 G& B6 _: ^- d( r
1 2 3 4 5 6 7 8       15 16 17
/ O) N! \! Z2 G! |; D! uPC侧: ENQ 站号 PLC号 BR 延时 首地址 数量 和校验       ACK 站号 PLC号
( a, C. Z) [! u: N+ qPLC侧:         STX 站号 PLC号 数据 EXT 和校验   
4 l% U4 j8 d8 L! I2 v/ @% E         9 10 11 12 13 14   
9 I  ]. a* f8 T' ~+ T' S! ?例如:要读出站号为5的PLC的X40到X44共5点的状态值,延时100毫秒,假设PLC中X40与X43为OFF,其余为ON,则指令数据如下:7 E8 r' s5 H( g, Y- l8 U! _3 g
注释: 请求 站号 PLC号 命令 延时 元件首地址 元件数量 和校验
; w7 Q4 Z& t- u$ _% W6 K) K2 v代码: ENQ 0 5 F F B R A X 0 0 4 0 0 5 4 7
4 J8 f( o. a; i5 m, S( m9 VASCII码: 05H 30H 35H 46H 46H 42H 52H 41H 58 30H 30H 34H 30H 30H 35H 34H 37H& i" j) n+ @  ?
只要将以上代码以字符串形式(VB中可以表示为chr(5)&”05FFBRAX00400547”)发送到PLC,就会有正确的回应信息,如下:
: T6 l! L, x  S# ^5 g7 @9 `4 O) m" J注释: 头 站号 PLC号 位元件状态值 尾 和校验$ Q* _% k7 \# ~" f: c% P+ M
代码: STX 0 5 F F 0 1 1 0 1 EXT E 7" P, f  z  ]% J6 w9 {
ASCII码: 02H 30H 35H 46H 46H 30H 31H 31H 30H 31H 03H 45H 37H
; E' z. t! p( `6 s0 ~, Y/ l1 `2) 批量读出字元件—WR指令格式. H4 x9 o$ O0 R! g4 D
1 2 3 4 5 6 7 8       15 16 17
! J; y* I2 j; Q- T, G4 sPC侧: ENQ 站号 PLC号 WR 延时 首地址 数量 和校验       ACK 站号 PLC号
$ G- W* X$ A! DPLC侧:         STX 站号 PLC号 数据 EXT 和校验   
. E1 N0 j# p/ i% J) Z. ?! P3 J         9 10 11 12 13 14   
3 |( h* l5 W) Z# J/ F- T该命令使用与BR命令相同。4 N1 |6 K+ n( u4 P" d
3) 批量写入位元件—BW指令格式  - i3 t8 p% h) W$ }
1 2 3 4 5 6 7 8 9   
7 }& `4 w/ C; x3 ]9 XPC侧: ENQ 站号 PLC号 BW 延时 首地址 数量 写入值 和校验   
3 l3 [7 W; w8 w" G3 [PLC侧:          ACK 站号 PLC号
8 @7 c7 C. M: g- M3 f  X+ d- M          10 11 12
4 C3 z# E! M6 J" p4) 批量写入字元件—WW指令格式1 ^% j+ |% F2 }: r- U
1 2 3 4 5 6 7 8 9   & r! E' s0 Q7 K( L. r. V5 i" `+ l
PC侧: ENQ 站号 PLC号 WW 延时 首地址 数量 写入值 和校验   
0 b. I" p4 }1 f: n! B0 i6 D6 iPLC侧:          ACK 站号 PLC号
0 r6 N. w9 ]- l' `; b  s; Z          10 11 12
+ C- N' Z) F* \" L' v6. VB通讯功能块设计分析; B# R0 `2 v$ k4 ]+ A5 e0 {* c1 z$ t
根据三菱PLC的通讯指令格式,在PC中编写数据查询功能块RevData( )和数据发送功能块SendData( ),就可以在定时中断处理块TIMER1( )中调用查询功能块RevData( ),实现PC界面数据定时刷新;在每一次操作命令执行时,调用数据发送功能块SendData( ),把控制值写入PLC中,从而实现控制。下面给出这两个功能块的设计程序。4 |; W7 ?4 N6 I7 i: X  h: P
1) 查询数据函数RevData( ). I) I$ p  J1 [7 o/ t( l
(没有和校验)
) r9 ]) ?# n/ {" h, r7 mSub  RevPLC (iNo As String, iType As String, iAdd As String, iNum As String)3 D$ x9 K  n5 H
'' iNo为PLC站号,iType为元件类型,iAdd为首地址,iNum为元件数量: O' K; ?' L& R: D8 v7 K
Dim Stmp As String
6 s2 N! T' q- q+ l6 D- bDim cha, j As Integer
. Y5 ^3 z) |8 ~. B. u8 s4 rDim ChaCount As Integer, r2 a4 h! l/ w* L6 ?; n
Dim Comm As String
: H8 c( n. v4 n- qSelect Case  iType9 ?* a9 g! C7 }
Case "D"          ''查询数据寄存器的值
8 J3 p; c5 i0 \, `+ i" }7 U. uComm = "WR"       ''命令类型:数据字读/ p- ~- z% O% }+ K, }/ ^* ~+ P
cha = Val("&H" & iNum) * 4      ''数据寄存器的值为十六进制表示,占4个字符
8 G1 w: r' u7 H$ t% e+ CCase "M", "X", "Y"     ''查询继电器触电的值
, u  U8 e3 U" F9 PComm = "BR"      ''命令类型:二进制位读8 J  I9 ?7 c* o+ J( Q
cha = Val("&H" & iNum)8 R3 m& m, h4 c1 K- A
End Select/ d3 _* n. h! Y: L
iAdd = Right$("000" & iAdd, 4)
# \: x1 W. m( e2 ~2 ^iNum = Right$("0" & iNum, 2)" S3 p8 F4 [/ u+ C9 r
Stmp = Chr$(5) & iNo & "FF" & Comm & "A" & iType & iAdd & iNum    ''输出命令格式
% p) a. V& Q5 _2 OChaCount = 6 + cha  ''要返回字符个数9 k) A7 w# g/ Z& ?: p. C% Y
main.MSComm1.InBufferCount = 0  ''输入缓冲区清零
6 ?: k# R2 J" vmain.MSComm1.Output = Stmp  ''设传送缓冲区内容为命令格式, Y3 W8 F9 x5 v# L' m
Now=Second(), _( k1 x9 q% ]5 I  H
Do1 |% v9 O# o5 B, J" V$ P
DoEvents              ''转让控制权,以便让操作系统进行数据传输
; n2 T" }* K* }+ c4 J7 h" ?2 z' C4 ^) b' cIf  Second()-Now>1  Then  Exit  Sub
/ t+ q2 |! l3 A) e2 S/ t8 z- |Loop Until main.MSComm1.InBufferCount = ChaCount  ''当接收到规定字符时停止循环7 Y! {6 {2 _9 E( H( N3 [# r9 o
RevDataTmp = Mid$(main.MSComm1.Input, 6, cha)     ''返回数据字符串保存在全局变量1 M8 Q% n5 R0 ?3 a6 @
''RevDataTmp中
, B2 s7 W' a8 |! r7 b/ n% EEnd Sub
/ w$ z( S0 D2 O7 B  o  k& y2) 发送数据函数SendData( ). {4 _6 h2 R3 C2 E( n' G7 _
(没有和校验)
( W8 W8 j4 a. \& p, f9 K$ }Sub SendPLC(iNo As String, iType As String, iAdd As String, iNum As String, iValue As String)6 D: ~$ s3 s* D( M' S- J
'' iNo为PLC站号,iType为元件类型,iAdd为首地址,iNum为元件数量,iValue为写入值
! \2 W( f- E; s* EDim Stmp As String
1 f. c' G* M0 l& WDim Comm As String) N. O4 M6 l# Q  m& z9 E
Select Case  iType' L1 V) N9 e( K4 K; N* J1 e5 J: h! C
Case "D"          ''写数据寄存器的值& C# o. d6 R6 e
Comm = "WW"        ''命令类型:数据字写
% g: H: y8 S8 \4 U" |+ T& k& ^* b# k* W$ miValue = Right$("0000" + Hex$(Val(iValue)), 4)  ''写入值转换成十六进制表示4 N/ m8 c1 O; U1 X5 k% A7 t2 ~0 p1 O
Case "M"          ''写继电器触点的值
  j! Q& ~6 m- c  i9 gComm = "BW"        ''命令类型:二进制位写$ e* P0 q2 r1 M
End Select% s- t0 @8 L2 h/ E& B
iAdd = Right$("000" & iAdd, 4)! l- B) `2 }# E' O
iNum = Right$("0" & iNum, 2)7 t) Z' T( [# Q: Y
Stmp = Chr$(5) & iNo & "FF" & Comm & "A" & iType & iAdd & iNum & iValue  ''输出命令格式
6 d8 {9 F+ G4 s# oMSComm1.Output = Stmp                   ''输出命令到传送缓冲区1 h( w" v, n, g: Z1 r3 O
Now= Second()- |, {: f' c% z0 y
Do
$ c3 P" f& W4 S+ {: UDoEvents                                ''转让控制权,以便让操作系统进行数据传输: S* R4 T, _( y
If  Second()-Now>1  Then  Exit  Sub" y; j- q; E5 M& B6 t! i
Loop Until main.MSComm1.OutBufferCount = 0   ''当命令传送完时停止循环
% s4 u. A2 @, J  ?3 `End Sub

评分

参与人数 1三维币 +3 收起 理由
yqwfk + 3 正解

查看全部评分

发表于 2009-5-18 14:52:03 | 显示全部楼层 来自: 中国湖北武汉
三菱的PLC和电脑之间是肯定可以互相通讯的,因为我用过电脑对三菱的PLC进行编程。但如何显示,我就不知道了。
发表于 2009-5-19 09:54:57 | 显示全部楼层 来自: 中国广东广州
可以,但不是很容易。
发表于 2009-5-19 16:49:25 | 显示全部楼层 来自: 中国广东佛山
利用软件VB和delphi语言都可以,也不是很难的
发表于 2009-5-19 20:42:06 | 显示全部楼层 来自: 中国福建龙岩
海泰克的SoftPanel,要软件狗,否则只能运行半小时
发表于 2009-5-19 21:57:12 | 显示全部楼层 来自: 中国浙江宁波
可以,我们公司就是用日本三菱的FX-1N-24MR的PLC,先用电脑编程好,然后转入PLC,没有错误可以直接进行扫描,测试!
发表于 2009-5-20 07:48:26 | 显示全部楼层 来自: 中国广东江门
主要要谢谢毛毛的解释。你真是不错。
发表于 2009-5-20 08:01:34 | 显示全部楼层 来自: 中国河南南阳
有种屏与232口连接,用手在屏上可以当做鼠标来用,不知道合适不?
发表于 2009-5-20 20:57:06 | 显示全部楼层 来自: 中国北京
没看明白
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表