2024-04-01
输入数值的地址是固定的(这是触摸屏上随时可以改动) 如:HD4900--HD4950? ? ?50个
?点击保存后 数值保存在地址 HD3800--HD3850 里面中
如 点击保存后? HD4900 的值保存到? HD3800?
? ? ? ? ? ? ? ? ? ? ? ? HD4901 的值保存到? HD3801??
? ? ? ? ? ? ? ? ? ? ? ??HD4902 的值保存到? HD3802? 以此类推
? ? ??
? ? 现在想实现一个功能就是? 假如 在触摸屏上 HD4900 与 HD4950之间任意一个 输入一个数值? ?但这个数值在 HD3820里已经存在 需要一个提示是否继续保存,
? ? 如何用C函数一个寄存器与多个寄存器比较??
下面自己写了一段函数 好像不行? ? ? ? ? ? ?问下大神们该如何写呢?
? ? ? ? ? ?
? ? int n;
? ? n = DHD[7758];? //此地址是输入序号 (假如在 HD4902 输入的就输入 2
? ? if (? M[8891] == 1 )? //点击保存
? ? {
? ? ? ?for( int? ?i=0;? i < 50; i++)
? ? ? ? ? ? if ( FFHD[4900 + n] == FFHD[3800 + i ]? )
? ? ? ? ? ? {
? ? ? ? ? ? ? ? M[3102] = 1;//提示有相同数值
? ? ? ? ? ? ?}? ? ?
? ? ? }
评论3
楼主 2024/4/1 19:14:55
有变址寄存器吧,. LD X0--------MOV D0 [D10] D20
楼主 2024/4/1 19:17:38
几个疑问:
1、c函数功能块是写在PLC中的还是HMI中?
1.1、如果是写在PLC中。
1.1.1、那么要注意你的PLC寄存器地址是否超范围。
1.1.2、这样跑循环,速度很快一下全部执行完毕,只触发一次,触发后相应标志位是
否需要复位?以便于下次循环时使用?
1.2、如果是写在HMI中。
1.2.1、可以用功能键调用函数的方法实现。个人更倾向于这种方法。
1.2.2、可能使用的HMI不是信捷的,其它品牌的HMI也都有类似功能“宏”。
打字不易,仅供参考!
楼主 2024/4/1 19:19:01
少break不是只会输出最后一次循环的结果?