| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- using Prism.Mvvm;
- namespace SKMC.Api.Motion.Model
- {
- /// <summary>
- /// IO模型
- /// </summary>
- public class MotionIO : BindableBase
- {
- public int VALUE_COUNTER_MAX { get; set; } = 9999;
- private string _type;
- public string Type
- {
- get { return _type; }
- set { _type = value; RaisePropertyChanged(); }
- }
- private string _code;
- public string Code
- {
- get { return _code; }
- set { _code = value; RaisePropertyChanged(); }
- }
- private string catalog;
- /// <summary>
- /// 所在(模块)分类
- /// </summary>
- public string Catalog
- {
- get { return catalog; }
- set { catalog = value; RaisePropertyChanged(); }
- }
- private byte _value = 255;
- /// <summary>
- /// 当前数值
- /// </summary>
- public byte Value
- {
- get { return _value; }
- set
- {
- // value changed
- if (_value != value)
- {
- _valueConunter = 0;
- _valueLast = _value;
- }
- _value = value;
- if (_valueConunter < VALUE_COUNTER_MAX) _valueConunter++;
- RaisePropertyChanged();
- }
- }
- private byte _valueLast = 255;
- /// <summary>
- /// 前一个数值
- /// </summary>
- public byte ValueLast
- {
- get => _valueLast;
- set => _valueLast = value;
- }
- private int _valueConunter;
- /// <summary>
- /// 数值计数
- /// </summary>
- public int ValueCounter
- {
- get { return _valueConunter; }
- set { _valueConunter = value; }
- }
- public string ValueTxt { get => "■"; }
- private bool _testMode;
- /// <summary>
- /// 测试模式下不获取数据
- /// </summary>
- public bool TestMode
- {
- get { return _testMode; }
- set { _testMode = value; }
- }
- private string _name;
- public string Name
- {
- get { return _name; }
- set { _name = value; RaisePropertyChanged(); }
- }
- private short _devNo;
- /// <summary>
- /// IO模组设备序号
- /// </summary>
- public short DevNo
- {
- get { return _devNo; }
- set { _devNo = value; }
- }
- private short _siteNO;
- /// <summary>
- /// 在设备上的点位顺序, 从0开始
- /// </summary>
- public short SiteNo
- {
- get { return _siteNO; }
- set { _siteNO = value; }
- }
- private short _siteNoMutex;
- /// <summary>
- /// 点位互斥设置
- /// </summary>
- public short SiteNoMutex
- {
- get { return _siteNoMutex; }
- set { _siteNoMutex = value; }
- }
- private short _grpNo = 0;
- /// <summary>
- /// 逻辑组序号
- /// </summary>
- public short GrpNo
- {
- get { return _grpNo; }
- set { _grpNo = value; }
- }
- private short _bitNo;
- /// <summary>
- /// BitNo是IO在逻辑组的序号
- /// </summary>
- public short BitNo
- {
- get { return _bitNo; }
- set { _bitNo = value; }
- }
- private short _dioNo;
- /// <summary>
- /// DioNo是IO在全局的序号, 可通过GrpNo、BitNo组合计算
- /// </summary>
- public short DioNo
- {
- get { return _dioNo; }
- set { _dioNo = value; }
- }
- public string SerialName { get => $"[{Code}]: {Name}"; }
- /// <summary>
- /// 一组8位数据的映射方法
- /// </summary>
- /// <returns></returns>
- public MotionIO Set8Bit()
- {
- _grpNo = _siteNO >= 8 ? (short)(_devNo * 2 + 1) : (short)(_devNo * 2);
- _bitNo = _siteNO >= 8 ? (short)(_siteNO - 8) : _siteNO;
- _dioNo = (short)(_grpNo * 8 + _bitNo);
- return this;
- }
- /// <summary>
- /// 一组16位数据的映射方法
- /// </summary>
- /// <returns></returns>
- public MotionIO Set16Bit()
- {
- _grpNo = _devNo;
- _bitNo = _siteNO;
- _dioNo = (short)(_grpNo * 16 + _bitNo);
- return this;
- }
- public void Reset()
- {
- _value = 0;
- _valueLast = 0;
- _valueConunter = 0;
- }
- private short _invert = 0;
- /// <summary>
- /// 是否取反
- /// </summary>
- public short Invert
- {
- get { return _invert; }
- set { _invert = value; RaisePropertyChanged(); }
- }
- private short _trigger;
- // 是否为触发器 (用于流程触发)
- public short Trigger
- {
- get { return _trigger; }
- set { _trigger = value; }
- }
- private string _desc;
- public string Desc
- {
- get { return _desc; }
- set { _desc = value; RaisePropertyChanged(); }
- }
- }
- }
|