欢迎来到天天文库
浏览记录
ID:40001334
大小:460.00 KB
页数:11页
时间:2019-07-17
《C#实现上位机与欧姆龙PLC地通信》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用文档本人最近做了一个上位机与欧姆龙PLC通信的系统。与大家分享分享心得吧!废话不多说,先看看实际的效果图吧!由于本人能力有限,请大家多多指正吧!要想做好上位机,就必须搞好通信问题。欧姆龙PLC与上位机通信采用的是HostLink协议。下面就先来介绍介绍HostLink协议。使用HostLink协议要注意以下几点:(1)通信线的连线,RS232口接线。一般使用无握手信号连线,无握手信号连线仅需要3根线,1根地线,2根信号线:发送线TXD,接受线RXD。(2)通信参数的设置,一般我们VisualStdio中选用
2、控件SerialPort,在其属性中选择波特率9600,数据位7位,偶检验,2个停止位。在调试的时候可以用串口助手先进行调试,调试明白了再开始写上位机也不迟。(3)HostLink协议的格式,一般包括起始符,单元号,正文,FCS检验码,结束符。文案大全实用文档起始符都是@,一般你的上位机控制的只有一个下位机,那么你的单元号就是00,正文内容是举一个例子,比如说@00WD0100123456*CR,@是起始符,00是单元号,WD0100表示向DM区0100,写入数据,写入的就是1234(写的是字符,传入PLC中自
3、动变成16进制的1234),56是FCS校验,FCS校验就是校验码前面所有的字符按其ASCII码异或,结果是两位的。在写上位机之前你也可以现写一个FCS校验器,反正后续的代码总是要写的。*CR是结束符,*比较容易打出来,CR就是回车键,程序中表现时可以用”r”来表示。再比如说@00RD0100000156*CR是向DM0100开始的数据区,连续读0001个数据,在这里也就是连续读一个数据。当然你给PLC发一个数据,如果格式正确,PLC也会响应你一个数据,见下表。在这里讲一下返回的状态码,根据状态码,我们可以知
4、道发送的数据有没有出现错误。文案大全实用文档正常情况下,返回的只能是00,如果不是00,请根据上表,自己修改错误。下面我先把我写的FCS校验码贴出来吧,代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSy
5、stem.Windows.Forms;namespace异或测试{publicpartialclassForm1:Form{publicForm1(){文案大全实用文档InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){stringstr=textBox1.Text;Int16[]a=newInt16[str.Length];//将字符串中的一个个字符,分离出来,并保存for(inti=0;i6、++){a[i]=Convert.ToInt16(str[i]);}Int16FCS=0;for(inti=0;i7、来改变其工作模式。指令如下:模式的改变PROGRAM@00SC0050*MONITOR@00SC0252*RUN@00SC0353*"00"是站號最基本的东西已经说得比较清楚了,下面把代码也贴出来吧,同样代码也写的比较乱,让内行人见笑了。大体上看一共就用了这几个事件。文案大全实用文档下面是其具体的代码:本人做的是一个恒压供水的项目,这里只是一个产品的测试,故有很多地方还不严谨,思路不是很清楚,我感觉这也我一周弄出来的,还是比较不错的usingSystem;usingSystem.Collections.Gene8、ric;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO.Ports;namespaceWindowsF
6、++){a[i]=Convert.ToInt16(str[i]);}Int16FCS=0;for(inti=0;i7、来改变其工作模式。指令如下:模式的改变PROGRAM@00SC0050*MONITOR@00SC0252*RUN@00SC0353*"00"是站號最基本的东西已经说得比较清楚了,下面把代码也贴出来吧,同样代码也写的比较乱,让内行人见笑了。大体上看一共就用了这几个事件。文案大全实用文档下面是其具体的代码:本人做的是一个恒压供水的项目,这里只是一个产品的测试,故有很多地方还不严谨,思路不是很清楚,我感觉这也我一周弄出来的,还是比较不错的usingSystem;usingSystem.Collections.Gene8、ric;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO.Ports;namespaceWindowsF
7、来改变其工作模式。指令如下:模式的改变PROGRAM@00SC0050*MONITOR@00SC0252*RUN@00SC0353*"00"是站號最基本的东西已经说得比较清楚了,下面把代码也贴出来吧,同样代码也写的比较乱,让内行人见笑了。大体上看一共就用了这几个事件。文案大全实用文档下面是其具体的代码:本人做的是一个恒压供水的项目,这里只是一个产品的测试,故有很多地方还不严谨,思路不是很清楚,我感觉这也我一周弄出来的,还是比较不错的usingSystem;usingSystem.Collections.Gene
8、ric;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;usingSystem.IO.Ports;namespaceWindowsF
此文档下载收益归作者所有