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

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

    一般国外每一个PLC厂家,其通信协议一般都是不同的,如西门子PLCPPI/MPI、欧姆龙 PLCHostLinkAB PLCDF1、施奈德 PLCModbus等等,由于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); 

        }

}

由于我们仅实现了Modbus协议的3,16号指令,所以要想操作PLCIQ,我们对V变量区进行了映射,具体的代码如下

   TITLE=Modbus测试

Network 1

// 端口初始化

LD     SM0.1

CALL   YFMB_INIT, 1, 1, 19200, 0, 0, 128, 32, 2000, &VB0, M0.0, MB1

 

Network 2

// 服务程序

LD     SM0.0

CALL   YFMB_SLAVE, M0.1, MB2             //Modbus Slave 服务程序

 

Network 3

LD     SM0.0

TON    T32, 1000

 

Network 4

// 1s钟更新一次

LD     T32

R      T32, 1

INCB   VB5

 

Network 5

// IO 映射到V变量区

LD     SM0.0

MOVB   VB0, QB1

MOVB   VB1, QB0

 

MOVB   IB0, VB3

MOVB   IB1, VB2

   运行后的效果图如下:

  

 

   没有PLC朋友也不要气馁,这里提供一个Modbus RTU Slave的模拟器,可以运行在Windows平台上,如下图:

  

  要设为串口模式(Modbus RS-232),串口参数如下:

 

这时候红牛开发板就没有必要用COM3了(否则需要一个232485模块),直接用COM2PC相连即可(注意,相关的代码要做一下调整)。

连接之后,你可以看到模拟器的数据在变化,当然你可以输入修改相关的数据,以观看开发板上LCD的变化。

Modbus模拟器下载地址:http://www.sky-walker.com.cn/yefan/MFV40/mod_RSsim.exe

-----------------------------------------------------------------------------------------

 

【低价开发板】http://item.taobao.com/item.htm?id=7117999726 

源码下载:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/MBClient.rar

文章参考: .Net Micro Framework 快速入门

中文讨论组:http://space.cnblogs.com/group/MFSoft/

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
概述 工业4.0标志着第四次工业革命,其特点是分布式、智能化控制系统。工业4.0摆脱了过去体积笨重、集中式的可编程逻辑控制器,允许工厂高度可配置、高度模块化,支持的传感器输入数量大幅增加,输出较之前更高。超小尺寸PLC,或称之为微型PLC,是工业4.0工厂的核心,以极小尺寸封装提供高性能,功耗极低。MAXREFDES61#是Maxim的微型PLC、四通道模拟输入卡。 工业智能化控制微型 PLC 系统板展示: 微型 PLC 系统板详细介绍: MAXREFDES61#具有16位高精度、四通道模拟输入,电源和数据隔离。其中两路输入通道支持-10V至+10V电压信号,另两路输入支持4mA至20mA电流信号。MAXREFDES61#设计集成双通道、低噪声、低失真缓冲器(MAX9633);16位、4通道、多量程输入ADC (MAX1301);两片高电压、4–20mA电流保护器(MAX14626),用于电流输入通道;超高精度4.096V电压基准(MAX6126);600VRMS数据隔离(MAX14850);STM32F4微控制器;FTDI USB-UART桥;高效DC-DC转换器(MAX15062);以及隔离/稳压+15V、+5V和-3V电源(MAX17498C/MAX8719/MAX1659/MAX1735)。整个系统的功耗通常小于500mW,适合用于信用卡大小的空间。用于工业、微型PLC领域时,MAXREFDES61#可用于任何要求高精度模/数转换的应用。 系统设计框图: 基于STM32 的工业控制微型 PLC 系统板 PCB截图: 特点: 高精度 -10至+10V ±20%电压输入 4至20mA +20%电流输入 隔离电源和数据 微型PLC规格 器件驱动器 C语言源代码示例 测试数据 STM32 工业智能化控制源码: 附件内容截图: 更多详细说明:https://www.maximintegrated.com/cn/design/reference-design-center/system-board/5943.html/tb_tab1
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值