首页 上一页 1 2 下一页 尾页

PLC通信调试基础 点击:2715 | 回复:35



老菜鸟

    
  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-18 10:51:16
楼主

对于现在的工业设备,PLC通信的应用是越来越多。

要让PLC和其它设备进行通信,无论PLC和什么设备通信,PLC也好、PC机也好、触摸屏也好、单片机也好、变频器也好,就必须先了解PLC的通信结构。先把PLC本身的通信调试通了,才能让它和别的设备进行联调。这就像设备组装一样,必须先保证每个配件是好的,才能组装上去,否则配件都不行,产品整体也就不行。

在这个帖子里,和大家谈谈关于PLC通信调试的一些问题,希望大家都来聊聊。




老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-18 10:53:07
1楼
现在的PLC,绝大多数都支持RS485通信。要调试PLC通信,请先仔细阅读该品牌该型号的PLC说明书,了解通信硬件和通信软件方面的东西。只有这样,才可以少走弯路。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-18 11:01:48
2楼

调试PLC通信的步骤:

1、对PLC进行编程,达到指定目标或模拟一个读写数据的功能。

2、下载程序,并把PLC置为运行状态。?

3、把PLC的通信端口与PC机连接起来。PLC采用D型9孔母头接口就用D型9针公头与其连接(例如西门子、欧姆龙PLC),PLC采用专用端口就用专用端子与其连接(例如三菱PLC)。PLC采用RS485通信就要采用RS232转RS485转换模块与电脑连接——采用原装西门子S7-200 PC/PPI电缆6ES7901-3CB30-0XA0这种RS232/PPI多主站电缆也应该可以连接。

4、在电脑上打开串口调试软件,在串口调试软件界面按指定的通信协议给PLC发送相应的数据,PLC就能收到对应的数据帧。启动PLC发送条件,在串口调试软件界面也能收到对应的数据帧。如果正确,就算调试完毕了。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-18 11:06:07
3楼
在下面我准备谈一下实例操作。在进行实例操作之前,建议弄清楚相关知识:总线结构、通信协议、数据校验等相关知识。如果不是太了解,建议参阅我发的相关帖子(嘿嘿,我本意可没有做广告哈):

RS232、RS422、RS485串行通讯标准总结:http://www.gongkong.com/Forum/ForumTopic.aspx?Id=2008101416431400002

RS485通信电缆与西门子S7-200系列PLC编程电缆:http://www.gongkong.com/Forum/ForumTopic.aspx?Id=2008101616245300007

原创:数据帧校验总结(CRC_LRC_PC_SC_S-XORC校验等) :http://www.gongkong.com/Forum/ForumTopic.aspx?Id=2008101411312700003

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-18 11:10:07
4楼
在下面以西门子S7-200系列PLC为例,来谈谈这个通信调试。

xlch1982

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 34回
  • 年度积分:0
  • 历史总积分:37
  • 注册:2008年4月01日
发表于:2008-10-18 15:03:08
5楼
研发,生产厂家直销RS232/RS485/RS422转TCP/IP(单口,2口,4口,8口)串口设备服务器,RS485/422中继器,RS232转RS485/422转换器.,嵌入式设备网络模块,智能模拟量/数字量采集器等等!
更多产品详情请查看WWW.ED-168.COM(深圳东方数码技术有限公司)
欢迎来电咨询,电话:0755-88865168-818 手机:15986604553 联系人:徐 生

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-20 19:50:00
6楼

PLC调试程序如下所示:。。。。。

唉,都半个小时以上了,都还发不了图,网站有点小问题。

沙漠的风雨

  • 精华:0帖
  • 求助:0帖
  • 帖子:24帖 | 461回
  • 年度积分:0
  • 历史总积分:1069
  • 注册:2003年10月23日
发表于:2008-10-21 08:37:10
7楼

学习了,支持楼主!!希望继续。。。。。。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 09:36:26
8楼

这个测试程序梯形图如下:

不好意思,我还是发不了图。。。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 09:53:47
9楼
这个测试程序梯形图如下:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 09:59:57
10楼

继续贴图,如下所示:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 10:08:34
11楼

接通PLC的I0.1,PLC就会每秒钟往外发送数据:3A 30 31 30 33 46 43 0D 0A

图片如下:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 10:18:22
12楼

断开I0.1,接通I0.2皆可以接收字符(I0.1和I0.2不能同时接通,也就是说PLC不能同时发送和接收,否则出错),接收的截图如下:

发送:11 22 33 44 55 66 77 38 24 0A

PLC的VB51开始的地址就存放接收到的数据

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 10:25:23
13楼

VB50存放的是接收到的数据长度,上面的截图是在短接I0.2不超过1秒时间就松开的——也就是说PLC还没有执行第二次RCV指令时的截图。

如果执行第二次RCV指令,而又没有给PLC发送数据的话,VB50的值就会变成0,不过VB51以后的数据不会变成0——要接收到数据才会刷新,没接收到数据时并不会去写存储器。

这是执行第二次或多次RCV指令,而又没有给PLC发送数据的截图:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 10:31:21
14楼

为了更好的理解数据传输,下面来看看PLC接收数据的一个特殊情况:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 10:41:42
15楼

在上图中,发送给PLC的数据是12个:11 88 A2 44 55 66 77 88 99 22 33 00

可PLC收到的数据只有10个数据而且对不上:11 08 22 44 55 66 77 08 19 22

这是为什么呢?

1、因为在程序中已经定义了SMB194设置接收的最大字符数为10个字节,所以PLC不会接收10个字节以外的数据——VB50的显示值依然是0AH,也就是10。

2、88、A2、99分别变成了08、22、19,这是为什么呢?实际上,这是因为发送和接收的数据格式采用的7个数据位而不是8个数据位,所以16进制大于等于80H的值都将减去80H——8个二进制数据的最高位没有接收嘛,那个第8位对于PLC和发送程序来说,根本就没有把它拿来处理。

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 10:47:16
16楼

另外,如果PLC接收到的数据小于SMB194定义的值,那么VB50显示的就是实际接收到的字节数;而且在这种情况下,没有接收到的数据存储器不被刷新——例如发4个数据,VB50变成4,VB51-VB54跟随实际值变化,而VB55之后到最大接收的存储器的值保持不变:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 11:05:02
17楼

如果要对PLC接收存储器清零的话,可以利用PLC程序把这些存储器清零,也可以给PLC发送数据00,来给这些存储器清零:

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 11:39:06
18楼

调试前:

打开“串口调试助手V2.2”,设置软件参数——串口号与实际对应(RS232转RS485转换器(电缆)插的COM1口就设置为COM1,插的COM2口就设
置为COM2),波特率为9600bps,7个数据位,偶校验,1个停止位,十六进制显示,十六进制发送。

串口调试助手的串口号设置为通信电缆插在电脑上的实际串口号(COM1或COM2),否则无法发送或接收;
串口调试助手的波特率、数据位、停止位设置必须与PLC程序中对自由口波特率、数据位、停止位的定义相同,否则显示出来的数据可能是不正确的。

sunny_side

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 220回
  • 年度积分:0
  • 历史总积分:265
  • 注册:2006年4月24日
发表于:2008-10-21 13:10:36
19楼
继续........................................................

老菜鸟

  • 精华:22帖
  • 求助:0帖
  • 帖子:301帖 | 8609回
  • 年度积分:0
  • 历史总积分:24924
  • 注册:2003年6月15日
发表于:2008-10-21 20:59:31
20楼

关于上面的例子,在接收的时候有个问题需要说明一下,因为接收的控制字设置中启动了空闲线检测,所以SMW190设置的时间没用——也就是说,只要没检测到结束字符,不会因为超时而中止接收。看下面的手册相关说明就会明白了。


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页