HslCommunication

HslCommunication​

`HslCommunication`​ 是什么?虽然一开始的目的是开发一个三菱PLC的通讯库,但是在长达数年的开发过程里,功能不断丰富,定位也在慢慢的发生变化, 简单的说,它是一个通信库,用来数据通信的,不仅仅是和工厂设备(例如PLC设备,机器人设备,仪器仪表等)的通信,也可以用来程序和程序间的数据通信, 电脑和电脑间的数据通信,C#语言和java,python语言之间的通信,程序和网页的通讯,本地电脑和云服务器通讯。所以我们在回答 `HslCommunication`​ 是什么的时候,也顺便回答了它能干什么。

什么情况下您会需要 `HslCommunication`​ ?如果是制造企业,想自己研发一些工厂的小软件,监视设备的数据,或是记录工艺数据,或是仓储系统,或是远程读写PLC数据, 都可以基于 `HslCommunication`​ 来快速开发您的软件,一步一步慢慢实现自己的工厂自动化,智能化,切实的感受到数字化带来的好处,对工艺,对管理,对设备运行效率提升有很大的帮助。 如果你是集成商,在单纯的销售设备之外,可以配套上位机软件系统,增加自身的附属价值,在实施自动化项目时,使用 `HslCommunication`​ 可以更加快速, 高质量,低成本的交付工厂软件,专注于软件的工艺优化,流程优化,实现自己的核心价值,而不是将时间浪费到繁琐的数据通信采集上,因为能不能采集三菱PLC,西门子PLC等本来就无法成为技术门槛。

为什么不自己写库,而要使用 `HslCommunication`​ ?对于公司而言,答案还是成本,如果一个公司要从头研发通信,开发出适用自己的通信库需要大量的时间成本,众所周知, 工厂项目实施时,软件的调试成本,犯错成本,踩坑成本比普通软件开发高的多,普通软件有问题大不了重启,工厂软件会影响产线的效率,所以要开发出一个稳定,好用,多项目复用的通信库,需要大量的验证,测试, 而且每种PLC都需要这么来一次,按目前程序员薪资来说,普通程序员月薪10K,即使花一年时间也做不出成熟,稳定,好用,多项目复用的通信库,`HslCommunication`​ 几乎可以这么说: 倾注了作者所有的心血(10年的行业工作,代码开发经验),又花了6年时间的不断开发,迭代,完善,大面积的测试,使用,才形成了今天的产品,获得了大量的用户的认可和使用。

C#使用HslCommunication与三菱plc通信

命名空间的引入

    using HslCommunication;
    using HslCommunication.Profinet.Siemens;

连接

    melsecFx = new MelsecFxSerial();  // 初始化三菱Fx串口通信对象
    melsecFx.SerialPortInni("COM4", 9600, 7, StopBits.One, Parity.Even);  // 设置串口、波特率、数据位、停止位、奇偶校验
    melsecFx.Open();  // 连接
    if (melsecFx.IsOpen())
    {
        MessageBox.Show("连接成功");
    }
    else
    {
        MessageBox.Show("连接失败");
    }

实例

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    // 创建一个读写对象
    // 三菱FX系列操作对象       
    private MelsecFxSerial fxSerial = new MelsecFxSerial();

    
    /// <summary>
    /// 连接
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button1_Click(object sender, EventArgs e)
    {
        if (button1.Text == "连接")
        {
            if (fxSerial.IsOpen())  // 如果已经打开
            {
                return;
            }
            try 
            {
                // 配置串口信息
                fxSerial.SerialPortInni(sp =>
                {
                    sp.PortName = "COM1";
                    sp.DataBits = 7;
                    sp.Parity = System.IO.Ports.Parity.Even;
                    sp.StopBits = System.IO.Ports.StopBits.One;
                    sp.BaudRate = 9600;
                });

                // 打开串口
                fxSerial.Open();

                button1.Text = "关闭";

                // 获取电机默认转速 D0数据
                uint value = fxSerial.ReadUInt16("D0").Content;
                textBox1.Text = value.ToString();

            } 
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        else
        {
            if (!fxSerial.IsOpen())
            {
                return;
            }
            fxSerial.Close();
            button1.Text = "连接";
        }
    }

    /// <summary>
    /// 频率
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button2_Click(object sender, EventArgs e)
    {
        fxSerial.Write("D0",Convert.ToUInt16(textBox1.Text));
    }

    /// <summary>
    /// 正转
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button3_Click(object sender, EventArgs e)
    {
        // 写入M0 true
        fxSerial.Write("M0", true);
    }

    /// <summary>
    /// 反转
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button4_Click(object sender, EventArgs e)
    {
        fxSerial.Write("M1", true);

    }

    /// <summary>
    /// 停止正转
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button5_Click(object sender, EventArgs e)
    {
        fxSerial.Write("M0", false);

    }


    /// <summary>
    /// 停止反转
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void button6_Click(object sender, EventArgs e)
    {
        fxSerial.Write("M1", false);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Csharp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值