ProDave和西门子PLC通讯写db块时出现D241错误

  今天在C#中调用prodave中的db_write_ex6(BlkNr, DType, StartNr, ref pAmount, BufLen, pWriteBuffer)时,

出错,调用语句RetValue = Prodave6.db_write_ex6(BlkNr, DType, StartNr, ref pAmount, BufLen, pWriteBuffer);

retvalue = 0xD241,然后通过GetErrorMessage_ex6(RetValue, pErrLen, pErrorBuffer);得到错误信息为

D241 The function is not permitted in the current protection level.

谷歌了一下在 这里 中找到了答案,

Hi all,

this is often caused by Norton (especially, but also other antivirus)!
Try to remove Norton (use the special Norton removal tool).

关掉瑞兴杀毒之后就OK了!

转载于:https://www.cnblogs.com/wosinren/p/3463858.html

一.从w95_s7.dll中导入PLC通讯函数的方法[DllImport] 在使用DllImport之前,必须引入InteropServices, 代码如下: using System.Runtime.InteropServices; 具体使用方法可以参考我的博客中转载的一篇文章 《C#(.net)中的DllImport用法[转] 》的很不错,千万要注意C++数据类型到C#的对应关系,选用合适的类型。比如 char* 可以用string来转换,指针类型可以ref 或者数组。 原文地址:http://www.cnblogs.com/xumingming/archive/2008/10/10/1308248.html 二.定义结构体类型 2.1 PLC连接参数结构体 1//定义结构体[连接PLC所需参数] 2public struct PLCConnParam 3{ 4 public byte Addres; // 定义CPU的MPI/DP地址 5 //public byte SegmentId; // 保留为0 6 public byte Rack; // 定义CPU的机架号 7 public byte Slot; // 定义CPU的槽号 8} 2.2 PLC存储区域类别编号 1//定义枚举类型[PLC的存储区域编号] 2public enum PLCBlockType 3{ 4 I = 1, //Input bytes 5 Q = 2, //Output bytes 6 M = 3, //Flag bytes 7 T = 4, //Timer words 8 Z = 5, //Counter words 9 D = 6, //Data from DB 10} 三.常用函数详细讲解 3.1 建立PLC连接函数 首先从W95_S7.DLL中导入连接函数,访问权限为私有,C#将会对此函数进行封装,供外部调用,稍后讲解. 1/**//// <summary>与PLC建立连接,该函数必须在其他所有函数调用之前被调用 2/// </summary> 3/// <param name="nr">连接数,在DOS,WIN3.1最多可以有4个,在WIN95以上最多可以有16个</param> 4/// <param name="device">与PLC通讯的设备名称,一般为S7ONLINE</param> 5/// <param name="adr_table">参数列表,4个值分别为MPI/DP地址,保留值=0,槽号,机架号</param> 6/// <returns>0正常返回,非0为错误号</returns> 7[DllImport("w95_s7.dll")] 8private extern static int load_tool(byte nr, string device, byte[,] adr_table); 说明: 在一个MPI/DP网络中若有多个PLC,可指定多个连接列。最后一列的所有参数须置0,以标志参数列结束。例如一个MPI/DP网中有两个PLC,他们的MPI地址分别为2和3,槽号均为2,机架号均为0,则可按如下方式调用:byte[,] ba={{2,0,2,0},{3,0,2,0},{0,0,0,0}}; int err=load_tool(1, "s7online",ba); 返回值为int型,如果返回0则表示执行成功,非零值,则需要根据错误号查找到错误具体信息,具体参照本文第五部分:错误代码字典
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值