求救!S7-200 PLC 与PC通讯的问题! 点击:1828 | 回复:16



nail

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 14回
  • 年度积分:0
  • 历史总积分:124
  • 注册:2003年5月20日
发表于:2003-08-02 20:26:00
楼主
请问: 我用VB与S7-200 PLC通讯,使用的是自由口协议,在单独测试VB发送给PLC的命令时,PLC很快可以响应;在单独测试PLC返回信息给VB时,也很快,可是,当把两段程序合到一起时,VB发送的命令就经常得不到响应,我应该怎样克服这个困难,应采用什么样的方法呢?请高手不吝赐教,最好说详细些,本人比较笨,呵呵!谢谢,这个问题比较急,大家一定要帮个忙!!!!



microtomato

  • 精华:1帖
  • 求助:0帖
  • 帖子:84帖 | 1476回
  • 年度积分:0
  • 历史总积分:2078
  • 注册:2001年11月02日
发表于:2003-07-21 21:03:00
1楼
VB不懂。估计是控件的问题,mscomm我没用过,如果不是事件驱动的就要出问题(plc响应过快,轮询方式反应不过来)。我用delphi下的spcomm,它是事件驱动的,我都用了几年了,没问题。

nail

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 14回
  • 年度积分:0
  • 历史总积分:124
  • 注册:2003年5月20日
发表于:2003-07-22 08:44:00
2楼
谢谢!VB程序接收数据是事件驱动,可是PLC里面有事件驱动设置吗?PLC程序我写的是发送空闲时便启动接收,每隔30秒便上上位机返回一个状态信息(需要实时显示工作状态,不知道这个时间设多少合适?),VB只在有按钮按下时才发送命令,现在问题可能是VB发送的时候,PLC也在发送,怎样克服这个问题呢?

关公

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 72回
  • 年度积分:0
  • 历史总积分:126
  • 注册:2003年7月07日
发表于:2003-07-22 11:33:00
3楼
主动权在上位机,既然知PLC在每个数据串中的结束标志就可以: 1. 设一个"允许发送"的全局变量,每次向PLC发送数据后,清除该变量。然后在Timer()循环中等待该标志重新出现并交出VB事件驱动控制权:DoEvents。 2. 在MsComm_Click()的接收段(设每字符处理一次)接收和串接好PLC回送的每个字符,当它满足串结束条件时,重置"允许发送"标志。 3. 时钟函数Timer()在给出的足够的正常时间(如3秒)中等待,这期间如"允许发送"被重置,立即跳出等待循环,转入数据分析处理。 4. 等待时间到后,如未见该标志,转重发数据或作出错处理。

孤虾

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 19回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2002年10月07日
发表于:2003-07-22 12:32:00
4楼
楼上的各位高手,我正在调试用VC编的自由通信协议,但是在调试过程中不能很好把握数据发送的格式,还请各位不吝赐教,举一个例子行不(譬如,让V100.1置1,怎么发送数据,由于我想用V来代替I,从而达到强制I的目的)

越搞越大

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 58回
  • 年度积分:0
  • 历史总积分:89
  • 注册:2002年4月15日
发表于:2003-07-22 12:55:00
5楼
VB与PLC通讯 其实楼主所说的问题是一个RS485是半双工的问题 收发得分时进行,PLC是有事件中断可以好好利用 我作下来速度绝对是可以接受的 楼主不方再摸索摸索

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-22 13:56:00
6楼
MSCOMM控件使用ONCOMM()事件 PLC一开始处于接收状态,发送完成后再回到接收状态 将上位命令送入接收缓冲区,利用接收完成中断处理 用字符或RCV指令都可以。 有几个子程序是必要的: 通讯初始化子程序 异或校验子程序 接收完成中断 发送完成中断 定时中断(用于发送数据,以获得PC/PPI电缆的状态转换,至少5MS) 上位命令按钮按下时发送或按下后定时发送也可。 nail:pc/ppi没有转换或协议不一致,发送接收不配和 一般都用事件驱动 上下位发送接收时间完全有你决定,可以做到最快,只要你的数据每次都能更新完。 发送的命令字由你决定,比如发送的字符为ascii码50,下位接收判断,为发送的50即‘1’, 让V100.1置1即可。 怎么能强制I呢?

nail

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 14回
  • 年度积分:0
  • 历史总积分:124
  • 注册:2003年5月20日
发表于:2003-07-22 14:39:00
7楼
孤虾:PLC18说的没错,在PLC中接收到的数据是ASCII码,你必须把它转换成16进制或者10进制处理,可以直接转换完了,把数据存入VB100,只要对应位你置1,则V100.1就可以被置为1,只是不明白你说的强制I是什么意思?你可以用 LD I0.0 O V100.1 = Q0.0 来代替I0.0的输入,这样,I0.0的输入映像和V100.1都可以实现Q0.0的输出啊! 关工的注意不错,发送的命令不会丢失,不过有时间会显的PLC动作反映迟钝,结果总是不能很让人满意,不知道是我的程序写的有问题还是RS485的半双工工作方式决定了这种状态??

关公

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 72回
  • 年度积分:0
  • 历史总积分:126
  • 注册:2003年7月07日
发表于:2003-07-22 16:11:00
8楼
单次发和收都没问题时,要关心的另一问题就是命令串的周期时间。千兆级的PC机处理区区几个字符,对付一个百兆级以下的PLC(它要执行机内工作指令和通讯指令)任务相比,显然是极不匹配的。如果PC机没事可做了,那就只好等待慢速设备。 大多数的PLC是用硬件中断去处理通讯任务的(包括PC机),太频繁的通讯量当然会影响PLC的反映速度。 在数据更新速度满足使用要求和减少通讯量之间作出平衡的一个特例,就是在一个时间调度模块中分配不同繁度的多个通讯任务,它是一个与PLC和控制任务对应的专用模块。

孤虾

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 19回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2002年10月07日
发表于:2003-07-22 19:48:00
9楼
plc18/nail:我说的就是用V来代替I,从而达到通过上位机来控制系统!另,大家能不能留下联系方式,以便和大家进一步沟通!

孤虾

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 19回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2002年10月07日
发表于:2003-07-22 19:57:00
10楼
plc18/nail:我的QQ为8509344,能不能把你们的QQ号留下,以便我向大家请教!

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-07-23 10:25:00
11楼
V和I的O,上下都能控制 NO QQ.

iask

  • 精华:0帖
  • 求助:0帖
  • 帖子:21帖 | 169回
  • 年度积分:0
  • 历史总积分:232
  • 注册:2003年2月14日
发表于:2003-07-27 12:40:00
12楼
你可以用timer控件,读的时候每500ms收发一次,写的时候终止timer,我用omron的plc实现没有问题,你可以把timer的时间尝试改小一点,这样速度更快,不过500ms够快的了,用组态软件的话可能还达不到.前些天我用s7-200手册上介绍的用自由口和pc通讯我调不出来,plc中的程序照办手册的,用vb编程,我猜是我在vb中发的命令有问题,不知楼主能否介绍以下,帮小弟一把,也请各位高手不吝赐教.

iask

  • 精华:0帖
  • 求助:0帖
  • 帖子:21帖 | 169回
  • 年度积分:0
  • 历史总积分:232
  • 注册:2003年2月14日
发表于:2003-07-27 12:40:00
13楼
你可以用timer控件,读的时候每500ms收发一次,写的时候终止timer,我用omron的plc实现没有问题,你可以把timer的时间尝试改小一点,这样速度更快,不过500ms够快的了,用组态软件的话可能还达不到.前些天我用s7-200手册上介绍的用自由口和pc通讯我调不出来,plc中的程序照办手册的,用vb编程,我猜是我在vb中发的命令有问题,不知楼主能否介绍以下,帮小弟一把,也请各位高手不吝赐教.

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-08-02 10:32:00
14楼
楼上的各位高手,我正在使用S7-200的PLC,也想使用VB作界面并实现通信,我手里只有S7-200、PC/PPI电缆和VB6.0的软件。请问我该怎么做?

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2003-08-02 10:32:00
15楼
楼上的各位高手,我正在使用S7-200的PLC,也想使用VB作界面并实现通信,我手里只有S7-200、PC/PPI电缆和VB6.0的软件。请问我该怎么做?

microtomato

  • 精华:1帖
  • 求助:0帖
  • 帖子:84帖 | 1476回
  • 年度积分:0
  • 历史总积分:2078
  • 注册:2001年11月02日
发表于:2003-08-02 20:26:00
16楼
找本编程手册,然后开始试验吧。

热门招聘
相关主题

官方公众号

智造工程师