【STM32 .Net MF开发板学习-08】远程PLC读写控制

在工控项目中,PLC一般必不可少,现场控制一般以它为核心,而PC系统一般只是起到远程监控、图表和数据存储的作用。除了PLC之间,PC和PLC之间通信外,一般一些智能显示模块(如型号各异的触摸屏 HMI系统)也和PLC通信,我们就要把把承载.NET MF的系统打造成一个最简单的HMI系统,远程操控PLC。

一般国外每一个PLC厂家,其通信协议一般都是不同的,如西门子PLC的PPI/MPI、欧姆龙 PLC的HostLink、AB PLC的DF1、施奈德 PLC的Modbus等等,由于Modbus协议简单、并且公开,所以国内一些PLC和智能模块大都是支持Modbus协议的,西门子200系列的PLC只要加载一个官方Modbus库,也是可以非常方便的支持Modbus协议。

在上一篇文章《PC通过Modbus协议远程操控开发板》,我们把Modbus Rtu client运行在PC端,这次我们把这部分程序移植到.Net Micro Framework系统上,让.Net Micro Framework开发板直接访问PLC。

有所不同的是,红牛开发的COM3直接支持RS485通信,这样我们和PLC直接用两个线相连就可以通信了,此外RS485是半双工通信,所以需要自己手动进行收发切换,除此之外和RS232通信代码基本一致。

不同之处的代码如下:

//发送数据
      if (RS485)
      {
        RTS.Write(true);
      }
      serial.Write(bytSendData, 0, intSendNum);
      if (RS485)
      {
        while (serial.BytesToWrite > 0) ;
        RTS.Write(false);
      }

具体的测试代码如下:

public static void Main()
    {
        Client mbclient = new Client();
        mbclient.RS485 = true;
        mbclient.RTS_Pin = (Cpu.Pin)GPIO_NAMES.PF11;
        mbclient.Open("COM3", 19200, System.IO.Ports.Parity.None);
        UInt16[] data=new UInt16[3];
        Graphics.Clear(Color.Black);
        Graphics.FillRectangle(0, 0, 239, 19, Color.White);
        Graphics.DrawString(60, 3, "Modbus Rtu Test", Color.Blue);
        byte QW0 = 0;
        while (true)
        {
            if (++QW0 > 128) QW0 = 0;
            mbclient.Write(1, 0, new UInt16[] { QW0 }, 1);
            Thread.Sleep(300);

            if(mbclient.Read(1,0,data,3) == 0)
            {
                Graphics.SuspendLayout();
                Graphics.FillRectangle(0, 40, 239, 100, Color.Black);
                Graphics.DrawString(20, 43, "QW0 : " + data[0].ToString(), Color.Yellow);
                Graphics.DrawString(20, 63, "IW0 : " + data[1].ToString(), Color.LightGreen);
                Graphics.DrawString(20, 83, "VW2 : " +data[2].ToString(), Color.Orange);
                Graphics.ResumeLayout();
            }
            Thread.Sleep(300);
        }
}

时间: 2024-10-26 17:57:40

【STM32 .Net MF开发板学习-08】远程PLC读写控制的相关文章

【STM32 .Net MF开发板学习-05】PC通过Modbus协议远程操控开发板

从2002年就开始接触Modbus协议,以后陆续在PLC.DOS.Windows..Net Micro Framework等系统中使用了该协议,在我以前写的一篇博文中详细记载了这一段经历,有兴趣的朋友可以看一看<我的Modbus Slave/Client开发历程(Rtu/AscII/Tcp)>.该协议公开,精简,并且可靠,目前大部分智能仪表,智能模块和一些PLC都采用了该协议,前一段时间有位网友询问相关Modbus的问题,所以这里就以Modbus的实现来来作为.Net MF开发板的串口示例.

【STM32 .Net MF开发板学习-18】GPRS遥控智能小车

有了Wifi间接控制智能小车的经验,很自然的想到,也可以通过GPRS远程遥控智能小车,因为从通信原理上看,二者其实没有什么本质的不同,都是基于Socket的TCP通信,其控制环节如下: 手机 ===> GPRS(TCP/IP) ===> PC ===> Zigbee(串口232/TTL) ===> 智能小车 与Wifi通信不同,要使手机连接GPRS,还得需要进行一定的编程才能完成,相关内容,我这里也不用介绍了,我以前写的博文<让智能手机和居家电脑互联互通(WM6 GPRS)&

【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)

无论是用WIfi还是用GPRS遥控小车,目前都离不了PC这个中转站,并且PC还得借助Zigbee通道和小车通信,这就大大地增加了此遥控平台的构建代价.以前在研究iRobot机器人的时候,用过其配套的蓝牙模块,可以通过PC上的蓝牙连接,远程控制iRobot(相关文章<用MF控制机器人>).目前大部分手机也都支持蓝牙接口,所以基于此,我们借用iRobot的蓝牙模块,就可以用手机直接遥控智能小车了. 不过问题来了,原蓝牙模块是和iRobot配套的,其模块供电.串口连接等问题不用考虑,直接插入25针的

【STM32 .Net MF开发板学习-17】Wifi遥控智能小车

恰好以前购买的一个PDA含Wifi功能,所以与其用PC通过Zigbee控制智能小车,不如用PDA来控制,这样更为方便,不过由于目前.NET MF开发板不直接支持Wifi功能,所以我们也只好间接控制了,也就是PDA控制PC,PC通过Zigbee控制智能小车. 对我们开发者来说,Wifi和普通的网线接口一样,都是Socket编程.我们只需用在PDA上构建一个简单的TCP Client端,在PC构建一个TCP Server端即可,PDA发送相关指令,PC接收后通过Zigbee转发给智能小车. PDA

【STM32 .Net MF开发板学习-16】Zigbee遥控智能小车

Zigbee技术目前在物联网领域和RFID一样,受关注度非常高.日前中科院上海微系统与信息技术研究所.无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628.WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.15.4g标准的验证型全集成传感网节点SoC芯片. 其实封装好的Zigbee模块,使用起来和操作串口一样,特别是我们把其通信模式设置为透明传输模式,这时候我们已经感觉不到是在用Zigbee模块,而觉得是

【STM32 .Net MF开发板学习-15】红外遥控智能小车

我前段时间写了<用PWM驱动智能小车>和<红外遥控器编码识别>两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车. 在<红外遥控器编码识别>中,我们用面包板搭建简单的电路,来验证红外接收信号,但是放在小车上是不行的,相关器件我们需要进行焊接,最终完成图如下. 开发板学习-15]红外遥控智能小车-">我们把智能小车和红外板拼装在一起,最终完成图如下:

【STM32 .Net MF开发板学习-11】步进电机控制(非PWM模式)

选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 开发板学习-11]步进电机控制(非PWM模式)-">四相八拍:A->AB->B ->BC ->C ->CD ->D ->DA 其A.B.C.D指的是uln2003芯片驱动板的1N1.1N2.1N3.1N4,波形在上表示有输入信号,波形在下表示无输入信号. 我们采用红牛开发板进行步进电机控制,为了便于接线,我们需

【STM32 .Net MF开发板学习-01】Hello world

开发前准备: 1.下载并安装VS2008 SP1 .Net Micro Framework支持VS 2008 Express版本,这是一款免费的开发工具,不过我没有使过,有条件的朋友可以优先考虑安装专业版或企业版. VS2008 Express sp1的下载地址如下: http://www.microsoft.com/express/download/ 2.下载.NET Micro Framework 4.0 SDK 要开发应用程序,还必须下载.NET Micro Framework 4.0 S

【STM32 .Net MF开发板学习-03】TinyGUI绘图示例

.Net Micro Framework官方图形库是WPF,由于目前ST Cortex-M3开发板RAM太小,最大才512K(常见是128K或256k),并且Cortex-M3的CPU主频也不太高,运行WPF图形框架显得过于重了,所以我这边推出了轻量级图形库TinyGUI(此外,我也推出了一个WinForm的框架,和.Net Framework保持兼容,适合喜欢WinForm开发的用户,不过这个不是轻量级的,参见<开源System.Windows.Forms库,让.Net Micro Frame