Linux三菱PLC控制和串口通讯的实现

发布于:2022-11-04 ⋅ 阅读:(383) ⋅ 点赞:(0)

1.检查Linux系统的串口

ls -l /dev/ttyS*

返回如下

crw-rw----. 1 root dialout 4, 64 113 15:29 /dev/ttyS0
crw-rw----. 1 root dialout 4, 65 113 19:50 /dev/ttyS1
crw-rw----. 1 root dialout 4, 66 113 15:29 /dev/ttyS2
crw-rw----. 1 root dialout 4, 67 113 15:29 /dev/ttyS3

可以从返回中看到Linux设备有4个串口,对应Windows下的串口入下
/dev/ttyS0 ==》COM1
/dev/ttyS1 ==》COM2
/dev/ttyS2 ==》COM3
/dev/ttyS3 ==》COM4

2.实际连接硬件端口
PLC通讯连接

3.dotnet SDK
本次用的是net6.0,安装请查看官方说明,这里就不在说明了。

4.PLC通讯库
我这边用的通讯库是 HslCommunication.dll 版本7.2以上
低版本可能不能在net6.0运行

5.简单的hello word

public static class PlcInstuct
{
	static MelsecFxSerial fxSerial = new MelsecFxSerial();
	static PlcInstuct()
        {
            fxSerial.SerialPortInni("/dev/ttyS1", 9600, 7, StopBits.One, Parity.Even);
            fxSerial.Open();
            if (fxSerial.IsOpen())
            {
                Console.WriteLine("PLC连接正常");
            }
            else
            {
                Console.WriteLine("PLC连接失败");
            }

        }
        /// <summary>
        /// 设置Y0点ON
        /// </summary>
        /// <param name="y"></param>
        /// <returns></returns>
        public static bool SetON()
        {
            var rep = fxSerial.Write("Y0",true);
            return rep.IsSuccess;
        } 
}

到此教程结束,说一下中间踩过的坑:
1.Linux的串口和Windows的串口有很大不一样,所以很难确定脸上的串口和串口编号,在Linux上的串口编号长得太像一个路径了。
2.串口权限问题,在Linux上面串口是由使用权限的,如果你的应用运行的权限不够是无法正常调用对应串口的。
总结:还是对Linux了解的太少!

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到