1、S7通讯回顾
- (1)建立TCP连接 Socket.Connect-
- (2)发送访问请求 COTP-
- (3)交换通信信息 Setup Communication-
- (4)执行相关操作 读、写、PLC启停、时间、上传下载-
2、s7报文回顾
3、通讯库回顾
4、继续封装
/// <summary>
/// 写入数据
/// </summary>
/// <typeparam name="T">写入的数据类型</typeparam>
/// <param name="value">写入的目标数值</param>
/// <param name="variable">PLC变量地址</param>
/// <returns></returns>
public Result Write<T>(T value, string variable)
{
DataParameter dataParameter = new DataParameter();
Type mtype = typeof(T);
//如果是布尔类型,则修改数据类型为bit
if (mtype.Name == "Boolean")
{
dataParameter.DataItemType = DataItemType.BIT;
}
try
{
// 解析地址
dataParameter.GetFromVariable(variable);
// 写入数据
this.Write<T>(
value,
dataParameter.ParamItemType,
dataParameter.AreaType,
dataParameter.DBNumber,
dataParameter.ByteAddress,
dataParameter.BitAddress,
dataParameter.DataItemType);
if (dataParameter.State != 0xff)
{
throw new Exception("数据写入失败!" + dataParameter.State);
}
return new Result();
}
catch (Exception ex)
{
return new Result() { IsSuccessed = false, Message = ex.Message };
}
}
5、测试程序
1、写入float
2、写入short
3、写入bool
6、小结
自己的通讯库是够甘甜的,和新疆的葡萄一样的香甜,有人可能要问,前面不是有第3方通讯库写好的,拉来用不就行了吗?是的,没有错,别人的东西可以拉来用,但是我们的目标不仅是使用,而是形成自己的产品,实力,别人的库也是写的代码,只是我们看不到而已。同样的,我们自己也可以,强国工程,从小做起,不得不来个大大的鸡腿,真香啊。
原创不易,打字截图不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,动动你的金手指,早日实现财务自由