PLC与PC计算机通信简要说明

[复制链接]
查看7991 | 回复35 | 2008-12-4 16:15:00 | 显示全部楼层 |阅读模式

PLCPC计算机通信简要说明

常用的上位机通讯程序的作用就是接收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次要发送3个温度值,所以例1中的“纯数字格式”无法再使用,必须修改协议。

  1、数据含义
   3个温度值
  2、数据格式

   为能正确区分去3个温度值,我们把一些字母掺杂到数据中,所以新的数据格式定义如下:

   1)、3个温度值排列顺序为“ABC

  
   2)、3个温度值的结尾加上字母“M”以便于把3个温度值隔开
P.L.C.
..网——可编程控制器技术门户
  

   3)、每个温度值的格式与例1一样,仍然是4位整数,前两位表示十位与个位,后两位为小数

  
   这样,PLC发来的数据格式就应该是“xxxxMxxxxMxxxxM”。假设A,B,C 3路温度当前为12.3520.2145.12,则PLC发送的数据应为“1235M2021M4512M”通讯协议变复杂了,PLC和上位机通讯程序的任务也就变复杂了。PLC发送数前先要把数据按协议所规定的格式组织好,而上位机接收到数据后先要按协议中所规定的格式把所需要的数据分离出来。

通过上面两个例子,大家对通讯协议这个东东的真正含义应该清楚了吧。所交换的数据越多,则通讯协议就越复杂。但不管是简单的协议也好还是复杂的协议也好,其根本的目的只有一个---就是把所需交换的数据的内容与格式描绘的清清楚楚。

wxl840423 | 2008-12-4 19:15:00 | 显示全部楼层
太好了,可以学习一下[em07]
loveplc | 2008-12-4 22:43:00 | 显示全部楼层

楼主说的很对!

无协议就是自己定义一个协议!

目前三菱的PLC支持无协议通讯,具体看FXPLC通信用户手册

我站的学习板,在下一个版本中将支持该功能

[此贴子已经被作者于2008-12-4 22:44:20编辑过]
zhou.juming | 2008-12-6 18:06:00 | 显示全部楼层
好是好要是再有一个工作中的实际例子就更加完美了。
jyh30190138 | 2008-12-7 19:40:00 | 显示全部楼层
这个记下来 没有学习过的
zhoubin | 2008-12-7 19:56:00 | 显示全部楼层

学习了,谢谢

wangyanjing | 2008-12-8 21:46:00 | 显示全部楼层

有用!

liuchun780 | 2008-12-10 15:39:00 | 显示全部楼层
很好的资料,学习了
lthlycyj | 2009-3-15 17:22:00 | 显示全部楼层
学习一下\"图片点击可在新窗口打开查看\"
qflkk | 2010-4-11 20:17:00 | 显示全部楼层
很好的资料,学习了 !!!!!!!!!
李龙飞 | 2010-4-22 16:20:00 | 显示全部楼层
有点小抽象
hu2009nm | 2010-5-2 22:11:00 | 显示全部楼层
这个记下来 没有学习过的
muzilp | 2010-5-4 10:15:00 | 显示全部楼层
学习了 顶一下
nanhun1209 | 2010-6-29 20:41:00 | 显示全部楼层
有用
nanhun1209 | 2010-6-29 20:42:00 | 显示全部楼层
有点小不懂
yinggong | 2010-8-8 11:27:00 | 显示全部楼层
很好的资料.xiexie
siyuan322-2 | 2010-8-13 00:46:00 | 显示全部楼层
这个好 讲的详细 学习了
aiyuan3222 | 2010-8-13 00:51:00 | 显示全部楼层
文章写的很好 谢谢楼主发这么好的帖子
sntfkf | 2010-9-1 20:27:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
plczhang | 2010-9-5 11:03:00 | 显示全部楼层
太好了,我最近一直在学习PLC与PC通讯的问题,我想把PC与西门子PLC连接起来,在PC内用VB编程。但是我目前只知道可以用西门子PLC的自由口协议来完成这个功能,但是具体的协议就不太清楚了,在网上搜也没搜到,希望和楼主好好交流
wfdzqf | 2010-9-29 23:18:00 | 显示全部楼层
很好的资料,学习了 !
摩靓小佐 | 2010-10-1 23:38:00 | 显示全部楼层
看懂了。谢谢。
biao2033 | 2010-11-2 09:10:00 | 显示全部楼层
xuexi
poloko | 2010-11-4 18:06:00 | 显示全部楼层
谢谢了,很通俗易懂
lwenf | 2010-12-5 10:28:00 | 显示全部楼层
好东西啊,,谢谢了
tcl999ling | 2010-12-8 10:13:00 | 显示全部楼层
谢谢楼主,学习了!
雪中梅花 | 2010-12-12 18:41:00 | 显示全部楼层
谢谢楼主好资料学习了。。。。。。。。。。。。
xiaobu521 | 2011-1-18 16:13:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
yyuyun | 2011-3-6 15:42:00 | 显示全部楼层
终于弄清楚原理了
wudongsheng050 | 2011-3-17 09:23:00 | 显示全部楼层
学习了!
海哥 | 2011-4-21 22:56:00 | 显示全部楼层
很好的资料,学习了
海哥 | 2011-4-21 22:56:00 | 显示全部楼层
很好的资料,学习了,谢谢
hwguang | 2011-5-9 17:51:00 | 显示全部楼层
学习学习!!!!!!!!
石dunhua | 2011-5-17 22:53:00 | 显示全部楼层

回复 1# lwh536qq 的帖子

讲得好
sunny4963 | 2011-5-22 22:21:00 | 显示全部楼层
新手路过
fanguiping | 2011-8-5 20:18:00 | 显示全部楼层
说起来是蛮简单的,没做过,先学习学习
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则