如何通过串口读取plc的数据 怎么用matlab读取串口数据?
作者&投稿:林肤 (若有异议请与网页底部的电邮联系)
PLC怎样通过串口读取外部设备的数据~
在串口通讯程序中,经常要收到数据包,常有网友问及如何从这些数据包中提取需要的数据,如何处理校验等,在这篇文章里我举两个例子予以说明,程序说明为VC++6.0。关于串口编程建立程序的细节,请参阅我主页上的其它文章。同时,此文也适于其它通讯程序中艰数据报文的处理。
首先,应该指出的是,所有这些处理均在串口事件处理函数oncommunication()中进行。每当串口缓冲区中有一个或一个以上字符时触发串口通讯事件,该事件就驱动(调用)串口事件通讯处理函数oncommunication(),在这里就可以对接收到的数据进行处理,提取需要的数据。
你在做数据接收的时候Input返回是根据你需要的数据类型自动转换的,如果你要字节数组那么返回字节数组,你要long返回long,但要注意的是,返回字节数组的时候你不能把字节数组定义成固定大小的数组,因为MSComm.input会重定义数组大小来适应接收到的数据大小,以便返回全部接收到的数据.
C#语言也带有串口通信控件的。只要把微软的串口通信控件添加进去,就可以简单的编程了。
一般PLC的厂家都有上位机通讯的解决方案,包括电脑的普通串口和网口;
比如三菱的EntQsPlc.DLL/ComFxPlc.DLL/EntAsPlc.DLL;
欧姆龙:FinsTCP.DLL/HOSTLINK.DLL/FinsUDP.DLL;
西门子:WinTcpS7.DLL/WinTcpS7_Smart.DLL;
施耐德:ModbusTCP.DLL/ModbusRTU.DLL;
AB: ABLogiPlc.DLL;
。。。。。。
首先看外部设备的通讯协议PLC是否支持。
如西门子200PLC有RS485串口,可以支持ModbusRTU,就可以和带该通讯协议的外部设备连接。
利用200PLC的Modbus通讯指令库就可完成对外部设备数据的读写功能。
s=serial('com1');//设置串口
set(s,'BaudRate',9600,'StopBits',1,'Parity','none','DataBits',8,'InputBufferSize',255);
//串口的一些设置,注意,'none'有引号,有些值如InputBufferSize只能在串口关闭时才能设置,
//所以不建议先打开串口
fopen(s)//打开串口
fwrite(s,100);//打100(十进制)写入串口也可以是一维数组,可以用示波器测com的第3个引脚
a=fread(s);
//读出串口数据,由于matlab是顺序执行的,所以这里读不到100,
//程序会卡在这里直到读到数据为止,好像是存完buffer吧,这里忘了。
//自己从com的第2个引脚给数据试试看就清楚了
fclose(s);//关闭串口
在串口通讯程序中,经常要收到数据包,常有网友问及如何从这些数据包中提取需要的数据,如何处理校验等,在这篇文章里我举两个例子予以说明,程序说明为VC++6.0。关于串口编程建立程序的细节,请参阅我主页上的其它文章。同时,此文也适于其它通讯程序中艰数据报文的处理。
首先,应该指出的是,所有这些处理均在串口事件处理函数oncommunication()中进行。每当串口缓冲区中有一个或一个以上字符时触发串口通讯事件,该事件就驱动(调用)串口事件通讯处理函数oncommunication(),在这里就可以对接收到的数据进行处理,提取需要的数据。
你在做数据接收的时候Input返回是根据你需要的数据类型自动转换的,如果你要字节数组那么返回字节数组,你要long返回long,但要注意的是,返回字节数组的时候你不能把字节数组定义成固定大小的数组,因为MSComm.input会重定义数组大小来适应接收到的数据大小,以便返回全部接收到的数据.
C#语言也带有串口通信控件的。只要把微软的串口通信控件添加进去,就可以简单的编程了。
一般PLC的厂家都有上位机通讯的解决方案,包括电脑的普通串口和网口;
比如三菱的EntQsPlc.DLL/ComFxPlc.DLL/EntAsPlc.DLL;
欧姆龙:FinsTCP.DLL/HOSTLINK.DLL/FinsUDP.DLL;
西门子:WinTcpS7.DLL/WinTcpS7_Smart.DLL;
施耐德:ModbusTCP.DLL/ModbusRTU.DLL;
AB: ABLogiPlc.DLL;
。。。。。。
《如何通过串口读取plc的数据》
答:串口通讯就是建立好连接后,发送对方设备能够识别的通讯指令,然后获取相应的响应数据。指令的话,参考对方的指令手册就可以了
《OMRON(欧姆龙)PLC CP1H系列通过串口与第三方通讯(读写数据)》
答:串口接线:PLC串口端DB9针4,5号脚短接,电脑串口端或第三方设备串口端4,6号脚短接,5号脚与PLC串口端9号脚连接