西门子PLC S7-200接编码器开发
最近需要在电子秤上面接编码器,通过一定周期内转速变化大小来判断机台加减速还是匀速状态。
一、硬件接线
二、PLC梯形图程序
梯形图程序编写好之后,就可以上传到PLC,让PLC处于Run状态就好了。
三、上位机程序
- C#版上位机程序
通过nuget包搜索Sharp7开发包进行安装,然后就可以通过如下代码获取PLC的高速计数器的值。
S7Client client = new S7Client();client.SetConnectionType(3);int connectionResult = client.ConnectTo("10.10.30.59", 0, 1);if (connectionResult == 0) //连接成功{MessageBox.Show("PLC连接成功");} var buffer = new byte[4];int readResult = client.DBRead(1, 1, buffer.Length, buffer);if (readResult == 0){ushort value0 = (ushort)buffer[0];ushort value1 = (ushort)buffer[1];ushort value2 = (ushort)buffer[2];ushort value3 = (ushort)buffer[3];}client.Disconnect();
- Java版上位机程序
Java连接西门子PLC可以通过s7connector开源项目连接。
github地址:https://github.com/s7connector/s7connector/ , 下载下来之后将源码拷贝到项目中或者通过maven安装jar包均可。
S7Connector connector = S7ConnectorFactory.buildTCPConnector().withHost("10.10.30.59").withPort(102).withType(3).withRack(0).withSlot(1).build();byte[] buffer = connector.read(DaveArea.DB, 1, 4, 1);int value0 = buffer[0]&0xFF; //0xFF是为了将负数转为无符号整数int value1 = buffer[1]&0xFF;int value2 = buffer[2]&0xFF;int value3 = buffer[3]&0xFF;connector.close();