只需一步,快速开始
微信扫码登录
PLC与PC计算机通信简要说明
常用的上位机通讯程序的作用就是接收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.35℃,20.21℃和45.12℃,则PLC发送的数据应为“1235M2021M4512M”通讯协议变复杂了,PLC和上位机通讯程序的任务也就变复杂了。PLC发送数前先要把数据按协议所规定的格式组织好,而上位机接收到数据后先要按协议中所规定的格式把所需要的数据分离出来。 通过上面两个例子,大家对通讯协议这个东东的真正含义应该清楚了吧。所交换的数据越多,则通讯协议就越复杂。但不管是简单的协议也好还是复杂的协议也好,其根本的目的只有一个---就是把所需交换的数据的内容与格式描绘的清清楚楚。
举报
楼主说的很对!
无协议就是自己定义一个协议!
目前三菱的PLC支持无协议通讯,具体看FXPLC通信用户手册
我站的学习板,在下一个版本中将支持该功能
学习了,谢谢
有用!
本版积分规则 发表回复 回帖后跳转到最后一页