当前位置:网站首页>Utilisez S7. Net communication library
Utilisez S7. Net communication library
2022-01-15 02:11:32 【La lave de Rodinia】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using IniHelper;
using S7.Net;
using thinger.cn.DataConvertHelper;
namespace IniPractice
{
public class CoreLogicManager
{
private Plc simensS7 = null;
//public int MyProperty { get; set; }
public CommunicationState CurentState {
get; set; } = new CommunicationState();
private CancellationTokenSource cts = new CancellationTokenSource();
//Connexion
public bool ConnectPLC(SysSettings sysSettings)
{
try
{
simensS7 = new Plc((CpuType)Enum.Parse(typeof(CpuType), sysSettings.CpuType), sysSettings.CpuType, 0,0);
simensS7.Open();
}
catch (Exception)
{
return false;
}
//Acquisition Exécution multithreadée
Task.Run(() =>
{
PLCCommucation();
}, cts.Token);
return true;
}
private void PLCCommucation()
{
while (!cts.IsCancellationRequested)
{
byte[] result = simensS7.ReadBytes(S7.Net.DataType.DataBlock, 1, 0,23);//Adresse de départ,Nombre30
//Analyse des données Tronquer un tableau d'octets , Convertir en valeur requise
if (result!=null && result.Length==23)
{
CurentState.SatusValue = ByteLib.GetByteFromByteArray(result,22);//Valeur du Statut
CurentState.LimitLeft = BitLib.GetBitFromByteArray(result, 20, 5);//20 Octets par 5Bits
}
}
}
//Déconnecter
private void PLCClose()
{
if (cts!=null)
{
cts.Cancel();
}
if(simensS7!=null)
{
simensS7.Close();
}
}
}
}
版权声明
本文为[La lave de Rodinia]所创,转载请带上原文链接,感谢
https://chowdera.com/2022/01/202201080558307092.html
边栏推荐
猜你喜欢
随机推荐
- Jenkins 通过API获取从节点的secret
- 浅析npm run serve命令
- Push failed Dst refspec V1.0.0 matches more than one.
- 微服务系列--深入理解RPC底层原理与设计实践
- [highcharts] 04_ wrap
- (highly recommended) mobile audio and video from zero to start
- 微服務系列--深入理解RPC底層原理與設計實踐
- Push failed Dst refspec V1.0.0 matches more than one.
- Série de microservices - compréhension approfondie des principes sous - jacents et des pratiques de conception du CPR
- Push failed DST refspec v1. 0,0 matches more than one.
- Analyse de la commande NPM Run Service
- Jenkins obtient le secret du noeud via l'API
- Jenkins API Access Guide
- Quickly write a vs code plug-in
- Yyds dry goods inventory trunk (I)
- Modify a value to make Scrollview and listview elastic and APK volume optimized
- Jenkins exécute le script grovvy via l'API
- Jenkins configure l'affichage chinois (chinois)
- Jenkins Distributed Architecture
- Introduction à Jenkins
- Problème avec les demandes inter - domaines ne portant pas de cookies
- 数据分析八大模型:OGSM模型
- Appel asynchrone, Multithreading
- Android中的羊角符,面试看这个就够了
- Compréhension approfondie du Multithreading
- Utilisation de is et as
- Classe générique, interface générique
- Classe générique, héritage de l'interface générique, délégué
- Exercice de base de données d'accès
- Accès à la base de données SQL avec Multithreading, invoke et action
- Écrire et tester le Protocole Modbus
- . net how to connect to Youxuan database?
- Splitting e-commerce system into micro service
- Écrire un programme winform en utilisant plusieurs threads
- Déclarations SQL couramment utilisées
- Utilisez le texte. Json analyse le fichier json
- Plusieurs adresses de nuget
- Lire Modbus TCP avec nmodbus
- Module 6 operation of the actual combat camp
- TypeError: Object of type ‘TrackedArray‘ is not JSON serializable