daniel4587
级别: 探索解密
精华主题: 0
发帖数量: 43 个
工控威望: 158 点
下载积分: 804 分
在线时间: 30(小时)
注册时间: 2017-08-09
最后登录: 2025-03-21
查看daniel4587的 主题 / 回贴
楼主  发表于: 10天前
CASE Mode OF
    onlyDay:
    IF currentTimeHour >= InShiftTime.working[day].shiftHours.hours[day] AND currentTimeHour >= InShiftTime.working[day].shiftMinutes.minutes[day]
       AND currentTimeHour < InShiftTime.off_work[day].shiftHours.hours[day] AND currentTimeMinutes < InShiftTime.off_work[day].shiftMinutes.minutes[day] THEN
    CheckShift := day ;
    END_IF;
    day_night:
    ;
    day_middle_night:
    ;
ELSE
    ;
END_CASE;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
请问onlyDay和day是两个枚举的成员,onlyDay做case选项时可以编译,但用day去做数组下标索引时,一直报错,提示索引号不合法,编程环境是SYSMAC STUDIO  v1.60。以前在西门子TIA里用的很溜的,没啥问题。
ezio2016
工控小白
级别: 略有小成
精华主题: 0
发帖数量: 190 个
工控威望: 316 点
下载积分: 980 分
在线时间: 123(小时)
注册时间: 2016-08-05
最后登录: 2025-03-22
查看ezio2016的 主题 / 回贴
1楼  发表于: 10天前
数组索引只能是数值,用枚举型去做索引,不就是用字符串肯定不行。估计软件也不会根据枚举值去访问实际的数值,再代入到数组索引中访问。直接用数值吧
daniel4587
级别: 探索解密
精华主题: 0
发帖数量: 43 个
工控威望: 158 点
下载积分: 804 分
在线时间: 30(小时)
注册时间: 2017-08-09
最后登录: 2025-03-21
查看daniel4587的 主题 / 回贴
2楼  发表于: 10天前
SysHC_GetSystemDate(xEnable := TRUE);
currentHours := UINT_TO_INT(SysHC_GetSystemDate.uiHour);
currentMinutes := UINT_TO_INT(SysHC_GetSystemDate.uiMinute);

CASE Mode OF
    DUT_ShiftMode.onlyDay:
    IF currentHours >= InShiftTime.working[DUT_Shift.day].hour[DUT_Shift.day] AND currentMinutes >= InShiftTime.working[DUT_Shift.day].minute[DUT_Shift.day]
        AND currentHours < InShiftTime.off_work[DUT_Shift.day].hour[DUT_Shift.day] AND currentMinutes < InShiftTime.off_work[DUT_Shift.day].minute[DUT_Shift.day] THEN
        POU_CurrentShift := DUT_Shift.day;
    END_IF
    DUT_ShiftMode.day_night:
    IF TRUE THEN
        ;
    END_IF
    ;
    DUT_ShiftMode.day_middle_night:
    ;
    ELSE
    ;
END_CASE

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
这是刚用汇川InoProShop做的,也编译通过了。
不知道欧姆龙要怎样搞。
qq240559043
干就完了
级别: 略有小成
精华主题: 0
发帖数量: 194 个
工控威望: 335 点
下载积分: 4120 分
在线时间: 146(小时)
注册时间: 2012-06-06
最后登录: 2025-03-15
查看qq240559043的 主题 / 回贴
3楼  发表于: 9天前
引用
引用第2楼daniel4587于2025-03-14 11:59发表的  :
SysHC_GetSystemDate(xEnable := TRUE);
currentHours := UINT_TO_INT(SysHC_GetSystemDate.uiHour);
currentMinutes := UINT_TO_INT(SysHC_GetSystemDate.uiMinute);

CASE Mode OF
.......



codesys肯定可以呀,你这个问题我早就遇到过了。所以(为什么网上说:codesys是安卓,博途是苹果)除了codesys和博途都是其它。虽然欧姆龙用的是codesys底层
qq240559043
干就完了
级别: 略有小成
精华主题: 0
发帖数量: 194 个
工控威望: 335 点
下载积分: 4120 分
在线时间: 146(小时)
注册时间: 2012-06-06
最后登录: 2025-03-15
查看qq240559043的 主题 / 回贴
4楼  发表于: 9天前
引用
引用第1楼ezio2016于2025-03-14 11:05发表的  :
数组索引只能是数值,用枚举型去做索引,不就是用字符串肯定不行。估计软件也不会根据枚举值去访问实际的数值,再代入到数组索引中访问。直接用数值吧


枚举本质上还是数值,只是为了方便人阅读。编译是会替换成数值(这才是正确的,欧姆龙居然认为枚举是新的类型)问过官方客服了
ezio2016
工控小白
级别: 略有小成
精华主题: 0
发帖数量: 190 个
工控威望: 316 点
下载积分: 980 分
在线时间: 123(小时)
注册时间: 2016-08-05
最后登录: 2025-03-22
查看ezio2016的 主题 / 回贴
5楼  发表于: 7天前
引用
引用第4楼qq240559043于2025-03-15 11:35发表的  :


枚举本质上还是数值,只是为了方便人阅读。编译是会替换成数值(这才是正确的,欧姆龙居然认为枚举是新的类型)问过官方客服了



确实没错,我找了欧姆龙产品技术问,欧姆龙的NX/NJ虽然是codesys那一套,但是又定制开发了,导致很多时候不通用,需要另外修改。
类似比亚迪、宁德时代之前都尝试想导入codesys到欧姆龙,但还是有些奇怪的问题,需要人工调整。