当前位置:
工控论坛
> >
产品
>
PLC
我要发帖
PLC与PC计算机通信
点击:
2723
| 回复:
18
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-10-30 09:41:00
楼主
请问,我的PLC与PC计算机通信采用RS-232无协议通信方式(梯形图RS指令方式,可自定义通信协议),目前,PLC中串行通信程序已编出,听说PC机那块还要编程(用VB或VC++),才能最终实现通信,是不是类似自己编通信协议,究竟应该怎么弄,我不太清楚,望各位工控前辈指点一下!
分享到:
收藏
邀请回答
回复楼主
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-04-20 14:57:00
1楼
VB用MSCOMM控件或者用WIN32 API自己写。
回复
引用
举报
叶磊
关注
私信
精华:1帖
求助:0帖
帖子:11帖 | 269回
年度积分:0
历史总积分:766
注册:2002年12月05日
发表于:2003-04-20 21:59:00
2楼
PC机的串口和PLC的串口一样,也需要对其编程才能实现数据的收发。看来PLC的通讯程序应该不是你自己编的,最多是依葫芦画瓢,因为你对串行通讯好象还没建立起基本的概念。:) 在你这个项目里面,上位机通讯程序的作用就是接收PLC送过来的数据,也可能还要向PLC发送数据。你所说的“无协议通讯”实际上真正的含义应该是“未采用业界现行的一些标准通讯协议 (比如Modbus协议),而是按自己定义协议编写程序”。 所谓“通讯协议”的概念说白了实际上就是对如下一些问题作出明确的约定: 1、上位机于下位机之间需要交换哪些数据 2、按什么格式发送这些数据 我这里来举两个简单的通讯协议的例子,希望以此能让新入行的师弟师妹们对“通讯协议”这个看上去很深奥,其实很简单的东东能有个清楚的认识 例1:某项目中,PLC需要每隔1秒钟把一个温度测量值送往上位机, 上位机不需要向PLC返回任何信息。 分析:这是个最简单的通讯协议的例子,发送对象只有一个,所以我们在通讯协议中只需把这么几条说清 楚就可以: 1、所发送数据的含义 比如你PLC发来一串字符“1234”,作为上位机首先需要知道的当然是“PLC送来的这个数值是什么数 据"。在我们这个例子中,很简单,就是所测的温度值。 2、数据发送的格式 明确了数据的含义,那么下面需定义的就是数据的格式了。所谓数据格式,说句大白话就是你PLC发来的“1234”这个数据,是不是就代表当前温度就是1234℃,如果不是,那么我上位机还需再作什么样的处理后才能得到当前真正的温度。我们假设在这个例子中,PLC发送的温度值为4位数,前两位代表温度值的“十位”和“个位”,后两位代表小数点后1位和后两位,即发送来的数值“1234”并不是代表当前温度为1234℃,上位机还需把这个数值再乘以0.01才是当前真正的温度. 这样,一个最简单的协议就完成了。协议写好了,那么PLC和上位机各自通讯程序的任务也就清楚了吧。 PLC的任务就是把温度值按4位整数的格式发往上位机,而上位机的任务呢,就是接收这些数据,并把收到的数据再乘以0.01,得出实际的温度值。 例2:在例1的基础上,我们再作些变化,原先是只采集一个数据,现在增加为采集A,B,C 3路温度值,依 旧是每隔1秒钟把数据上传一次,上位机不返回任何信息。 分析:由于1次要发送3个温度值,所以例1中的“纯数字格式”无法再使用,必须修改协议。 1、数据含义 3个温度值 2、数据格式 为能正确区分去3个温度值,我们把一些字母掺杂到数据中,所以新的数据格式定义如下: (1)、3个温度值排列顺序为“ABC” (2)、3个温度值的结尾加上字母“M”以便于把3个温度值隔开 (3)、每个温度值的格式与例1一样,仍然是4位整数,前两位表示十位与个位,后两位为小数 这样,PLC发来的数据格式就应该是“xxxxMxxxxMxxxxM”。假设A,B,C 3路温度当前为12.35℃, 20.21℃和45.12℃,则PLC发送的数据应为“1235M2021M4512M” 通讯协议变复杂了,PLC和上位机通讯程序的任务也就变复杂了。PLC发送数前先要把数据按协议所规定的格式组织好,而上位机接收到数据后先要按协议中所规定的格式把所需要的数据分离出来。 通过上面两个例子,大家对通讯协议这个东东的真正含义应该清楚了吧。所交换的数据越多,则通讯协议就越复杂。但不管是简单的协议也好还是复杂的协议也好,其根本的目的只有一个---就是把所需交换的数据的内容与格式描绘的清清楚楚。 如有问题欢迎和我继续讨论,若我的叙述中有不妥之处请大家指出,谢谢
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-04-21 00:02:00
3楼
各位大哥们:小弟初识PLC,近来也要做一个PLC和PC通讯的东西,也是采用串口通讯。计算机这方面我还比较熟,可是PLC这方面,毫无头绪啊! 该向PLC中发送什么样的指令它才能识别呢?我是说,PLC的编程软件中有梯形图、助记符什么的,可是要用计算机PC控制PLC去做同样的东西应该怎么做呢?而且,怎么设置PLC向上位机发送数据的格式呢?在哪儿设置啊?不好意思,问这样简单的问题 :) 我实在是一个PLC的门外汉,不知道这么说表达清楚了没有。 还有,我要是想做这样的东西,应该恶补一下什么方面的东西呢?该看那些书?
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-04-21 18:39:00
4楼
我也正在做这个,大家可以交流一下
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-04-21 22:17:00
5楼
德科振邦自动化培训中心:开设vb或vc编写pc与plc通信程序的高级编程班 报名热线:13611119521,邢先生
回复
引用
举报
猪八
关注
私信
精华:0帖
求助:0帖
帖子:1帖 | 4回
年度积分:0
历史总积分:7
注册:2003年5月26日
发表于:2003-10-09 16:07:00
6楼
yelei: 说得清楚,看得明白
回复
引用
举报
关公
关注
私信
精华:0帖
求助:0帖
帖子:1帖 | 72回
年度积分:0
历史总积分:126
注册:2003年7月07日
发表于:2003-10-09 18:08:00
7楼
用PC机作上位机的情况下,你要做的工作正好相反,在PC侧编程,将你要的数据转换为通讯协议的格式后,发往PLC,PLC返回的数据后按通讯协议变换成相应的值即可,而PLC只需设置好其通讯参数,作为应答方的PLC就无需编程.
回复
引用
举报
microtomato
关注
私信
精华:1帖
求助:0帖
帖子:84帖 | 1476回
年度积分:0
历史总积分:2078
注册:2001年11月02日
发表于:2003-10-09 20:52:00
8楼
计算机侧编写通讯程序要比PLC侧要来得方便(计算机编程软件功能强大嘛,还有好多现成的免费类库和控件可以用),要用PLC的梯形图开发1套通讯协议非常麻烦,最好选公开通讯协议的PLC,这样可以免去很多麻烦。如果非要在PLC侧开发通讯协议,可以选B&R的,因为他们的PCC支持Basic和C语言,比梯形图好用多了。
回复
引用
举报
电器不好做啊
关注
私信
精华:2帖
求助:0帖
帖子:61帖 | 128回
年度积分:0
历史总积分:330
注册:2003年5月16日
发表于:2003-10-09 21:14:00
9楼
to: yelei: 把一个较为难缠的问题说的如此清淅! 佩服佩服! 不过如果再谈的全面点就更好了!
回复
引用
举报
wangtaotao
关注
私信
精华:2帖
求助:0帖
帖子:27帖 | 193回
年度积分:0
历史总积分:306
注册:2003年6月07日
发表于:2003-10-09 21:36:00
10楼
顶!
回复
引用
举报
dandan82
关注
私信
精华:0帖
求助:0帖
帖子:18帖 | 89回
年度积分:0
历史总积分:143
注册:2003年7月21日
发表于:2003-10-10 17:03:00
11楼
我也正在做PLC,我想请教一下:我要把电脑上的程序弄到PLC上,是不是只要通过RS232口Download到处理器上就可以了呢?
回复
引用
举报
dandan82
关注
私信
精华:0帖
求助:0帖
帖子:18帖 | 89回
年度积分:0
历史总积分:143
注册:2003年7月21日
发表于:2003-10-10 17:04:00
12楼
yelei,你是不是已经做了很多年PLC了呀?
回复
引用
举报
朱先
关注
私信
精华:0帖
求助:0帖
帖子:0帖 | 1回
年度积分:0
历史总积分:1
注册:2003年10月05日
发表于:2003-10-11 22:34:00
13楼
你们真笨,有问题直接发Email给我:ricm@163.com 我会一一帮你们搞定!
回复
引用
举报
笑问
关注
私信
精华:0帖
求助:0帖
帖子:7帖 | 9回
年度积分:0
历史总积分:42
注册:2003年10月11日
发表于:2003-10-12 12:50:00
14楼
TO YELEI: 你好,看了你的解说,很是爽快,不过我还是有个问题想讨教一下,在例2中PLC传输3个数据,在PC机侧取得是否还应知道3个数据应对应的寄存器的地址,这样才能取道啊。不知道这么问是否对?请赐教。谢谢!!
回复
引用
举报
microtomato
关注
私信
精华:1帖
求助:0帖
帖子:84帖 | 1476回
年度积分:0
历史总积分:2078
注册:2001年11月02日
发表于:2003-10-12 19:51:00
15楼
不用想得那么复杂,其实就是开2块缓冲区,1块用于上传,1块用于下载。比如用于上传的数据区中从XXX地址开始多少个字是所有的模拟量数据,XXX地址开始多少个字是开关量数据。计算机把PLC中的这块内存全部读出后,只要用1个简单的指针就可以把数据全部都恢复了(串口通讯控件接受到数据会产生一个OnReceive事件,然后返回一个指针,你可以把他赋给一个Word类型指针就可以了,对于模拟量可以直接解码,对于开关量,可以将这个字读出后转换为16位2进制)。下传数据区中XXX地址开始多少个字是所有的设置参数,XXX地址开始多少个字是所有的强制信号。下传和上传类似,是上传的逆变换,数据转换一下即可。
回复
引用
举报
HAPPYmw
关注
私信
精华:0帖
求助:0帖
帖子:27帖 | 711回
年度积分:0
历史总积分:64
注册:2003年9月27日
发表于:2003-10-29 13:22:00
16楼
yelei, 你的介绍很清楚,在这谢了。
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2003-10-29 23:45:00
17楼
好文章
回复
引用
举报
北海有鱼
关注
私信
精华:0帖
求助:0帖
帖子:2帖 | 21回
年度积分:0
历史总积分:84
注册:2003年9月23日
发表于:2003-10-30 09:41:00
18楼
to: yelei 写的很好,多谢了 可是我还是不明白,我要通过串口发数,那我如何对串口操作呢(PC)端。不好意思,我也是新手
回复
引用
举报
热门招聘
相关主题
台达plc和信捷plc该用哪个好...
[10664]
致初学PLC者:新人学PLC编程的...
[18067]
西门子S7-200连接多个触摸屏...
[18037]
PLC教程
[14409]
给年轻工程师的十大忠告(转贴...
[65338]
三菱PLC电梯控制系统(程序)
[13222]
工控老鬼 工程师成长之路(2)...
[8623]
西门子plc400 extf红灯亮了,...
[13209]
工控老鬼 工控人生 “高薪是...
[10922]
可编程控制器基础知识
[12175]
官方公众号
智造工程师
客服
小程序
公众号