From 0125820c898005ab95cd64a254bddcbce81bf0c1 Mon Sep 17 00:00:00 2001 From: babayaga Date: Thu, 24 Apr 2025 21:41:53 +0200 Subject: [PATCH] maintainence love:) --- packages/kbot/dist-in/data/openai_models.json | 26 +- .../kbot/dist-in/data/openrouter_models.json | 1406 +-- .../kbot/dist-in/src/models/cache/openai.ts | 2 +- .../dist-in/src/models/cache/openrouter.ts | 2 +- packages/kbot/dist/main_node.js | 31 +- packages/kbot/dist/package-lock.json | 4 +- packages/kbot/dist/package.json | 2 +- packages/kbot/schema.json | 2 +- packages/kbot/schema_ui.json | 2 +- .../kbot/src/models/cache/openai-models.ts | 4 +- .../models/cache/openrouter-models-free.ts | 4 +- .../src/models/cache/openrouter-models.ts | 48 +- packages/kbot/src/zod_types.ts | 5 +- packages/kbot/tests/pdf/omron/convert.sh | 2 +- packages/kbot/tests/pdf/omron/omron.h | 9821 ++--------------- packages/kbot/tests/pdf/sako_manual.md | 116 +- 16 files changed, 1730 insertions(+), 9747 deletions(-) diff --git a/packages/kbot/dist-in/data/openai_models.json b/packages/kbot/dist-in/data/openai_models.json index c859a492..a29cc0ea 100644 --- a/packages/kbot/dist-in/data/openai_models.json +++ b/packages/kbot/dist-in/data/openai_models.json @@ -1,5 +1,5 @@ { - "timestamp": 1745500189322, + "timestamp": 1745523700281, "models": [ { "id": "gpt-4o-audio-preview-2024-12-17", @@ -277,18 +277,6 @@ "created": 1732734466, "owned_by": "system" }, - { - "id": "o3-mini-2025-01-31", - "object": "model", - "created": 1738010200, - "owned_by": "system" - }, - { - "id": "o3-mini", - "object": "model", - "created": 1737146383, - "owned_by": "system" - }, { "id": "tts-1-hd", "object": "model", @@ -379,6 +367,18 @@ "created": 1725648979, "owned_by": "system" }, + { + "id": "o3-mini", + "object": "model", + "created": 1737146383, + "owned_by": "system" + }, + { + "id": "o3-mini-2025-01-31", + "object": "model", + "created": 1738010200, + "owned_by": "system" + }, { "id": "tts-1", "object": "model", diff --git a/packages/kbot/dist-in/data/openrouter_models.json b/packages/kbot/dist-in/data/openrouter_models.json index b014d84f..70d6827f 100644 --- a/packages/kbot/dist-in/data/openrouter_models.json +++ b/packages/kbot/dist-in/data/openrouter_models.json @@ -1,5 +1,5 @@ { - "timestamp": 1745500189490, + "timestamp": 1745523700455, "models": [ { "id": "microsoft/mai-ds-r1:free", @@ -4830,38 +4830,6 @@ }, "per_request_limits": null }, - { - "id": "neversleep/llama-3.1-lumimaid-70b", - "name": "NeverSleep: Lumimaid v0.2 70B", - "created": 1729555200, - "description": "Lumimaid v0.2 70B is a finetune of [Llama 3.1 70B](/meta-llama/llama-3.1-70b-instruct) with a \"HUGE step up dataset wise\" compared to Lumimaid v0.1. Sloppy chats output were purged.\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).", - "context_length": 16384, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama3", - "instruct_type": "llama3" - }, - "pricing": { - "prompt": "0.0000015", - "completion": "0.00000225", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 16384, - "max_completion_tokens": 2048, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "anthracite-org/magnum-v4-72b", "name": "Magnum v4 72B", @@ -4894,6 +4862,38 @@ }, "per_request_limits": null }, + { + "id": "neversleep/llama-3.1-lumimaid-70b", + "name": "NeverSleep: Lumimaid v0.2 70B", + "created": 1729555200, + "description": "Lumimaid v0.2 70B is a finetune of [Llama 3.1 70B](/meta-llama/llama-3.1-70b-instruct) with a \"HUGE step up dataset wise\" compared to Lumimaid v0.1. Sloppy chats output were purged.\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).", + "context_length": 16384, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.0000015", + "completion": "0.00000225", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 16384, + "max_completion_tokens": 2048, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "anthropic/claude-3.5-sonnet:beta", "name": "Anthropic: Claude 3.5 Sonnet (self-moderated)", @@ -4996,38 +4996,6 @@ }, "per_request_limits": null }, - { - "id": "mistralai/ministral-8b", - "name": "Mistral: Ministral 8B", - "created": 1729123200, - "description": "Ministral 8B is an 8B parameter model featuring a unique interleaved sliding-window attention pattern for faster, memory-efficient inference. Designed for edge use cases, it supports up to 128k context length and excels in knowledge and reasoning tasks. It outperforms peers in the sub-10B category, making it perfect for low-latency, privacy-first applications.", - "context_length": 128000, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Mistral", - "instruct_type": null - }, - "pricing": { - "prompt": "0.0000001", - "completion": "0.0000001", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 128000, - "max_completion_tokens": null, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "mistralai/ministral-3b", "name": "Mistral: Ministral 3B", @@ -5060,6 +5028,38 @@ }, "per_request_limits": null }, + { + "id": "mistralai/ministral-8b", + "name": "Mistral: Ministral 8B", + "created": 1729123200, + "description": "Ministral 8B is an 8B parameter model featuring a unique interleaved sliding-window attention pattern for faster, memory-efficient inference. Designed for edge use cases, it supports up to 128k context length and excels in knowledge and reasoning tasks. It outperforms peers in the sub-10B category, making it perfect for low-latency, privacy-first applications.", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000001", + "completion": "0.0000001", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "qwen/qwen-2.5-7b-instruct:free", "name": "Qwen2.5 7B Instruct (free)", @@ -5189,10 +5189,10 @@ "per_request_limits": null }, { - "id": "inflection/inflection-3-productivity", - "name": "Inflection: Inflection 3 Productivity", + "id": "inflection/inflection-3-pi", + "name": "Inflection: Inflection 3 Pi", "created": 1728604800, - "description": "Inflection 3 Productivity is optimized for following instructions. It is better for tasks requiring JSON output or precise adherence to provided guidelines. It has access to recent news.\n\nFor emotional intelligence similar to Pi, see [Inflect 3 Pi](/inflection/inflection-3-pi)\n\nSee [Inflection's announcement](https://inflection.ai/blog/enterprise) for more details.", + "description": "Inflection 3 Pi powers Inflection's [Pi](https://pi.ai) chatbot, including backstory, emotional intelligence, productivity, and safety. It has access to recent news, and excels in scenarios like customer support and roleplay.\n\nPi has been trained to mirror your tone and style, if you use more emojis, so will Pi! Try experimenting with various prompts and conversation styles.", "context_length": 8000, "architecture": { "modality": "text->text", @@ -5221,10 +5221,10 @@ "per_request_limits": null }, { - "id": "inflection/inflection-3-pi", - "name": "Inflection: Inflection 3 Pi", + "id": "inflection/inflection-3-productivity", + "name": "Inflection: Inflection 3 Productivity", "created": 1728604800, - "description": "Inflection 3 Pi powers Inflection's [Pi](https://pi.ai) chatbot, including backstory, emotional intelligence, productivity, and safety. It has access to recent news, and excels in scenarios like customer support and roleplay.\n\nPi has been trained to mirror your tone and style, if you use more emojis, so will Pi! Try experimenting with various prompts and conversation styles.", + "description": "Inflection 3 Productivity is optimized for following instructions. It is better for tasks requiring JSON output or precise adherence to provided guidelines. It has access to recent news.\n\nFor emotional intelligence similar to Pi, see [Inflect 3 Pi](/inflection/inflection-3-pi)\n\nSee [Inflection's announcement](https://inflection.ai/blog/enterprise) for more details.", "context_length": 8000, "architecture": { "modality": "text->text", @@ -5383,70 +5383,6 @@ }, "per_request_limits": null }, - { - "id": "meta-llama/llama-3.2-3b-instruct:free", - "name": "Meta: Llama 3.2 3B Instruct (free)", - "created": 1727222400, - "description": "Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages.\n\nTrained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings.\n\nClick here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md).\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).", - "context_length": 20000, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama3", - "instruct_type": "llama3" - }, - "pricing": { - "prompt": "0", - "completion": "0", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 20000, - "max_completion_tokens": 20000, - "is_moderated": false - }, - "per_request_limits": null - }, - { - "id": "meta-llama/llama-3.2-3b-instruct", - "name": "Meta: Llama 3.2 3B Instruct", - "created": 1727222400, - "description": "Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages.\n\nTrained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings.\n\nClick here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md).\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).", - "context_length": 131072, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama3", - "instruct_type": "llama3" - }, - "pricing": { - "prompt": "0.000000015", - "completion": "0.000000025", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 131072, - "max_completion_tokens": 131072, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "meta-llama/llama-3.2-1b-instruct:free", "name": "Meta: Llama 3.2 1B Instruct (free)", @@ -5511,39 +5447,6 @@ }, "per_request_limits": null }, - { - "id": "meta-llama/llama-3.2-90b-vision-instruct", - "name": "Meta: Llama 3.2 90B Vision Instruct", - "created": 1727222400, - "description": "The Llama 90B Vision model is a top-tier, 90-billion-parameter multimodal model designed for the most challenging visual reasoning and language tasks. It offers unparalleled accuracy in image captioning, visual question answering, and advanced image-text comprehension. Pre-trained on vast multimodal datasets and fine-tuned with human feedback, the Llama 90B Vision is engineered to handle the most demanding image-based AI tasks.\n\nThis model is perfect for industries requiring cutting-edge multimodal AI capabilities, particularly those dealing with complex, real-time visual and textual analysis.\n\nClick here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD_VISION.md).\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).", - "context_length": 131072, - "architecture": { - "modality": "text+image->text", - "input_modalities": [ - "text", - "image" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama3", - "instruct_type": "llama3" - }, - "pricing": { - "prompt": "0.0000009", - "completion": "0.0000009", - "request": "0", - "image": "0.001301", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 131072, - "max_completion_tokens": null, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "meta-llama/llama-3.2-11b-vision-instruct:free", "name": "Meta: Llama 3.2 11B Vision Instruct (free)", @@ -5610,6 +5513,103 @@ }, "per_request_limits": null }, + { + "id": "meta-llama/llama-3.2-90b-vision-instruct", + "name": "Meta: Llama 3.2 90B Vision Instruct", + "created": 1727222400, + "description": "The Llama 90B Vision model is a top-tier, 90-billion-parameter multimodal model designed for the most challenging visual reasoning and language tasks. It offers unparalleled accuracy in image captioning, visual question answering, and advanced image-text comprehension. Pre-trained on vast multimodal datasets and fine-tuned with human feedback, the Llama 90B Vision is engineered to handle the most demanding image-based AI tasks.\n\nThis model is perfect for industries requiring cutting-edge multimodal AI capabilities, particularly those dealing with complex, real-time visual and textual analysis.\n\nClick here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD_VISION.md).\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).", + "context_length": 131072, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.0000009", + "completion": "0.0000009", + "request": "0", + "image": "0.001301", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null + }, + { + "id": "meta-llama/llama-3.2-3b-instruct:free", + "name": "Meta: Llama 3.2 3B Instruct (free)", + "created": 1727222400, + "description": "Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages.\n\nTrained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings.\n\nClick here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md).\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).", + "context_length": 20000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0", + "completion": "0", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 20000, + "max_completion_tokens": 20000, + "is_moderated": false + }, + "per_request_limits": null + }, + { + "id": "meta-llama/llama-3.2-3b-instruct", + "name": "Meta: Llama 3.2 3B Instruct", + "created": 1727222400, + "description": "Llama 3.2 3B is a 3-billion-parameter multilingual large language model, optimized for advanced natural language processing tasks like dialogue generation, reasoning, and summarization. Designed with the latest transformer architecture, it supports eight languages, including English, Spanish, and Hindi, and is adaptable for additional languages.\n\nTrained on 9 trillion tokens, the Llama 3.2 3B model excels in instruction-following, complex reasoning, and tool use. Its balanced performance makes it ideal for applications needing accuracy and efficiency in text generation across multilingual settings.\n\nClick here for the [original model card](https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/MODEL_CARD.md).\n\nUsage of this model is subject to [Meta's Acceptable Use Policy](https://www.llama.com/llama3/use-policy/).", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.000000015", + "completion": "0.000000025", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 131072, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "qwen/qwen-2.5-72b-instruct:free", "name": "Qwen2.5 72B Instruct (free)", @@ -5739,6 +5739,39 @@ }, "per_request_limits": null }, + { + "id": "openai/o1-mini", + "name": "OpenAI: o1-mini", + "created": 1726099200, + "description": "The latest and strongest model family from OpenAI, o1 is designed to spend more time thinking before responding.\n\nThe o1 models are optimized for math, science, programming, and other STEM-related tasks. They consistently exhibit PhD-level accuracy on benchmarks in physics, chemistry, and biology. Learn more in the [launch announcement](https://openai.com/o1).\n\nNote: This model is currently experimental and not suitable for production use-cases, and may be heavily rate-limited.", + "context_length": 128000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.0000011", + "completion": "0.0000044", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0", + "input_cache_read": "0.00000055" + }, + "top_provider": { + "context_length": 128000, + "max_completion_tokens": 65536, + "is_moderated": true + }, + "per_request_limits": null + }, { "id": "openai/o1-preview", "name": "OpenAI: o1-preview", @@ -5805,39 +5838,6 @@ }, "per_request_limits": null }, - { - "id": "openai/o1-mini", - "name": "OpenAI: o1-mini", - "created": 1726099200, - "description": "The latest and strongest model family from OpenAI, o1 is designed to spend more time thinking before responding.\n\nThe o1 models are optimized for math, science, programming, and other STEM-related tasks. They consistently exhibit PhD-level accuracy on benchmarks in physics, chemistry, and biology. Learn more in the [launch announcement](https://openai.com/o1).\n\nNote: This model is currently experimental and not suitable for production use-cases, and may be heavily rate-limited.", - "context_length": 128000, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "GPT", - "instruct_type": null - }, - "pricing": { - "prompt": "0.0000011", - "completion": "0.0000044", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0", - "input_cache_read": "0.00000055" - }, - "top_provider": { - "context_length": 128000, - "max_completion_tokens": 65536, - "is_moderated": true - }, - "per_request_limits": null - }, { "id": "openai/o1-mini-2024-09-12", "name": "OpenAI: o1-mini (2024-09-12)", @@ -5968,6 +5968,71 @@ }, "per_request_limits": null }, + { + "id": "sao10k/l3.1-euryale-70b", + "name": "Sao10K: Llama 3.1 Euryale 70B v2.2", + "created": 1724803200, + "description": "Euryale L3.1 70B v2.2 is a model focused on creative roleplay from [Sao10k](https://ko-fi.com/sao10k). It is the successor of [Euryale L3 70B v2.1](/models/sao10k/l3-euryale-70b).", + "context_length": 131072, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.0000007", + "completion": "0.0000008", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 131072, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null + }, + { + "id": "google/gemini-flash-1.5-8b-exp", + "name": "Google: Gemini 1.5 Flash 8B Experimental", + "created": 1724803200, + "description": "Gemini Flash 1.5 8B Experimental is an experimental, 8B parameter version of the [Gemini Flash 1.5](/models/google/gemini-flash-1.5) model.\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n#multimodal\n\nNote: This model is currently experimental and not suitable for production use-cases, and may be heavily rate-limited.", + "context_length": 1000000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0", + "completion": "0", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 1000000, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "qwen/qwen-2.5-vl-7b-instruct:free", "name": "Qwen: Qwen2.5-VL 7B Instruct (free)", @@ -6034,71 +6099,6 @@ }, "per_request_limits": null }, - { - "id": "sao10k/l3.1-euryale-70b", - "name": "Sao10K: Llama 3.1 Euryale 70B v2.2", - "created": 1724803200, - "description": "Euryale L3.1 70B v2.2 is a model focused on creative roleplay from [Sao10k](https://ko-fi.com/sao10k). It is the successor of [Euryale L3 70B v2.1](/models/sao10k/l3-euryale-70b).", - "context_length": 131072, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama3", - "instruct_type": "llama3" - }, - "pricing": { - "prompt": "0.0000007", - "completion": "0.0000008", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 131072, - "max_completion_tokens": 16384, - "is_moderated": false - }, - "per_request_limits": null - }, - { - "id": "google/gemini-flash-1.5-8b-exp", - "name": "Google: Gemini 1.5 Flash 8B Experimental", - "created": 1724803200, - "description": "Gemini Flash 1.5 8B Experimental is an experimental, 8B parameter version of the [Gemini Flash 1.5](/models/google/gemini-flash-1.5) model.\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n#multimodal\n\nNote: This model is currently experimental and not suitable for production use-cases, and may be heavily rate-limited.", - "context_length": 1000000, - "architecture": { - "modality": "text+image->text", - "input_modalities": [ - "text", - "image" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Gemini", - "instruct_type": null - }, - "pricing": { - "prompt": "0", - "completion": "0", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 1000000, - "max_completion_tokens": 8192, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "ai21/jamba-1-5-mini", "name": "AI21: Jamba 1.5 Mini", @@ -6292,38 +6292,6 @@ }, "per_request_limits": null }, - { - "id": "sao10k/l3-lunaris-8b", - "name": "Sao10K: Llama 3 8B Lunaris", - "created": 1723507200, - "description": "Lunaris 8B is a versatile generalist and roleplaying model based on Llama 3. It's a strategic merge of multiple models, designed to balance creativity with improved logic and general knowledge.\n\nCreated by [Sao10k](https://huggingface.co/Sao10k), this model aims to offer an improved experience over Stheno v3.2, with enhanced creativity and logical reasoning.\n\nFor best results, use with Llama 3 Instruct context template, temperature 1.4, and min_p 0.1.", - "context_length": 8192, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama3", - "instruct_type": "llama3" - }, - "pricing": { - "prompt": "0.00000002", - "completion": "0.00000005", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 8192, - "max_completion_tokens": null, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "aetherwiing/mn-starcannon-12b", "name": "Aetherwiing: Starcannon 12B", @@ -6356,6 +6324,38 @@ }, "per_request_limits": null }, + { + "id": "sao10k/l3-lunaris-8b", + "name": "Sao10K: Llama 3 8B Lunaris", + "created": 1723507200, + "description": "Lunaris 8B is a versatile generalist and roleplaying model based on Llama 3. It's a strategic merge of multiple models, designed to balance creativity with improved logic and general knowledge.\n\nCreated by [Sao10k](https://huggingface.co/Sao10k), this model aims to offer an improved experience over Stheno v3.2, with enhanced creativity and logical reasoning.\n\nFor best results, use with Llama 3 Instruct context template, temperature 1.4, and min_p 0.1.", + "context_length": 8192, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.00000002", + "completion": "0.00000005", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 8192, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "openai/gpt-4o-2024-08-06", "name": "OpenAI: GPT-4o (2024-08-06)", @@ -6615,38 +6615,6 @@ }, "per_request_limits": null }, - { - "id": "meta-llama/llama-3.1-405b-instruct", - "name": "Meta: Llama 3.1 405B Instruct", - "created": 1721692800, - "description": "The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs.\n\nMeta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).", - "context_length": 32768, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama3", - "instruct_type": "llama3" - }, - "pricing": { - "prompt": "0.0000008", - "completion": "0.0000008", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 32768, - "max_completion_tokens": 16384, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "meta-llama/llama-3.1-70b-instruct", "name": "Meta: Llama 3.1 70B Instruct", @@ -6679,6 +6647,38 @@ }, "per_request_limits": null }, + { + "id": "meta-llama/llama-3.1-405b-instruct", + "name": "Meta: Llama 3.1 405B Instruct", + "created": 1721692800, + "description": "The highly anticipated 400B class of Llama3 is here! Clocking in at 128k context with impressive eval scores, the Meta AI team continues to push the frontier of open-source LLMs.\n\nMeta's latest class of model (Llama 3.1) launched with a variety of sizes & flavors. This 405B instruct-tuned version is optimized for high quality dialogue usecases.\n\nIt has demonstrated strong performance compared to leading closed-source models including GPT-4o and Claude 3.5 Sonnet in evaluations.\n\nTo read more about the model release, [click here](https://ai.meta.com/blog/meta-llama-3-1/). Usage of this model is subject to [Meta's Acceptable Use Policy](https://llama.meta.com/llama3/use-policy/).", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama3", + "instruct_type": "llama3" + }, + "pricing": { + "prompt": "0.0000008", + "completion": "0.0000008", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "mistralai/codestral-mamba", "name": "Mistral: Codestral Mamba", @@ -6973,38 +6973,6 @@ }, "per_request_limits": null }, - { - "id": "01-ai/yi-large", - "name": "01.AI: Yi Large", - "created": 1719273600, - "description": "The Yi Large model was designed by 01.AI with the following usecases in mind: knowledge search, data classification, human-like chat bots, and customer service.\n\nIt stands out for its multilingual proficiency, particularly in Spanish, Chinese, Japanese, German, and French.\n\nCheck out the [launch announcement](https://01-ai.github.io/blog/01.ai-yi-large-llm-launch) to learn more.", - "context_length": 32768, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Yi", - "instruct_type": null - }, - "pricing": { - "prompt": "0.000003", - "completion": "0.000003", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 32768, - "max_completion_tokens": 4096, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "ai21/jamba-instruct", "name": "AI21: Jamba Instruct", @@ -7037,6 +7005,38 @@ }, "per_request_limits": null }, + { + "id": "01-ai/yi-large", + "name": "01.AI: Yi Large", + "created": 1719273600, + "description": "The Yi Large model was designed by 01.AI with the following usecases in mind: knowledge search, data classification, human-like chat bots, and customer service.\n\nIt stands out for its multilingual proficiency, particularly in Spanish, Chinese, Japanese, German, and French.\n\nCheck out the [launch announcement](https://01-ai.github.io/blog/01.ai-yi-large-llm-launch) to learn more.", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Yi", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000003", + "completion": "0.000003", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 4096, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "anthropic/claude-3.5-sonnet-20240620:beta", "name": "Anthropic: Claude 3.5 Sonnet (2024-06-20) (self-moderated)", @@ -7203,70 +7203,6 @@ }, "per_request_limits": null }, - { - "id": "mistralai/mistral-7b-instruct:free", - "name": "Mistral: Mistral 7B Instruct (free)", - "created": 1716768000, - "description": "A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\n*Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*", - "context_length": 32768, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Mistral", - "instruct_type": "mistral" - }, - "pricing": { - "prompt": "0", - "completion": "0", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 32768, - "max_completion_tokens": 16384, - "is_moderated": false - }, - "per_request_limits": null - }, - { - "id": "mistralai/mistral-7b-instruct", - "name": "Mistral: Mistral 7B Instruct", - "created": 1716768000, - "description": "A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\n*Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*", - "context_length": 32768, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Mistral", - "instruct_type": "mistral" - }, - "pricing": { - "prompt": "0.000000029", - "completion": "0.000000055", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 32768, - "max_completion_tokens": 16384, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "mistralai/mistral-7b-instruct-v0.3", "name": "Mistral: Mistral 7B Instruct v0.3", @@ -7331,6 +7267,70 @@ }, "per_request_limits": null }, + { + "id": "mistralai/mistral-7b-instruct:free", + "name": "Mistral: Mistral 7B Instruct (free)", + "created": 1716768000, + "description": "A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\n*Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": "mistral" + }, + "pricing": { + "prompt": "0", + "completion": "0", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null + }, + { + "id": "mistralai/mistral-7b-instruct", + "name": "Mistral: Mistral 7B Instruct", + "created": 1716768000, + "description": "A high-performing, industry-standard 7.3B parameter model, with optimizations for speed and context length.\n\n*Mistral 7B Instruct has multiple version variants, and this is intended to be the latest version.*", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": "mistral" + }, + "pricing": { + "prompt": "0.000000029", + "completion": "0.000000055", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": 16384, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "microsoft/phi-3-mini-128k-instruct", "name": "Microsoft: Phi-3 Mini 128K Instruct", @@ -7789,38 +7789,6 @@ }, "per_request_limits": null }, - { - "id": "microsoft/wizardlm-2-8x22b", - "name": "WizardLM-2 8x22B", - "created": 1713225600, - "description": "WizardLM-2 8x22B is Microsoft AI's most advanced Wizard model. It demonstrates highly competitive performance compared to leading proprietary models, and it consistently outperforms all existing state-of-the-art opensource models.\n\nIt is an instruct finetune of [Mixtral 8x22B](/models/mistralai/mixtral-8x22b).\n\nTo read more about the model release, [click here](https://wizardlm.github.io/WizardLM2/).\n\n#moe", - "context_length": 65536, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Mistral", - "instruct_type": "vicuna" - }, - "pricing": { - "prompt": "0.0000005", - "completion": "0.0000005", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 65536, - "max_completion_tokens": 16384, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "microsoft/wizardlm-2-7b", "name": "WizardLM-2 7B", @@ -7854,34 +7822,33 @@ "per_request_limits": null }, { - "id": "google/gemini-pro-1.5", - "name": "Google: Gemini 1.5 Pro", - "created": 1712620800, - "description": "Google's latest multimodal model, supports image and video[0] in text or chat prompts.\n\nOptimized for language tasks including:\n\n- Code generation\n- Text generation\n- Text editing\n- Problem solving\n- Recommendations\n- Information extraction\n- Data extraction or generation\n- AI agents\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n* [0]: Video input is not available through OpenRouter at this time.", - "context_length": 2000000, + "id": "microsoft/wizardlm-2-8x22b", + "name": "WizardLM-2 8x22B", + "created": 1713225600, + "description": "WizardLM-2 8x22B is Microsoft AI's most advanced Wizard model. It demonstrates highly competitive performance compared to leading proprietary models, and it consistently outperforms all existing state-of-the-art opensource models.\n\nIt is an instruct finetune of [Mixtral 8x22B](/models/mistralai/mixtral-8x22b).\n\nTo read more about the model release, [click here](https://wizardlm.github.io/WizardLM2/).\n\n#moe", + "context_length": 65536, "architecture": { - "modality": "text+image->text", + "modality": "text->text", "input_modalities": [ - "text", - "image" + "text" ], "output_modalities": [ "text" ], - "tokenizer": "Gemini", - "instruct_type": null + "tokenizer": "Mistral", + "instruct_type": "vicuna" }, "pricing": { - "prompt": "0.00000125", - "completion": "0.000005", + "prompt": "0.0000005", + "completion": "0.0000005", "request": "0", - "image": "0.0006575", + "image": "0", "web_search": "0", "internal_reasoning": "0" }, "top_provider": { - "context_length": 2000000, - "max_completion_tokens": 8192, + "context_length": 65536, + "max_completion_tokens": 16384, "is_moderated": false }, "per_request_limits": null @@ -7919,6 +7886,39 @@ }, "per_request_limits": null }, + { + "id": "google/gemini-pro-1.5", + "name": "Google: Gemini 1.5 Pro", + "created": 1712620800, + "description": "Google's latest multimodal model, supports image and video[0] in text or chat prompts.\n\nOptimized for language tasks including:\n\n- Code generation\n- Text generation\n- Text editing\n- Problem solving\n- Recommendations\n- Information extraction\n- Data extraction or generation\n- AI agents\n\nUsage of Gemini is subject to Google's [Gemini Terms of Use](https://ai.google.dev/terms).\n\n* [0]: Video input is not available through OpenRouter at this time.", + "context_length": 2000000, + "architecture": { + "modality": "text+image->text", + "input_modalities": [ + "text", + "image" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Gemini", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000125", + "completion": "0.000005", + "request": "0", + "image": "0.0006575", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 2000000, + "max_completion_tokens": 8192, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "cohere/command-r-plus", "name": "Cohere: Command R+", @@ -8015,38 +8015,6 @@ }, "per_request_limits": null }, - { - "id": "cohere/command", - "name": "Cohere: Command", - "created": 1710374400, - "description": "Command is an instruction-following conversational model that performs language tasks with high quality, more reliably and with a longer context than our base generative models.\n\nUse of this model is subject to Cohere's [Usage Policy](https://docs.cohere.com/docs/usage-policy) and [SaaS Agreement](https://cohere.com/saas-agreement).", - "context_length": 4096, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Cohere", - "instruct_type": null - }, - "pricing": { - "prompt": "0.000001", - "completion": "0.000002", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 4096, - "max_completion_tokens": 4000, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "cohere/command-r", "name": "Cohere: Command R", @@ -8079,6 +8047,38 @@ }, "per_request_limits": null }, + { + "id": "cohere/command", + "name": "Cohere: Command", + "created": 1710374400, + "description": "Command is an instruction-following conversational model that performs language tasks with high quality, more reliably and with a longer context than our base generative models.\n\nUse of this model is subject to Cohere's [Usage Policy](https://docs.cohere.com/docs/usage-policy) and [SaaS Agreement](https://cohere.com/saas-agreement).", + "context_length": 4096, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Cohere", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000002", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 4096, + "max_completion_tokens": 4000, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "anthropic/claude-3-haiku:beta", "name": "Anthropic: Claude 3 Haiku (self-moderated)", @@ -8449,38 +8449,6 @@ }, "per_request_limits": null }, - { - "id": "mistralai/mistral-medium", - "name": "Mistral Medium", - "created": 1704844800, - "description": "This is Mistral AI's closed-source, medium-sided model. It's powered by a closed-source prototype and excels at reasoning, code, JSON, chat, and more. In benchmarks, it compares with many of the flagship models of other companies.", - "context_length": 32768, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Mistral", - "instruct_type": null - }, - "pricing": { - "prompt": "0.00000275", - "completion": "0.0000081", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 32768, - "max_completion_tokens": null, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "mistralai/mistral-small", "name": "Mistral Small", @@ -8513,6 +8481,38 @@ }, "per_request_limits": null }, + { + "id": "mistralai/mistral-medium", + "name": "Mistral Medium", + "created": 1704844800, + "description": "This is Mistral AI's closed-source, medium-sided model. It's powered by a closed-source prototype and excels at reasoning, code, JSON, chat, and more. In benchmarks, it compares with many of the flagship models of other companies.", + "context_length": 32768, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": null + }, + "pricing": { + "prompt": "0.00000275", + "completion": "0.0000081", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 32768, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "mistralai/mistral-tiny", "name": "Mistral Tiny", @@ -8866,38 +8866,6 @@ }, "per_request_limits": null }, - { - "id": "undi95/toppy-m-7b", - "name": "Toppy M 7B", - "created": 1699574400, - "description": "A wild 7B parameter model that merges several models using the new task_arithmetic merge method from mergekit.\nList of merged models:\n- NousResearch/Nous-Capybara-7B-V1.9\n- [HuggingFaceH4/zephyr-7b-beta](/models/huggingfaceh4/zephyr-7b-beta)\n- lemonilia/AshhLimaRP-Mistral-7B\n- Vulkane/120-Days-of-Sodom-LoRA-Mistral-7b\n- Undi95/Mistral-pippa-sharegpt-7b-qlora\n\n#merge #uncensored", - "context_length": 4096, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Mistral", - "instruct_type": "alpaca" - }, - "pricing": { - "prompt": "0.00000007", - "completion": "0.00000007", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 4096, - "max_completion_tokens": null, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "alpindale/goliath-120b", "name": "Goliath 120B", @@ -8930,6 +8898,38 @@ }, "per_request_limits": null }, + { + "id": "undi95/toppy-m-7b", + "name": "Toppy M 7B", + "created": 1699574400, + "description": "A wild 7B parameter model that merges several models using the new task_arithmetic merge method from mergekit.\nList of merged models:\n- NousResearch/Nous-Capybara-7B-V1.9\n- [HuggingFaceH4/zephyr-7b-beta](/models/huggingfaceh4/zephyr-7b-beta)\n- lemonilia/AshhLimaRP-Mistral-7B\n- Vulkane/120-Days-of-Sodom-LoRA-Mistral-7b\n- Undi95/Mistral-pippa-sharegpt-7b-qlora\n\n#merge #uncensored", + "context_length": 4096, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Mistral", + "instruct_type": "alpaca" + }, + "pricing": { + "prompt": "0.00000007", + "completion": "0.00000007", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 4096, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "openrouter/auto", "name": "Auto Router", @@ -8958,38 +8958,6 @@ }, "per_request_limits": null }, - { - "id": "openai/gpt-3.5-turbo-1106", - "name": "OpenAI: GPT-3.5 Turbo 16k (older v1106)", - "created": 1699228800, - "description": "An older GPT-3.5 Turbo model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more. Training data: up to Sep 2021.", - "context_length": 16385, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "GPT", - "instruct_type": null - }, - "pricing": { - "prompt": "0.000001", - "completion": "0.000002", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 16385, - "max_completion_tokens": 4096, - "is_moderated": true - }, - "per_request_limits": null - }, { "id": "openai/gpt-4-1106-preview", "name": "OpenAI: GPT-4 Turbo (older v1106)", @@ -9023,10 +8991,42 @@ "per_request_limits": null }, { - "id": "google/palm-2-chat-bison-32k", - "name": "Google: PaLM 2 Chat 32k", + "id": "openai/gpt-3.5-turbo-1106", + "name": "OpenAI: GPT-3.5 Turbo 16k (older v1106)", + "created": 1699228800, + "description": "An older GPT-3.5 Turbo model with improved instruction following, JSON mode, reproducible outputs, parallel function calling, and more. Training data: up to Sep 2021.", + "context_length": 16385, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "GPT", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000002", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 16385, + "max_completion_tokens": 4096, + "is_moderated": true + }, + "per_request_limits": null + }, + { + "id": "google/palm-2-codechat-bison-32k", + "name": "Google: PaLM 2 Code Chat 32k", "created": 1698969600, - "description": "PaLM 2 is a language model by Google with improved multilingual, reasoning and coding capabilities.", + "description": "PaLM 2 fine-tuned for chatbot conversations that help with code-related questions.", "context_length": 32768, "architecture": { "modality": "text->text", @@ -9055,10 +9055,10 @@ "per_request_limits": null }, { - "id": "google/palm-2-codechat-bison-32k", - "name": "Google: PaLM 2 Code Chat 32k", + "id": "google/palm-2-chat-bison-32k", + "name": "Google: PaLM 2 Chat 32k", "created": 1698969600, - "description": "PaLM 2 fine-tuned for chatbot conversations that help with code-related questions.", + "description": "PaLM 2 is a language model by Google with improved multilingual, reasoning and coding capabilities.", "context_length": 32768, "architecture": { "modality": "text->text", @@ -9342,38 +9342,6 @@ }, "per_request_limits": null }, - { - "id": "mancer/weaver", - "name": "Mancer: Weaver (alpha)", - "created": 1690934400, - "description": "An attempt to recreate Claude-style verbosity, but don't expect the same level of coherence or memory. Meant for use in roleplay/narrative situations.", - "context_length": 8000, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama2", - "instruct_type": "alpaca" - }, - "pricing": { - "prompt": "0.000001125", - "completion": "0.000001125", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 8000, - "max_completion_tokens": 1000, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "huggingfaceh4/zephyr-7b-beta:free", "name": "Hugging Face: Zephyr 7B (free)", @@ -9406,6 +9374,38 @@ }, "per_request_limits": null }, + { + "id": "mancer/weaver", + "name": "Mancer: Weaver (alpha)", + "created": 1690934400, + "description": "An attempt to recreate Claude-style verbosity, but don't expect the same level of coherence or memory. Meant for use in roleplay/narrative situations.", + "context_length": 8000, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama2", + "instruct_type": "alpaca" + }, + "pricing": { + "prompt": "0.000001125", + "completion": "0.000001125", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 8000, + "max_completion_tokens": 1000, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "anthropic/claude-2.0:beta", "name": "Anthropic: Claude v2.0 (self-moderated)", @@ -9502,38 +9502,6 @@ }, "per_request_limits": null }, - { - "id": "google/palm-2-chat-bison", - "name": "Google: PaLM 2 Chat", - "created": 1689811200, - "description": "PaLM 2 is a language model by Google with improved multilingual, reasoning and coding capabilities.", - "context_length": 9216, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "PaLM", - "instruct_type": null - }, - "pricing": { - "prompt": "0.000001", - "completion": "0.000002", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 9216, - "max_completion_tokens": 1024, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "google/palm-2-codechat-bison", "name": "Google: PaLM 2 Code Chat", @@ -9566,6 +9534,38 @@ }, "per_request_limits": null }, + { + "id": "google/palm-2-chat-bison", + "name": "Google: PaLM 2 Chat", + "created": 1689811200, + "description": "PaLM 2 is a language model by Google with improved multilingual, reasoning and coding capabilities.", + "context_length": 9216, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "PaLM", + "instruct_type": null + }, + "pricing": { + "prompt": "0.000001", + "completion": "0.000002", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 9216, + "max_completion_tokens": 1024, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "gryphe/mythomax-l2-13b", "name": "MythoMax 13B", @@ -9598,38 +9598,6 @@ }, "per_request_limits": null }, - { - "id": "meta-llama/llama-2-13b-chat", - "name": "Meta: Llama 2 13B Chat", - "created": 1687219200, - "description": "A 13 billion parameter language model from Meta, fine tuned for chat completions", - "context_length": 4096, - "architecture": { - "modality": "text->text", - "input_modalities": [ - "text" - ], - "output_modalities": [ - "text" - ], - "tokenizer": "Llama2", - "instruct_type": "llama2" - }, - "pricing": { - "prompt": "0.00000022", - "completion": "0.00000022", - "request": "0", - "image": "0", - "web_search": "0", - "internal_reasoning": "0" - }, - "top_provider": { - "context_length": 4096, - "max_completion_tokens": 2048, - "is_moderated": false - }, - "per_request_limits": null - }, { "id": "meta-llama/llama-2-70b-chat", "name": "Meta: Llama 2 70B Chat", @@ -9662,6 +9630,38 @@ }, "per_request_limits": null }, + { + "id": "meta-llama/llama-2-13b-chat", + "name": "Meta: Llama 2 13B Chat", + "created": 1687219200, + "description": "A 13 billion parameter language model from Meta, fine tuned for chat completions", + "context_length": 4096, + "architecture": { + "modality": "text->text", + "input_modalities": [ + "text" + ], + "output_modalities": [ + "text" + ], + "tokenizer": "Llama2", + "instruct_type": "llama2" + }, + "pricing": { + "prompt": "0.0000003", + "completion": "0.0000003", + "request": "0", + "image": "0", + "web_search": "0", + "internal_reasoning": "0" + }, + "top_provider": { + "context_length": 4096, + "max_completion_tokens": null, + "is_moderated": false + }, + "per_request_limits": null + }, { "id": "openai/gpt-3.5-turbo", "name": "OpenAI: GPT-3.5 Turbo", diff --git a/packages/kbot/dist-in/src/models/cache/openai.ts b/packages/kbot/dist-in/src/models/cache/openai.ts index 218a3dfd..37787b60 100644 --- a/packages/kbot/dist-in/src/models/cache/openai.ts +++ b/packages/kbot/dist-in/src/models/cache/openai.ts @@ -1 +1 @@ -export const models = [{"id":"gpt-4o-audio-preview-2024-12-17","object":"model","created":1734034239,"owned_by":"system"},{"id":"dall-e-3","object":"model","created":1698785189,"owned_by":"system"},{"id":"dall-e-2","object":"model","created":1698798177,"owned_by":"system"},{"id":"gpt-4o-audio-preview-2024-10-01","object":"model","created":1727389042,"owned_by":"system"},{"id":"text-embedding-3-small","object":"model","created":1705948997,"owned_by":"system"},{"id":"o4-mini","object":"model","created":1744225351,"owned_by":"system"},{"id":"gpt-4.1-nano","object":"model","created":1744321707,"owned_by":"system"},{"id":"gpt-4.1-nano-2025-04-14","object":"model","created":1744321025,"owned_by":"system"},{"id":"gpt-4o-realtime-preview-2024-10-01","object":"model","created":1727131766,"owned_by":"system"},{"id":"o4-mini-2025-04-16","object":"model","created":1744133506,"owned_by":"system"},{"id":"gpt-4o-realtime-preview","object":"model","created":1727659998,"owned_by":"system"},{"id":"babbage-002","object":"model","created":1692634615,"owned_by":"system"},{"id":"gpt-4","object":"model","created":1687882411,"owned_by":"openai"},{"id":"text-embedding-ada-002","object":"model","created":1671217299,"owned_by":"openai-internal"},{"id":"text-embedding-3-large","object":"model","created":1705953180,"owned_by":"system"},{"id":"gpt-4o-mini-audio-preview","object":"model","created":1734387424,"owned_by":"system"},{"id":"gpt-4o-audio-preview","object":"model","created":1727460443,"owned_by":"system"},{"id":"o1-preview-2024-09-12","object":"model","created":1725648865,"owned_by":"system"},{"id":"gpt-4o-mini-realtime-preview","object":"model","created":1734387380,"owned_by":"system"},{"id":"gpt-4.1-mini","object":"model","created":1744318173,"owned_by":"system"},{"id":"gpt-4o-mini-realtime-preview-2024-12-17","object":"model","created":1734112601,"owned_by":"system"},{"id":"gpt-3.5-turbo-instruct-0914","object":"model","created":1694122472,"owned_by":"system"},{"id":"gpt-4o-mini-search-preview","object":"model","created":1741391161,"owned_by":"system"},{"id":"gpt-4.1-mini-2025-04-14","object":"model","created":1744317547,"owned_by":"system"},{"id":"chatgpt-4o-latest","object":"model","created":1723515131,"owned_by":"system"},{"id":"davinci-002","object":"model","created":1692634301,"owned_by":"system"},{"id":"gpt-3.5-turbo-1106","object":"model","created":1698959748,"owned_by":"system"},{"id":"gpt-4o-search-preview","object":"model","created":1741388720,"owned_by":"system"},{"id":"gpt-4-turbo","object":"model","created":1712361441,"owned_by":"system"},{"id":"gpt-4o-realtime-preview-2024-12-17","object":"model","created":1733945430,"owned_by":"system"},{"id":"gpt-3.5-turbo-instruct","object":"model","created":1692901427,"owned_by":"system"},{"id":"gpt-3.5-turbo","object":"model","created":1677610602,"owned_by":"openai"},{"id":"gpt-4-turbo-preview","object":"model","created":1706037777,"owned_by":"system"},{"id":"gpt-4o-mini-search-preview-2025-03-11","object":"model","created":1741390858,"owned_by":"system"},{"id":"gpt-4-0125-preview","object":"model","created":1706037612,"owned_by":"system"},{"id":"gpt-4o-2024-11-20","object":"model","created":1739331543,"owned_by":"system"},{"id":"whisper-1","object":"model","created":1677532384,"owned_by":"openai-internal"},{"id":"gpt-4o-2024-05-13","object":"model","created":1715368132,"owned_by":"system"},{"id":"gpt-4-turbo-2024-04-09","object":"model","created":1712601677,"owned_by":"system"},{"id":"gpt-3.5-turbo-16k","object":"model","created":1683758102,"owned_by":"openai-internal"},{"id":"o1-preview","object":"model","created":1725648897,"owned_by":"system"},{"id":"gpt-4-0613","object":"model","created":1686588896,"owned_by":"openai"},{"id":"gpt-4.5-preview","object":"model","created":1740623059,"owned_by":"system"},{"id":"gpt-4.5-preview-2025-02-27","object":"model","created":1740623304,"owned_by":"system"},{"id":"gpt-4o-search-preview-2025-03-11","object":"model","created":1741388170,"owned_by":"system"},{"id":"omni-moderation-2024-09-26","object":"model","created":1732734466,"owned_by":"system"},{"id":"o3-mini-2025-01-31","object":"model","created":1738010200,"owned_by":"system"},{"id":"o3-mini","object":"model","created":1737146383,"owned_by":"system"},{"id":"tts-1-hd","object":"model","created":1699046015,"owned_by":"system"},{"id":"gpt-4o","object":"model","created":1715367049,"owned_by":"system"},{"id":"tts-1-hd-1106","object":"model","created":1699053533,"owned_by":"system"},{"id":"gpt-4o-mini","object":"model","created":1721172741,"owned_by":"system"},{"id":"gpt-4o-2024-08-06","object":"model","created":1722814719,"owned_by":"system"},{"id":"gpt-4.1","object":"model","created":1744316542,"owned_by":"system"},{"id":"gpt-4o-transcribe","object":"model","created":1742068463,"owned_by":"system"},{"id":"gpt-4.1-2025-04-14","object":"model","created":1744315746,"owned_by":"system"},{"id":"o1-2024-12-17","object":"model","created":1734326976,"owned_by":"system"},{"id":"gpt-4o-mini-2024-07-18","object":"model","created":1721172717,"owned_by":"system"},{"id":"gpt-4o-mini-transcribe","object":"model","created":1742068596,"owned_by":"system"},{"id":"o1-mini","object":"model","created":1725649008,"owned_by":"system"},{"id":"gpt-4o-mini-audio-preview-2024-12-17","object":"model","created":1734115920,"owned_by":"system"},{"id":"gpt-3.5-turbo-0125","object":"model","created":1706048358,"owned_by":"system"},{"id":"o1-mini-2024-09-12","object":"model","created":1725648979,"owned_by":"system"},{"id":"tts-1","object":"model","created":1681940951,"owned_by":"openai-internal"},{"id":"gpt-4-1106-preview","object":"model","created":1698957206,"owned_by":"system"},{"id":"gpt-4o-mini-tts","object":"model","created":1742403959,"owned_by":"system"},{"id":"tts-1-1106","object":"model","created":1699053241,"owned_by":"system"},{"id":"o1","object":"model","created":1734375816,"owned_by":"system"},{"id":"o1-pro","object":"model","created":1742251791,"owned_by":"system"},{"id":"o1-pro-2025-03-19","object":"model","created":1742251504,"owned_by":"system"},{"id":"omni-moderation-latest","object":"model","created":1731689265,"owned_by":"system"}] \ No newline at end of file +export const models = [{"id":"gpt-4o-audio-preview-2024-12-17","object":"model","created":1734034239,"owned_by":"system"},{"id":"dall-e-3","object":"model","created":1698785189,"owned_by":"system"},{"id":"dall-e-2","object":"model","created":1698798177,"owned_by":"system"},{"id":"gpt-4o-audio-preview-2024-10-01","object":"model","created":1727389042,"owned_by":"system"},{"id":"text-embedding-3-small","object":"model","created":1705948997,"owned_by":"system"},{"id":"o4-mini","object":"model","created":1744225351,"owned_by":"system"},{"id":"gpt-4.1-nano","object":"model","created":1744321707,"owned_by":"system"},{"id":"gpt-4.1-nano-2025-04-14","object":"model","created":1744321025,"owned_by":"system"},{"id":"gpt-4o-realtime-preview-2024-10-01","object":"model","created":1727131766,"owned_by":"system"},{"id":"o4-mini-2025-04-16","object":"model","created":1744133506,"owned_by":"system"},{"id":"gpt-4o-realtime-preview","object":"model","created":1727659998,"owned_by":"system"},{"id":"babbage-002","object":"model","created":1692634615,"owned_by":"system"},{"id":"gpt-4","object":"model","created":1687882411,"owned_by":"openai"},{"id":"text-embedding-ada-002","object":"model","created":1671217299,"owned_by":"openai-internal"},{"id":"text-embedding-3-large","object":"model","created":1705953180,"owned_by":"system"},{"id":"gpt-4o-mini-audio-preview","object":"model","created":1734387424,"owned_by":"system"},{"id":"gpt-4o-audio-preview","object":"model","created":1727460443,"owned_by":"system"},{"id":"o1-preview-2024-09-12","object":"model","created":1725648865,"owned_by":"system"},{"id":"gpt-4o-mini-realtime-preview","object":"model","created":1734387380,"owned_by":"system"},{"id":"gpt-4.1-mini","object":"model","created":1744318173,"owned_by":"system"},{"id":"gpt-4o-mini-realtime-preview-2024-12-17","object":"model","created":1734112601,"owned_by":"system"},{"id":"gpt-3.5-turbo-instruct-0914","object":"model","created":1694122472,"owned_by":"system"},{"id":"gpt-4o-mini-search-preview","object":"model","created":1741391161,"owned_by":"system"},{"id":"gpt-4.1-mini-2025-04-14","object":"model","created":1744317547,"owned_by":"system"},{"id":"chatgpt-4o-latest","object":"model","created":1723515131,"owned_by":"system"},{"id":"davinci-002","object":"model","created":1692634301,"owned_by":"system"},{"id":"gpt-3.5-turbo-1106","object":"model","created":1698959748,"owned_by":"system"},{"id":"gpt-4o-search-preview","object":"model","created":1741388720,"owned_by":"system"},{"id":"gpt-4-turbo","object":"model","created":1712361441,"owned_by":"system"},{"id":"gpt-4o-realtime-preview-2024-12-17","object":"model","created":1733945430,"owned_by":"system"},{"id":"gpt-3.5-turbo-instruct","object":"model","created":1692901427,"owned_by":"system"},{"id":"gpt-3.5-turbo","object":"model","created":1677610602,"owned_by":"openai"},{"id":"gpt-4-turbo-preview","object":"model","created":1706037777,"owned_by":"system"},{"id":"gpt-4o-mini-search-preview-2025-03-11","object":"model","created":1741390858,"owned_by":"system"},{"id":"gpt-4-0125-preview","object":"model","created":1706037612,"owned_by":"system"},{"id":"gpt-4o-2024-11-20","object":"model","created":1739331543,"owned_by":"system"},{"id":"whisper-1","object":"model","created":1677532384,"owned_by":"openai-internal"},{"id":"gpt-4o-2024-05-13","object":"model","created":1715368132,"owned_by":"system"},{"id":"gpt-4-turbo-2024-04-09","object":"model","created":1712601677,"owned_by":"system"},{"id":"gpt-3.5-turbo-16k","object":"model","created":1683758102,"owned_by":"openai-internal"},{"id":"o1-preview","object":"model","created":1725648897,"owned_by":"system"},{"id":"gpt-4-0613","object":"model","created":1686588896,"owned_by":"openai"},{"id":"gpt-4.5-preview","object":"model","created":1740623059,"owned_by":"system"},{"id":"gpt-4.5-preview-2025-02-27","object":"model","created":1740623304,"owned_by":"system"},{"id":"gpt-4o-search-preview-2025-03-11","object":"model","created":1741388170,"owned_by":"system"},{"id":"omni-moderation-2024-09-26","object":"model","created":1732734466,"owned_by":"system"},{"id":"tts-1-hd","object":"model","created":1699046015,"owned_by":"system"},{"id":"gpt-4o","object":"model","created":1715367049,"owned_by":"system"},{"id":"tts-1-hd-1106","object":"model","created":1699053533,"owned_by":"system"},{"id":"gpt-4o-mini","object":"model","created":1721172741,"owned_by":"system"},{"id":"gpt-4o-2024-08-06","object":"model","created":1722814719,"owned_by":"system"},{"id":"gpt-4.1","object":"model","created":1744316542,"owned_by":"system"},{"id":"gpt-4o-transcribe","object":"model","created":1742068463,"owned_by":"system"},{"id":"gpt-4.1-2025-04-14","object":"model","created":1744315746,"owned_by":"system"},{"id":"o1-2024-12-17","object":"model","created":1734326976,"owned_by":"system"},{"id":"gpt-4o-mini-2024-07-18","object":"model","created":1721172717,"owned_by":"system"},{"id":"gpt-4o-mini-transcribe","object":"model","created":1742068596,"owned_by":"system"},{"id":"o1-mini","object":"model","created":1725649008,"owned_by":"system"},{"id":"gpt-4o-mini-audio-preview-2024-12-17","object":"model","created":1734115920,"owned_by":"system"},{"id":"gpt-3.5-turbo-0125","object":"model","created":1706048358,"owned_by":"system"},{"id":"o1-mini-2024-09-12","object":"model","created":1725648979,"owned_by":"system"},{"id":"o3-mini","object":"model","created":1737146383,"owned_by":"system"},{"id":"o3-mini-2025-01-31","object":"model","created":1738010200,"owned_by":"system"},{"id":"tts-1","object":"model","created":1681940951,"owned_by":"openai-internal"},{"id":"gpt-4-1106-preview","object":"model","created":1698957206,"owned_by":"system"},{"id":"gpt-4o-mini-tts","object":"model","created":1742403959,"owned_by":"system"},{"id":"tts-1-1106","object":"model","created":1699053241,"owned_by":"system"},{"id":"o1","object":"model","created":1734375816,"owned_by":"system"},{"id":"o1-pro","object":"model","created":1742251791,"owned_by":"system"},{"id":"o1-pro-2025-03-19","object":"model","created":1742251504,"owned_by":"system"},{"id":"omni-moderation-latest","object":"model","created":1731689265,"owned_by":"system"}] \ No newline at end of file diff --git a/packages/kbot/dist-in/src/models/cache/openrouter.ts b/packages/kbot/dist-in/src/models/cache/openrouter.ts index bc61d15f..3a7449e2 100644 --- a/packages/kbot/dist-in/src/models/cache/openrouter.ts +++ b/packages/kbot/dist-in/src/models/cache/openrouter.ts @@ -1 +1 @@ -export const models = [{"id":"microsoft/mai-ds-r1:free","name":"Microsoft: MAI DS R1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1745194100,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-2.5-pro-preview-03-25","name":"Google: Gemini 2.5 Pro Preview","pricing":{"prompt":"0.00000125","completion":"0.00001","request":"0","image":"0.00516","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000625","input_cache_write":"0"},"created":1744924206,"top_provider":{"context_length":1048576,"max_completion_tokens":65535,"is_moderated":false}},{"id":"thudm/glm-z1-32b:free","name":"THUDM: GLM Z1 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744924148,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"thudm/glm-4-32b:free","name":"THUDM: GLM 4 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744920915,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-2.5-flash-preview","name":"Google: Gemini 2.5 Flash Preview","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0.0006192","web_search":"0","internal_reasoning":"0"},"created":1744914667,"top_provider":{"context_length":1048576,"max_completion_tokens":65535,"is_moderated":false}},{"id":"google/gemini-2.5-flash-preview:thinking","name":"Google: Gemini 2.5 Flash Preview (thinking)","pricing":{"prompt":"0.00000015","completion":"0.0000035","request":"0","image":"0.0006192","web_search":"0","internal_reasoning":"0"},"created":1744914667,"top_provider":{"context_length":1048576,"max_completion_tokens":65535,"is_moderated":false}},{"id":"openai/o4-mini-high","name":"OpenAI: o4 Mini High","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0.0008415","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000275"},"created":1744824212,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"openai/o3","name":"OpenAI: o3","pricing":{"prompt":"0.00001","completion":"0.00004","request":"0","image":"0.00765","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000025"},"created":1744823457,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"openai/o4-mini","name":"OpenAI: o4 Mini","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0.0008415","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000275"},"created":1744820942,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"shisa-ai/shisa-v2-llama3.3-70b:free","name":"Shisa AI: Shisa V2 Llama 3.3 70B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744754858,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen2.5-coder-7b-instruct","name":"Qwen: Qwen2.5 Coder 7B Instruct","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744734887,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"openai/gpt-4.1","name":"OpenAI: GPT-4.1","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000005"},"created":1744651385,"top_provider":{"context_length":1047576,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/gpt-4.1-mini","name":"OpenAI: GPT-4.1 Mini","pricing":{"prompt":"0.0000004","completion":"0.0000016","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000001"},"created":1744651381,"top_provider":{"context_length":1047576,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/gpt-4.1-nano","name":"OpenAI: GPT-4.1 Nano","pricing":{"prompt":"0.0000001","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000025"},"created":1744651369,"top_provider":{"context_length":1047576,"max_completion_tokens":32768,"is_moderated":true}},{"id":"eleutherai/llemma_7b","name":"EleutherAI: Llemma 7b","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744643225,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"alfredpros/codellama-7b-instruct-solidity","name":"AlfredPros: CodeLLaMa 7B Instruct Solidity","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744641874,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"arliai/qwq-32b-arliai-rpr-v1:free","name":"ArliAI: QwQ 32B RpR v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744555982,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"agentica-org/deepcoder-14b-preview:free","name":"Agentica: Deepcoder 14B Preview (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744555395,"top_provider":{"context_length":96000,"max_completion_tokens":null,"is_moderated":false}},{"id":"moonshotai/kimi-vl-a3b-thinking:free","name":"Moonshot AI: Kimi VL A3B Thinking (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744304841,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-3-mini-beta","name":"xAI: Grok 3 Mini Beta","pricing":{"prompt":"0.0000003","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744240195,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-3-beta","name":"xAI: Grok 3 Beta","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744240068,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-nano-8b-v1:free","name":"NVIDIA: Llama 3.1 Nemotron Nano 8B v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744123873,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.3-nemotron-super-49b-v1:free","name":"NVIDIA: Llama 3.3 Nemotron Super 49B v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744119494,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-ultra-253b-v1:free","name":"NVIDIA: Llama 3.1 Nemotron Ultra 253B v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744115059,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-4-maverick:free","name":"Meta: Llama 4 Maverick (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743881822,"top_provider":{"context_length":256000,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-4-maverick","name":"Meta: Llama 4 Maverick","pricing":{"prompt":"0.00000017","completion":"0.0000006","request":"0","image":"0.0006684","web_search":"0","internal_reasoning":"0"},"created":1743881822,"top_provider":{"context_length":1048576,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-4-scout:free","name":"Meta: Llama 4 Scout (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743881519,"top_provider":{"context_length":512000,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-4-scout","name":"Meta: Llama 4 Scout","pricing":{"prompt":"0.00000008","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743881519,"top_provider":{"context_length":1048576,"max_completion_tokens":1048576,"is_moderated":false}},{"id":"all-hands/openhands-lm-32b-v0.1","name":"OpenHands LM 32B V0.1","pricing":{"prompt":"0.0000026","completion":"0.0000034","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743613013,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"mistral/ministral-8b","name":"Mistral: Ministral 8B","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743430021,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-v3-base:free","name":"DeepSeek: DeepSeek V3 Base (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743272023,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"scb10x/llama3.1-typhoon2-8b-instruct","name":"Typhoon2 8B Instruct","pricing":{"prompt":"0.00000018","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743196511,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"scb10x/llama3.1-typhoon2-70b-instruct","name":"Typhoon2 70B Instruct","pricing":{"prompt":"0.00000088","completion":"0.00000088","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743196170,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"allenai/molmo-7b-d:free","name":"AllenAI: Molmo 7B D (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743023247,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"bytedance-research/ui-tars-72b:free","name":"Bytedance: UI-TARS 72B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743020065,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-3b-instruct:free","name":"Qwen: Qwen2.5 VL 3B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743014573,"top_provider":{"context_length":64000,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-2.5-pro-exp-03-25:free","name":"Google: Gemini 2.5 Pro Experimental (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742922099,"top_provider":{"context_length":1000000,"max_completion_tokens":65535,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-32b-instruct:free","name":"Qwen: Qwen2.5 VL 32B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742839838,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-32b-instruct","name":"Qwen: Qwen2.5 VL 32B Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742839838,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-chat-v3-0324:free","name":"DeepSeek: DeepSeek V3 0324 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742824755,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek: DeepSeek V3 0324","pricing":{"prompt":"0.00000027","completion":"0.0000011","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000007"},"created":1742824755,"top_provider":{"context_length":64000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"featherless/qwerky-72b:free","name":"Qwerky 72B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742481597,"top_provider":{"context_length":32768,"max_completion_tokens":4096,"is_moderated":false}},{"id":"openai/o1-pro","name":"OpenAI: o1-pro","pricing":{"prompt":"0.00015","completion":"0.0006","request":"0","image":"0.21675","web_search":"0","internal_reasoning":"0"},"created":1742423211,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"mistralai/mistral-small-3.1-24b-instruct:free","name":"Mistral: Mistral Small 3.1 24B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742238937,"top_provider":{"context_length":96000,"max_completion_tokens":96000,"is_moderated":false}},{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral: Mistral Small 3.1 24B","pricing":{"prompt":"0.0000001","completion":"0.0000003","request":"0","image":"0.000926","web_search":"0","internal_reasoning":"0"},"created":1742238937,"top_provider":{"context_length":128000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"open-r1/olympiccoder-32b:free","name":"OlympicCoder 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742077228,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"steelskull/l3.3-electra-r1-70b","name":"SteelSkull: L3.3 Electra R1 70B","pricing":{"prompt":"0.0000007","completion":"0.00000095","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742067611,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"google/gemma-3-1b-it:free","name":"Google: Gemma 3 1B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741963556,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-4b-it:free","name":"Google: Gemma 3 4B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905510,"top_provider":{"context_length":131072,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-4b-it","name":"Google: Gemma 3 4B","pricing":{"prompt":"0.00000002","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905510,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"ai21/jamba-1.6-large","name":"AI21: Jamba 1.6 Large","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905173,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"ai21/jamba-1.6-mini","name":"AI21: Jamba Mini 1.6","pricing":{"prompt":"0.0000002","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905171,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"google/gemma-3-12b-it:free","name":"Google: Gemma 3 12B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741902625,"top_provider":{"context_length":131072,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-12b-it","name":"Google: Gemma 3 12B","pricing":{"prompt":"0.00000005","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741902625,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command-a","name":"Cohere: Command A","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741894342,"top_provider":{"context_length":256000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"openai/gpt-4o-mini-search-preview","name":"OpenAI: GPT-4o-mini Search Preview","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0.0275","image":"0.000217","web_search":"0","internal_reasoning":"0"},"created":1741818122,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"openai/gpt-4o-search-preview","name":"OpenAI: GPT-4o Search Preview","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0.035","image":"0.003613","web_search":"0","internal_reasoning":"0"},"created":1741817949,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"rekaai/reka-flash-3:free","name":"Reka: Flash 3 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741812813,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemma-3-27b-it:free","name":"Google: Gemma 3 27B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741756359,"top_provider":{"context_length":96000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-27b-it","name":"Google: Gemma 3 27B","pricing":{"prompt":"0.0000001","completion":"0.0000002","request":"0","image":"0.0000256","web_search":"0","internal_reasoning":"0"},"created":1741756359,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"thedrummer/anubis-pro-105b-v1","name":"TheDrummer: Anubis Pro 105B V1","pricing":{"prompt":"0.0000008","completion":"0.000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741642290,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"latitudegames/wayfarer-large-70b-llama-3.3","name":"LatitudeGames: Wayfarer Large 70B Llama 3.3","pricing":{"prompt":"0.0000008","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741636885,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"thedrummer/skyfall-36b-v2","name":"TheDrummer: Skyfall 36B V2","pricing":{"prompt":"0.0000005","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741636566,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"microsoft/phi-4-multimodal-instruct","name":"Microsoft: Phi 4 Multimodal Instruct","pricing":{"prompt":"0.00000005","completion":"0.0000001","request":"0","image":"0.00017685","web_search":"0","internal_reasoning":"0"},"created":1741396284,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/sonar-reasoning-pro","name":"Perplexity: Sonar Reasoning Pro","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0.005","internal_reasoning":"0"},"created":1741313308,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/sonar-pro","name":"Perplexity: Sonar Pro","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0.005","internal_reasoning":"0"},"created":1741312423,"top_provider":{"context_length":200000,"max_completion_tokens":8000,"is_moderated":false}},{"id":"perplexity/sonar-deep-research","name":"Perplexity: Sonar Deep Research","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0.005","internal_reasoning":"0.000003"},"created":1741311246,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-zero:free","name":"DeepSeek: DeepSeek R1 Zero (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741297434,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwq-32b:free","name":"Qwen: QwQ 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741208814,"top_provider":{"context_length":40000,"max_completion_tokens":40000,"is_moderated":false}},{"id":"qwen/qwq-32b","name":"Qwen: QwQ 32B","pricing":{"prompt":"0.00000015","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741208814,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"moonshotai/moonlight-16b-a3b-instruct:free","name":"Moonshot AI: Moonlight 16B A3B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740719801,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"nousresearch/deephermes-3-llama-3-8b-preview:free","name":"Nous: DeepHermes 3 Llama 3 8B Preview (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740719372,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-4.5-preview","name":"OpenAI: GPT-4.5 (Preview)","pricing":{"prompt":"0.000075","completion":"0.00015","request":"0","image":"0.108375","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000375"},"created":1740687810,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"google/gemini-2.0-flash-lite-001","name":"Google: Gemini 2.0 Flash Lite","pricing":{"prompt":"0.000000075","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740506212,"top_provider":{"context_length":1048576,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.7-sonnet","name":"Anthropic: Claude 3.7 Sonnet","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1740422110,"top_provider":{"context_length":200000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"anthropic/claude-3.7-sonnet:thinking","name":"Anthropic: Claude 3.7 Sonnet (thinking)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1740422110,"top_provider":{"context_length":200000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"anthropic/claude-3.7-sonnet:beta","name":"Anthropic: Claude 3.7 Sonnet (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1740422110,"top_provider":{"context_length":200000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"perplexity/r1-1776","name":"Perplexity: R1 1776","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740004929,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-saba","name":"Mistral: Saba","pricing":{"prompt":"0.0000002","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739803239,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cognitivecomputations/dolphin3.0-r1-mistral-24b:free","name":"Dolphin3.0 R1 Mistral 24B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739462498,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cognitivecomputations/dolphin3.0-mistral-24b:free","name":"Dolphin3.0 Mistral 24B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739462019,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-guard-3-8b","name":"Llama Guard 3 8B","pricing":{"prompt":"0.000000055","completion":"0.000000055","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739401318,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/o3-mini-high","name":"OpenAI: o3 Mini High","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1739372611,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"deepseek/deepseek-r1-distill-llama-8b","name":"DeepSeek: R1 Distill Llama 8B","pricing":{"prompt":"0.00000004","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738937718,"top_provider":{"context_length":32000,"max_completion_tokens":32000,"is_moderated":false}},{"id":"google/gemini-2.0-flash-001","name":"Google: Gemini 2.0 Flash","pricing":{"prompt":"0.0000001","completion":"0.0000004","request":"0","image":"0.0000258","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000025","input_cache_write":"0.0000001833"},"created":1738769413,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"qwen/qwen-vl-plus","name":"Qwen: Qwen VL Plus","pricing":{"prompt":"0.00000021","completion":"0.00000063","request":"0","image":"0.0002688","web_search":"0","internal_reasoning":"0"},"created":1738731255,"top_provider":{"context_length":7500,"max_completion_tokens":1500,"is_moderated":false}},{"id":"aion-labs/aion-1.0","name":"AionLabs: Aion-1.0","pricing":{"prompt":"0.000004","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738697557,"top_provider":{"context_length":131072,"max_completion_tokens":32768,"is_moderated":false}},{"id":"aion-labs/aion-1.0-mini","name":"AionLabs: Aion-1.0-Mini","pricing":{"prompt":"0.0000007","completion":"0.0000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738697107,"top_provider":{"context_length":131072,"max_completion_tokens":32768,"is_moderated":false}},{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"AionLabs: Aion-RP 1.0 (8B)","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738696718,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"qwen/qwen-vl-max","name":"Qwen: Qwen VL Max","pricing":{"prompt":"0.0000008","completion":"0.0000032","request":"0","image":"0.001024","web_search":"0","internal_reasoning":"0"},"created":1738434304,"top_provider":{"context_length":7500,"max_completion_tokens":1500,"is_moderated":false}},{"id":"qwen/qwen-turbo","name":"Qwen: Qwen-Turbo","pricing":{"prompt":"0.00000005","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738410974,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-72b-instruct:free","name":"Qwen: Qwen2.5 VL 72B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738410311,"top_provider":{"context_length":131072,"max_completion_tokens":2048,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen: Qwen2.5 VL 72B Instruct","pricing":{"prompt":"0.0000007","completion":"0.0000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738410311,"top_provider":{"context_length":128000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"qwen/qwen-plus","name":"Qwen: Qwen-Plus","pricing":{"prompt":"0.0000004","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738409840,"top_provider":{"context_length":131072,"max_completion_tokens":8192,"is_moderated":false}},{"id":"qwen/qwen-max","name":"Qwen: Qwen-Max ","pricing":{"prompt":"0.0000016","completion":"0.0000064","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738402289,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"openai/o3-mini","name":"OpenAI: o3 Mini","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1738351721,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"deepseek/deepseek-r1-distill-qwen-1.5b","name":"DeepSeek: R1 Distill Qwen 1.5B","pricing":{"prompt":"0.00000018","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738328067,"top_provider":{"context_length":131072,"max_completion_tokens":32768,"is_moderated":false}},{"id":"mistralai/mistral-small-24b-instruct-2501:free","name":"Mistral: Mistral Small 3 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738255409,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral: Mistral Small 3","pricing":{"prompt":"0.00000007","completion":"0.00000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738255409,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-32b:free","name":"DeepSeek: R1 Distill Qwen 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738194830,"top_provider":{"context_length":16000,"max_completion_tokens":16000,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-32b","name":"DeepSeek: R1 Distill Qwen 32B","pricing":{"prompt":"0.00000012","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738194830,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-14b:free","name":"DeepSeek: R1 Distill Qwen 14B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738193940,"top_provider":{"context_length":64000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-14b","name":"DeepSeek: R1 Distill Qwen 14B","pricing":{"prompt":"0.00000015","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738193940,"top_provider":{"context_length":64000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"perplexity/sonar-reasoning","name":"Perplexity: Sonar Reasoning","pricing":{"prompt":"0.000001","completion":"0.000005","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738131107,"top_provider":{"context_length":127000,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/sonar","name":"Perplexity: Sonar","pricing":{"prompt":"0.000001","completion":"0.000001","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738013808,"top_provider":{"context_length":127072,"max_completion_tokens":null,"is_moderated":false}},{"id":"liquid/lfm-7b","name":"Liquid: LFM 7B","pricing":{"prompt":"0.00000001","completion":"0.00000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737806883,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"liquid/lfm-3b","name":"Liquid: LFM 3B","pricing":{"prompt":"0.00000002","completion":"0.00000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737806501,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-llama-70b:free","name":"DeepSeek: R1 Distill Llama 70B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737663169,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-llama-70b","name":"DeepSeek: R1 Distill Llama 70B","pricing":{"prompt":"0.0000001","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737663169,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-r1:free","name":"DeepSeek: R1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737381095,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1","name":"DeepSeek: R1","pricing":{"prompt":"0.0000005","completion":"0.00000218","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737381095,"top_provider":{"context_length":163840,"max_completion_tokens":163840,"is_moderated":false}},{"id":"sophosympatheia/rogue-rose-103b-v0.2:free","name":"Rogue Rose 103B v0.2 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737195189,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"minimax/minimax-01","name":"MiniMax: MiniMax-01","pricing":{"prompt":"0.0000002","completion":"0.0000011","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1736915462,"top_provider":{"context_length":1000192,"max_completion_tokens":1000192,"is_moderated":false}},{"id":"mistralai/codestral-2501","name":"Mistral: Codestral 2501","pricing":{"prompt":"0.0000003","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1736895522,"top_provider":{"context_length":262144,"max_completion_tokens":null,"is_moderated":false}},{"id":"microsoft/phi-4","name":"Microsoft: Phi 4","pricing":{"prompt":"0.00000007","completion":"0.00000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1736489872,"top_provider":{"context_length":16384,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-chat:free","name":"DeepSeek: DeepSeek V3 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1735241320,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-chat","name":"DeepSeek: DeepSeek V3","pricing":{"prompt":"0.00000038","completion":"0.00000089","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1735241320,"top_provider":{"context_length":163840,"max_completion_tokens":163840,"is_moderated":false}},{"id":"sao10k/l3.3-euryale-70b","name":"Sao10K: Llama 3.3 Euryale 70B","pricing":{"prompt":"0.0000007","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734535928,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"openai/o1","name":"OpenAI: o1","pricing":{"prompt":"0.000015","completion":"0.00006","request":"0","image":"0.021675","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000075"},"created":1734459999,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"eva-unit-01/eva-llama-3.33-70b","name":"EVA Llama 3.33 70B","pricing":{"prompt":"0.000004","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734377303,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"x-ai/grok-2-vision-1212","name":"xAI: Grok 2 Vision 1212","pricing":{"prompt":"0.000002","completion":"0.00001","request":"0","image":"0.0036","web_search":"0","internal_reasoning":"0"},"created":1734237338,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-2-1212","name":"xAI: Grok 2 1212","pricing":{"prompt":"0.000002","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734232814,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command-r7b-12-2024","name":"Cohere: Command R7B (12-2024)","pricing":{"prompt":"0.0000000375","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734158152,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"google/gemini-2.0-flash-exp:free","name":"Google: Gemini 2.0 Flash Experimental (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733937523,"top_provider":{"context_length":1048576,"max_completion_tokens":8192,"is_moderated":false}},{"id":"meta-llama/llama-3.3-70b-instruct:free","name":"Meta: Llama 3.3 70B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733506137,"top_provider":{"context_length":8000,"max_completion_tokens":8000,"is_moderated":false}},{"id":"meta-llama/llama-3.3-70b-instruct","name":"Meta: Llama 3.3 70B Instruct","pricing":{"prompt":"0.0000001","completion":"0.00000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733506137,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":false}},{"id":"amazon/nova-lite-v1","name":"Amazon: Nova Lite 1.0","pricing":{"prompt":"0.00000006","completion":"0.00000024","request":"0","image":"0.00009","web_search":"0","internal_reasoning":"0"},"created":1733437363,"top_provider":{"context_length":300000,"max_completion_tokens":5120,"is_moderated":false}},{"id":"amazon/nova-micro-v1","name":"Amazon: Nova Micro 1.0","pricing":{"prompt":"0.000000035","completion":"0.00000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733437237,"top_provider":{"context_length":128000,"max_completion_tokens":5120,"is_moderated":false}},{"id":"amazon/nova-pro-v1","name":"Amazon: Nova Pro 1.0","pricing":{"prompt":"0.0000008","completion":"0.0000032","request":"0","image":"0.0012","web_search":"0","internal_reasoning":"0"},"created":1733436303,"top_provider":{"context_length":300000,"max_completion_tokens":5120,"is_moderated":false}},{"id":"qwen/qwq-32b-preview:free","name":"Qwen: QwQ 32B Preview (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732754541,"top_provider":{"context_length":16384,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwq-32b-preview","name":"Qwen: QwQ 32B Preview","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732754541,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/learnlm-1.5-pro-experimental:free","name":"Google: LearnLM 1.5 Pro Experimental (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732216551,"top_provider":{"context_length":40960,"max_completion_tokens":8192,"is_moderated":false}},{"id":"eva-unit-01/eva-qwen-2.5-72b","name":"EVA Qwen2.5 72B","pricing":{"prompt":"0.0000009","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732210606,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"openai/gpt-4o-2024-11-20","name":"OpenAI: GPT-4o (2024-11-20)","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0.003613","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000125"},"created":1732127594,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"mistralai/mistral-large-2411","name":"Mistral Large 2411","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731978685,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731978415,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/pixtral-large-2411","name":"Mistral: Pixtral Large 2411","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0.002888","web_search":"0","internal_reasoning":"0"},"created":1731977388,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-vision-beta","name":"xAI: Grok Vision Beta","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0.009","web_search":"0","internal_reasoning":"0"},"created":1731976624,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"infermatic/mn-inferor-12b","name":"Infermatic: Mistral Nemo Inferor 12B","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731464428,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"qwen/qwen-2.5-coder-32b-instruct:free","name":"Qwen2.5 Coder 32B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731368400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","pricing":{"prompt":"0.00000007","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731368400,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"raifle/sorcererlm-8x22b","name":"SorcererLM 8x22B","pricing":{"prompt":"0.0000045","completion":"0.0000045","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731105083,"top_provider":{"context_length":16000,"max_completion_tokens":null,"is_moderated":false}},{"id":"eva-unit-01/eva-qwen-2.5-32b","name":"EVA Qwen2.5 32B","pricing":{"prompt":"0.0000026","completion":"0.0000034","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731104847,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"thedrummer/unslopnemo-12b","name":"Unslopnemo 12B","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731103448,"top_provider":{"context_length":32000,"max_completion_tokens":null,"is_moderated":false}},{"id":"anthropic/claude-3.5-haiku:beta","name":"Anthropic: Claude 3.5 Haiku (self-moderated)","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-haiku","name":"Anthropic: Claude 3.5 Haiku","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"anthropic/claude-3.5-haiku-20241022:beta","name":"Anthropic: Claude 3.5 Haiku (2024-10-22) (self-moderated)","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-haiku-20241022","name":"Anthropic: Claude 3.5 Haiku (2024-10-22)","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"neversleep/llama-3.1-lumimaid-70b","name":"NeverSleep: Lumimaid v0.2 70B","pricing":{"prompt":"0.0000015","completion":"0.00000225","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729555200,"top_provider":{"context_length":16384,"max_completion_tokens":2048,"is_moderated":false}},{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","pricing":{"prompt":"0.0000015","completion":"0.00000225","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729555200,"top_provider":{"context_length":16384,"max_completion_tokens":1024,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet:beta","name":"Anthropic: Claude 3.5 Sonnet (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1729555200,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic: Claude 3.5 Sonnet","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1729555200,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"x-ai/grok-beta","name":"xAI: Grok Beta","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729382400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/ministral-8b","name":"Mistral: Ministral 8B","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729123200,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/ministral-3b","name":"Mistral: Ministral 3B","pricing":{"prompt":"0.00000004","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729123200,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2.5-7b-instruct:free","name":"Qwen2.5 7B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729036800,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen2.5 7B Instruct","pricing":{"prompt":"0.00000005","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729036800,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-70b-instruct:free","name":"NVIDIA: Llama 3.1 Nemotron 70B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728950400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-70b-instruct","name":"NVIDIA: Llama 3.1 Nemotron 70B Instruct","pricing":{"prompt":"0.00000012","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728950400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"inflection/inflection-3-productivity","name":"Inflection: Inflection 3 Productivity","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728604800,"top_provider":{"context_length":8000,"max_completion_tokens":1024,"is_moderated":false}},{"id":"inflection/inflection-3-pi","name":"Inflection: Inflection 3 Pi","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728604800,"top_provider":{"context_length":8000,"max_completion_tokens":1024,"is_moderated":false}},{"id":"google/gemini-flash-1.5-8b","name":"Google: Gemini 1.5 Flash 8B","pricing":{"prompt":"0.0000000375","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000001","input_cache_write":"0.0000000583"},"created":1727913600,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"thedrummer/rocinante-12b","name":"Rocinante 12B","pricing":{"prompt":"0.00000025","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727654400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"anthracite-org/magnum-v2-72b","name":"Magnum v2 72B","pricing":{"prompt":"0.000003","completion":"0.000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727654400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"liquid/lfm-40b","name":"Liquid: LFM 40B MoE","pricing":{"prompt":"0.00000015","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727654400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.2-3b-instruct:free","name":"Meta: Llama 3.2 3B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":20000,"max_completion_tokens":20000,"is_moderated":false}},{"id":"meta-llama/llama-3.2-3b-instruct","name":"Meta: Llama 3.2 3B Instruct","pricing":{"prompt":"0.000000015","completion":"0.000000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"meta-llama/llama-3.2-1b-instruct:free","name":"Meta: Llama 3.2 1B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"meta-llama/llama-3.2-1b-instruct","name":"Meta: Llama 3.2 1B Instruct","pricing":{"prompt":"0.00000001","completion":"0.00000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.2-90b-vision-instruct","name":"Meta: Llama 3.2 90B Vision Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0.001301","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.2-11b-vision-instruct:free","name":"Meta: Llama 3.2 11B Vision Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":2048,"is_moderated":false}},{"id":"meta-llama/llama-3.2-11b-vision-instruct","name":"Meta: Llama 3.2 11B Vision Instruct","pricing":{"prompt":"0.000000049","completion":"0.000000049","request":"0","image":"0.00007948","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"qwen/qwen-2.5-72b-instruct:free","name":"Qwen2.5 72B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1726704000,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","pricing":{"prompt":"0.00000012","completion":"0.00000039","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1726704000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"qwen/qwen-2.5-vl-72b-instruct","name":"Qwen: Qwen2.5-VL 72B Instruct","pricing":{"prompt":"0.0000006","completion":"0.0000006","request":"0","image":"0.000578","web_search":"0","internal_reasoning":"0"},"created":1726617600,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"neversleep/llama-3.1-lumimaid-8b","name":"NeverSleep: Lumimaid v0.2 8B","pricing":{"prompt":"0.00000009375","completion":"0.00000075","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1726358400,"top_provider":{"context_length":32768,"max_completion_tokens":2048,"is_moderated":false}},{"id":"openai/o1-preview","name":"OpenAI: o1-preview","pricing":{"prompt":"0.000015","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000075"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/o1-preview-2024-09-12","name":"OpenAI: o1-preview (2024-09-12)","pricing":{"prompt":"0.000015","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000075"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/o1-mini","name":"OpenAI: o1-mini","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":65536,"is_moderated":true}},{"id":"openai/o1-mini-2024-09-12","name":"OpenAI: o1-mini (2024-09-12)","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":65536,"is_moderated":true}},{"id":"mistralai/pixtral-12b","name":"Mistral: Pixtral 12B","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0.0001445","web_search":"0","internal_reasoning":"0"},"created":1725926400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command-r-plus-08-2024","name":"Cohere: Command R+ (08-2024)","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724976000,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"cohere/command-r-08-2024","name":"Cohere: Command R (08-2024)","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724976000,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"qwen/qwen-2.5-vl-7b-instruct:free","name":"Qwen: Qwen2.5-VL 7B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":64000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"qwen/qwen-2.5-vl-7b-instruct","name":"Qwen: Qwen2.5-VL 7B Instruct","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0.0001445","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"sao10k/l3.1-euryale-70b","name":"Sao10K: Llama 3.1 Euryale 70B v2.2","pricing":{"prompt":"0.0000007","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"google/gemini-flash-1.5-8b-exp","name":"Google: Gemini 1.5 Flash 8B Experimental","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"ai21/jamba-1-5-mini","name":"AI21: Jamba 1.5 Mini","pricing":{"prompt":"0.0000002","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724371200,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"ai21/jamba-1-5-large","name":"AI21: Jamba 1.5 Large","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724371200,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"microsoft/phi-3.5-mini-128k-instruct","name":"Microsoft: Phi-3.5 Mini 128K Instruct","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724198400,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"Nous: Hermes 3 70B Instruct","pricing":{"prompt":"0.00000012","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723939200,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"nousresearch/hermes-3-llama-3.1-405b","name":"Nous: Hermes 3 405B Instruct","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723766400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"openai/chatgpt-4o-latest","name":"OpenAI: ChatGPT-4o","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0"},"created":1723593600,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"sao10k/l3-lunaris-8b","name":"Sao10K: Llama 3 8B Lunaris","pricing":{"prompt":"0.00000002","completion":"0.00000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723507200,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"aetherwiing/mn-starcannon-12b","name":"Aetherwiing: Starcannon 12B","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723507200,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"openai/gpt-4o-2024-08-06","name":"OpenAI: GPT-4o (2024-08-06)","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0.003613","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000125"},"created":1722902400,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"meta-llama/llama-3.1-405b:free","name":"Meta: Llama 3.1 405B (base) (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722556800,"top_provider":{"context_length":64000,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.1-405b","name":"Meta: Llama 3.1 405B (base)","pricing":{"prompt":"0.000002","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722556800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"nothingiisreal/mn-celeste-12b","name":"Mistral Nemo 12B Celeste","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722556800,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"perplexity/llama-3.1-sonar-small-128k-online","name":"Perplexity: Llama 3.1 Sonar 8B Online","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722470400,"top_provider":{"context_length":127072,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/llama-3.1-sonar-large-128k-online","name":"Perplexity: Llama 3.1 Sonar 70B Online","pricing":{"prompt":"0.000001","completion":"0.000001","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722470400,"top_provider":{"context_length":127072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.1-8b-instruct:free","name":"Meta: Llama 3.1 8B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":131072,"max_completion_tokens":4096,"is_moderated":false}},{"id":"meta-llama/llama-3.1-8b-instruct","name":"Meta: Llama 3.1 8B Instruct","pricing":{"prompt":"0.00000002","completion":"0.00000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":16384,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-3.1-405b-instruct","name":"Meta: Llama 3.1 405B Instruct","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-3.1-70b-instruct","name":"Meta: Llama 3.1 70B Instruct","pricing":{"prompt":"0.0000001","completion":"0.00000028","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"mistralai/codestral-mamba","name":"Mistral: Codestral Mamba","pricing":{"prompt":"0.00000025","completion":"0.00000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721347200,"top_provider":{"context_length":262144,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-nemo:free","name":"Mistral: Mistral Nemo (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721347200,"top_provider":{"context_length":128000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"mistralai/mistral-nemo","name":"Mistral: Mistral Nemo","pricing":{"prompt":"0.00000003","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721347200,"top_provider":{"context_length":98304,"max_completion_tokens":49152,"is_moderated":false}},{"id":"openai/gpt-4o-mini","name":"OpenAI: GPT-4o-mini","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0.000217","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000075"},"created":1721260800,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"openai/gpt-4o-mini-2024-07-18","name":"OpenAI: GPT-4o-mini (2024-07-18)","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000075"},"created":1721260800,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"google/gemma-2-27b-it","name":"Google: Gemma 2 27B","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1720828800,"top_provider":{"context_length":8192,"max_completion_tokens":2048,"is_moderated":false}},{"id":"alpindale/magnum-72b","name":"Magnum 72B","pricing":{"prompt":"0.000004","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1720656000,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"google/gemma-2-9b-it:free","name":"Google: Gemma 2 9B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719532800,"top_provider":{"context_length":8192,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-2-9b-it","name":"Google: Gemma 2 9B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719532800,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"01-ai/yi-large","name":"01.AI: Yi Large","pricing":{"prompt":"0.000003","completion":"0.000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719273600,"top_provider":{"context_length":32768,"max_completion_tokens":4096,"is_moderated":false}},{"id":"ai21/jamba-instruct","name":"AI21: Jamba Instruct","pricing":{"prompt":"0.0000005","completion":"0.0000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719273600,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet-20240620:beta","name":"Anthropic: Claude 3.5 Sonnet (2024-06-20) (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1718841600,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet-20240620","name":"Anthropic: Claude 3.5 Sonnet (2024-06-20)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1718841600,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"sao10k/l3-euryale-70b","name":"Sao10k: Llama 3 Euryale 70B v2.1","pricing":{"prompt":"0.00000148","completion":"0.00000148","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1718668800,"top_provider":{"context_length":8192,"max_completion_tokens":8192,"is_moderated":false}},{"id":"cognitivecomputations/dolphin-mixtral-8x22b","name":"Dolphin 2.9.2 Mixtral 8x22B 🐬","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1717804800,"top_provider":{"context_length":16000,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2-72b-instruct","name":"Qwen 2 72B Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1717718400,"top_provider":{"context_length":32768,"max_completion_tokens":4096,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct:free","name":"Mistral: Mistral 7B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct","name":"Mistral: Mistral 7B Instruct","pricing":{"prompt":"0.000000029","completion":"0.000000055","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct-v0.3","name":"Mistral: Mistral 7B Instruct v0.3","pricing":{"prompt":"0.000000029","completion":"0.000000055","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"nousresearch/hermes-2-pro-llama-3-8b","name":"NousResearch: Hermes 2 Pro - Llama-3 8B","pricing":{"prompt":"0.000000025","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"microsoft/phi-3-mini-128k-instruct","name":"Microsoft: Phi-3 Mini 128K Instruct","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716681600,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"microsoft/phi-3-medium-128k-instruct","name":"Microsoft: Phi-3 Medium 128K Instruct","pricing":{"prompt":"0.000001","completion":"0.000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716508800,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"neversleep/llama-3-lumimaid-70b","name":"NeverSleep: Llama 3 Lumimaid 70B","pricing":{"prompt":"0.000004","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1715817600,"top_provider":{"context_length":8192,"max_completion_tokens":4096,"is_moderated":false}},{"id":"google/gemini-flash-1.5","name":"Google: Gemini 1.5 Flash ","pricing":{"prompt":"0.000000075","completion":"0.0000003","request":"0","image":"0.00004","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000001875","input_cache_write":"0.0000001583"},"created":1715644800,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"openai/gpt-4o","name":"OpenAI: GPT-4o","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0.003613","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000125"},"created":1715558400,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"openai/gpt-4o:extended","name":"OpenAI: GPT-4o (extended)","pricing":{"prompt":"0.000006","completion":"0.000018","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0"},"created":1715558400,"top_provider":{"context_length":128000,"max_completion_tokens":64000,"is_moderated":true}},{"id":"meta-llama/llama-guard-2-8b","name":"Meta: LlamaGuard 2 8B","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1715558400,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-4o-2024-05-13","name":"OpenAI: GPT-4o (2024-05-13)","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0"},"created":1715558400,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"neversleep/llama-3-lumimaid-8b:extended","name":"NeverSleep: Llama 3 Lumimaid 8B (extended)","pricing":{"prompt":"0.00000009375","completion":"0.00000075","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1714780800,"top_provider":{"context_length":24576,"max_completion_tokens":2048,"is_moderated":false}},{"id":"neversleep/llama-3-lumimaid-8b","name":"NeverSleep: Llama 3 Lumimaid 8B","pricing":{"prompt":"0.00000009375","completion":"0.00000075","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1714780800,"top_provider":{"context_length":24576,"max_completion_tokens":2048,"is_moderated":false}},{"id":"sao10k/fimbulvetr-11b-v2","name":"Fimbulvetr 11B v2","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713657600,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"meta-llama/llama-3-8b-instruct","name":"Meta: Llama 3 8B Instruct","pricing":{"prompt":"0.00000003","completion":"0.00000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713398400,"top_provider":{"context_length":8192,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-3-70b-instruct","name":"Meta: Llama 3 70B Instruct","pricing":{"prompt":"0.0000003","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713398400,"top_provider":{"context_length":8192,"max_completion_tokens":16384,"is_moderated":false}},{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713312000,"top_provider":{"context_length":65536,"max_completion_tokens":null,"is_moderated":false}},{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713225600,"top_provider":{"context_length":65536,"max_completion_tokens":16384,"is_moderated":false}},{"id":"microsoft/wizardlm-2-7b","name":"WizardLM-2 7B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713225600,"top_provider":{"context_length":32000,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-pro-1.5","name":"Google: Gemini 1.5 Pro","pricing":{"prompt":"0.00000125","completion":"0.000005","request":"0","image":"0.0006575","web_search":"0","internal_reasoning":"0"},"created":1712620800,"top_provider":{"context_length":2000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"openai/gpt-4-turbo","name":"OpenAI: GPT-4 Turbo","pricing":{"prompt":"0.00001","completion":"0.00003","request":"0","image":"0.01445","web_search":"0","internal_reasoning":"0"},"created":1712620800,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"cohere/command-r-plus","name":"Cohere: Command R+","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1712188800,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"cohere/command-r-plus-04-2024","name":"Cohere: Command R+ (04-2024)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1712016000,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"sophosympatheia/midnight-rose-70b","name":"Midnight Rose 70B","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1711065600,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command","name":"Cohere: Command","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1710374400,"top_provider":{"context_length":4096,"max_completion_tokens":4000,"is_moderated":false}},{"id":"cohere/command-r","name":"Cohere: Command R","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1710374400,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"anthropic/claude-3-haiku:beta","name":"Anthropic: Claude 3 Haiku (self-moderated)","pricing":{"prompt":"0.00000025","completion":"0.00000125","request":"0","image":"0.0004","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000003","input_cache_write":"0.0000003"},"created":1710288000,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3-haiku","name":"Anthropic: Claude 3 Haiku","pricing":{"prompt":"0.00000025","completion":"0.00000125","request":"0","image":"0.0004","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000003","input_cache_write":"0.0000003"},"created":1710288000,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"anthropic/claude-3-opus:beta","name":"Anthropic: Claude 3 Opus (self-moderated)","pricing":{"prompt":"0.000015","completion":"0.000075","request":"0","image":"0.024","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000015","input_cache_write":"0.00001875"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3-opus","name":"Anthropic: Claude 3 Opus","pricing":{"prompt":"0.000015","completion":"0.000075","request":"0","image":"0.024","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000015","input_cache_write":"0.00001875"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"anthropic/claude-3-sonnet:beta","name":"Anthropic: Claude 3 Sonnet (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3-sonnet","name":"Anthropic: Claude 3 Sonnet","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"cohere/command-r-03-2024","name":"Cohere: Command R (03-2024)","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1709341200,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"mistralai/mistral-large","name":"Mistral Large","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1708905600,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo-0613","name":"OpenAI: GPT-3.5 Turbo (older v0613)","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1706140800,"top_provider":{"context_length":4095,"max_completion_tokens":4096,"is_moderated":false}},{"id":"openai/gpt-4-turbo-preview","name":"OpenAI: GPT-4 Turbo Preview","pricing":{"prompt":"0.00001","completion":"0.00003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1706140800,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"nousresearch/nous-hermes-2-mixtral-8x7b-dpo","name":"Nous: Hermes 2 Mixtral 8x7B DPO","pricing":{"prompt":"0.0000006","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1705363200,"top_provider":{"context_length":32768,"max_completion_tokens":2048,"is_moderated":false}},{"id":"mistralai/mistral-medium","name":"Mistral Medium","pricing":{"prompt":"0.00000275","completion":"0.0000081","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1704844800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-small","name":"Mistral Small","pricing":{"prompt":"0.0000002","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1704844800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-tiny","name":"Mistral Tiny","pricing":{"prompt":"0.00000025","completion":"0.00000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1704844800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct-v0.2","name":"Mistral: Mistral 7B Instruct v0.2","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1703721600,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cognitivecomputations/dolphin-mixtral-8x7b","name":"Dolphin 2.6 Mixtral 8x7B 🐬","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1703116800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-pro-vision","name":"Google: Gemini Pro Vision 1.0","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0.0025","web_search":"0","internal_reasoning":"0"},"created":1702425600,"top_provider":{"context_length":16384,"max_completion_tokens":2048,"is_moderated":false}},{"id":"mistralai/mixtral-8x7b-instruct","name":"Mistral: Mixtral 8x7B Instruct","pricing":{"prompt":"0.00000024","completion":"0.00000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1702166400,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"openchat/openchat-7b","name":"OpenChat 3.5 7B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1701129600,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"neversleep/noromaid-20b","name":"Noromaid 20B","pricing":{"prompt":"0.00000075","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700956800,"top_provider":{"context_length":8192,"max_completion_tokens":2048,"is_moderated":false}},{"id":"anthropic/claude-2.1:beta","name":"Anthropic: Claude v2.1 (self-moderated)","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-2.1","name":"Anthropic: Claude v2.1","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"anthropic/claude-2:beta","name":"Anthropic: Claude v2 (self-moderated)","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-2","name":"Anthropic: Claude v2","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"undi95/toppy-m-7b","name":"Toppy M 7B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699574400,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"alpindale/goliath-120b","name":"Goliath 120B","pricing":{"prompt":"0.0000065625","completion":"0.000009375","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699574400,"top_provider":{"context_length":6144,"max_completion_tokens":512,"is_moderated":false}},{"id":"openrouter/auto","name":"Auto Router","pricing":{"prompt":"-1","completion":"-1"},"created":1699401600,"top_provider":{"context_length":null,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo-1106","name":"OpenAI: GPT-3.5 Turbo 16k (older v1106)","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699228800,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4-1106-preview","name":"OpenAI: GPT-4 Turbo (older v1106)","pricing":{"prompt":"0.00001","completion":"0.00003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699228800,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"google/palm-2-chat-bison-32k","name":"Google: PaLM 2 Chat 32k","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1698969600,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/palm-2-codechat-bison-32k","name":"Google: PaLM 2 Code Chat 32k","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1698969600,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"jondurbin/airoboros-l2-70b","name":"Airoboros 70B","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1698537600,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo-instruct","name":"OpenAI: GPT-3.5 Turbo Instruct","pricing":{"prompt":"0.0000015","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1695859200,"top_provider":{"context_length":4095,"max_completion_tokens":4096,"is_moderated":true}},{"id":"mistralai/mistral-7b-instruct-v0.1","name":"Mistral: Mistral 7B Instruct v0.1","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1695859200,"top_provider":{"context_length":32768,"max_completion_tokens":2048,"is_moderated":false}},{"id":"pygmalionai/mythalion-13b","name":"Pygmalion: Mythalion 13B","pricing":{"prompt":"0.0000005625","completion":"0.000001125","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693612800,"top_provider":{"context_length":8192,"max_completion_tokens":1024,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo-16k","name":"OpenAI: GPT-3.5 Turbo 16k","pricing":{"prompt":"0.000003","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693180800,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4-32k","name":"OpenAI: GPT-4 32k","pricing":{"prompt":"0.00006","completion":"0.00012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693180800,"top_provider":{"context_length":32767,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4-32k-0314","name":"OpenAI: GPT-4 32k (older v0314)","pricing":{"prompt":"0.00006","completion":"0.00012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693180800,"top_provider":{"context_length":32767,"max_completion_tokens":4096,"is_moderated":true}},{"id":"nousresearch/nous-hermes-llama2-13b","name":"Nous: Hermes 13B","pricing":{"prompt":"0.00000018","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1692489600,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"mancer/weaver","name":"Mancer: Weaver (alpha)","pricing":{"prompt":"0.000001125","completion":"0.000001125","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690934400,"top_provider":{"context_length":8000,"max_completion_tokens":1000,"is_moderated":false}},{"id":"huggingfaceh4/zephyr-7b-beta:free","name":"Hugging Face: Zephyr 7B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690934400,"top_provider":{"context_length":4096,"max_completion_tokens":2048,"is_moderated":false}},{"id":"anthropic/claude-2.0:beta","name":"Anthropic: Claude v2.0 (self-moderated)","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690502400,"top_provider":{"context_length":100000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-2.0","name":"Anthropic: Claude v2.0","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690502400,"top_provider":{"context_length":100000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","pricing":{"prompt":"0.0000005625","completion":"0.000001125","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1689984000,"top_provider":{"context_length":6144,"max_completion_tokens":1024,"is_moderated":false}},{"id":"google/palm-2-chat-bison","name":"Google: PaLM 2 Chat","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1689811200,"top_provider":{"context_length":9216,"max_completion_tokens":1024,"is_moderated":false}},{"id":"google/palm-2-codechat-bison","name":"Google: PaLM 2 Code Chat","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1689811200,"top_provider":{"context_length":7168,"max_completion_tokens":1024,"is_moderated":false}},{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","pricing":{"prompt":"0.000000065","completion":"0.000000065","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1688256000,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"meta-llama/llama-2-13b-chat","name":"Meta: Llama 2 13B Chat","pricing":{"prompt":"0.00000022","completion":"0.00000022","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1687219200,"top_provider":{"context_length":4096,"max_completion_tokens":2048,"is_moderated":false}},{"id":"meta-llama/llama-2-70b-chat","name":"Meta: Llama 2 70B Chat","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1687219200,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo","name":"OpenAI: GPT-3.5 Turbo","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-3.5-turbo-0125","name":"OpenAI: GPT-3.5 Turbo 16k","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4","name":"OpenAI: GPT-4","pricing":{"prompt":"0.00003","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":8191,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4-0314","name":"OpenAI: GPT-4 (older v0314)","pricing":{"prompt":"0.00003","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":8191,"max_completion_tokens":4096,"is_moderated":true}}] \ No newline at end of file +export const models = [{"id":"microsoft/mai-ds-r1:free","name":"Microsoft: MAI DS R1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1745194100,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-2.5-pro-preview-03-25","name":"Google: Gemini 2.5 Pro Preview","pricing":{"prompt":"0.00000125","completion":"0.00001","request":"0","image":"0.00516","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000625","input_cache_write":"0"},"created":1744924206,"top_provider":{"context_length":1048576,"max_completion_tokens":65535,"is_moderated":false}},{"id":"thudm/glm-z1-32b:free","name":"THUDM: GLM Z1 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744924148,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"thudm/glm-4-32b:free","name":"THUDM: GLM 4 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744920915,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-2.5-flash-preview","name":"Google: Gemini 2.5 Flash Preview","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0.0006192","web_search":"0","internal_reasoning":"0"},"created":1744914667,"top_provider":{"context_length":1048576,"max_completion_tokens":65535,"is_moderated":false}},{"id":"google/gemini-2.5-flash-preview:thinking","name":"Google: Gemini 2.5 Flash Preview (thinking)","pricing":{"prompt":"0.00000015","completion":"0.0000035","request":"0","image":"0.0006192","web_search":"0","internal_reasoning":"0"},"created":1744914667,"top_provider":{"context_length":1048576,"max_completion_tokens":65535,"is_moderated":false}},{"id":"openai/o4-mini-high","name":"OpenAI: o4 Mini High","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0.0008415","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000275"},"created":1744824212,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"openai/o3","name":"OpenAI: o3","pricing":{"prompt":"0.00001","completion":"0.00004","request":"0","image":"0.00765","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000025"},"created":1744823457,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"openai/o4-mini","name":"OpenAI: o4 Mini","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0.0008415","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000275"},"created":1744820942,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"shisa-ai/shisa-v2-llama3.3-70b:free","name":"Shisa AI: Shisa V2 Llama 3.3 70B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744754858,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen2.5-coder-7b-instruct","name":"Qwen: Qwen2.5 Coder 7B Instruct","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744734887,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"openai/gpt-4.1","name":"OpenAI: GPT-4.1","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000005"},"created":1744651385,"top_provider":{"context_length":1047576,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/gpt-4.1-mini","name":"OpenAI: GPT-4.1 Mini","pricing":{"prompt":"0.0000004","completion":"0.0000016","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000001"},"created":1744651381,"top_provider":{"context_length":1047576,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/gpt-4.1-nano","name":"OpenAI: GPT-4.1 Nano","pricing":{"prompt":"0.0000001","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000025"},"created":1744651369,"top_provider":{"context_length":1047576,"max_completion_tokens":32768,"is_moderated":true}},{"id":"eleutherai/llemma_7b","name":"EleutherAI: Llemma 7b","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744643225,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"alfredpros/codellama-7b-instruct-solidity","name":"AlfredPros: CodeLLaMa 7B Instruct Solidity","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744641874,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"arliai/qwq-32b-arliai-rpr-v1:free","name":"ArliAI: QwQ 32B RpR v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744555982,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"agentica-org/deepcoder-14b-preview:free","name":"Agentica: Deepcoder 14B Preview (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744555395,"top_provider":{"context_length":96000,"max_completion_tokens":null,"is_moderated":false}},{"id":"moonshotai/kimi-vl-a3b-thinking:free","name":"Moonshot AI: Kimi VL A3B Thinking (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744304841,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-3-mini-beta","name":"xAI: Grok 3 Mini Beta","pricing":{"prompt":"0.0000003","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744240195,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-3-beta","name":"xAI: Grok 3 Beta","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744240068,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-nano-8b-v1:free","name":"NVIDIA: Llama 3.1 Nemotron Nano 8B v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744123873,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.3-nemotron-super-49b-v1:free","name":"NVIDIA: Llama 3.3 Nemotron Super 49B v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744119494,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-ultra-253b-v1:free","name":"NVIDIA: Llama 3.1 Nemotron Ultra 253B v1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1744115059,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-4-maverick:free","name":"Meta: Llama 4 Maverick (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743881822,"top_provider":{"context_length":256000,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-4-maverick","name":"Meta: Llama 4 Maverick","pricing":{"prompt":"0.00000017","completion":"0.0000006","request":"0","image":"0.0006684","web_search":"0","internal_reasoning":"0"},"created":1743881822,"top_provider":{"context_length":1048576,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-4-scout:free","name":"Meta: Llama 4 Scout (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743881519,"top_provider":{"context_length":512000,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-4-scout","name":"Meta: Llama 4 Scout","pricing":{"prompt":"0.00000008","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743881519,"top_provider":{"context_length":1048576,"max_completion_tokens":1048576,"is_moderated":false}},{"id":"all-hands/openhands-lm-32b-v0.1","name":"OpenHands LM 32B V0.1","pricing":{"prompt":"0.0000026","completion":"0.0000034","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743613013,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"mistral/ministral-8b","name":"Mistral: Ministral 8B","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743430021,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-v3-base:free","name":"DeepSeek: DeepSeek V3 Base (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743272023,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"scb10x/llama3.1-typhoon2-8b-instruct","name":"Typhoon2 8B Instruct","pricing":{"prompt":"0.00000018","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743196511,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"scb10x/llama3.1-typhoon2-70b-instruct","name":"Typhoon2 70B Instruct","pricing":{"prompt":"0.00000088","completion":"0.00000088","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743196170,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"allenai/molmo-7b-d:free","name":"AllenAI: Molmo 7B D (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743023247,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"bytedance-research/ui-tars-72b:free","name":"Bytedance: UI-TARS 72B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743020065,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-3b-instruct:free","name":"Qwen: Qwen2.5 VL 3B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1743014573,"top_provider":{"context_length":64000,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-2.5-pro-exp-03-25:free","name":"Google: Gemini 2.5 Pro Experimental (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742922099,"top_provider":{"context_length":1000000,"max_completion_tokens":65535,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-32b-instruct:free","name":"Qwen: Qwen2.5 VL 32B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742839838,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-32b-instruct","name":"Qwen: Qwen2.5 VL 32B Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742839838,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-chat-v3-0324:free","name":"DeepSeek: DeepSeek V3 0324 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742824755,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-chat-v3-0324","name":"DeepSeek: DeepSeek V3 0324","pricing":{"prompt":"0.00000027","completion":"0.0000011","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000007"},"created":1742824755,"top_provider":{"context_length":64000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"featherless/qwerky-72b:free","name":"Qwerky 72B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742481597,"top_provider":{"context_length":32768,"max_completion_tokens":4096,"is_moderated":false}},{"id":"openai/o1-pro","name":"OpenAI: o1-pro","pricing":{"prompt":"0.00015","completion":"0.0006","request":"0","image":"0.21675","web_search":"0","internal_reasoning":"0"},"created":1742423211,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"mistralai/mistral-small-3.1-24b-instruct:free","name":"Mistral: Mistral Small 3.1 24B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742238937,"top_provider":{"context_length":96000,"max_completion_tokens":96000,"is_moderated":false}},{"id":"mistralai/mistral-small-3.1-24b-instruct","name":"Mistral: Mistral Small 3.1 24B","pricing":{"prompt":"0.0000001","completion":"0.0000003","request":"0","image":"0.000926","web_search":"0","internal_reasoning":"0"},"created":1742238937,"top_provider":{"context_length":128000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"open-r1/olympiccoder-32b:free","name":"OlympicCoder 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742077228,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"steelskull/l3.3-electra-r1-70b","name":"SteelSkull: L3.3 Electra R1 70B","pricing":{"prompt":"0.0000007","completion":"0.00000095","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1742067611,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"google/gemma-3-1b-it:free","name":"Google: Gemma 3 1B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741963556,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-4b-it:free","name":"Google: Gemma 3 4B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905510,"top_provider":{"context_length":131072,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-4b-it","name":"Google: Gemma 3 4B","pricing":{"prompt":"0.00000002","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905510,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"ai21/jamba-1.6-large","name":"AI21: Jamba 1.6 Large","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905173,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"ai21/jamba-1.6-mini","name":"AI21: Jamba Mini 1.6","pricing":{"prompt":"0.0000002","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741905171,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"google/gemma-3-12b-it:free","name":"Google: Gemma 3 12B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741902625,"top_provider":{"context_length":131072,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-12b-it","name":"Google: Gemma 3 12B","pricing":{"prompt":"0.00000005","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741902625,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command-a","name":"Cohere: Command A","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741894342,"top_provider":{"context_length":256000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"openai/gpt-4o-mini-search-preview","name":"OpenAI: GPT-4o-mini Search Preview","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0.0275","image":"0.000217","web_search":"0","internal_reasoning":"0"},"created":1741818122,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"openai/gpt-4o-search-preview","name":"OpenAI: GPT-4o Search Preview","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0.035","image":"0.003613","web_search":"0","internal_reasoning":"0"},"created":1741817949,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"rekaai/reka-flash-3:free","name":"Reka: Flash 3 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741812813,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemma-3-27b-it:free","name":"Google: Gemma 3 27B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741756359,"top_provider":{"context_length":96000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-3-27b-it","name":"Google: Gemma 3 27B","pricing":{"prompt":"0.0000001","completion":"0.0000002","request":"0","image":"0.0000256","web_search":"0","internal_reasoning":"0"},"created":1741756359,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"thedrummer/anubis-pro-105b-v1","name":"TheDrummer: Anubis Pro 105B V1","pricing":{"prompt":"0.0000008","completion":"0.000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741642290,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"latitudegames/wayfarer-large-70b-llama-3.3","name":"LatitudeGames: Wayfarer Large 70B Llama 3.3","pricing":{"prompt":"0.0000008","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741636885,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"thedrummer/skyfall-36b-v2","name":"TheDrummer: Skyfall 36B V2","pricing":{"prompt":"0.0000005","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741636566,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"microsoft/phi-4-multimodal-instruct","name":"Microsoft: Phi 4 Multimodal Instruct","pricing":{"prompt":"0.00000005","completion":"0.0000001","request":"0","image":"0.00017685","web_search":"0","internal_reasoning":"0"},"created":1741396284,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/sonar-reasoning-pro","name":"Perplexity: Sonar Reasoning Pro","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0.005","internal_reasoning":"0"},"created":1741313308,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/sonar-pro","name":"Perplexity: Sonar Pro","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0.005","internal_reasoning":"0"},"created":1741312423,"top_provider":{"context_length":200000,"max_completion_tokens":8000,"is_moderated":false}},{"id":"perplexity/sonar-deep-research","name":"Perplexity: Sonar Deep Research","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0.005","internal_reasoning":"0.000003"},"created":1741311246,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-zero:free","name":"DeepSeek: DeepSeek R1 Zero (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741297434,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwq-32b:free","name":"Qwen: QwQ 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741208814,"top_provider":{"context_length":40000,"max_completion_tokens":40000,"is_moderated":false}},{"id":"qwen/qwq-32b","name":"Qwen: QwQ 32B","pricing":{"prompt":"0.00000015","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1741208814,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"moonshotai/moonlight-16b-a3b-instruct:free","name":"Moonshot AI: Moonlight 16B A3B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740719801,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"nousresearch/deephermes-3-llama-3-8b-preview:free","name":"Nous: DeepHermes 3 Llama 3 8B Preview (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740719372,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-4.5-preview","name":"OpenAI: GPT-4.5 (Preview)","pricing":{"prompt":"0.000075","completion":"0.00015","request":"0","image":"0.108375","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000375"},"created":1740687810,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"google/gemini-2.0-flash-lite-001","name":"Google: Gemini 2.0 Flash Lite","pricing":{"prompt":"0.000000075","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740506212,"top_provider":{"context_length":1048576,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.7-sonnet","name":"Anthropic: Claude 3.7 Sonnet","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1740422110,"top_provider":{"context_length":200000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"anthropic/claude-3.7-sonnet:thinking","name":"Anthropic: Claude 3.7 Sonnet (thinking)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1740422110,"top_provider":{"context_length":200000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"anthropic/claude-3.7-sonnet:beta","name":"Anthropic: Claude 3.7 Sonnet (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1740422110,"top_provider":{"context_length":200000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"perplexity/r1-1776","name":"Perplexity: R1 1776","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1740004929,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-saba","name":"Mistral: Saba","pricing":{"prompt":"0.0000002","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739803239,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cognitivecomputations/dolphin3.0-r1-mistral-24b:free","name":"Dolphin3.0 R1 Mistral 24B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739462498,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cognitivecomputations/dolphin3.0-mistral-24b:free","name":"Dolphin3.0 Mistral 24B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739462019,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-guard-3-8b","name":"Llama Guard 3 8B","pricing":{"prompt":"0.000000055","completion":"0.000000055","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1739401318,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/o3-mini-high","name":"OpenAI: o3 Mini High","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1739372611,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"deepseek/deepseek-r1-distill-llama-8b","name":"DeepSeek: R1 Distill Llama 8B","pricing":{"prompt":"0.00000004","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738937718,"top_provider":{"context_length":32000,"max_completion_tokens":32000,"is_moderated":false}},{"id":"google/gemini-2.0-flash-001","name":"Google: Gemini 2.0 Flash","pricing":{"prompt":"0.0000001","completion":"0.0000004","request":"0","image":"0.0000258","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000025","input_cache_write":"0.0000001833"},"created":1738769413,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"qwen/qwen-vl-plus","name":"Qwen: Qwen VL Plus","pricing":{"prompt":"0.00000021","completion":"0.00000063","request":"0","image":"0.0002688","web_search":"0","internal_reasoning":"0"},"created":1738731255,"top_provider":{"context_length":7500,"max_completion_tokens":1500,"is_moderated":false}},{"id":"aion-labs/aion-1.0","name":"AionLabs: Aion-1.0","pricing":{"prompt":"0.000004","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738697557,"top_provider":{"context_length":131072,"max_completion_tokens":32768,"is_moderated":false}},{"id":"aion-labs/aion-1.0-mini","name":"AionLabs: Aion-1.0-Mini","pricing":{"prompt":"0.0000007","completion":"0.0000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738697107,"top_provider":{"context_length":131072,"max_completion_tokens":32768,"is_moderated":false}},{"id":"aion-labs/aion-rp-llama-3.1-8b","name":"AionLabs: Aion-RP 1.0 (8B)","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738696718,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"qwen/qwen-vl-max","name":"Qwen: Qwen VL Max","pricing":{"prompt":"0.0000008","completion":"0.0000032","request":"0","image":"0.001024","web_search":"0","internal_reasoning":"0"},"created":1738434304,"top_provider":{"context_length":7500,"max_completion_tokens":1500,"is_moderated":false}},{"id":"qwen/qwen-turbo","name":"Qwen: Qwen-Turbo","pricing":{"prompt":"0.00000005","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738410974,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-72b-instruct:free","name":"Qwen: Qwen2.5 VL 72B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738410311,"top_provider":{"context_length":131072,"max_completion_tokens":2048,"is_moderated":false}},{"id":"qwen/qwen2.5-vl-72b-instruct","name":"Qwen: Qwen2.5 VL 72B Instruct","pricing":{"prompt":"0.0000007","completion":"0.0000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738410311,"top_provider":{"context_length":128000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"qwen/qwen-plus","name":"Qwen: Qwen-Plus","pricing":{"prompt":"0.0000004","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738409840,"top_provider":{"context_length":131072,"max_completion_tokens":8192,"is_moderated":false}},{"id":"qwen/qwen-max","name":"Qwen: Qwen-Max ","pricing":{"prompt":"0.0000016","completion":"0.0000064","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738402289,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"openai/o3-mini","name":"OpenAI: o3 Mini","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1738351721,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"deepseek/deepseek-r1-distill-qwen-1.5b","name":"DeepSeek: R1 Distill Qwen 1.5B","pricing":{"prompt":"0.00000018","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738328067,"top_provider":{"context_length":131072,"max_completion_tokens":32768,"is_moderated":false}},{"id":"mistralai/mistral-small-24b-instruct-2501:free","name":"Mistral: Mistral Small 3 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738255409,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-small-24b-instruct-2501","name":"Mistral: Mistral Small 3","pricing":{"prompt":"0.00000007","completion":"0.00000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738255409,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-32b:free","name":"DeepSeek: R1 Distill Qwen 32B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738194830,"top_provider":{"context_length":16000,"max_completion_tokens":16000,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-32b","name":"DeepSeek: R1 Distill Qwen 32B","pricing":{"prompt":"0.00000012","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738194830,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-14b:free","name":"DeepSeek: R1 Distill Qwen 14B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738193940,"top_provider":{"context_length":64000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-qwen-14b","name":"DeepSeek: R1 Distill Qwen 14B","pricing":{"prompt":"0.00000015","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738193940,"top_provider":{"context_length":64000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"perplexity/sonar-reasoning","name":"Perplexity: Sonar Reasoning","pricing":{"prompt":"0.000001","completion":"0.000005","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738131107,"top_provider":{"context_length":127000,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/sonar","name":"Perplexity: Sonar","pricing":{"prompt":"0.000001","completion":"0.000001","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1738013808,"top_provider":{"context_length":127072,"max_completion_tokens":null,"is_moderated":false}},{"id":"liquid/lfm-7b","name":"Liquid: LFM 7B","pricing":{"prompt":"0.00000001","completion":"0.00000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737806883,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"liquid/lfm-3b","name":"Liquid: LFM 3B","pricing":{"prompt":"0.00000002","completion":"0.00000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737806501,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-llama-70b:free","name":"DeepSeek: R1 Distill Llama 70B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737663169,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1-distill-llama-70b","name":"DeepSeek: R1 Distill Llama 70B","pricing":{"prompt":"0.0000001","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737663169,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-r1:free","name":"DeepSeek: R1 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737381095,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-r1","name":"DeepSeek: R1","pricing":{"prompt":"0.0000005","completion":"0.00000218","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737381095,"top_provider":{"context_length":163840,"max_completion_tokens":163840,"is_moderated":false}},{"id":"sophosympatheia/rogue-rose-103b-v0.2:free","name":"Rogue Rose 103B v0.2 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1737195189,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"minimax/minimax-01","name":"MiniMax: MiniMax-01","pricing":{"prompt":"0.0000002","completion":"0.0000011","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1736915462,"top_provider":{"context_length":1000192,"max_completion_tokens":1000192,"is_moderated":false}},{"id":"mistralai/codestral-2501","name":"Mistral: Codestral 2501","pricing":{"prompt":"0.0000003","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1736895522,"top_provider":{"context_length":262144,"max_completion_tokens":null,"is_moderated":false}},{"id":"microsoft/phi-4","name":"Microsoft: Phi 4","pricing":{"prompt":"0.00000007","completion":"0.00000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1736489872,"top_provider":{"context_length":16384,"max_completion_tokens":16384,"is_moderated":false}},{"id":"deepseek/deepseek-chat:free","name":"DeepSeek: DeepSeek V3 (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1735241320,"top_provider":{"context_length":163840,"max_completion_tokens":null,"is_moderated":false}},{"id":"deepseek/deepseek-chat","name":"DeepSeek: DeepSeek V3","pricing":{"prompt":"0.00000038","completion":"0.00000089","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1735241320,"top_provider":{"context_length":163840,"max_completion_tokens":163840,"is_moderated":false}},{"id":"sao10k/l3.3-euryale-70b","name":"Sao10K: Llama 3.3 Euryale 70B","pricing":{"prompt":"0.0000007","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734535928,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"openai/o1","name":"OpenAI: o1","pricing":{"prompt":"0.000015","completion":"0.00006","request":"0","image":"0.021675","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000075"},"created":1734459999,"top_provider":{"context_length":200000,"max_completion_tokens":100000,"is_moderated":true}},{"id":"eva-unit-01/eva-llama-3.33-70b","name":"EVA Llama 3.33 70B","pricing":{"prompt":"0.000004","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734377303,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"x-ai/grok-2-vision-1212","name":"xAI: Grok 2 Vision 1212","pricing":{"prompt":"0.000002","completion":"0.00001","request":"0","image":"0.0036","web_search":"0","internal_reasoning":"0"},"created":1734237338,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-2-1212","name":"xAI: Grok 2 1212","pricing":{"prompt":"0.000002","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734232814,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command-r7b-12-2024","name":"Cohere: Command R7B (12-2024)","pricing":{"prompt":"0.0000000375","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1734158152,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"google/gemini-2.0-flash-exp:free","name":"Google: Gemini 2.0 Flash Experimental (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733937523,"top_provider":{"context_length":1048576,"max_completion_tokens":8192,"is_moderated":false}},{"id":"meta-llama/llama-3.3-70b-instruct:free","name":"Meta: Llama 3.3 70B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733506137,"top_provider":{"context_length":8000,"max_completion_tokens":8000,"is_moderated":false}},{"id":"meta-llama/llama-3.3-70b-instruct","name":"Meta: Llama 3.3 70B Instruct","pricing":{"prompt":"0.0000001","completion":"0.00000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733506137,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":false}},{"id":"amazon/nova-lite-v1","name":"Amazon: Nova Lite 1.0","pricing":{"prompt":"0.00000006","completion":"0.00000024","request":"0","image":"0.00009","web_search":"0","internal_reasoning":"0"},"created":1733437363,"top_provider":{"context_length":300000,"max_completion_tokens":5120,"is_moderated":false}},{"id":"amazon/nova-micro-v1","name":"Amazon: Nova Micro 1.0","pricing":{"prompt":"0.000000035","completion":"0.00000014","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1733437237,"top_provider":{"context_length":128000,"max_completion_tokens":5120,"is_moderated":false}},{"id":"amazon/nova-pro-v1","name":"Amazon: Nova Pro 1.0","pricing":{"prompt":"0.0000008","completion":"0.0000032","request":"0","image":"0.0012","web_search":"0","internal_reasoning":"0"},"created":1733436303,"top_provider":{"context_length":300000,"max_completion_tokens":5120,"is_moderated":false}},{"id":"qwen/qwq-32b-preview:free","name":"Qwen: QwQ 32B Preview (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732754541,"top_provider":{"context_length":16384,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwq-32b-preview","name":"Qwen: QwQ 32B Preview","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732754541,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/learnlm-1.5-pro-experimental:free","name":"Google: LearnLM 1.5 Pro Experimental (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732216551,"top_provider":{"context_length":40960,"max_completion_tokens":8192,"is_moderated":false}},{"id":"eva-unit-01/eva-qwen-2.5-72b","name":"EVA Qwen2.5 72B","pricing":{"prompt":"0.0000009","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1732210606,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"openai/gpt-4o-2024-11-20","name":"OpenAI: GPT-4o (2024-11-20)","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0.003613","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000125"},"created":1732127594,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"mistralai/mistral-large-2411","name":"Mistral Large 2411","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731978685,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-large-2407","name":"Mistral Large 2407","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731978415,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/pixtral-large-2411","name":"Mistral: Pixtral Large 2411","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0.002888","web_search":"0","internal_reasoning":"0"},"created":1731977388,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"x-ai/grok-vision-beta","name":"xAI: Grok Vision Beta","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0.009","web_search":"0","internal_reasoning":"0"},"created":1731976624,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"infermatic/mn-inferor-12b","name":"Infermatic: Mistral Nemo Inferor 12B","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731464428,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"qwen/qwen-2.5-coder-32b-instruct:free","name":"Qwen2.5 Coder 32B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731368400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2.5-coder-32b-instruct","name":"Qwen2.5 Coder 32B Instruct","pricing":{"prompt":"0.00000007","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731368400,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"raifle/sorcererlm-8x22b","name":"SorcererLM 8x22B","pricing":{"prompt":"0.0000045","completion":"0.0000045","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731105083,"top_provider":{"context_length":16000,"max_completion_tokens":null,"is_moderated":false}},{"id":"eva-unit-01/eva-qwen-2.5-32b","name":"EVA Qwen2.5 32B","pricing":{"prompt":"0.0000026","completion":"0.0000034","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731104847,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"thedrummer/unslopnemo-12b","name":"Unslopnemo 12B","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1731103448,"top_provider":{"context_length":32000,"max_completion_tokens":null,"is_moderated":false}},{"id":"anthropic/claude-3.5-haiku:beta","name":"Anthropic: Claude 3.5 Haiku (self-moderated)","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-haiku","name":"Anthropic: Claude 3.5 Haiku","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"anthropic/claude-3.5-haiku-20241022:beta","name":"Anthropic: Claude 3.5 Haiku (2024-10-22) (self-moderated)","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-haiku-20241022","name":"Anthropic: Claude 3.5 Haiku (2024-10-22)","pricing":{"prompt":"0.0000008","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000008","input_cache_write":"0.000001"},"created":1730678400,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"anthracite-org/magnum-v4-72b","name":"Magnum v4 72B","pricing":{"prompt":"0.0000015","completion":"0.00000225","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729555200,"top_provider":{"context_length":16384,"max_completion_tokens":1024,"is_moderated":false}},{"id":"neversleep/llama-3.1-lumimaid-70b","name":"NeverSleep: Lumimaid v0.2 70B","pricing":{"prompt":"0.0000015","completion":"0.00000225","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729555200,"top_provider":{"context_length":16384,"max_completion_tokens":2048,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet:beta","name":"Anthropic: Claude 3.5 Sonnet (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1729555200,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet","name":"Anthropic: Claude 3.5 Sonnet","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1729555200,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"x-ai/grok-beta","name":"xAI: Grok Beta","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729382400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/ministral-3b","name":"Mistral: Ministral 3B","pricing":{"prompt":"0.00000004","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729123200,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/ministral-8b","name":"Mistral: Ministral 8B","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729123200,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2.5-7b-instruct:free","name":"Qwen2.5 7B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729036800,"top_provider":{"context_length":32768,"max_completion_tokens":32768,"is_moderated":false}},{"id":"qwen/qwen-2.5-7b-instruct","name":"Qwen2.5 7B Instruct","pricing":{"prompt":"0.00000005","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1729036800,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-70b-instruct:free","name":"NVIDIA: Llama 3.1 Nemotron 70B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728950400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"nvidia/llama-3.1-nemotron-70b-instruct","name":"NVIDIA: Llama 3.1 Nemotron 70B Instruct","pricing":{"prompt":"0.00000012","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728950400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"inflection/inflection-3-pi","name":"Inflection: Inflection 3 Pi","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728604800,"top_provider":{"context_length":8000,"max_completion_tokens":1024,"is_moderated":false}},{"id":"inflection/inflection-3-productivity","name":"Inflection: Inflection 3 Productivity","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1728604800,"top_provider":{"context_length":8000,"max_completion_tokens":1024,"is_moderated":false}},{"id":"google/gemini-flash-1.5-8b","name":"Google: Gemini 1.5 Flash 8B","pricing":{"prompt":"0.0000000375","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000001","input_cache_write":"0.0000000583"},"created":1727913600,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"thedrummer/rocinante-12b","name":"Rocinante 12B","pricing":{"prompt":"0.00000025","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727654400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"anthracite-org/magnum-v2-72b","name":"Magnum v2 72B","pricing":{"prompt":"0.000003","completion":"0.000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727654400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"liquid/lfm-40b","name":"Liquid: LFM 40B MoE","pricing":{"prompt":"0.00000015","completion":"0.00000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727654400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.2-1b-instruct:free","name":"Meta: Llama 3.2 1B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"meta-llama/llama-3.2-1b-instruct","name":"Meta: Llama 3.2 1B Instruct","pricing":{"prompt":"0.00000001","completion":"0.00000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.2-11b-vision-instruct:free","name":"Meta: Llama 3.2 11B Vision Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":2048,"is_moderated":false}},{"id":"meta-llama/llama-3.2-11b-vision-instruct","name":"Meta: Llama 3.2 11B Vision Instruct","pricing":{"prompt":"0.000000049","completion":"0.000000049","request":"0","image":"0.00007948","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-3.2-90b-vision-instruct","name":"Meta: Llama 3.2 90B Vision Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0.001301","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.2-3b-instruct:free","name":"Meta: Llama 3.2 3B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":20000,"max_completion_tokens":20000,"is_moderated":false}},{"id":"meta-llama/llama-3.2-3b-instruct","name":"Meta: Llama 3.2 3B Instruct","pricing":{"prompt":"0.000000015","completion":"0.000000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1727222400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"qwen/qwen-2.5-72b-instruct:free","name":"Qwen2.5 72B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1726704000,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2.5-72b-instruct","name":"Qwen2.5 72B Instruct","pricing":{"prompt":"0.00000012","completion":"0.00000039","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1726704000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"qwen/qwen-2.5-vl-72b-instruct","name":"Qwen: Qwen2.5-VL 72B Instruct","pricing":{"prompt":"0.0000006","completion":"0.0000006","request":"0","image":"0.000578","web_search":"0","internal_reasoning":"0"},"created":1726617600,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"neversleep/llama-3.1-lumimaid-8b","name":"NeverSleep: Lumimaid v0.2 8B","pricing":{"prompt":"0.00000009375","completion":"0.00000075","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1726358400,"top_provider":{"context_length":32768,"max_completion_tokens":2048,"is_moderated":false}},{"id":"openai/o1-mini","name":"OpenAI: o1-mini","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":65536,"is_moderated":true}},{"id":"openai/o1-preview","name":"OpenAI: o1-preview","pricing":{"prompt":"0.000015","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000075"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/o1-preview-2024-09-12","name":"OpenAI: o1-preview (2024-09-12)","pricing":{"prompt":"0.000015","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000075"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":32768,"is_moderated":true}},{"id":"openai/o1-mini-2024-09-12","name":"OpenAI: o1-mini (2024-09-12)","pricing":{"prompt":"0.0000011","completion":"0.0000044","request":"0","image":"0","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000055"},"created":1726099200,"top_provider":{"context_length":128000,"max_completion_tokens":65536,"is_moderated":true}},{"id":"mistralai/pixtral-12b","name":"Mistral: Pixtral 12B","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0.0001445","web_search":"0","internal_reasoning":"0"},"created":1725926400,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command-r-plus-08-2024","name":"Cohere: Command R+ (08-2024)","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724976000,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"cohere/command-r-08-2024","name":"Cohere: Command R (08-2024)","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724976000,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"sao10k/l3.1-euryale-70b","name":"Sao10K: Llama 3.1 Euryale 70B v2.2","pricing":{"prompt":"0.0000007","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"google/gemini-flash-1.5-8b-exp","name":"Google: Gemini 1.5 Flash 8B Experimental","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"qwen/qwen-2.5-vl-7b-instruct:free","name":"Qwen: Qwen2.5-VL 7B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":64000,"max_completion_tokens":64000,"is_moderated":false}},{"id":"qwen/qwen-2.5-vl-7b-instruct","name":"Qwen: Qwen2.5-VL 7B Instruct","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0.0001445","web_search":"0","internal_reasoning":"0"},"created":1724803200,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"ai21/jamba-1-5-mini","name":"AI21: Jamba 1.5 Mini","pricing":{"prompt":"0.0000002","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724371200,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"ai21/jamba-1-5-large","name":"AI21: Jamba 1.5 Large","pricing":{"prompt":"0.000002","completion":"0.000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724371200,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"microsoft/phi-3.5-mini-128k-instruct","name":"Microsoft: Phi-3.5 Mini 128K Instruct","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1724198400,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"nousresearch/hermes-3-llama-3.1-70b","name":"Nous: Hermes 3 70B Instruct","pricing":{"prompt":"0.00000012","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723939200,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"nousresearch/hermes-3-llama-3.1-405b","name":"Nous: Hermes 3 405B Instruct","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723766400,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"openai/chatgpt-4o-latest","name":"OpenAI: ChatGPT-4o","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0"},"created":1723593600,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"aetherwiing/mn-starcannon-12b","name":"Aetherwiing: Starcannon 12B","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723507200,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"sao10k/l3-lunaris-8b","name":"Sao10K: Llama 3 8B Lunaris","pricing":{"prompt":"0.00000002","completion":"0.00000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1723507200,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-4o-2024-08-06","name":"OpenAI: GPT-4o (2024-08-06)","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0.003613","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000125"},"created":1722902400,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"meta-llama/llama-3.1-405b:free","name":"Meta: Llama 3.1 405B (base) (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722556800,"top_provider":{"context_length":64000,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.1-405b","name":"Meta: Llama 3.1 405B (base)","pricing":{"prompt":"0.000002","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722556800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"nothingiisreal/mn-celeste-12b","name":"Mistral Nemo 12B Celeste","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722556800,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"perplexity/llama-3.1-sonar-small-128k-online","name":"Perplexity: Llama 3.1 Sonar 8B Online","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722470400,"top_provider":{"context_length":127072,"max_completion_tokens":null,"is_moderated":false}},{"id":"perplexity/llama-3.1-sonar-large-128k-online","name":"Perplexity: Llama 3.1 Sonar 70B Online","pricing":{"prompt":"0.000001","completion":"0.000001","request":"0.005","image":"0","web_search":"0","internal_reasoning":"0"},"created":1722470400,"top_provider":{"context_length":127072,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-3.1-8b-instruct:free","name":"Meta: Llama 3.1 8B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":131072,"max_completion_tokens":4096,"is_moderated":false}},{"id":"meta-llama/llama-3.1-8b-instruct","name":"Meta: Llama 3.1 8B Instruct","pricing":{"prompt":"0.00000002","completion":"0.00000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":16384,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-3.1-70b-instruct","name":"Meta: Llama 3.1 70B Instruct","pricing":{"prompt":"0.0000001","completion":"0.00000028","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":131072,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-3.1-405b-instruct","name":"Meta: Llama 3.1 405B Instruct","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721692800,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"mistralai/codestral-mamba","name":"Mistral: Codestral Mamba","pricing":{"prompt":"0.00000025","completion":"0.00000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721347200,"top_provider":{"context_length":262144,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-nemo:free","name":"Mistral: Mistral Nemo (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721347200,"top_provider":{"context_length":128000,"max_completion_tokens":128000,"is_moderated":false}},{"id":"mistralai/mistral-nemo","name":"Mistral: Mistral Nemo","pricing":{"prompt":"0.00000003","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1721347200,"top_provider":{"context_length":98304,"max_completion_tokens":49152,"is_moderated":false}},{"id":"openai/gpt-4o-mini","name":"OpenAI: GPT-4o-mini","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0.000217","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000075"},"created":1721260800,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"openai/gpt-4o-mini-2024-07-18","name":"OpenAI: GPT-4o-mini (2024-07-18)","pricing":{"prompt":"0.00000015","completion":"0.0000006","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0","input_cache_read":"0.000000075"},"created":1721260800,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"google/gemma-2-27b-it","name":"Google: Gemma 2 27B","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1720828800,"top_provider":{"context_length":8192,"max_completion_tokens":2048,"is_moderated":false}},{"id":"alpindale/magnum-72b","name":"Magnum 72B","pricing":{"prompt":"0.000004","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1720656000,"top_provider":{"context_length":16384,"max_completion_tokens":4096,"is_moderated":false}},{"id":"google/gemma-2-9b-it:free","name":"Google: Gemma 2 9B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719532800,"top_provider":{"context_length":8192,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/gemma-2-9b-it","name":"Google: Gemma 2 9B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719532800,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"ai21/jamba-instruct","name":"AI21: Jamba Instruct","pricing":{"prompt":"0.0000005","completion":"0.0000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719273600,"top_provider":{"context_length":256000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"01-ai/yi-large","name":"01.AI: Yi Large","pricing":{"prompt":"0.000003","completion":"0.000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1719273600,"top_provider":{"context_length":32768,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet-20240620:beta","name":"Anthropic: Claude 3.5 Sonnet (2024-06-20) (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1718841600,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"anthropic/claude-3.5-sonnet-20240620","name":"Anthropic: Claude 3.5 Sonnet (2024-06-20)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1718841600,"top_provider":{"context_length":200000,"max_completion_tokens":8192,"is_moderated":true}},{"id":"sao10k/l3-euryale-70b","name":"Sao10k: Llama 3 Euryale 70B v2.1","pricing":{"prompt":"0.00000148","completion":"0.00000148","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1718668800,"top_provider":{"context_length":8192,"max_completion_tokens":8192,"is_moderated":false}},{"id":"cognitivecomputations/dolphin-mixtral-8x22b","name":"Dolphin 2.9.2 Mixtral 8x22B 🐬","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1717804800,"top_provider":{"context_length":16000,"max_completion_tokens":null,"is_moderated":false}},{"id":"qwen/qwen-2-72b-instruct","name":"Qwen 2 72B Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1717718400,"top_provider":{"context_length":32768,"max_completion_tokens":4096,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct-v0.3","name":"Mistral: Mistral 7B Instruct v0.3","pricing":{"prompt":"0.000000029","completion":"0.000000055","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"nousresearch/hermes-2-pro-llama-3-8b","name":"NousResearch: Hermes 2 Pro - Llama-3 8B","pricing":{"prompt":"0.000000025","completion":"0.00000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":131072,"max_completion_tokens":131072,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct:free","name":"Mistral: Mistral 7B Instruct (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct","name":"Mistral: Mistral 7B Instruct","pricing":{"prompt":"0.000000029","completion":"0.000000055","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716768000,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"microsoft/phi-3-mini-128k-instruct","name":"Microsoft: Phi-3 Mini 128K Instruct","pricing":{"prompt":"0.0000001","completion":"0.0000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716681600,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"microsoft/phi-3-medium-128k-instruct","name":"Microsoft: Phi-3 Medium 128K Instruct","pricing":{"prompt":"0.000001","completion":"0.000001","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1716508800,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"neversleep/llama-3-lumimaid-70b","name":"NeverSleep: Llama 3 Lumimaid 70B","pricing":{"prompt":"0.000004","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1715817600,"top_provider":{"context_length":8192,"max_completion_tokens":4096,"is_moderated":false}},{"id":"google/gemini-flash-1.5","name":"Google: Gemini 1.5 Flash ","pricing":{"prompt":"0.000000075","completion":"0.0000003","request":"0","image":"0.00004","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000001875","input_cache_write":"0.0000001583"},"created":1715644800,"top_provider":{"context_length":1000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"openai/gpt-4o","name":"OpenAI: GPT-4o","pricing":{"prompt":"0.0000025","completion":"0.00001","request":"0","image":"0.003613","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000125"},"created":1715558400,"top_provider":{"context_length":128000,"max_completion_tokens":16384,"is_moderated":true}},{"id":"openai/gpt-4o:extended","name":"OpenAI: GPT-4o (extended)","pricing":{"prompt":"0.000006","completion":"0.000018","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0"},"created":1715558400,"top_provider":{"context_length":128000,"max_completion_tokens":64000,"is_moderated":true}},{"id":"meta-llama/llama-guard-2-8b","name":"Meta: LlamaGuard 2 8B","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1715558400,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-4o-2024-05-13","name":"OpenAI: GPT-4o (2024-05-13)","pricing":{"prompt":"0.000005","completion":"0.000015","request":"0","image":"0.007225","web_search":"0","internal_reasoning":"0"},"created":1715558400,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"neversleep/llama-3-lumimaid-8b:extended","name":"NeverSleep: Llama 3 Lumimaid 8B (extended)","pricing":{"prompt":"0.00000009375","completion":"0.00000075","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1714780800,"top_provider":{"context_length":24576,"max_completion_tokens":2048,"is_moderated":false}},{"id":"neversleep/llama-3-lumimaid-8b","name":"NeverSleep: Llama 3 Lumimaid 8B","pricing":{"prompt":"0.00000009375","completion":"0.00000075","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1714780800,"top_provider":{"context_length":24576,"max_completion_tokens":2048,"is_moderated":false}},{"id":"sao10k/fimbulvetr-11b-v2","name":"Fimbulvetr 11B v2","pricing":{"prompt":"0.0000008","completion":"0.0000012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713657600,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"meta-llama/llama-3-8b-instruct","name":"Meta: Llama 3 8B Instruct","pricing":{"prompt":"0.00000003","completion":"0.00000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713398400,"top_provider":{"context_length":8192,"max_completion_tokens":16384,"is_moderated":false}},{"id":"meta-llama/llama-3-70b-instruct","name":"Meta: Llama 3 70B Instruct","pricing":{"prompt":"0.0000003","completion":"0.0000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713398400,"top_provider":{"context_length":8192,"max_completion_tokens":16384,"is_moderated":false}},{"id":"mistralai/mixtral-8x22b-instruct","name":"Mistral: Mixtral 8x22B Instruct","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713312000,"top_provider":{"context_length":65536,"max_completion_tokens":null,"is_moderated":false}},{"id":"microsoft/wizardlm-2-7b","name":"WizardLM-2 7B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713225600,"top_provider":{"context_length":32000,"max_completion_tokens":null,"is_moderated":false}},{"id":"microsoft/wizardlm-2-8x22b","name":"WizardLM-2 8x22B","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1713225600,"top_provider":{"context_length":65536,"max_completion_tokens":16384,"is_moderated":false}},{"id":"openai/gpt-4-turbo","name":"OpenAI: GPT-4 Turbo","pricing":{"prompt":"0.00001","completion":"0.00003","request":"0","image":"0.01445","web_search":"0","internal_reasoning":"0"},"created":1712620800,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"google/gemini-pro-1.5","name":"Google: Gemini 1.5 Pro","pricing":{"prompt":"0.00000125","completion":"0.000005","request":"0","image":"0.0006575","web_search":"0","internal_reasoning":"0"},"created":1712620800,"top_provider":{"context_length":2000000,"max_completion_tokens":8192,"is_moderated":false}},{"id":"cohere/command-r-plus","name":"Cohere: Command R+","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1712188800,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"cohere/command-r-plus-04-2024","name":"Cohere: Command R+ (04-2024)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1712016000,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"sophosympatheia/midnight-rose-70b","name":"Midnight Rose 70B","pricing":{"prompt":"0.0000008","completion":"0.0000008","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1711065600,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"cohere/command-r","name":"Cohere: Command R","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1710374400,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"cohere/command","name":"Cohere: Command","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1710374400,"top_provider":{"context_length":4096,"max_completion_tokens":4000,"is_moderated":false}},{"id":"anthropic/claude-3-haiku:beta","name":"Anthropic: Claude 3 Haiku (self-moderated)","pricing":{"prompt":"0.00000025","completion":"0.00000125","request":"0","image":"0.0004","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000003","input_cache_write":"0.0000003"},"created":1710288000,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3-haiku","name":"Anthropic: Claude 3 Haiku","pricing":{"prompt":"0.00000025","completion":"0.00000125","request":"0","image":"0.0004","web_search":"0","internal_reasoning":"0","input_cache_read":"0.00000003","input_cache_write":"0.0000003"},"created":1710288000,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"anthropic/claude-3-opus:beta","name":"Anthropic: Claude 3 Opus (self-moderated)","pricing":{"prompt":"0.000015","completion":"0.000075","request":"0","image":"0.024","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000015","input_cache_write":"0.00001875"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3-opus","name":"Anthropic: Claude 3 Opus","pricing":{"prompt":"0.000015","completion":"0.000075","request":"0","image":"0.024","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000015","input_cache_write":"0.00001875"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"anthropic/claude-3-sonnet:beta","name":"Anthropic: Claude 3 Sonnet (self-moderated)","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-3-sonnet","name":"Anthropic: Claude 3 Sonnet","pricing":{"prompt":"0.000003","completion":"0.000015","request":"0","image":"0.0048","web_search":"0","internal_reasoning":"0","input_cache_read":"0.0000003","input_cache_write":"0.00000375"},"created":1709596800,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"cohere/command-r-03-2024","name":"Cohere: Command R (03-2024)","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1709341200,"top_provider":{"context_length":128000,"max_completion_tokens":4000,"is_moderated":false}},{"id":"mistralai/mistral-large","name":"Mistral Large","pricing":{"prompt":"0.000002","completion":"0.000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1708905600,"top_provider":{"context_length":128000,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo-0613","name":"OpenAI: GPT-3.5 Turbo (older v0613)","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1706140800,"top_provider":{"context_length":4095,"max_completion_tokens":4096,"is_moderated":false}},{"id":"openai/gpt-4-turbo-preview","name":"OpenAI: GPT-4 Turbo Preview","pricing":{"prompt":"0.00001","completion":"0.00003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1706140800,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"nousresearch/nous-hermes-2-mixtral-8x7b-dpo","name":"Nous: Hermes 2 Mixtral 8x7B DPO","pricing":{"prompt":"0.0000006","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1705363200,"top_provider":{"context_length":32768,"max_completion_tokens":2048,"is_moderated":false}},{"id":"mistralai/mistral-small","name":"Mistral Small","pricing":{"prompt":"0.0000002","completion":"0.0000006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1704844800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-medium","name":"Mistral Medium","pricing":{"prompt":"0.00000275","completion":"0.0000081","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1704844800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-tiny","name":"Mistral Tiny","pricing":{"prompt":"0.00000025","completion":"0.00000025","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1704844800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"mistralai/mistral-7b-instruct-v0.2","name":"Mistral: Mistral 7B Instruct v0.2","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1703721600,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"cognitivecomputations/dolphin-mixtral-8x7b","name":"Dolphin 2.6 Mixtral 8x7B 🐬","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1703116800,"top_provider":{"context_length":32768,"max_completion_tokens":null,"is_moderated":false}},{"id":"google/gemini-pro-vision","name":"Google: Gemini Pro Vision 1.0","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0.0025","web_search":"0","internal_reasoning":"0"},"created":1702425600,"top_provider":{"context_length":16384,"max_completion_tokens":2048,"is_moderated":false}},{"id":"mistralai/mixtral-8x7b-instruct","name":"Mistral: Mixtral 8x7B Instruct","pricing":{"prompt":"0.00000024","completion":"0.00000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1702166400,"top_provider":{"context_length":32768,"max_completion_tokens":16384,"is_moderated":false}},{"id":"openchat/openchat-7b","name":"OpenChat 3.5 7B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1701129600,"top_provider":{"context_length":8192,"max_completion_tokens":null,"is_moderated":false}},{"id":"neversleep/noromaid-20b","name":"Noromaid 20B","pricing":{"prompt":"0.00000075","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700956800,"top_provider":{"context_length":8192,"max_completion_tokens":2048,"is_moderated":false}},{"id":"anthropic/claude-2.1:beta","name":"Anthropic: Claude v2.1 (self-moderated)","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-2.1","name":"Anthropic: Claude v2.1","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"anthropic/claude-2:beta","name":"Anthropic: Claude v2 (self-moderated)","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-2","name":"Anthropic: Claude v2","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1700611200,"top_provider":{"context_length":200000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"alpindale/goliath-120b","name":"Goliath 120B","pricing":{"prompt":"0.0000065625","completion":"0.000009375","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699574400,"top_provider":{"context_length":6144,"max_completion_tokens":512,"is_moderated":false}},{"id":"undi95/toppy-m-7b","name":"Toppy M 7B","pricing":{"prompt":"0.00000007","completion":"0.00000007","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699574400,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"openrouter/auto","name":"Auto Router","pricing":{"prompt":"-1","completion":"-1"},"created":1699401600,"top_provider":{"context_length":null,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-4-1106-preview","name":"OpenAI: GPT-4 Turbo (older v1106)","pricing":{"prompt":"0.00001","completion":"0.00003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699228800,"top_provider":{"context_length":128000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-3.5-turbo-1106","name":"OpenAI: GPT-3.5 Turbo 16k (older v1106)","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1699228800,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"google/palm-2-codechat-bison-32k","name":"Google: PaLM 2 Code Chat 32k","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1698969600,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"google/palm-2-chat-bison-32k","name":"Google: PaLM 2 Chat 32k","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1698969600,"top_provider":{"context_length":32768,"max_completion_tokens":8192,"is_moderated":false}},{"id":"jondurbin/airoboros-l2-70b","name":"Airoboros 70B","pricing":{"prompt":"0.0000005","completion":"0.0000005","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1698537600,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo-instruct","name":"OpenAI: GPT-3.5 Turbo Instruct","pricing":{"prompt":"0.0000015","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1695859200,"top_provider":{"context_length":4095,"max_completion_tokens":4096,"is_moderated":true}},{"id":"mistralai/mistral-7b-instruct-v0.1","name":"Mistral: Mistral 7B Instruct v0.1","pricing":{"prompt":"0.0000002","completion":"0.0000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1695859200,"top_provider":{"context_length":32768,"max_completion_tokens":2048,"is_moderated":false}},{"id":"pygmalionai/mythalion-13b","name":"Pygmalion: Mythalion 13B","pricing":{"prompt":"0.0000005625","completion":"0.000001125","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693612800,"top_provider":{"context_length":8192,"max_completion_tokens":1024,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo-16k","name":"OpenAI: GPT-3.5 Turbo 16k","pricing":{"prompt":"0.000003","completion":"0.000004","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693180800,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4-32k","name":"OpenAI: GPT-4 32k","pricing":{"prompt":"0.00006","completion":"0.00012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693180800,"top_provider":{"context_length":32767,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4-32k-0314","name":"OpenAI: GPT-4 32k (older v0314)","pricing":{"prompt":"0.00006","completion":"0.00012","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1693180800,"top_provider":{"context_length":32767,"max_completion_tokens":4096,"is_moderated":true}},{"id":"nousresearch/nous-hermes-llama2-13b","name":"Nous: Hermes 13B","pricing":{"prompt":"0.00000018","completion":"0.00000018","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1692489600,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"huggingfaceh4/zephyr-7b-beta:free","name":"Hugging Face: Zephyr 7B (free)","pricing":{"prompt":"0","completion":"0","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690934400,"top_provider":{"context_length":4096,"max_completion_tokens":2048,"is_moderated":false}},{"id":"mancer/weaver","name":"Mancer: Weaver (alpha)","pricing":{"prompt":"0.000001125","completion":"0.000001125","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690934400,"top_provider":{"context_length":8000,"max_completion_tokens":1000,"is_moderated":false}},{"id":"anthropic/claude-2.0:beta","name":"Anthropic: Claude v2.0 (self-moderated)","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690502400,"top_provider":{"context_length":100000,"max_completion_tokens":4096,"is_moderated":false}},{"id":"anthropic/claude-2.0","name":"Anthropic: Claude v2.0","pricing":{"prompt":"0.000008","completion":"0.000024","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1690502400,"top_provider":{"context_length":100000,"max_completion_tokens":4096,"is_moderated":true}},{"id":"undi95/remm-slerp-l2-13b","name":"ReMM SLERP 13B","pricing":{"prompt":"0.0000005625","completion":"0.000001125","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1689984000,"top_provider":{"context_length":6144,"max_completion_tokens":1024,"is_moderated":false}},{"id":"google/palm-2-codechat-bison","name":"Google: PaLM 2 Code Chat","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1689811200,"top_provider":{"context_length":7168,"max_completion_tokens":1024,"is_moderated":false}},{"id":"google/palm-2-chat-bison","name":"Google: PaLM 2 Chat","pricing":{"prompt":"0.000001","completion":"0.000002","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1689811200,"top_provider":{"context_length":9216,"max_completion_tokens":1024,"is_moderated":false}},{"id":"gryphe/mythomax-l2-13b","name":"MythoMax 13B","pricing":{"prompt":"0.000000065","completion":"0.000000065","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1688256000,"top_provider":{"context_length":4096,"max_completion_tokens":4096,"is_moderated":false}},{"id":"meta-llama/llama-2-70b-chat","name":"Meta: Llama 2 70B Chat","pricing":{"prompt":"0.0000009","completion":"0.0000009","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1687219200,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"meta-llama/llama-2-13b-chat","name":"Meta: Llama 2 13B Chat","pricing":{"prompt":"0.0000003","completion":"0.0000003","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1687219200,"top_provider":{"context_length":4096,"max_completion_tokens":null,"is_moderated":false}},{"id":"openai/gpt-3.5-turbo","name":"OpenAI: GPT-3.5 Turbo","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-3.5-turbo-0125","name":"OpenAI: GPT-3.5 Turbo 16k","pricing":{"prompt":"0.0000005","completion":"0.0000015","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":16385,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4","name":"OpenAI: GPT-4","pricing":{"prompt":"0.00003","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":8191,"max_completion_tokens":4096,"is_moderated":true}},{"id":"openai/gpt-4-0314","name":"OpenAI: GPT-4 (older v0314)","pricing":{"prompt":"0.00003","completion":"0.00006","request":"0","image":"0","web_search":"0","internal_reasoning":"0"},"created":1685232000,"top_provider":{"context_length":8191,"max_completion_tokens":4096,"is_moderated":true}}] \ No newline at end of file diff --git a/packages/kbot/dist/main_node.js b/packages/kbot/dist/main_node.js index 378ae193..e304dcf3 100644 --- a/packages/kbot/dist/main_node.js +++ b/packages/kbot/dist/main_node.js @@ -172072,7 +172072,7 @@ __webpack_require__.d(__webpack_exports__, { eF: () => (/* binding */ run) }); -// UNUSED EXPORTS: complete_messages, complete_options, complete_params, execute_request, processRun +// UNUSED EXPORTS: complete_messages, complete_options, complete_params, default_sort, execute_request, processRun // EXTERNAL MODULE: external "node:path" var external_node_path_ = __webpack_require__(76760); @@ -180056,7 +180056,7 @@ const variables = (options) => { * @returns The combined string with new content appended. */ function concat(existingContent, newContent) { - return existingContent + '\n' + newContent; // Add a newline for separation + return existingContent + '\n\n' + newContent + '\n'; } /** * Merges new content into existing content. @@ -180098,7 +180098,7 @@ function writeOrAppend(dstPath, content, appendMode) { (0,write/* sync */.OH)(dstPath, finalContent); return finalContent; } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxlQUF1QixFQUFFLFVBQWtCO0lBQ2hFLE9BQU8sZUFBZSxHQUFHLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQywrQkFBK0I7QUFDN0UsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxlQUF1QixFQUFFLFVBQWtCO0lBQy9ELG9DQUFvQztJQUNwQyxpRkFBaUY7SUFDakYsT0FBTyxlQUFlLEdBQUcsSUFBSSxHQUFHLFVBQVUsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUMzQixPQUFlLEVBQ2YsT0FBZSxFQUNmLFVBQStCO0lBRS9CLElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQztJQUMzQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGtDQUFrQztRQUMvRSxJQUFJLHFCQUFxQixFQUFFLENBQUMsQ0FBQywrQkFBK0I7WUFDMUQsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDekQsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzVCLFlBQVksR0FBRyxNQUFNLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xELENBQUM7aUJBQU0sSUFBSSxVQUFVLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ2xDLFlBQVksR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsMENBQTBDO1lBQzVGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELEtBQUssQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDNUIsT0FBTyxZQUFZLENBQUE7QUFDckIsQ0FBQyJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFbEQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxlQUF1QixFQUFFLFVBQWtCO0lBQ2hFLE9BQU8sZUFBZSxHQUFHLE1BQU0sR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFBO0FBQ3JELENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQUMsZUFBdUIsRUFBRSxVQUFrQjtJQUMvRCxvQ0FBb0M7SUFDcEMsaUZBQWlGO0lBQ2pGLE9BQU8sZUFBZSxHQUFHLElBQUksR0FBRyxVQUFVLENBQUM7QUFDN0MsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsT0FBZSxFQUNmLE9BQWUsRUFDZixVQUErQjtJQUUvQixJQUFJLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDM0IsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUM7UUFDbEMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7UUFDL0UsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLENBQUMsK0JBQStCO1lBQzFELE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pELElBQUksVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixZQUFZLEdBQUcsTUFBTSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLElBQUksVUFBVSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNsQyxZQUFZLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLDBDQUEwQztZQUM1RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBQzVCLE9BQU8sWUFBWSxDQUFBO0FBQ3JCLENBQUMifQ== ;// ./dist-in/commands/run-completion.js @@ -182353,6 +182353,23 @@ var models = __webpack_require__(45000); +const default_sort = (files) => { + const getSortableParts = (filename) => { + const baseName = external_node_path_.parse(filename).name; + const match = baseName.match(/^(\d+)_?(.*)$/); // Match leading numbers + const numPart = match ? parseInt(match[1], 10) : NaN; + const textPart = match ? match[2] : baseName; // Extract text part + return { numPart, textPart }; + }; + return files.sort((a, b) => { + const { numPart: aNum, textPart: aText } = getSortableParts(a); + const { numPart: bNum, textPart: bText } = getSortableParts(b); + if (!isNaN(aNum) && !isNaN(bNum)) { + return aNum - bNum || aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + } + return aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + }); +}; /** * Complete options by setting up defaults, validating inputs, and initializing required components * @@ -182571,8 +182588,10 @@ const run = async (opts) => { items = (0,read/* sync */.OH)(opts.each, 'json') || []; } else if (hasMagic(opts.each)) { - const info = (0,dist/* pathInfoEx */.j4)((0,dist/* forward_slash */.Yf)(external_node_path_.resolve((0,dist/* resolve */.hd)(opts.each)))); - items = info.FILES; + const info = (0,dist/* pathInfoEx */.j4)((0,dist/* forward_slash */.Yf)(external_node_path_.resolve((0,dist/* resolve */.hd)(opts.each))), false, { + absolute: true, + }); + items = default_sort(info.FILES); } else if ((0,dist/* isFile */.fo)(opts.each) && (0,exists/* sync */.OH)(opts.each)) { items = [opts.each]; @@ -182612,7 +182631,7 @@ const run = async (opts) => { } return ret; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxJQUFJLElBQUksV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFLdkM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsSUFBZSxFQUE2QixFQUFFO0lBQ25GLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTdCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFBO0lBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNwQixHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDYixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBRTVELElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxNQUFNLE9BQU8sR0FBRyxNQUFtQixDQUFDO1FBRXBDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1lBQzVDLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3ZCLE9BQU8sQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQTtRQUNuRSxPQUFPLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDOUMsT0FBTyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFN0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMxRSxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7QUFDSCxDQUFDLENBQUE7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLEVBQ3BDLElBQWUsRUFDZixPQUFrQixFQUlqQixFQUFFO0lBQ0gsSUFBSSxRQUFRLEdBQXNDLEVBQUUsQ0FBQTtJQUVwRCxNQUFNLGFBQWEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN4QyxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUEyQyxDQUFDLENBQUE7SUFDMUQsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUErQixDQUFDLENBQUE7SUFFdEUsc0NBQXNDO0lBQ3RDLElBQUksS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN4RixLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN6RCxRQUFRLEdBQUcsQ0FBQyxHQUFHLFFBQTZDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQTtJQUV2RSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFBO0FBQzVCLENBQUMsQ0FBQTtBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2xDLE9BQWtCLEVBQ2xCLFFBQTJDLEVBQ0csRUFBRTtJQUNoRCxNQUFNLE1BQU0sR0FBRztRQUNiLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztRQUNwQixRQUFRO1FBQ1IsS0FBSyxFQUFFLEVBQUU7S0FDNkIsQ0FBQTtJQUV4QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2RSxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFBO1FBQzNCLG9DQUFvQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDLENBQUE7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFDbEMsT0FBa0IsRUFDbEIsTUFBVyxFQUNYLE1BQTJDLEVBQ2hCLEVBQUU7SUFDN0IsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFBO0lBRW5CLElBQUksQ0FBQztRQUNILFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLEtBQUssTUFBTSxDQUFDLFVBQVU7Z0JBQ3BCLEdBQUcsR0FBRyxNQUFNLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUNsRCxNQUFLO1lBRVAsS0FBSyxNQUFNLENBQUMsS0FBSztnQkFDZixHQUFHLEdBQUcsTUFBTSxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDN0MsTUFBSztZQUVQLEtBQUssTUFBTSxDQUFDLFNBQVM7Z0JBQ25CLEdBQUcsR0FBRyxNQUFNLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUNqRCxNQUFLO1lBRVA7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUE7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsaUJBQWlCLE9BQU8sQ0FBQyxJQUFJLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyxDQUFBO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBNkIsRUFBRTtJQUM3RSxJQUFJLE9BQU8sR0FBRyxNQUFNLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUE7SUFFN0IsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLGlCQUFpQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNsRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBRXZELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQTtJQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUNuRCxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxPQUFPLENBQUMsSUFBSSxNQUFNLE9BQU8sQ0FBQyxLQUFLLE1BQU0sT0FBTyxDQUFDLE1BQU0sT0FBTyxLQUFLLENBQUMsTUFBTSx1QkFBdUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM3UixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksT0FBTyxDQUFDLElBQUksTUFBTSxPQUFPLENBQUMsS0FBSyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sS0FBSyxDQUFDLE1BQU0sdUJBQXVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3BOLENBQUM7SUFDRCxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQTtJQUNqRCxNQUFNLEdBQUcsR0FBRyxNQUFNLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzFELE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxZQUFZLENBQUMsS0FBYTtJQUNqQywrQkFBK0I7SUFDL0IsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEIsQ0FBQztJQUVELCtDQUErQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEIsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoQixDQUFDO0lBRUQsNkZBQTZGO0lBQzdGLE1BQU0sY0FBYyxHQUFHLGlDQUFpQyxDQUFDO0lBRXpELE1BQU0sWUFBWSxHQUFhLEVBQUUsQ0FBQztJQUNsQyxJQUFJLEtBQTZCLENBQUM7SUFFbEMsdUNBQXVDO0lBQ3ZDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3JELFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxnREFBZ0Q7SUFDaEQsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM3RSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFJLE1BQWE7SUFDckMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQzVDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDLEVBQUUsRUFBUyxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsSUFBZSxFQUErQixFQUFFO0lBQ3hFLE1BQU0sR0FBRyxHQUF1QixFQUFFLENBQUE7SUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBRXBCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0IsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFCLDZDQUE2QztZQUM3QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQy9GLDRCQUE0QjtZQUM1QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUM3RixNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFBO1lBQ25FLCtDQUErQztZQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQTtRQUN4RCxDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNuQixDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxJQUFJLEtBQUssR0FBYSxFQUFFLENBQUE7UUFDeEIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDdkIsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDbkIsQ0FBQzthQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMzRixLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFPLElBQUksRUFBRSxDQUFBO1FBQzdDLENBQUM7YUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN4RSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUNwQixDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckIsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixJQUFJLENBQUMsSUFBSSxhQUFhLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ2hGLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLE1BQU0sMkJBQTJCLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFBO1FBQ3JGLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUc7Z0JBQ2YsR0FBRyxJQUFJO2dCQUNQLElBQUksRUFBRSxJQUFJO2dCQUNWLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7YUFDMUIsQ0FBQTtZQUNELHNDQUFzQztZQUN0QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQTtZQUM5QyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1lBQ3ZCLENBQUM7WUFDRCxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2xCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDLENBQUEifQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQzlFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBVyxNQUFNLE9BQU8sQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxJQUFJLElBQUksV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25ELE9BQU8sRUFBRSxJQUFJLElBQUksU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFekMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDakQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3hDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFdkMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBZSxFQUFZLEVBQUU7SUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQkFBb0I7UUFFbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUNqQyxDQUFDLENBQUE7SUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzlELE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5RCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsT0FBTyxJQUFJLEdBQUcsSUFBSSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdkcsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUN4RixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQUlEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBNkIsRUFBRTtJQUNuRixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUU3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQTtJQUM1RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDcEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUU1RCxJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxhQUFhLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsTUFBbUIsQ0FBQztRQUVwQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtZQUM1QyxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFFRCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUN2QixPQUFPLENBQUMsU0FBUyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUE7UUFDbkUsT0FBTyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzlDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRTdELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUUsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUNwQyxJQUFlLEVBQ2YsT0FBa0IsRUFJakIsRUFBRTtJQUNILElBQUksUUFBUSxHQUFzQyxFQUFFLENBQUE7SUFFcEQsTUFBTSxhQUFhLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDeEMsSUFBSSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBMkMsQ0FBQyxDQUFBO0lBQzFELFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBK0IsQ0FBQyxDQUFBO0lBRXRFLHNDQUFzQztJQUN0QyxJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDeEYsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDekQsUUFBUSxHQUFHLENBQUMsR0FBRyxRQUE2QyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUE7SUFFdkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQTtBQUM1QixDQUFDLENBQUE7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUNsQyxPQUFrQixFQUNsQixRQUEyQyxFQUNHLEVBQUU7SUFDaEQsTUFBTSxNQUFNLEdBQUc7UUFDYixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsUUFBUTtRQUNSLEtBQUssRUFBRSxFQUFFO0tBQzZCLENBQUE7SUFFeEMsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkUsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN2QyxNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQTtRQUMzQixvQ0FBb0M7SUFDdEMsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2xDLE9BQWtCLEVBQ2xCLE1BQVcsRUFDWCxNQUEyQyxFQUNoQixFQUFFO0lBQzdCLElBQUksR0FBRyxHQUFRLElBQUksQ0FBQTtJQUVuQixJQUFJLENBQUM7UUFDSCxRQUFRLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixLQUFLLE1BQU0sQ0FBQyxVQUFVO2dCQUNwQixHQUFHLEdBQUcsTUFBTSxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDbEQsTUFBSztZQUVQLEtBQUssTUFBTSxDQUFDLEtBQUs7Z0JBQ2YsR0FBRyxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUE7Z0JBQzdDLE1BQUs7WUFFUCxLQUFLLE1BQU0sQ0FBQyxTQUFTO2dCQUNuQixHQUFHLEdBQUcsTUFBTSxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtnQkFDakQsTUFBSztZQUVQO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxJQUFlLEVBQTZCLEVBQUU7SUFDN0UsSUFBSSxPQUFPLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMxQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFBO0lBRTdCLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbEUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUV2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDM0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFDbkQsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN6RCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksT0FBTyxDQUFDLElBQUksTUFBTSxPQUFPLENBQUMsS0FBSyxNQUFNLE9BQU8sQ0FBQyxNQUFNLE9BQU8sS0FBSyxDQUFDLE1BQU0sdUJBQXVCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDN1IsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLE9BQU8sQ0FBQyxJQUFJLE1BQU0sT0FBTyxDQUFDLEtBQUssTUFBTSxPQUFPLENBQUMsTUFBTSxPQUFPLEtBQUssQ0FBQyxNQUFNLHVCQUF1QixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLFNBQVMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNwTixDQUFDO0lBQ0QsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUE7SUFDakQsTUFBTSxHQUFHLEdBQUcsTUFBTSxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUMxRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUMsQ0FBQTtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsWUFBWSxDQUFDLEtBQWE7SUFDakMsK0JBQStCO0lBQy9CLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0MsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hCLENBQUM7SUFFRCwwQ0FBMEM7SUFDMUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDaEIsQ0FBQztJQUVELDZGQUE2RjtJQUM3RixNQUFNLGNBQWMsR0FBRyxpQ0FBaUMsQ0FBQztJQUV6RCxNQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7SUFDbEMsSUFBSSxLQUE2QixDQUFDO0lBRWxDLHVDQUF1QztJQUN2QyxPQUFPLENBQUMsS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDN0UsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBSSxNQUFhO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUM1QyxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLElBQWUsRUFBK0IsRUFBRTtJQUN4RSxNQUFNLEdBQUcsR0FBdUIsRUFBRSxDQUFBO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNwRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUVwQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQy9CLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMxQiw2Q0FBNkM7WUFDN0MsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUMvRiw0QkFBNEI7WUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDN0YsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtZQUNuRSwrQ0FBK0M7WUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsZUFBZSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUE7UUFDeEQsQ0FBQztJQUNILENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFBO1FBQ3hCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1FBQ25CLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDM0YsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBTyxJQUFJLEVBQUUsQ0FBQTtRQUM3QyxDQUFDO2FBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQztnQkFDNUUsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUE7WUFDRixLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsQyxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDckIsQ0FBQzthQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixJQUFJLENBQUMsSUFBSSxhQUFhLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ2hGLE9BQU8sR0FBRyxDQUFBO1FBQ1osQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxDQUFDLE1BQU0sMkJBQTJCLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFBO1FBQ3JGLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ3JCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxRQUFRLEdBQUc7Z0JBQ2YsR0FBRyxJQUFJO2dCQUNQLElBQUksRUFBRSxJQUFJO2dCQUNWLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7YUFDMUIsQ0FBQTtZQUNELHNDQUFzQztZQUN0QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQTtZQUM5QyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1lBQ3ZCLENBQUM7WUFDRCxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzlELE1BQU0sTUFBTSxHQUFHLE1BQU0sVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1lBQ3pDLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2xCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztTQUFNLENBQUM7UUFDTixNQUFNLE1BQU0sR0FBRyxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyQyxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDLENBQUEifQ== /***/ }), diff --git a/packages/kbot/dist/package-lock.json b/packages/kbot/dist/package-lock.json index 93fa781d..fdfc6b72 100644 --- a/packages/kbot/dist/package-lock.json +++ b/packages/kbot/dist/package-lock.json @@ -1,12 +1,12 @@ { "name": "@plastichub/kbot", - "version": "1.1.28", + "version": "1.1.29", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@plastichub/kbot", - "version": "1.1.28", + "version": "1.1.29", "license": "ISC", "dependencies": { "node-emoji": "^2.2.0" diff --git a/packages/kbot/dist/package.json b/packages/kbot/dist/package.json index a2ea0596..1b5a24b2 100644 --- a/packages/kbot/dist/package.json +++ b/packages/kbot/dist/package.json @@ -1,6 +1,6 @@ { "name": "@plastichub/kbot", - "version": "1.1.28", + "version": "1.1.29", "main": "main_node.js", "author": "", "license": "ISC", diff --git a/packages/kbot/schema.json b/packages/kbot/schema.json index b33a8c7f..ee9d2995 100644 --- a/packages/kbot/schema.json +++ b/packages/kbot/schema.json @@ -88,7 +88,7 @@ }, "model": { "type": "string", - "description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nagentica-org/deepcoder-14b-preview:free | free\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-1.6-large | paid\nai21/jamba-instruct | paid\nai21/jamba-1.6-mini | paid\naion-labs/aion-1.0 | paid\naion-labs/aion-1.0-mini | paid\naion-labs/aion-rp-llama-3.1-8b | paid\njondurbin/airoboros-l2-70b | paid\nalfredpros/codellama-7b-instruct-solidity | paid\nallenai/molmo-7b-d:free | free\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-3.7-sonnet | paid\nanthropic/claude-3.7-sonnet:beta | paid\nanthropic/claude-3.7-sonnet:thinking | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\narliai/qwq-32b-arliai-rpr-v1:free | free\nopenrouter/auto | paid\nbytedance-research/ui-tars-72b:free | free\ncohere/command | paid\ncohere/command-a | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndeepseek/deepseek-r1-zero:free | free\ndeepseek/deepseek-chat | paid\ndeepseek/deepseek-chat:free | free\ndeepseek/deepseek-chat-v3-0324 | paid\ndeepseek/deepseek-chat-v3-0324:free | free\ndeepseek/deepseek-v3-base:free | free\ndeepseek/deepseek-r1 | paid\ndeepseek/deepseek-r1:free | free\ndeepseek/deepseek-r1-distill-llama-70b | paid\ndeepseek/deepseek-r1-distill-llama-70b:free | free\ndeepseek/deepseek-r1-distill-llama-8b | paid\ndeepseek/deepseek-r1-distill-qwen-1.5b | paid\ndeepseek/deepseek-r1-distill-qwen-14b | paid\ndeepseek/deepseek-r1-distill-qwen-14b:free | free\ndeepseek/deepseek-r1-distill-qwen-32b | paid\ndeepseek/deepseek-r1-distill-qwen-32b:free | free\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\ncognitivecomputations/dolphin3.0-mistral-24b:free | free\ncognitivecomputations/dolphin3.0-r1-mistral-24b:free | free\neleutherai/llemma_7b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nsao10k/fimbulvetr-11b-v2 | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-2.0-flash-001 | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-2.0-flash-lite-001 | paid\ngoogle/gemini-2.0-flash-thinking-exp-1219:free | free\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-2.5-flash-preview | paid\ngoogle/gemini-2.5-flash-preview:thinking | paid\ngoogle/gemini-2.5-pro-exp-03-25:free | free\ngoogle/gemini-2.5-pro-preview-03-25 | paid\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/gemma-3-12b-it | paid\ngoogle/gemma-3-12b-it:free | free\ngoogle/gemma-3-1b-it:free | free\ngoogle/gemma-3-27b-it | paid\ngoogle/gemma-3-27b-it:free | free\ngoogle/gemma-3-4b-it | paid\ngoogle/gemma-3-4b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nlatitudegames/wayfarer-large-70b-llama-3.3 | paid\nliquid/lfm-3b | paid\nliquid/lfm-40b | paid\nliquid/lfm-7b | paid\nmeta-llama/llama-guard-3-8b | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-2-70b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b:free | free\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-3.3-70b-instruct:free | free\nmeta-llama/llama-4-maverick | paid\nmeta-llama/llama-4-maverick:free | free\nmeta-llama/llama-4-scout | paid\nmeta-llama/llama-4-scout:free | free\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-4 | paid\nmicrosoft/phi-4-multimodal-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nminimax/minimax-01 | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-2501 | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistral/ministral-8b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.2 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mistral-nemo:free | free\nmistralai/mistral-small-24b-instruct-2501 | paid\nmistralai/mistral-small-24b-instruct-2501:free | free\nmistralai/mistral-small-3.1-24b-instruct | paid\nmistralai/mistral-small-3.1-24b-instruct:free | free\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\nmistralai/mistral-saba | paid\nmoonshotai/kimi-vl-a3b-thinking:free | free\nmoonshotai/moonlight-16b-a3b-instruct:free | free\ngryphe/mythomax-l2-13b | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/deephermes-3-llama-3-8b-preview:free | free\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nnvidia/llama-3.1-nemotron-70b-instruct:free | free\nnvidia/llama-3.1-nemotron-nano-8b-v1:free | free\nnvidia/llama-3.1-nemotron-ultra-253b-v1:free | free\nnvidia/llama-3.3-nemotron-super-49b-v1:free | free\nopen-r1/olympiccoder-32b:free | free\nopen-r1/olympiccoder-7b:free | free\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4.1 | paid\nopenai/gpt-4.1-mini | paid\nopenai/gpt-4.1-nano | paid\nopenai/gpt-4.5-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-search-preview | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/gpt-4o-mini-search-preview | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenai/o1-pro | paid\nopenai/o3 | paid\nopenai/o3-mini | paid\nopenai/o3-mini-high | paid\nopenai/o4-mini | paid\nopenai/o4-mini-high | paid\nopenchat/openchat-7b | paid\nall-hands/openhands-lm-32b-v0.1 | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/r1-1776 | paid\nperplexity/sonar | paid\nperplexity/sonar-deep-research | paid\nperplexity/sonar-pro | paid\nperplexity/sonar-reasoning | paid\nperplexity/sonar-reasoning-pro | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-vl-max | paid\nqwen/qwen-vl-plus | paid\nqwen/qwen-max | paid\nqwen/qwen-plus | paid\nqwen/qwen-turbo | paid\nqwen/qwen2.5-coder-7b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct:free | free\nqwen/qwen2.5-vl-3b-instruct:free | free\nqwen/qwen2.5-vl-72b-instruct | paid\nqwen/qwen2.5-vl-72b-instruct:free | free\nqwen/qwen-2.5-vl-72b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct:free | free\nqwen/qwq-32b | paid\nqwen/qwq-32b:free | free\nqwen/qwq-32b-preview | paid\nqwen/qwq-32b-preview:free | free\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-72b-instruct:free | free\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-7b-instruct:free | free\nqwen/qwen-2.5-coder-32b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct:free | free\nfeatherless/qwerky-72b:free | free\nrekaai/reka-flash-3:free | free\nundi95/remm-slerp-l2-13b | paid\nthedrummer/rocinante-12b | paid\nsophosympatheia/rogue-rose-103b-v0.2:free | free\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nshisa-ai/shisa-v2-llama3.3-70b:free | free\nraifle/sorcererlm-8x22b | paid\nsteelskull/l3.3-electra-r1-70b | paid\nthedrummer/anubis-pro-105b-v1 | paid\nthedrummer/skyfall-36b-v2 | paid\nthudm/glm-4-32b:free | free\nthudm/glm-z1-32b:free | free\nundi95/toppy-m-7b | paid\nscb10x/llama3.1-typhoon2-70b-instruct | paid\nscb10x/llama3.1-typhoon2-8b-instruct | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-3-beta | paid\nx-ai/grok-3-mini-beta | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4.1\ngpt-4.1-2025-04-14\ngpt-4.1-mini\ngpt-4.1-mini-2025-04-14\ngpt-4.1-nano\ngpt-4.1-nano-2025-04-14\ngpt-4.5-preview\ngpt-4.5-preview-2025-02-27\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-mini-search-preview\ngpt-4o-mini-search-preview-2025-03-11\ngpt-4o-mini-transcribe\ngpt-4o-mini-tts\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\ngpt-4o-search-preview\ngpt-4o-search-preview-2025-03-11\ngpt-4o-transcribe\no1\no1-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\no1-pro\no1-pro-2025-03-19\no3-mini\no3-mini-2025-01-31\no4-mini\no4-mini-2025-04-16\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m Deepseek models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\ndeepseek-chat\ndeepseek-reasoner\n-----\n" + "description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nagentica-org/deepcoder-14b-preview:free | free\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-1.6-large | paid\nai21/jamba-instruct | paid\nai21/jamba-1.6-mini | paid\naion-labs/aion-1.0 | paid\naion-labs/aion-1.0-mini | paid\naion-labs/aion-rp-llama-3.1-8b | paid\njondurbin/airoboros-l2-70b | paid\nalfredpros/codellama-7b-instruct-solidity | paid\nallenai/molmo-7b-d:free | free\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-3.7-sonnet | paid\nanthropic/claude-3.7-sonnet:beta | paid\nanthropic/claude-3.7-sonnet:thinking | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\narliai/qwq-32b-arliai-rpr-v1:free | free\nopenrouter/auto | paid\nbytedance-research/ui-tars-72b:free | free\ncohere/command | paid\ncohere/command-a | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndeepseek/deepseek-r1-zero:free | free\ndeepseek/deepseek-chat | paid\ndeepseek/deepseek-chat:free | free\ndeepseek/deepseek-chat-v3-0324 | paid\ndeepseek/deepseek-chat-v3-0324:free | free\ndeepseek/deepseek-v3-base:free | free\ndeepseek/deepseek-r1 | paid\ndeepseek/deepseek-r1:free | free\ndeepseek/deepseek-r1-distill-llama-70b | paid\ndeepseek/deepseek-r1-distill-llama-70b:free | free\ndeepseek/deepseek-r1-distill-llama-8b | paid\ndeepseek/deepseek-r1-distill-qwen-1.5b | paid\ndeepseek/deepseek-r1-distill-qwen-14b | paid\ndeepseek/deepseek-r1-distill-qwen-14b:free | free\ndeepseek/deepseek-r1-distill-qwen-32b | paid\ndeepseek/deepseek-r1-distill-qwen-32b:free | free\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\ncognitivecomputations/dolphin3.0-mistral-24b:free | free\ncognitivecomputations/dolphin3.0-r1-mistral-24b:free | free\neleutherai/llemma_7b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nsao10k/fimbulvetr-11b-v2 | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-2.0-flash-001 | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-2.0-flash-lite-001 | paid\ngoogle/gemini-2.5-flash-preview | paid\ngoogle/gemini-2.5-flash-preview:thinking | paid\ngoogle/gemini-2.5-pro-exp-03-25:free | free\ngoogle/gemini-2.5-pro-preview-03-25 | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/gemma-3-12b-it | paid\ngoogle/gemma-3-12b-it:free | free\ngoogle/gemma-3-1b-it:free | free\ngoogle/gemma-3-27b-it | paid\ngoogle/gemma-3-27b-it:free | free\ngoogle/gemma-3-4b-it | paid\ngoogle/gemma-3-4b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nlatitudegames/wayfarer-large-70b-llama-3.3 | paid\nliquid/lfm-3b | paid\nliquid/lfm-40b | paid\nliquid/lfm-7b | paid\nmeta-llama/llama-guard-3-8b | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-2-70b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b:free | free\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-3.3-70b-instruct:free | free\nmeta-llama/llama-4-maverick | paid\nmeta-llama/llama-4-maverick:free | free\nmeta-llama/llama-4-scout | paid\nmeta-llama/llama-4-scout:free | free\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/mai-ds-r1:free | free\nmicrosoft/phi-4 | paid\nmicrosoft/phi-4-multimodal-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nminimax/minimax-01 | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-2501 | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistral/ministral-8b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.2 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mistral-nemo:free | free\nmistralai/mistral-small-24b-instruct-2501 | paid\nmistralai/mistral-small-24b-instruct-2501:free | free\nmistralai/mistral-small-3.1-24b-instruct | paid\nmistralai/mistral-small-3.1-24b-instruct:free | free\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\nmistralai/mistral-saba | paid\nmoonshotai/kimi-vl-a3b-thinking:free | free\nmoonshotai/moonlight-16b-a3b-instruct:free | free\ngryphe/mythomax-l2-13b | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/deephermes-3-llama-3-8b-preview:free | free\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nnvidia/llama-3.1-nemotron-70b-instruct:free | free\nnvidia/llama-3.1-nemotron-nano-8b-v1:free | free\nnvidia/llama-3.1-nemotron-ultra-253b-v1:free | free\nnvidia/llama-3.3-nemotron-super-49b-v1:free | free\nopen-r1/olympiccoder-32b:free | free\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4.1 | paid\nopenai/gpt-4.1-mini | paid\nopenai/gpt-4.1-nano | paid\nopenai/gpt-4.5-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-search-preview | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/gpt-4o-mini-search-preview | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenai/o1-pro | paid\nopenai/o3 | paid\nopenai/o3-mini | paid\nopenai/o3-mini-high | paid\nopenai/o4-mini | paid\nopenai/o4-mini-high | paid\nopenchat/openchat-7b | paid\nall-hands/openhands-lm-32b-v0.1 | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/r1-1776 | paid\nperplexity/sonar | paid\nperplexity/sonar-deep-research | paid\nperplexity/sonar-pro | paid\nperplexity/sonar-reasoning | paid\nperplexity/sonar-reasoning-pro | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-vl-max | paid\nqwen/qwen-vl-plus | paid\nqwen/qwen-max | paid\nqwen/qwen-plus | paid\nqwen/qwen-turbo | paid\nqwen/qwen2.5-coder-7b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct:free | free\nqwen/qwen2.5-vl-3b-instruct:free | free\nqwen/qwen2.5-vl-72b-instruct | paid\nqwen/qwen2.5-vl-72b-instruct:free | free\nqwen/qwen-2.5-vl-72b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct:free | free\nqwen/qwq-32b | paid\nqwen/qwq-32b:free | free\nqwen/qwq-32b-preview | paid\nqwen/qwq-32b-preview:free | free\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-72b-instruct:free | free\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-7b-instruct:free | free\nqwen/qwen-2.5-coder-32b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct:free | free\nfeatherless/qwerky-72b:free | free\nrekaai/reka-flash-3:free | free\nundi95/remm-slerp-l2-13b | paid\nthedrummer/rocinante-12b | paid\nsophosympatheia/rogue-rose-103b-v0.2:free | free\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nshisa-ai/shisa-v2-llama3.3-70b:free | free\nraifle/sorcererlm-8x22b | paid\nsteelskull/l3.3-electra-r1-70b | paid\nthedrummer/anubis-pro-105b-v1 | paid\nthedrummer/skyfall-36b-v2 | paid\nthudm/glm-4-32b:free | free\nthudm/glm-z1-32b:free | free\nundi95/toppy-m-7b | paid\nscb10x/llama3.1-typhoon2-70b-instruct | paid\nscb10x/llama3.1-typhoon2-8b-instruct | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-3-beta | paid\nx-ai/grok-3-mini-beta | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4.1\ngpt-4.1-2025-04-14\ngpt-4.1-mini\ngpt-4.1-mini-2025-04-14\ngpt-4.1-nano\ngpt-4.1-nano-2025-04-14\ngpt-4.5-preview\ngpt-4.5-preview-2025-02-27\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-mini-search-preview\ngpt-4o-mini-search-preview-2025-03-11\ngpt-4o-mini-transcribe\ngpt-4o-mini-tts\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\ngpt-4o-search-preview\ngpt-4o-search-preview-2025-03-11\ngpt-4o-transcribe\no1\no1-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\no1-pro\no1-pro-2025-03-19\no3-mini\no3-mini-2025-01-31\no4-mini\no4-mini-2025-04-16\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m Deepseek models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\ndeepseek-chat\ndeepseek-reasoner\n-----\n" }, "router": { "type": "string", diff --git a/packages/kbot/schema_ui.json b/packages/kbot/schema_ui.json index 75e512a8..f8413d31 100644 --- a/packages/kbot/schema_ui.json +++ b/packages/kbot/schema_ui.json @@ -66,7 +66,7 @@ "ui:title": "Api_key" }, "model": { - "ui:description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nagentica-org/deepcoder-14b-preview:free | free\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-1.6-large | paid\nai21/jamba-instruct | paid\nai21/jamba-1.6-mini | paid\naion-labs/aion-1.0 | paid\naion-labs/aion-1.0-mini | paid\naion-labs/aion-rp-llama-3.1-8b | paid\njondurbin/airoboros-l2-70b | paid\nalfredpros/codellama-7b-instruct-solidity | paid\nallenai/molmo-7b-d:free | free\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-3.7-sonnet | paid\nanthropic/claude-3.7-sonnet:beta | paid\nanthropic/claude-3.7-sonnet:thinking | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\narliai/qwq-32b-arliai-rpr-v1:free | free\nopenrouter/auto | paid\nbytedance-research/ui-tars-72b:free | free\ncohere/command | paid\ncohere/command-a | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndeepseek/deepseek-r1-zero:free | free\ndeepseek/deepseek-chat | paid\ndeepseek/deepseek-chat:free | free\ndeepseek/deepseek-chat-v3-0324 | paid\ndeepseek/deepseek-chat-v3-0324:free | free\ndeepseek/deepseek-v3-base:free | free\ndeepseek/deepseek-r1 | paid\ndeepseek/deepseek-r1:free | free\ndeepseek/deepseek-r1-distill-llama-70b | paid\ndeepseek/deepseek-r1-distill-llama-70b:free | free\ndeepseek/deepseek-r1-distill-llama-8b | paid\ndeepseek/deepseek-r1-distill-qwen-1.5b | paid\ndeepseek/deepseek-r1-distill-qwen-14b | paid\ndeepseek/deepseek-r1-distill-qwen-14b:free | free\ndeepseek/deepseek-r1-distill-qwen-32b | paid\ndeepseek/deepseek-r1-distill-qwen-32b:free | free\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\ncognitivecomputations/dolphin3.0-mistral-24b:free | free\ncognitivecomputations/dolphin3.0-r1-mistral-24b:free | free\neleutherai/llemma_7b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nsao10k/fimbulvetr-11b-v2 | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-2.0-flash-001 | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-2.0-flash-lite-001 | paid\ngoogle/gemini-2.0-flash-thinking-exp-1219:free | free\ngoogle/gemini-2.0-flash-thinking-exp:free | free\ngoogle/gemini-2.5-flash-preview | paid\ngoogle/gemini-2.5-flash-preview:thinking | paid\ngoogle/gemini-2.5-pro-exp-03-25:free | free\ngoogle/gemini-2.5-pro-preview-03-25 | paid\ngoogle/gemini-pro | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/gemma-3-12b-it | paid\ngoogle/gemma-3-12b-it:free | free\ngoogle/gemma-3-1b-it:free | free\ngoogle/gemma-3-27b-it | paid\ngoogle/gemma-3-27b-it:free | free\ngoogle/gemma-3-4b-it | paid\ngoogle/gemma-3-4b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nlatitudegames/wayfarer-large-70b-llama-3.3 | paid\nliquid/lfm-3b | paid\nliquid/lfm-40b | paid\nliquid/lfm-7b | paid\nmeta-llama/llama-guard-3-8b | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-2-70b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b:free | free\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-3.3-70b-instruct:free | free\nmeta-llama/llama-4-maverick | paid\nmeta-llama/llama-4-maverick:free | free\nmeta-llama/llama-4-scout | paid\nmeta-llama/llama-4-scout:free | free\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/phi-4 | paid\nmicrosoft/phi-4-multimodal-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nminimax/minimax-01 | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-2501 | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistral/ministral-8b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.2 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mistral-nemo:free | free\nmistralai/mistral-small-24b-instruct-2501 | paid\nmistralai/mistral-small-24b-instruct-2501:free | free\nmistralai/mistral-small-3.1-24b-instruct | paid\nmistralai/mistral-small-3.1-24b-instruct:free | free\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\nmistralai/mistral-saba | paid\nmoonshotai/kimi-vl-a3b-thinking:free | free\nmoonshotai/moonlight-16b-a3b-instruct:free | free\ngryphe/mythomax-l2-13b | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/deephermes-3-llama-3-8b-preview:free | free\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nnvidia/llama-3.1-nemotron-70b-instruct:free | free\nnvidia/llama-3.1-nemotron-nano-8b-v1:free | free\nnvidia/llama-3.1-nemotron-ultra-253b-v1:free | free\nnvidia/llama-3.3-nemotron-super-49b-v1:free | free\nopen-r1/olympiccoder-32b:free | free\nopen-r1/olympiccoder-7b:free | free\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4.1 | paid\nopenai/gpt-4.1-mini | paid\nopenai/gpt-4.1-nano | paid\nopenai/gpt-4.5-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-search-preview | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/gpt-4o-mini-search-preview | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenai/o1-pro | paid\nopenai/o3 | paid\nopenai/o3-mini | paid\nopenai/o3-mini-high | paid\nopenai/o4-mini | paid\nopenai/o4-mini-high | paid\nopenchat/openchat-7b | paid\nall-hands/openhands-lm-32b-v0.1 | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/r1-1776 | paid\nperplexity/sonar | paid\nperplexity/sonar-deep-research | paid\nperplexity/sonar-pro | paid\nperplexity/sonar-reasoning | paid\nperplexity/sonar-reasoning-pro | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-vl-max | paid\nqwen/qwen-vl-plus | paid\nqwen/qwen-max | paid\nqwen/qwen-plus | paid\nqwen/qwen-turbo | paid\nqwen/qwen2.5-coder-7b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct:free | free\nqwen/qwen2.5-vl-3b-instruct:free | free\nqwen/qwen2.5-vl-72b-instruct | paid\nqwen/qwen2.5-vl-72b-instruct:free | free\nqwen/qwen-2.5-vl-72b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct:free | free\nqwen/qwq-32b | paid\nqwen/qwq-32b:free | free\nqwen/qwq-32b-preview | paid\nqwen/qwq-32b-preview:free | free\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-72b-instruct:free | free\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-7b-instruct:free | free\nqwen/qwen-2.5-coder-32b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct:free | free\nfeatherless/qwerky-72b:free | free\nrekaai/reka-flash-3:free | free\nundi95/remm-slerp-l2-13b | paid\nthedrummer/rocinante-12b | paid\nsophosympatheia/rogue-rose-103b-v0.2:free | free\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nshisa-ai/shisa-v2-llama3.3-70b:free | free\nraifle/sorcererlm-8x22b | paid\nsteelskull/l3.3-electra-r1-70b | paid\nthedrummer/anubis-pro-105b-v1 | paid\nthedrummer/skyfall-36b-v2 | paid\nthudm/glm-4-32b:free | free\nthudm/glm-z1-32b:free | free\nundi95/toppy-m-7b | paid\nscb10x/llama3.1-typhoon2-70b-instruct | paid\nscb10x/llama3.1-typhoon2-8b-instruct | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-3-beta | paid\nx-ai/grok-3-mini-beta | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4.1\ngpt-4.1-2025-04-14\ngpt-4.1-mini\ngpt-4.1-mini-2025-04-14\ngpt-4.1-nano\ngpt-4.1-nano-2025-04-14\ngpt-4.5-preview\ngpt-4.5-preview-2025-02-27\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-mini-search-preview\ngpt-4o-mini-search-preview-2025-03-11\ngpt-4o-mini-transcribe\ngpt-4o-mini-tts\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\ngpt-4o-search-preview\ngpt-4o-search-preview-2025-03-11\ngpt-4o-transcribe\no1\no1-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\no1-pro\no1-pro-2025-03-19\no3-mini\no3-mini-2025-01-31\no4-mini\no4-mini-2025-04-16\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m Deepseek models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\ndeepseek-chat\ndeepseek-reasoner\n-----\n", + "ui:description": "AI model to use for processing. Available models:\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenRouter models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n01-ai/yi-large | paid\naetherwiing/mn-starcannon-12b | paid\nagentica-org/deepcoder-14b-preview:free | free\nai21/jamba-1-5-large | paid\nai21/jamba-1-5-mini | paid\nai21/jamba-1.6-large | paid\nai21/jamba-instruct | paid\nai21/jamba-1.6-mini | paid\naion-labs/aion-1.0 | paid\naion-labs/aion-1.0-mini | paid\naion-labs/aion-rp-llama-3.1-8b | paid\njondurbin/airoboros-l2-70b | paid\nalfredpros/codellama-7b-instruct-solidity | paid\nallenai/molmo-7b-d:free | free\namazon/nova-lite-v1 | paid\namazon/nova-micro-v1 | paid\namazon/nova-pro-v1 | paid\nanthropic/claude-3-haiku | paid\nanthropic/claude-3-haiku:beta | paid\nanthropic/claude-3-opus | paid\nanthropic/claude-3-opus:beta | paid\nanthropic/claude-3-sonnet | paid\nanthropic/claude-3-sonnet:beta | paid\nanthropic/claude-3.5-haiku | paid\nanthropic/claude-3.5-haiku-20241022 | paid\nanthropic/claude-3.5-haiku-20241022:beta | paid\nanthropic/claude-3.5-haiku:beta | paid\nanthropic/claude-3.5-sonnet | paid\nanthropic/claude-3.5-sonnet-20240620 | paid\nanthropic/claude-3.5-sonnet-20240620:beta | paid\nanthropic/claude-3.5-sonnet:beta | paid\nanthropic/claude-3.7-sonnet | paid\nanthropic/claude-3.7-sonnet:beta | paid\nanthropic/claude-3.7-sonnet:thinking | paid\nanthropic/claude-2 | paid\nanthropic/claude-2:beta | paid\nanthropic/claude-2.0 | paid\nanthropic/claude-2.0:beta | paid\nanthropic/claude-2.1 | paid\nanthropic/claude-2.1:beta | paid\narliai/qwq-32b-arliai-rpr-v1:free | free\nopenrouter/auto | paid\nbytedance-research/ui-tars-72b:free | free\ncohere/command | paid\ncohere/command-a | paid\ncohere/command-r | paid\ncohere/command-r-03-2024 | paid\ncohere/command-r-08-2024 | paid\ncohere/command-r-plus | paid\ncohere/command-r-plus-04-2024 | paid\ncohere/command-r-plus-08-2024 | paid\ncohere/command-r7b-12-2024 | paid\ndeepseek/deepseek-r1-zero:free | free\ndeepseek/deepseek-chat | paid\ndeepseek/deepseek-chat:free | free\ndeepseek/deepseek-chat-v3-0324 | paid\ndeepseek/deepseek-chat-v3-0324:free | free\ndeepseek/deepseek-v3-base:free | free\ndeepseek/deepseek-r1 | paid\ndeepseek/deepseek-r1:free | free\ndeepseek/deepseek-r1-distill-llama-70b | paid\ndeepseek/deepseek-r1-distill-llama-70b:free | free\ndeepseek/deepseek-r1-distill-llama-8b | paid\ndeepseek/deepseek-r1-distill-qwen-1.5b | paid\ndeepseek/deepseek-r1-distill-qwen-14b | paid\ndeepseek/deepseek-r1-distill-qwen-14b:free | free\ndeepseek/deepseek-r1-distill-qwen-32b | paid\ndeepseek/deepseek-r1-distill-qwen-32b:free | free\ncognitivecomputations/dolphin-mixtral-8x7b | paid\ncognitivecomputations/dolphin-mixtral-8x22b | paid\ncognitivecomputations/dolphin3.0-mistral-24b:free | free\ncognitivecomputations/dolphin3.0-r1-mistral-24b:free | free\neleutherai/llemma_7b | paid\neva-unit-01/eva-llama-3.33-70b | paid\neva-unit-01/eva-qwen-2.5-32b | paid\neva-unit-01/eva-qwen-2.5-72b | paid\nsao10k/fimbulvetr-11b-v2 | paid\nalpindale/goliath-120b | paid\ngoogle/gemini-flash-1.5 | paid\ngoogle/gemini-flash-1.5-8b | paid\ngoogle/gemini-flash-1.5-8b-exp | paid\ngoogle/gemini-pro-1.5 | paid\ngoogle/gemini-2.0-flash-001 | paid\ngoogle/gemini-2.0-flash-exp:free | free\ngoogle/gemini-2.0-flash-lite-001 | paid\ngoogle/gemini-2.5-flash-preview | paid\ngoogle/gemini-2.5-flash-preview:thinking | paid\ngoogle/gemini-2.5-pro-exp-03-25:free | free\ngoogle/gemini-2.5-pro-preview-03-25 | paid\ngoogle/gemini-pro-vision | paid\ngoogle/gemma-2-27b-it | paid\ngoogle/gemma-2-9b-it | paid\ngoogle/gemma-2-9b-it:free | free\ngoogle/gemma-3-12b-it | paid\ngoogle/gemma-3-12b-it:free | free\ngoogle/gemma-3-1b-it:free | free\ngoogle/gemma-3-27b-it | paid\ngoogle/gemma-3-27b-it:free | free\ngoogle/gemma-3-4b-it | paid\ngoogle/gemma-3-4b-it:free | free\ngoogle/learnlm-1.5-pro-experimental:free | free\ngoogle/palm-2-chat-bison | paid\ngoogle/palm-2-chat-bison-32k | paid\ngoogle/palm-2-codechat-bison | paid\ngoogle/palm-2-codechat-bison-32k | paid\nhuggingfaceh4/zephyr-7b-beta:free | free\ninfermatic/mn-inferor-12b | paid\ninflection/inflection-3-pi | paid\ninflection/inflection-3-productivity | paid\nlatitudegames/wayfarer-large-70b-llama-3.3 | paid\nliquid/lfm-3b | paid\nliquid/lfm-40b | paid\nliquid/lfm-7b | paid\nmeta-llama/llama-guard-3-8b | paid\nalpindale/magnum-72b | paid\nanthracite-org/magnum-v2-72b | paid\nanthracite-org/magnum-v4-72b | paid\nmancer/weaver | paid\nmeta-llama/llama-2-13b-chat | paid\nmeta-llama/llama-2-70b-chat | paid\nmeta-llama/llama-3-70b-instruct | paid\nmeta-llama/llama-3-8b-instruct | paid\nmeta-llama/llama-3.1-405b | paid\nmeta-llama/llama-3.1-405b:free | free\nmeta-llama/llama-3.1-405b-instruct | paid\nmeta-llama/llama-3.1-70b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct | paid\nmeta-llama/llama-3.1-8b-instruct:free | free\nmeta-llama/llama-3.2-11b-vision-instruct | paid\nmeta-llama/llama-3.2-11b-vision-instruct:free | free\nmeta-llama/llama-3.2-1b-instruct | paid\nmeta-llama/llama-3.2-1b-instruct:free | free\nmeta-llama/llama-3.2-3b-instruct | paid\nmeta-llama/llama-3.2-3b-instruct:free | free\nmeta-llama/llama-3.2-90b-vision-instruct | paid\nmeta-llama/llama-3.3-70b-instruct | paid\nmeta-llama/llama-3.3-70b-instruct:free | free\nmeta-llama/llama-4-maverick | paid\nmeta-llama/llama-4-maverick:free | free\nmeta-llama/llama-4-scout | paid\nmeta-llama/llama-4-scout:free | free\nmeta-llama/llama-guard-2-8b | paid\nmicrosoft/mai-ds-r1:free | free\nmicrosoft/phi-4 | paid\nmicrosoft/phi-4-multimodal-instruct | paid\nmicrosoft/phi-3-medium-128k-instruct | paid\nmicrosoft/phi-3-mini-128k-instruct | paid\nmicrosoft/phi-3.5-mini-128k-instruct | paid\nsophosympatheia/midnight-rose-70b | paid\nminimax/minimax-01 | paid\nmistralai/mistral-large | paid\nmistralai/mistral-large-2407 | paid\nmistralai/mistral-large-2411 | paid\nmistralai/mistral-medium | paid\nnothingiisreal/mn-celeste-12b | paid\nmistralai/mistral-small | paid\nmistralai/mistral-tiny | paid\nmistralai/codestral-2501 | paid\nmistralai/codestral-mamba | paid\nmistralai/ministral-3b | paid\nmistral/ministral-8b | paid\nmistralai/ministral-8b | paid\nmistralai/mistral-7b-instruct | paid\nmistralai/mistral-7b-instruct:free | free\nmistralai/mistral-7b-instruct-v0.1 | paid\nmistralai/mistral-7b-instruct-v0.2 | paid\nmistralai/mistral-7b-instruct-v0.3 | paid\nmistralai/mistral-nemo | paid\nmistralai/mistral-nemo:free | free\nmistralai/mistral-small-24b-instruct-2501 | paid\nmistralai/mistral-small-24b-instruct-2501:free | free\nmistralai/mistral-small-3.1-24b-instruct | paid\nmistralai/mistral-small-3.1-24b-instruct:free | free\nmistralai/mixtral-8x22b-instruct | paid\nmistralai/mixtral-8x7b-instruct | paid\nmistralai/pixtral-12b | paid\nmistralai/pixtral-large-2411 | paid\nmistralai/mistral-saba | paid\nmoonshotai/kimi-vl-a3b-thinking:free | free\nmoonshotai/moonlight-16b-a3b-instruct:free | free\ngryphe/mythomax-l2-13b | paid\nneversleep/llama-3-lumimaid-70b | paid\nneversleep/llama-3-lumimaid-8b | paid\nneversleep/llama-3-lumimaid-8b:extended | paid\nneversleep/llama-3.1-lumimaid-70b | paid\nneversleep/llama-3.1-lumimaid-8b | paid\nneversleep/noromaid-20b | paid\nnousresearch/deephermes-3-llama-3-8b-preview:free | free\nnousresearch/nous-hermes-llama2-13b | paid\nnousresearch/nous-hermes-2-mixtral-8x7b-dpo | paid\nnousresearch/hermes-3-llama-3.1-405b | paid\nnousresearch/hermes-3-llama-3.1-70b | paid\nnousresearch/hermes-2-pro-llama-3-8b | paid\nnvidia/llama-3.1-nemotron-70b-instruct | paid\nnvidia/llama-3.1-nemotron-70b-instruct:free | free\nnvidia/llama-3.1-nemotron-nano-8b-v1:free | free\nnvidia/llama-3.1-nemotron-ultra-253b-v1:free | free\nnvidia/llama-3.3-nemotron-super-49b-v1:free | free\nopen-r1/olympiccoder-32b:free | free\nopenai/chatgpt-4o-latest | paid\nopenai/gpt-3.5-turbo | paid\nopenai/gpt-3.5-turbo-0613 | paid\nopenai/gpt-3.5-turbo-16k | paid\nopenai/gpt-3.5-turbo-0125 | paid\nopenai/gpt-3.5-turbo-1106 | paid\nopenai/gpt-3.5-turbo-instruct | paid\nopenai/gpt-4 | paid\nopenai/gpt-4-0314 | paid\nopenai/gpt-4-32k | paid\nopenai/gpt-4-32k-0314 | paid\nopenai/gpt-4-turbo | paid\nopenai/gpt-4-1106-preview | paid\nopenai/gpt-4-turbo-preview | paid\nopenai/gpt-4.1 | paid\nopenai/gpt-4.1-mini | paid\nopenai/gpt-4.1-nano | paid\nopenai/gpt-4.5-preview | paid\nopenai/gpt-4o | paid\nopenai/gpt-4o-2024-05-13 | paid\nopenai/gpt-4o-2024-08-06 | paid\nopenai/gpt-4o-2024-11-20 | paid\nopenai/gpt-4o:extended | paid\nopenai/gpt-4o-search-preview | paid\nopenai/gpt-4o-mini | paid\nopenai/gpt-4o-mini-2024-07-18 | paid\nopenai/gpt-4o-mini-search-preview | paid\nopenai/o1 | paid\nopenai/o1-mini | paid\nopenai/o1-mini-2024-09-12 | paid\nopenai/o1-preview | paid\nopenai/o1-preview-2024-09-12 | paid\nopenai/o1-pro | paid\nopenai/o3 | paid\nopenai/o3-mini | paid\nopenai/o3-mini-high | paid\nopenai/o4-mini | paid\nopenai/o4-mini-high | paid\nopenchat/openchat-7b | paid\nall-hands/openhands-lm-32b-v0.1 | paid\nperplexity/llama-3.1-sonar-large-128k-online | paid\nperplexity/llama-3.1-sonar-small-128k-online | paid\nperplexity/r1-1776 | paid\nperplexity/sonar | paid\nperplexity/sonar-deep-research | paid\nperplexity/sonar-pro | paid\nperplexity/sonar-reasoning | paid\nperplexity/sonar-reasoning-pro | paid\npygmalionai/mythalion-13b | paid\nqwen/qwen-2-72b-instruct | paid\nqwen/qwen-vl-max | paid\nqwen/qwen-vl-plus | paid\nqwen/qwen-max | paid\nqwen/qwen-plus | paid\nqwen/qwen-turbo | paid\nqwen/qwen2.5-coder-7b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct | paid\nqwen/qwen2.5-vl-32b-instruct:free | free\nqwen/qwen2.5-vl-3b-instruct:free | free\nqwen/qwen2.5-vl-72b-instruct | paid\nqwen/qwen2.5-vl-72b-instruct:free | free\nqwen/qwen-2.5-vl-72b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct | paid\nqwen/qwen-2.5-vl-7b-instruct:free | free\nqwen/qwq-32b | paid\nqwen/qwq-32b:free | free\nqwen/qwq-32b-preview | paid\nqwen/qwq-32b-preview:free | free\nqwen/qwen-2.5-72b-instruct | paid\nqwen/qwen-2.5-72b-instruct:free | free\nqwen/qwen-2.5-7b-instruct | paid\nqwen/qwen-2.5-7b-instruct:free | free\nqwen/qwen-2.5-coder-32b-instruct | paid\nqwen/qwen-2.5-coder-32b-instruct:free | free\nfeatherless/qwerky-72b:free | free\nrekaai/reka-flash-3:free | free\nundi95/remm-slerp-l2-13b | paid\nthedrummer/rocinante-12b | paid\nsophosympatheia/rogue-rose-103b-v0.2:free | free\nsao10k/l3-lunaris-8b | paid\nsao10k/l3-euryale-70b | paid\nsao10k/l3.1-euryale-70b | paid\nsao10k/l3.3-euryale-70b | paid\nshisa-ai/shisa-v2-llama3.3-70b:free | free\nraifle/sorcererlm-8x22b | paid\nsteelskull/l3.3-electra-r1-70b | paid\nthedrummer/anubis-pro-105b-v1 | paid\nthedrummer/skyfall-36b-v2 | paid\nthudm/glm-4-32b:free | free\nthudm/glm-z1-32b:free | free\nundi95/toppy-m-7b | paid\nscb10x/llama3.1-typhoon2-70b-instruct | paid\nscb10x/llama3.1-typhoon2-8b-instruct | paid\nthedrummer/unslopnemo-12b | paid\nmicrosoft/wizardlm-2-7b | paid\nmicrosoft/wizardlm-2-8x22b | paid\nx-ai/grok-2-1212 | paid\nx-ai/grok-2-vision-1212 | paid\nx-ai/grok-3-beta | paid\nx-ai/grok-3-mini-beta | paid\nx-ai/grok-beta | paid\nx-ai/grok-vision-beta | paid\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m OpenAI models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\nbabbage-002\nchatgpt-4o-latest\ndall-e-2\ndall-e-3\ndavinci-002\ngpt-3.5-turbo\ngpt-3.5-turbo-0125\ngpt-3.5-turbo-1106\ngpt-3.5-turbo-16k\ngpt-3.5-turbo-instruct\ngpt-3.5-turbo-instruct-0914\ngpt-4\ngpt-4-0125-preview\ngpt-4-0613\ngpt-4-1106-preview\ngpt-4-turbo\ngpt-4-turbo-2024-04-09\ngpt-4-turbo-preview\ngpt-4.1\ngpt-4.1-2025-04-14\ngpt-4.1-mini\ngpt-4.1-mini-2025-04-14\ngpt-4.1-nano\ngpt-4.1-nano-2025-04-14\ngpt-4.5-preview\ngpt-4.5-preview-2025-02-27\ngpt-4o\ngpt-4o-2024-05-13\ngpt-4o-2024-08-06\ngpt-4o-2024-11-20\ngpt-4o-audio-preview\ngpt-4o-audio-preview-2024-10-01\ngpt-4o-audio-preview-2024-12-17\ngpt-4o-mini\ngpt-4o-mini-2024-07-18\ngpt-4o-mini-audio-preview\ngpt-4o-mini-audio-preview-2024-12-17\ngpt-4o-mini-realtime-preview\ngpt-4o-mini-realtime-preview-2024-12-17\ngpt-4o-mini-search-preview\ngpt-4o-mini-search-preview-2025-03-11\ngpt-4o-mini-transcribe\ngpt-4o-mini-tts\ngpt-4o-realtime-preview\ngpt-4o-realtime-preview-2024-10-01\ngpt-4o-realtime-preview-2024-12-17\ngpt-4o-search-preview\ngpt-4o-search-preview-2025-03-11\ngpt-4o-transcribe\no1\no1-2024-12-17\no1-mini\no1-mini-2024-09-12\no1-preview\no1-preview-2024-09-12\no1-pro\no1-pro-2025-03-19\no3-mini\no3-mini-2025-01-31\no4-mini\no4-mini-2025-04-16\nomni-moderation-2024-09-26\nomni-moderation-latest\ntext-embedding-3-large\ntext-embedding-3-small\ntext-embedding-ada-002\ntts-1\ntts-1-1106\ntts-1-hd\ntts-1-hd-1106\nwhisper-1\n-----\n\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m Deepseek models:\u001b[22m\u001b[39m\n\u001b[35m\u001b[1m\u001b[22m\u001b[39m\ndeepseek-chat\ndeepseek-reasoner\n-----\n", "ui:title": "Model" }, "router": { diff --git a/packages/kbot/src/models/cache/openai-models.ts b/packages/kbot/src/models/cache/openai-models.ts index 4f42a2a0..1f272c67 100644 --- a/packages/kbot/src/models/cache/openai-models.ts +++ b/packages/kbot/src/models/cache/openai-models.ts @@ -45,8 +45,6 @@ export enum E_OPENAI_MODEL { MODEL_GPT_4_5_PREVIEW_2025_02_27 = "gpt-4.5-preview-2025-02-27", MODEL_GPT_4O_SEARCH_PREVIEW_2025_03_11 = "gpt-4o-search-preview-2025-03-11", MODEL_OMNI_MODERATION_2024_09_26 = "omni-moderation-2024-09-26", - MODEL_O3_MINI_2025_01_31 = "o3-mini-2025-01-31", - MODEL_O3_MINI = "o3-mini", MODEL_TTS_1_HD = "tts-1-hd", MODEL_GPT_4O = "gpt-4o", MODEL_TTS_1_HD_1106 = "tts-1-hd-1106", @@ -62,6 +60,8 @@ export enum E_OPENAI_MODEL { MODEL_GPT_4O_MINI_AUDIO_PREVIEW_2024_12_17 = "gpt-4o-mini-audio-preview-2024-12-17", MODEL_GPT_3_5_TURBO_0125 = "gpt-3.5-turbo-0125", MODEL_O1_MINI_2024_09_12 = "o1-mini-2024-09-12", + MODEL_O3_MINI = "o3-mini", + MODEL_O3_MINI_2025_01_31 = "o3-mini-2025-01-31", MODEL_TTS_1 = "tts-1", MODEL_GPT_4_1106_PREVIEW = "gpt-4-1106-preview", MODEL_GPT_4O_MINI_TTS = "gpt-4o-mini-tts", diff --git a/packages/kbot/src/models/cache/openrouter-models-free.ts b/packages/kbot/src/models/cache/openrouter-models-free.ts index 8cda1ebd..fece3c25 100644 --- a/packages/kbot/src/models/cache/openrouter-models-free.ts +++ b/packages/kbot/src/models/cache/openrouter-models-free.ts @@ -47,12 +47,12 @@ export enum E_OPENROUTER_MODEL_FREE { MODEL_FREE_QWEN_QWEN_2_5_CODER_32B_INSTRUCT_FREE = "qwen/qwen-2.5-coder-32b-instruct:free", MODEL_FREE_QWEN_QWEN_2_5_7B_INSTRUCT_FREE = "qwen/qwen-2.5-7b-instruct:free", MODEL_FREE_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT_FREE = "nvidia/llama-3.1-nemotron-70b-instruct:free", - MODEL_FREE_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE = "meta-llama/llama-3.2-3b-instruct:free", MODEL_FREE_META_LLAMA_LLAMA_3_2_1B_INSTRUCT_FREE = "meta-llama/llama-3.2-1b-instruct:free", MODEL_FREE_META_LLAMA_LLAMA_3_2_11B_VISION_INSTRUCT_FREE = "meta-llama/llama-3.2-11b-vision-instruct:free", + MODEL_FREE_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE = "meta-llama/llama-3.2-3b-instruct:free", MODEL_FREE_QWEN_QWEN_2_5_72B_INSTRUCT_FREE = "qwen/qwen-2.5-72b-instruct:free", - MODEL_FREE_QWEN_QWEN_2_5_VL_7B_INSTRUCT_FREE = "qwen/qwen-2.5-vl-7b-instruct:free", MODEL_FREE_GOOGLE_GEMINI_FLASH_1_5_8B_EXP = "google/gemini-flash-1.5-8b-exp", + MODEL_FREE_QWEN_QWEN_2_5_VL_7B_INSTRUCT_FREE = "qwen/qwen-2.5-vl-7b-instruct:free", MODEL_FREE_META_LLAMA_LLAMA_3_1_405B_FREE = "meta-llama/llama-3.1-405b:free", MODEL_FREE_META_LLAMA_LLAMA_3_1_8B_INSTRUCT_FREE = "meta-llama/llama-3.1-8b-instruct:free", MODEL_FREE_MISTRALAI_MISTRAL_NEMO_FREE = "mistralai/mistral-nemo:free", diff --git a/packages/kbot/src/models/cache/openrouter-models.ts b/packages/kbot/src/models/cache/openrouter-models.ts index 71b9fa40..53a1757a 100644 --- a/packages/kbot/src/models/cache/openrouter-models.ts +++ b/packages/kbot/src/models/cache/openrouter-models.ts @@ -147,53 +147,53 @@ export enum E_OPENROUTER_MODEL { MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU = "anthropic/claude-3.5-haiku", MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU_20241022_BETA = "anthropic/claude-3.5-haiku-20241022:beta", MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU_20241022 = "anthropic/claude-3.5-haiku-20241022", - MODEL_NEVERSLEEP_LLAMA_3_1_LUMIMAID_70B = "neversleep/llama-3.1-lumimaid-70b", MODEL_ANTHRACITE_ORG_MAGNUM_V4_72B = "anthracite-org/magnum-v4-72b", + MODEL_NEVERSLEEP_LLAMA_3_1_LUMIMAID_70B = "neversleep/llama-3.1-lumimaid-70b", MODEL_ANTHROPIC_CLAUDE_3_5_SONNET_BETA = "anthropic/claude-3.5-sonnet:beta", MODEL_ANTHROPIC_CLAUDE_3_5_SONNET = "anthropic/claude-3.5-sonnet", MODEL_X_AI_GROK_BETA = "x-ai/grok-beta", - MODEL_MISTRALAI_MINISTRAL_8B = "mistralai/ministral-8b", MODEL_MISTRALAI_MINISTRAL_3B = "mistralai/ministral-3b", + MODEL_MISTRALAI_MINISTRAL_8B = "mistralai/ministral-8b", MODEL_QWEN_QWEN_2_5_7B_INSTRUCT_FREE = "qwen/qwen-2.5-7b-instruct:free", MODEL_QWEN_QWEN_2_5_7B_INSTRUCT = "qwen/qwen-2.5-7b-instruct", MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT_FREE = "nvidia/llama-3.1-nemotron-70b-instruct:free", MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT = "nvidia/llama-3.1-nemotron-70b-instruct", - MODEL_INFLECTION_INFLECTION_3_PRODUCTIVITY = "inflection/inflection-3-productivity", MODEL_INFLECTION_INFLECTION_3_PI = "inflection/inflection-3-pi", + MODEL_INFLECTION_INFLECTION_3_PRODUCTIVITY = "inflection/inflection-3-productivity", MODEL_GOOGLE_GEMINI_FLASH_1_5_8B = "google/gemini-flash-1.5-8b", MODEL_THEDRUMMER_ROCINANTE_12B = "thedrummer/rocinante-12b", MODEL_ANTHRACITE_ORG_MAGNUM_V2_72B = "anthracite-org/magnum-v2-72b", MODEL_LIQUID_LFM_40B = "liquid/lfm-40b", - MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE = "meta-llama/llama-3.2-3b-instruct:free", - MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT = "meta-llama/llama-3.2-3b-instruct", MODEL_META_LLAMA_LLAMA_3_2_1B_INSTRUCT_FREE = "meta-llama/llama-3.2-1b-instruct:free", MODEL_META_LLAMA_LLAMA_3_2_1B_INSTRUCT = "meta-llama/llama-3.2-1b-instruct", - MODEL_META_LLAMA_LLAMA_3_2_90B_VISION_INSTRUCT = "meta-llama/llama-3.2-90b-vision-instruct", MODEL_META_LLAMA_LLAMA_3_2_11B_VISION_INSTRUCT_FREE = "meta-llama/llama-3.2-11b-vision-instruct:free", MODEL_META_LLAMA_LLAMA_3_2_11B_VISION_INSTRUCT = "meta-llama/llama-3.2-11b-vision-instruct", + MODEL_META_LLAMA_LLAMA_3_2_90B_VISION_INSTRUCT = "meta-llama/llama-3.2-90b-vision-instruct", + MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE = "meta-llama/llama-3.2-3b-instruct:free", + MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT = "meta-llama/llama-3.2-3b-instruct", MODEL_QWEN_QWEN_2_5_72B_INSTRUCT_FREE = "qwen/qwen-2.5-72b-instruct:free", MODEL_QWEN_QWEN_2_5_72B_INSTRUCT = "qwen/qwen-2.5-72b-instruct", MODEL_QWEN_QWEN_2_5_VL_72B_INSTRUCT = "qwen/qwen-2.5-vl-72b-instruct", MODEL_NEVERSLEEP_LLAMA_3_1_LUMIMAID_8B = "neversleep/llama-3.1-lumimaid-8b", + MODEL_OPENAI_O1_MINI = "openai/o1-mini", MODEL_OPENAI_O1_PREVIEW = "openai/o1-preview", MODEL_OPENAI_O1_PREVIEW_2024_09_12 = "openai/o1-preview-2024-09-12", - MODEL_OPENAI_O1_MINI = "openai/o1-mini", MODEL_OPENAI_O1_MINI_2024_09_12 = "openai/o1-mini-2024-09-12", MODEL_MISTRALAI_PIXTRAL_12B = "mistralai/pixtral-12b", MODEL_COHERE_COMMAND_R_PLUS_08_2024 = "cohere/command-r-plus-08-2024", MODEL_COHERE_COMMAND_R_08_2024 = "cohere/command-r-08-2024", - MODEL_QWEN_QWEN_2_5_VL_7B_INSTRUCT_FREE = "qwen/qwen-2.5-vl-7b-instruct:free", - MODEL_QWEN_QWEN_2_5_VL_7B_INSTRUCT = "qwen/qwen-2.5-vl-7b-instruct", MODEL_SAO10K_L3_1_EURYALE_70B = "sao10k/l3.1-euryale-70b", MODEL_GOOGLE_GEMINI_FLASH_1_5_8B_EXP = "google/gemini-flash-1.5-8b-exp", + MODEL_QWEN_QWEN_2_5_VL_7B_INSTRUCT_FREE = "qwen/qwen-2.5-vl-7b-instruct:free", + MODEL_QWEN_QWEN_2_5_VL_7B_INSTRUCT = "qwen/qwen-2.5-vl-7b-instruct", MODEL_AI21_JAMBA_1_5_MINI = "ai21/jamba-1-5-mini", MODEL_AI21_JAMBA_1_5_LARGE = "ai21/jamba-1-5-large", MODEL_MICROSOFT_PHI_3_5_MINI_128K_INSTRUCT = "microsoft/phi-3.5-mini-128k-instruct", MODEL_NOUSRESEARCH_HERMES_3_LLAMA_3_1_70B = "nousresearch/hermes-3-llama-3.1-70b", MODEL_NOUSRESEARCH_HERMES_3_LLAMA_3_1_405B = "nousresearch/hermes-3-llama-3.1-405b", MODEL_OPENAI_CHATGPT_4O_LATEST = "openai/chatgpt-4o-latest", - MODEL_SAO10K_L3_LUNARIS_8B = "sao10k/l3-lunaris-8b", MODEL_AETHERWIING_MN_STARCANNON_12B = "aetherwiing/mn-starcannon-12b", + MODEL_SAO10K_L3_LUNARIS_8B = "sao10k/l3-lunaris-8b", MODEL_OPENAI_GPT_4O_2024_08_06 = "openai/gpt-4o-2024-08-06", MODEL_META_LLAMA_LLAMA_3_1_405B_FREE = "meta-llama/llama-3.1-405b:free", MODEL_META_LLAMA_LLAMA_3_1_405B = "meta-llama/llama-3.1-405b", @@ -202,8 +202,8 @@ export enum E_OPENROUTER_MODEL { MODEL_PERPLEXITY_LLAMA_3_1_SONAR_LARGE_128K_ONLINE = "perplexity/llama-3.1-sonar-large-128k-online", MODEL_META_LLAMA_LLAMA_3_1_8B_INSTRUCT_FREE = "meta-llama/llama-3.1-8b-instruct:free", MODEL_META_LLAMA_LLAMA_3_1_8B_INSTRUCT = "meta-llama/llama-3.1-8b-instruct", - MODEL_META_LLAMA_LLAMA_3_1_405B_INSTRUCT = "meta-llama/llama-3.1-405b-instruct", MODEL_META_LLAMA_LLAMA_3_1_70B_INSTRUCT = "meta-llama/llama-3.1-70b-instruct", + MODEL_META_LLAMA_LLAMA_3_1_405B_INSTRUCT = "meta-llama/llama-3.1-405b-instruct", MODEL_MISTRALAI_CODESTRAL_MAMBA = "mistralai/codestral-mamba", MODEL_MISTRALAI_MISTRAL_NEMO_FREE = "mistralai/mistral-nemo:free", MODEL_MISTRALAI_MISTRAL_NEMO = "mistralai/mistral-nemo", @@ -213,17 +213,17 @@ export enum E_OPENROUTER_MODEL { MODEL_ALPINDALE_MAGNUM_72B = "alpindale/magnum-72b", MODEL_GOOGLE_GEMMA_2_9B_IT_FREE = "google/gemma-2-9b-it:free", MODEL_GOOGLE_GEMMA_2_9B_IT = "google/gemma-2-9b-it", - MODEL_01_AI_YI_LARGE = "01-ai/yi-large", MODEL_AI21_JAMBA_INSTRUCT = "ai21/jamba-instruct", + MODEL_01_AI_YI_LARGE = "01-ai/yi-large", MODEL_ANTHROPIC_CLAUDE_3_5_SONNET_20240620_BETA = "anthropic/claude-3.5-sonnet-20240620:beta", MODEL_ANTHROPIC_CLAUDE_3_5_SONNET_20240620 = "anthropic/claude-3.5-sonnet-20240620", MODEL_SAO10K_L3_EURYALE_70B = "sao10k/l3-euryale-70b", MODEL_COGNITIVECOMPUTATIONS_DOLPHIN_MIXTRAL_8X22B = "cognitivecomputations/dolphin-mixtral-8x22b", MODEL_QWEN_QWEN_2_72B_INSTRUCT = "qwen/qwen-2-72b-instruct", - MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE = "mistralai/mistral-7b-instruct:free", - MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT = "mistralai/mistral-7b-instruct", MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_3 = "mistralai/mistral-7b-instruct-v0.3", MODEL_NOUSRESEARCH_HERMES_2_PRO_LLAMA_3_8B = "nousresearch/hermes-2-pro-llama-3-8b", + MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE = "mistralai/mistral-7b-instruct:free", + MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT = "mistralai/mistral-7b-instruct", MODEL_MICROSOFT_PHI_3_MINI_128K_INSTRUCT = "microsoft/phi-3-mini-128k-instruct", MODEL_MICROSOFT_PHI_3_MEDIUM_128K_INSTRUCT = "microsoft/phi-3-medium-128k-instruct", MODEL_NEVERSLEEP_LLAMA_3_LUMIMAID_70B = "neversleep/llama-3-lumimaid-70b", @@ -238,15 +238,15 @@ export enum E_OPENROUTER_MODEL { MODEL_META_LLAMA_LLAMA_3_8B_INSTRUCT = "meta-llama/llama-3-8b-instruct", MODEL_META_LLAMA_LLAMA_3_70B_INSTRUCT = "meta-llama/llama-3-70b-instruct", MODEL_MISTRALAI_MIXTRAL_8X22B_INSTRUCT = "mistralai/mixtral-8x22b-instruct", - MODEL_MICROSOFT_WIZARDLM_2_8X22B = "microsoft/wizardlm-2-8x22b", MODEL_MICROSOFT_WIZARDLM_2_7B = "microsoft/wizardlm-2-7b", - MODEL_GOOGLE_GEMINI_PRO_1_5 = "google/gemini-pro-1.5", + MODEL_MICROSOFT_WIZARDLM_2_8X22B = "microsoft/wizardlm-2-8x22b", MODEL_OPENAI_GPT_4_TURBO = "openai/gpt-4-turbo", + MODEL_GOOGLE_GEMINI_PRO_1_5 = "google/gemini-pro-1.5", MODEL_COHERE_COMMAND_R_PLUS = "cohere/command-r-plus", MODEL_COHERE_COMMAND_R_PLUS_04_2024 = "cohere/command-r-plus-04-2024", MODEL_SOPHOSYMPATHEIA_MIDNIGHT_ROSE_70B = "sophosympatheia/midnight-rose-70b", - MODEL_COHERE_COMMAND = "cohere/command", MODEL_COHERE_COMMAND_R = "cohere/command-r", + MODEL_COHERE_COMMAND = "cohere/command", MODEL_ANTHROPIC_CLAUDE_3_HAIKU_BETA = "anthropic/claude-3-haiku:beta", MODEL_ANTHROPIC_CLAUDE_3_HAIKU = "anthropic/claude-3-haiku", MODEL_ANTHROPIC_CLAUDE_3_OPUS_BETA = "anthropic/claude-3-opus:beta", @@ -258,8 +258,8 @@ export enum E_OPENROUTER_MODEL { MODEL_OPENAI_GPT_3_5_TURBO_0613 = "openai/gpt-3.5-turbo-0613", MODEL_OPENAI_GPT_4_TURBO_PREVIEW = "openai/gpt-4-turbo-preview", MODEL_NOUSRESEARCH_NOUS_HERMES_2_MIXTRAL_8X7B_DPO = "nousresearch/nous-hermes-2-mixtral-8x7b-dpo", - MODEL_MISTRALAI_MISTRAL_MEDIUM = "mistralai/mistral-medium", MODEL_MISTRALAI_MISTRAL_SMALL = "mistralai/mistral-small", + MODEL_MISTRALAI_MISTRAL_MEDIUM = "mistralai/mistral-medium", MODEL_MISTRALAI_MISTRAL_TINY = "mistralai/mistral-tiny", MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_2 = "mistralai/mistral-7b-instruct-v0.2", MODEL_COGNITIVECOMPUTATIONS_DOLPHIN_MIXTRAL_8X7B = "cognitivecomputations/dolphin-mixtral-8x7b", @@ -271,13 +271,13 @@ export enum E_OPENROUTER_MODEL { MODEL_ANTHROPIC_CLAUDE_2_1 = "anthropic/claude-2.1", MODEL_ANTHROPIC_CLAUDE_2_BETA = "anthropic/claude-2:beta", MODEL_ANTHROPIC_CLAUDE_2 = "anthropic/claude-2", - MODEL_UNDI95_TOPPY_M_7B = "undi95/toppy-m-7b", MODEL_ALPINDALE_GOLIATH_120B = "alpindale/goliath-120b", + MODEL_UNDI95_TOPPY_M_7B = "undi95/toppy-m-7b", MODEL_OPENROUTER_AUTO = "openrouter/auto", - MODEL_OPENAI_GPT_3_5_TURBO_1106 = "openai/gpt-3.5-turbo-1106", MODEL_OPENAI_GPT_4_1106_PREVIEW = "openai/gpt-4-1106-preview", - MODEL_GOOGLE_PALM_2_CHAT_BISON_32K = "google/palm-2-chat-bison-32k", + MODEL_OPENAI_GPT_3_5_TURBO_1106 = "openai/gpt-3.5-turbo-1106", MODEL_GOOGLE_PALM_2_CODECHAT_BISON_32K = "google/palm-2-codechat-bison-32k", + MODEL_GOOGLE_PALM_2_CHAT_BISON_32K = "google/palm-2-chat-bison-32k", MODEL_JONDURBIN_AIROBOROS_L2_70B = "jondurbin/airoboros-l2-70b", MODEL_OPENAI_GPT_3_5_TURBO_INSTRUCT = "openai/gpt-3.5-turbo-instruct", MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_1 = "mistralai/mistral-7b-instruct-v0.1", @@ -286,16 +286,16 @@ export enum E_OPENROUTER_MODEL { MODEL_OPENAI_GPT_4_32K = "openai/gpt-4-32k", MODEL_OPENAI_GPT_4_32K_0314 = "openai/gpt-4-32k-0314", MODEL_NOUSRESEARCH_NOUS_HERMES_LLAMA2_13B = "nousresearch/nous-hermes-llama2-13b", - MODEL_MANCER_WEAVER = "mancer/weaver", MODEL_HUGGINGFACEH4_ZEPHYR_7B_BETA_FREE = "huggingfaceh4/zephyr-7b-beta:free", + MODEL_MANCER_WEAVER = "mancer/weaver", MODEL_ANTHROPIC_CLAUDE_2_0_BETA = "anthropic/claude-2.0:beta", MODEL_ANTHROPIC_CLAUDE_2_0 = "anthropic/claude-2.0", MODEL_UNDI95_REMM_SLERP_L2_13B = "undi95/remm-slerp-l2-13b", - MODEL_GOOGLE_PALM_2_CHAT_BISON = "google/palm-2-chat-bison", MODEL_GOOGLE_PALM_2_CODECHAT_BISON = "google/palm-2-codechat-bison", + MODEL_GOOGLE_PALM_2_CHAT_BISON = "google/palm-2-chat-bison", MODEL_GRYPHE_MYTHOMAX_L2_13B = "gryphe/mythomax-l2-13b", - MODEL_META_LLAMA_LLAMA_2_13B_CHAT = "meta-llama/llama-2-13b-chat", MODEL_META_LLAMA_LLAMA_2_70B_CHAT = "meta-llama/llama-2-70b-chat", + MODEL_META_LLAMA_LLAMA_2_13B_CHAT = "meta-llama/llama-2-13b-chat", MODEL_OPENAI_GPT_3_5_TURBO = "openai/gpt-3.5-turbo", MODEL_OPENAI_GPT_3_5_TURBO_0125 = "openai/gpt-3.5-turbo-0125", MODEL_OPENAI_GPT_4 = "openai/gpt-4", diff --git a/packages/kbot/src/zod_types.ts b/packages/kbot/src/zod_types.ts index d9338573..63bf08f9 100644 --- a/packages/kbot/src/zod_types.ts +++ b/packages/kbot/src/zod_types.ts @@ -110,13 +110,10 @@ export interface IKBotOptions { google/gemini-2.0-flash-001 | paid google/gemini-2.0-flash-exp:free | free google/gemini-2.0-flash-lite-001 | paid - google/gemini-2.0-flash-thinking-exp-1219:free | free - google/gemini-2.0-flash-thinking-exp:free | free google/gemini-2.5-flash-preview | paid google/gemini-2.5-flash-preview:thinking | paid google/gemini-2.5-pro-exp-03-25:free | free google/gemini-2.5-pro-preview-03-25 | paid - google/gemini-pro | paid google/gemini-pro-vision | paid google/gemma-2-27b-it | paid google/gemma-2-9b-it | paid @@ -170,6 +167,7 @@ export interface IKBotOptions { meta-llama/llama-4-scout | paid meta-llama/llama-4-scout:free | free meta-llama/llama-guard-2-8b | paid + microsoft/mai-ds-r1:free | free microsoft/phi-4 | paid microsoft/phi-4-multimodal-instruct | paid microsoft/phi-3-medium-128k-instruct | paid @@ -226,7 +224,6 @@ export interface IKBotOptions { nvidia/llama-3.1-nemotron-ultra-253b-v1:free | free nvidia/llama-3.3-nemotron-super-49b-v1:free | free open-r1/olympiccoder-32b:free | free - open-r1/olympiccoder-7b:free | free openai/chatgpt-4o-latest | paid openai/gpt-3.5-turbo | paid openai/gpt-3.5-turbo-0613 | paid diff --git a/packages/kbot/tests/pdf/omron/convert.sh b/packages/kbot/tests/pdf/omron/convert.sh index 4a07f1d4..d1885579 100644 --- a/packages/kbot/tests/pdf/omron/convert.sh +++ b/packages/kbot/tests/pdf/omron/convert.sh @@ -4,4 +4,4 @@ kbot-d --router2=openai --model=google/gemini-2.5-pro-preview-03-25 \ --include=./tests/pdf/omron/omron.h \ --mode=completion --preferences=none \ --dst=./tests/pdf/omron/omron.h \ - --filters=code --append=concat + --filters=code diff --git a/packages/kbot/tests/pdf/omron/omron.h b/packages/kbot/tests/pdf/omron/omron.h index 2d4d292e..9928f289 100644 --- a/packages/kbot/tests/pdf/omron/omron.h +++ b/packages/kbot/tests/pdf/omron/omron.h @@ -1,8976 +1,951 @@ -#include // Required for uint16_t +#include // Include for standard integer types like uint16_t -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register via Modbus. -enum class E5C_CommandCode : uint16_t -{ - CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - RunStop = 0x01, // Starts or stops control operation - MultiSP = 0x02, // Selects the target Set Point (SP) number - ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: 0x00) - SoftwareReset = 0x06, // Performs a software reset (Related Info: 0x00) - MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: 0x00) - MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: 0x00) - AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: 0x00) - AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) - ProgramStart = 0x11, // Starts or resets a program pattern -}; +// --- Existing Enums (Provided) --- -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values for specific commands. - -// Parameters for E5C_CommandCode::CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - OffDisabled = 0x00, - OnEnabled = 0x01, -}; - -// Parameters for E5C_CommandCode::RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - Run = 0x00, - Stop = 0x01, -}; - -// Parameters for E5C_CommandCode::MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - SetPoint0 = 0x00, - SetPoint1 = 0x01, - SetPoint2 = 0x02, - SetPoint3 = 0x03, - SetPoint4 = 0x04, - SetPoint5 = 0x05, - SetPoint6 = 0x06, - SetPoint7 = 0x07, -}; - -// Parameters for E5C_CommandCode::ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - ATCancel = 0x00, // Cancel Auto-Tuning - ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E5C_CommandCode::WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - Backup = 0x00, // Writes are backed up to non-volatile memory - RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E5C_CommandCode::AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - AutomaticMode = 0x00, - ManualMode = 0x01, -}; - -// Parameters for E5C_CommandCode::AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - Alarm1LatchCancel = 0x00, - Alarm2LatchCancel = 0x01, - Alarm3LatchCancel = 0x02, - HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - HSAlarmLatchCancel = 0x04, // (?) Assuming Heater Short or similar based on HB - Alarm4LatchCancel = 0x05, // Assuming relates to Alarm 4 based on pattern - AllAlarmLatchCancel= 0x0F, // Cancel all latched alarms -}; - -// Parameters for E5C_CommandCode::SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - LocalSPMode = 0x00, - RemoteSPMode = 0x01, -}; - -// Parameters for E5C_CommandCode::InvertDirectReverse (0x0E) -enum class E5C_InvertDirectReverse_Param : uint16_t -{ - NotInvert = 0x00, // Direct operation - Invert = 0x01, // Reverse operation -}; - -// Parameters for E5C_CommandCode::ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - Reset = 0x00, // Reset the program/pattern - Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E5C_CommandCode::SaveRAMData -// - E5C_CommandCode::SoftwareReset -// - E5C_CommandCode::MoveToSetupArea1 -// - E5C_CommandCode::MoveToProtectLevel -// - E5C_CommandCode::ParameterInitialization - -#include // Required for uint16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register via Modbus. -enum class E5C_CommandCode : uint16_t -{ - CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - RunStop = 0x01, // Starts or stops control operation - MultiSP = 0x02, // Selects the target Set Point (SP) number - ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: 0x00) - SoftwareReset = 0x06, // Performs a software reset (Related Info: 0x00) - MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: 0x00) - MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: 0x00) - AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: 0x00) - AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) - ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values for specific commands. - -// Parameters for E5C_CommandCode::CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - OffDisabled = 0x00, - OnEnabled = 0x01, -}; - -// Parameters for E5C_CommandCode::RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - Run = 0x00, - Stop = 0x01, -}; - -// Parameters for E5C_CommandCode::MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - SetPoint0 = 0x00, - SetPoint1 = 0x01, - SetPoint2 = 0x02, - SetPoint3 = 0x03, - SetPoint4 = 0x04, - SetPoint5 = 0x05, - SetPoint6 = 0x06, - SetPoint7 = 0x07, -}; - -// Parameters for E5C_CommandCode::ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - ATCancel = 0x00, // Cancel Auto-Tuning - ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E5C_CommandCode::WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - Backup = 0x00, // Writes are backed up to non-volatile memory - RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E5C_CommandCode::AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - AutomaticMode = 0x00, - ManualMode = 0x01, -}; - -// Parameters for E5C_CommandCode::AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - Alarm1LatchCancel = 0x00, - Alarm2LatchCancel = 0x01, - Alarm3LatchCancel = 0x02, - HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - HSAlarmLatchCancel = 0x04, // (?) Assuming Heater Short or similar based on HB - Alarm4LatchCancel = 0x05, // Assuming relates to Alarm 4 based on pattern - AllAlarmLatchCancel= 0x0F, // Cancel all latched alarms -}; - -// Parameters for E5C_CommandCode::SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - LocalSPMode = 0x00, - RemoteSPMode = 0x01, -}; - -// Parameters for E5C_CommandCode::InvertDirectReverse (0x0E) -enum class E5C_InvertDirectReverse_Param : uint16_t -{ - NotInvert = 0x00, // Direct operation - Invert = 0x01, // Reverse operation -}; - -// Parameters for E5C_CommandCode::ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - Reset = 0x00, // Reset the program/pattern - Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E5C_CommandCode::SaveRAMData -// - E5C_CommandCode::SoftwareReset -// - E5C_CommandCode::MoveToSetupArea1 -// - E5C_CommandCode::MoveToProtectLevel -// - E5C_CommandCode::ParameterInitialization - - -// --- E5C Modbus Variable Area Registers (Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values -// as listed in the "Variable Area (Setting Range) List". -// Note: Addresses are based on the "Two-byte mode" column. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Parameters (Addresses 0x2000 - 0x20FF approx.) --- - PV = 0x2000, // Process Value - Status1 = 0x2001, // Status 1 (Bitfield, see manual section 5-2 for details. Note *1, *2 apply) - InternalSetPoint = 0x2002, // Internal Set Point (Note *1 applies) - HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (0.0 to 55.0 A) - MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (%: -5.0 to 105.0 or 0.0 to 105.0) - MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (%: 0.0 to 105.0) - - // --- Setting Parameters (Addresses 0x2100 - 0x21FF approx.) --- - SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable) - AlarmValue1 = 0x2104, // Alarm Value 1 (-1999 to 9999) - AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (-1999 to 9999) - AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (-1999 to 9999) - AlarmValue2 = 0x2107, // Alarm Value 2 (-1999 to 9999) - AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (-1999 to 9999) - AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (-1999 to 9999) - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses 0x2400 - 0x24FF approx.) --- - PV_StatusArea = 0x2402, // Process Value (Likely read-only status copy) - InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Likely read-only status copy, Note *1) - MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7) - Status1_StatusArea = 0x2406, // Status 1 (Likely read-only status copy, Note *1, *2 apply) - Status_Word3 = 0x2407, // Status Word 3/Leftmost bits (Part of a larger status? Note *3 applies) - Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Note *1, *2 apply) - Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Note *1, *3 apply) - DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3) - // Add other registers from 0x24xx range if needed -}; - -// Note on Status Registers: -// The Status registers (0x2001, 0x2406, 0x2407, 0x2408, 0x2409) are bitfields. -// Refer to the E5C Communications Manual Section 5-2 "Status" for details on individual bit meanings. -// Note *1: Not displayed on the Controller display. -// Note *2: In 2-byte mode, the rightmost 16 bits are read. -// Note *3: In 2-byte mode, the leftmost 16 bits are read. -// This suggests Status 2 (0x2408/0x2409) and potentially Status 1 (0x2001/0x2406) and Status_Word3 (0x2407) -// might be parts of larger 32-bit status values when read in 4-byte mode. - - -#include // Required for uint16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: 0x00) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: 0x00) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: 0x00) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: 0x00) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: 0x00) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // (?) Assuming Heater Short or similar based on HB - E_Alarm4LatchCancel = 0x05, // Assuming relates to Alarm 4 based on pattern - E_AllAlarmLatchCancel= 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) -enum class E5C_InvertDirectReverse_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation - E_Invert = 0x01, // Reverse operation -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Parameters (Addresses ~0x2000 - 0x20FF) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: 0.0 to 105.0) - - // --- Setting Parameters (Addresses ~0x2100 - 0x21FF) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, -1999 to 9999) - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, -1999 to 9999) - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, -1999 to 9999) - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, -1999 to 9999) - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, -1999 to 9999) - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, -1999 to 9999) - // Add other registers from 0x21xx range if needed from other tables - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? HFFFF831 to H0000270F / -1999 to 9999) (Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Potentially same as 0x2103?) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (0x2408/0x2409) and StatusWord3 (0x2407) might be parts - // of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings (from Page 5-3) --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" parameters is allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" parameters is allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial setting/communications setting level is allowed. (Move to advanced function setting level is displayed.) - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial setting/communications setting level is allowed. (Move to advanced function setting level is not displayed.) - E_MoveToInitialProhibited = 0x02, // Move to initial setting/communications setting level is prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing of setup on controller display is allowed.) - E_OnChangeProhibited = 0x01, // ON (Changing of setup on controller display is prohibited.) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, - E_On = 0x01, -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, - E_On = 0x01, -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Standard control? Check Manual - E_On = 0x01, -}; - - -#include // Required for uint16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: 0x00) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: 0x00) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: 0x00) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: 0x00) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: 0x00) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) -enum class E5C_InvertDirectReverse_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation - E_Invert = 0x01, // Reverse operation -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Parameters (Addresses ~0x2000 - 0x20FF) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: 0.0 to 105.0) - - // --- Setting Parameters (Addresses ~0x2100 - 0x21FF) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, -1999 to 9999) - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, -1999 to 9999) - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, -1999 to 9999) - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, -1999 to 9999) - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, -1999 to 9999) - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, -1999 to 9999) - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Potentially same as 0x2103?) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit +/-10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level / PID / Control Parameters (Addresses ~0x2700 - 0x27FF approx. from page 5-4) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, 0.0 to 100.0) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values -2, -1, 0 or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values -2, -1, 0 or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level - Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed. - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers from page 5-4 --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - - -#include // Required for uint16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: 0x00) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: 0x00) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: 0x00) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: 0x00) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: 0x00) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) -enum class E5C_InvertDirectReverse_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation - E_Invert = 0x01, // Reverse operation -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Parameters (Addresses ~0x2000 - 0x20FF) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: 0.0 to 105.0) - - // --- Setting Parameters (Addresses ~0x2100 - 0x21FF) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, -1999 to 9999) - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, -1999 to 9999) - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, -1999 to 9999) - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, -1999 to 9999) - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, -1999 to 9999) - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, -1999 to 9999) - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Potentially same as 0x2103?) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit +/-10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level / PID / Control Parameters (Addresses ~0x2700 - 0x27FF approx. from page 5-4 and 5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, 0.0 to 100.0) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values -2, -1, 0 or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values -2, -1, 0 or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level - Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting Level Parameters (Addresses ~0x2800 - ...) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed. - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers from page 5-4 and 5-5 --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// Example: If you need to decode bits from E_Status1 (0x2001) or E_Status1_StatusArea (0x2406) -// (These are just examples, the actual mapping needs to be confirmed from the manual) -/* -enum class E5C_Status1_Bits : uint16_t -{ - E_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_CommWritingDisabled = (1 << 11), // Bit 11: Communications Writing Disabled Status - E_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -// Example: If you need bits from Status 2 Lower Word (0x2408) -/* -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_MemoryError = (1 << 1), // Bit 1: Memory Error - E_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_InputTypeError = (1 << 3), // Bit 3: Input Type Error - // ... -}; +/** + * @brief Existing Enums for Omron E5CC/E5EC Commands (Provided) + * These enums define the possible data values for specific Modbus commands. */ -// Example: If you need bits from Status 2 Upper Word (0x2409) -/* -enum class E5C_Status2Upper_Bits : uint16_t +/** + * @brief Defines the possible values for the Communications Writing command (Code 00). + * This command enables or disables Modbus communications writing. + */ +enum OR_E5_CMD_COMMUNICATIONS_WRITING : uint16_t { - E_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error - E_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error - // ... + E_COMM_WRITE_OFF = 0, // 00: OFF (disabled) + E_COMM_WRITE_ON = 1 // 01: ON (enabled) +}; + +/** + * @brief Defines the possible values for the RUN/STOP command (Code 01). + * Controls the operational state of the controller. + */ +enum OR_E5_CMD_RUN_STOP : uint16_t +{ + E_RUN_MODE = 0, // 00: Run + E_STOP_MODE = 1 // 01: Stop (Changed name slightly to avoid conflict if E_STOP is defined elsewhere) +}; + +/** + * @brief Defines the possible values for the Multi-SP command (Code 02). + * Selects the active set point (SP). Also used for Multi-SP Monitor register (0x2404). + */ +enum OR_E5_CMD_MULTI_SP : uint16_t +{ + E_SET_POINT_0 = 0, // 00: Set point 0 + E_SET_POINT_1 = 1, // 01: Set point 1 + E_SET_POINT_2 = 2, // 02: Set point 2 + E_SET_POINT_3 = 3, // 03: Set point 3 + E_SET_POINT_4 = 4, // 04: Set point 4 + E_SET_POINT_5 = 5, // 05: Set point 5 + E_SET_POINT_6 = 6, // 06: Set point 6 + E_SET_POINT_7 = 7 // 07: Set point 7 +}; + +/** + * @brief Defines the possible values for the AT execute/cancel command (Code 03). + * Controls the Auto-Tuning (AT) function. + */ +enum OR_E5_CMD_AT_EXECUTE_CANCEL : uint16_t +{ + E_AT_CANCEL = 0, // 00: AT cancel + E_AT_EXECUTE_100 = 1, // 01: 100% AT execute + E_AT_EXECUTE_40 = 2 // 02: 40% AT execute +}; + +/** + * @brief Defines the possible values for the Write mode command (Code 04). + * Selects the destination for parameter writes. + */ +enum OR_E5_CMD_WRITE_MODE : uint16_t +{ + E_WRITE_MODE_BACKUP = 0, // 00: Backup (writes to non-volatile memory) + E_WRITE_MODE_RAM = 1 // 01: RAM write mode (writes to volatile memory) +}; + +// Note: Commands 05 (Save RAM data), 06 (Software reset), 07 (Move to setup area 1), +// 08 (Move to protect level), and 0B (Parameter initialization) use a fixed data value (00) +// to trigger the action. No specific data enum is needed for these commands themselves, +// only the command code itself is relevant. + +/** + * @brief Defines the possible values for the Auto/manual switch command (Code 09). + * Switches the controller between automatic and manual control modes. + */ +enum OR_E5_CMD_AUTO_MANUAL_SWITCH : uint16_t +{ + E_AUTOMATIC_MODE = 0, // 00: Automatic mode + E_MANUAL_MODE = 1 // 01: Manual mode +}; + +/** + * @brief Defines the possible values for the Alarm latch cancel command (Code 0C). + * Clears latched alarm conditions. + */ +enum OR_E5_CMD_ALARM_LATCH_CANCEL : uint16_t +{ + E_ALARM_1_LATCH_CANCEL = 0, // 00: Alarm 1 latch cancel + E_ALARM_2_LATCH_CANCEL = 1, // 01: Alarm 2 latch cancel + E_ALARM_3_LATCH_CANCEL = 2, // 02: Alarm 3 latch cancel + E_HB_ALARM_LATCH_CANCEL = 3, // 03: HB alarm latch cancel + E_HS_ALARM_LATCH_CANCEL = 4, // 04: HS alarm latch cancel + E_ALARM_4_LATCH_CANCEL = 5, // 05: Alarm 4 latch cancel + E_ALL_ALARM_LATCH_CANCEL = 15 // 0F: All alarm latch cancel +}; + +/** + * @brief Defines the possible values for the SP Mode command (Code 0D). + * Selects the source for the Set Point (SP). + */ +enum OR_E5_CMD_SP_MODE : uint16_t +{ + E_LOCAL_SP_MODE = 0, // 00: Local SP Mode + E_REMOTE_SP_MODE = 1 // 01: Remote SP Mode +}; + +/** + * @brief Defines the possible values for the Invert direct/reverse operation command (Code 0E). + * Sends a command to invert the current direct/reverse operation setting (register 0x2D12). + * Note: This is a command, not the status/setting itself. + */ +enum OR_E5_CMD_INVERT_DIRECT_REVERSE : uint16_t +{ + E_NOT_INVERT = 0, // 00: Command does not invert the current setting. + E_INVERT = 1 // 01: Command inverts the current direct/reverse setting. +}; + +/** + * @brief Defines the possible values for the Program start command (Code 11). + * Controls the execution of a program pattern. + */ +enum OR_E5_CMD_PROGRAM_START : uint16_t +{ + E_PROGRAM_RESET = 0, // 00: Reset + E_PROGRAM_START = 1 // 01: Start +}; + +/* Optional: Enum for Command Codes themselves +enum OR_E5_COMMAND_CODES : uint16_t +{ + E_CMD_COMMUNICATIONS_WRITING = 0x00, + E_CMD_RUN_STOP = 0x01, + E_CMD_MULTI_SP = 0x02, + E_CMD_AT_EXECUTE_CANCEL = 0x03, + E_CMD_WRITE_MODE = 0x04, + E_CMD_SAVE_RAM_DATA = 0x05, + E_CMD_SOFTWARE_RESET = 0x06, + E_CMD_MOVE_TO_SETUP_AREA_1 = 0x07, + E_CMD_MOVE_TO_PROTECT_LEVEL = 0x08, // Note: This command code writes to register 0x2504 + E_CMD_AUTO_MANUAL_SWITCH = 0x09, + E_CMD_PARAMETER_INITIALIZATION = 0x0B, + E_CMD_ALARM_LATCH_CANCEL = 0x0C, + E_CMD_SP_MODE = 0x0D, + E_CMD_INVERT_DIRECT_REVERSE = 0x0E, + E_CMD_PROGRAM_START = 0x11 }; */ +// -------------------------------------------------------------------------- +// --- Enums Generated/Merged from Provided Code and Images --- +// -------------------------------------------------------------------------- -#include // Required for uint16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t +/** + * @brief Defines the Modbus register addresses for the Variable Area (Setting Range) List. + * Merges registers from the provided initial code and the new images (from H175 manual pages 5-7 to 5-13). + * Uses Two-byte mode addresses. Register names may vary slightly based on context (e.g., monitor vs. setting). + * Levels indicated where known (e.g., IS=Initial Setting, AFS=Advanced Function Setting, ADJ=Adjustment, OP=Operation). + * Note: 4-byte registers are handled as two consecutive 16-bit registers in standard Modbus reads, + * or a single 32-bit read if supported. Comments mention this. For settings requiring values + * larger than 16-bit (signed or unsigned), writing usually targets the low word address (e.g., `xxxx`). + * The controller appropriately handles the 4-byte representation internally. + */ +enum OR_E5_VARIABLE_REGISTERS : uint16_t { - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; + // --- Block 1: Status/Monitor/Initial Setup --- (Primarily 0x20xx - OP Level Monitor) + E_PV_REGISTER = 0x2000, // Process Value (OP Level Monitor). Range depends on sensor/analog input. Scaling: Lower limit - 5% FS to Upper limit + 5% FS. + E_STATUS_1_REGISTER = 0x2001, // Status 1 (OP Level Monitor). Refer to manual section 5-2 for bit details. (*2: rightmost 16 bits). See Placeholder Status Enums below. + E_INTERNAL_SP_REGISTER = 0x2002, // Internal Set Point (OP Level Monitor, *1 note in manual). Range: SP lower limit to SP upper limit. (*1: Not displayed on controller). + E_HEATER_CURRENT_1_REGISTER = 0x2003, // Heater Current 1 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A (H'0000 to H'0226). + E_MV_MONITOR_HEAT_REGISTER = 0x2004, // MV Monitor (Heating) (OP Level Monitor). Range: Standard: -5.0 to 105.0 %; Heat/Cool: 0.0 to 105.0 %. + E_MV_MONITOR_COOL_REGISTER = 0x2005, // MV Monitor (Cooling) (OP Level Monitor). Range: 0.0 to 105.0 %. -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. + // --- Block 2: Alarm Related Settings --- (Primarily 0x21xx - Setup Level ?) + // Note: Addresses 0x2103-0x210F appear in some older manuals but might be superseded by 0x29xx in newer ones like H175. Retained for reference. + E_SET_POINT_SETUP_REGISTER = 0x2103, // Set Point (Setup level?). Range: SP lower limit to SP upper limit. Uses 4 bytes (low word write). Compare 0x2601, 0x2900. + E_ALARM_VALUE_1_SETUP_REGISTER = 0x2104, // Alarm Value 1 Setting (Setup level?). Range: -1999 to 9999. Units depend on input. Uses 4 bytes (low word write). Compare 0x2902. + E_ALARM_1_UPPER_SETUP_REGISTER = 0x2105, // Alarm Value Upper Limit 1 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2903. + E_ALARM_1_LOWER_SETUP_REGISTER = 0x2106, // Alarm Value Lower Limit 1 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2904. + E_ALARM_VALUE_2_SETUP_REGISTER = 0x2107, // Alarm Value 2 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2905. + E_ALARM_2_UPPER_SETUP_REGISTER = 0x2108, // Alarm Value Upper Limit 2 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2906. + E_ALARM_2_LOWER_SETUP_REGISTER = 0x2109, // Alarm Value Lower Limit 2 Setting (Setup level?). Range: -1999 to 9999. Uses 4 bytes (low word write). Compare 0x2907. + // Note: Setup level alarm settings 3/4 definitions not explicitly found here. See 0x29xx (ADJ) and 0x2Fxx (Type/Config). -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; + // --- Block 3: Monitoring / Status --- (Primarily 0x24xx - Operation Level Monitors) + E_PV_MONITOR_REGISTER = 0x2402, // Process Value (Monitor). Range depends on sensor/analog input. Same range as 0x2000. + E_INTERNAL_SP_MONITOR_REGISTER= 0x2403, // Internal Set Point Monitor (*1 note in manual). Range: SP lower limit to SP upper limit. Same range as 0x2002. (*1: Not displayed). + E_MULTI_SP_MONITOR_REGISTER = 0x2404, // Multi-SP No. Monitor. Range: 0 to 7. Values correspond to OR_E5_CMD_MULTI_SP enum. + E_STATUS_2_REGISTER = 0x2406, // Status (Monitor). Refer to manual section 5-2 for bit details. (*2: rightmost 16 bits). See Placeholder Status Enums below. + E_STATUS_3_REGISTER = 0x2407, // Status (Monitor High Word). Refer to manual section 5-2 for bit details. (*3: leftmost 16 bits == high word of 4-byte Status). See Placeholder Status Enums below. + E_STATUS2_1_REGISTER = 0x2408, // Status 2 (Monitor). Refer to manual section 5-2. (*2: rightmost 16 bits). See Placeholder Status Enums below. + E_STATUS2_2_REGISTER = 0x2409, // Status 2 (Monitor High Word). Refer to manual section 5-2. (*3: leftmost 16 bits == high word of 4-byte Status 2). See Placeholder Status Enums below. + E_DECIMAL_POINT_MONITOR_REGISTER = 0x2410, // Decimal Point Monitor. Range: 0 to 3. Values correspond to OR_E5_DECIMAL_POINT_POS enum. (Related to setting 0x2C0C). -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; + // --- Block 4: Protection / Operation Level --- (Primarily 0x25xx - Protect Level) + E_OP_ADJUST_PROTECT_REGISTER = 0x2500, // Operation/Adjustment Protect Setpoint. See OR_E5_PROTECT_LEVEL. Default: 0. Protect Level. + E_INIT_COMM_PROTECT_REGISTER = 0x2501, // Initial Setting/Communications Protect Setpoint. See OR_E5_INITIAL_PROTECT_LEVEL. Default: 0. Protect Level. + E_SETTING_CHANGE_PROTECT_REGISTER = 0x2502, // Setting Change Protect setting. See OR_E5_SETTING_CHANGE_PROTECT. Default: 0. Protect Level. + E_PF_KEY_PROTECT_REGISTER = 0x2503, // PF Key Protect setting. See OR_E5_PF_KEY_PROTECT. Default: 0. Protect Level. + E_MOVE_TO_PROTECT_LEVEL_REGISTER = 0x2504, // Move to Protect Level setting. Range: -1999 to 9999. Command 0x08 writes 0 here. Protect Level. Uses 4 bytes. Write low word. + E_PASSWORD_PROTECT_LEVEL_REGISTER = 0x2505, // Password to Move to Protect Level (Set only). Range: -1999 to 9999. Monitor value reads 0. Protect Level. Uses 4 bytes. Write low word. + E_PARAM_MASK_ENABLE_REGISTER = 0x2506, // Parameter Mask Enable setting. See OR_E5_PARAM_MASK_ENABLE. Default: 0. Protect Level. + E_CHANGED_PARAMS_ONLY_REGISTER = 0x2507, // Changed Parameters Only setting. See OR_E5_CHANGED_PARAMS_ONLY. Default: 0. Protect Level. -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; + // --- Block 5: Manual Control / Operation Level --- (Primarily 0x26xx - OP Level) + E_MANUAL_MV_REGISTER = 0x2600, // Manual MV (Manipulated Value). Range depends on model/control type (Std/PosProp: -5.0 to 105.0%; Heat/Cool: -105.0 to 105.0%). Uses 4 bytes (two 16-bit registers). Write low word. + E_OPERATION_SET_POINT_REGISTER = 0x2601, // Set Point (Monitor - Current Operational SP value). Range: SP lower limit to SP upper limit. Compare 0x2103 (Setup?) and 0x29xx (SP0-7 Settings). Uses 4 bytes. Read low word (or both). + E_REMOTE_SP_MONITOR_REGISTER = 0x2602, // Remote SP Monitor. Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS. Uses 4 bytes (two 16-bit registers). + E_OPERATION_HEATER_CURRENT_1_REGISTER = 0x2604, // Heater Current 1 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A. Compare 0x2003, 0x271A. + E_OPERATION_MV_MONITOR_HEAT_REGISTER = 0x2605, // MV Monitor (Heating) (OP Level Monitor). Range: Std: -5.0 to 105.0 %; Heat/Cool: 0.0 to 105.0 %. Compare 0x2004. + E_OPERATION_MV_MONITOR_COOL_REGISTER = 0x2606, // MV Monitor (Cooling) (OP Level Monitor). Range: 0.0 to 105.0 %. Compare 0x2005. + E_VALVE_OPENING_MONITOR_REGISTER = 0x2607, // Valve Opening Monitor (Pos Prop Control). Range: -10.0 to 110.0 %. -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; + // --- Block 6: PID / Control Parameters / Ramps / Heater --- (Primarily 0x27xx - Mostly ADJ Level) + E_PROP_BAND_COOL_REGISTER = 0x2701, // Proportional Band (Cooling) (ADJ Level). Range: 0.1 to 999.9 %. + E_INTEGRAL_TIME_COOL_REGISTER = 0x2702, // Integral Time (Cooling) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit). + E_DERIVATIVE_TIME_COOL_REGISTER = 0x2703, // Derivative Time (Cooling) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s (see time unit). + E_DEAD_BAND_REGISTER = 0x2704, // Dead Band (ADJ Level). Range depends on input type (-199.9 to 999.9 or -19.99 to 99.99). Uses 4 bytes (two 16-bit registers). Write low word. + E_MANUAL_RESET_VALUE_REGISTER = 0x2705, // Manual Reset Value (ADJ Level). Range: 0.0 to 100.0 %. + E_HYSTERESIS_HEAT_REGISTER = 0x2706, // Hysteresis (Heating) (ADJ Level). Range depends on input type (0.1 to 999.9 or 0.01 to 99.99). + E_HYSTERESIS_COOL_REGISTER = 0x2707, // Hysteresis (Cooling) (ADJ Level). Range depends on input type (0.1 to 999.9 or 0.01 to 99.99). + E_CONTROL_PERIOD_HEAT_REGISTER = 0x2708, // Control Period (Heating) (IS Level). See OR_E5_CONTROL_PERIOD_VALUES. Range: -2, -1, 0, 1..99. Needs signed read/write. + E_CONTROL_PERIOD_COOL_REGISTER = 0x2709, // Control Period (Cooling) (IS Level). See OR_E5_CONTROL_PERIOD_VALUES. Range: -2, -1, 0, 1..99. Needs signed read/write. + E_POS_PROP_DEAD_BAND_REGISTER = 0x270A, // Position Proportional Dead Band (ADJ Level). Range: 0.1 to 10.0 %. + E_OPEN_CLOSE_HYSTERESIS_REGISTER = 0x270B, // Open/Close Hysteresis (Pos Prop) (ADJ Level). Range: 0.1 to 20.0 %. + E_SP_RAMP_TIME_UNIT_REGISTER = 0x270C, // SP Ramp Time Unit (AFS Level). See OR_E5_SP_RAMP_TIME_UNIT. Range: 0 to 2. Default: 1. + E_SP_RAMP_SET_VALUE_REGISTER = 0x270D, // SP Ramp Set Value (ADJ Level). Range: 0 (OFF), 1 to 9999. Unit defined by 0x270C. Default: 0. + E_SP_RAMP_FALL_VALUE_REGISTER = 0x270E, // SP Ramp Fall Value (ADJ Level). Range: -1 (Same as Set), 0 (OFF), 1 to 9999. Unit defined by 0x270C. Default: 0. Needs signed read/write. + E_MV_AT_STOP_REGISTER = 0x270F, // MV at Stop (IS Level). Range depends on model (Std: -5.0 to 105.0%). Uses 4 bytes (two 16-bit registers). Write low word. + E_MV_AT_PV_ERROR_REGISTER = 0x2711, // MV at PV Error (IS Level). Range depends on model/control type (Std: -5.0 to 105.0%; Heat/Cool: -105.0 to 105.0%). Uses 4 bytes (two 16-bit registers). Write low word. + E_MV_CHANGE_RATE_LIMIT_REGISTER = 0x2713, // MV Change Rate Limit (ADJ Level). Range: 0.0 (OFF) to 100.0 %/s. + E_PV_INPUT_SLOPE_COEFF_REGISTER = 0x2718, // PV Input Slope Coefficient (ADJ Level). Range: 0.001 to 9.999. Used for scaling analog inputs. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALT_HEATER_CURRENT_1_MONITOR_REGISTER = 0x271A, // Heater Current 1 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A. (Appears functionally same as 0x2003/0x2604). + E_HEATER_BURNOUT_DETECT_1_REGISTER= 0x271B, // Heater Burnout Detection 1 Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. + E_LEAKAGE_CURRENT_1_MONITOR_REGISTER = 0x271C, // Leakage Current 1 Monitor (OP Level Monitor). Range: 0.0 to 55.0 A. + E_HS_ALARM_1_REGISTER = 0x271D, // HS Alarm 1 (Heater Short) Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. + E_PV_INPUT_SHIFT_REGISTER = 0x2723, // Process Value Input Shift (Offset) (ADJ Level). Range: -1999 to 9999. Unit depends on input type. Uses 4 bytes (two 16-bit registers). Write low word. + E_HEATER_CURRENT_2_MONITOR_REGISTER = 0x2724, // Heater Current 2 Value Monitor (OP Level Monitor). Range: 0.0 to 55.0 A. + E_HEATER_BURNOUT_DETECT_2_REGISTER= 0x2725, // Heater Burnout Detection 2 Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. + E_LEAKAGE_CURRENT_2_MONITOR_REGISTER = 0x2726, // Leakage Current 2 Monitor (OP Level Monitor). Range: 0.0 to 55.0 A. + E_HS_ALARM_2_REGISTER = 0x2727, // HS Alarm 2 (Heater Short) Setpoint (ADJ Level). Range: 0.0 (OFF) to 50.0 A. + E_SOAK_TIME_REMAIN_REGISTER = 0x2728, // Soak Time Remain (OP Level Monitor). Range: 0 to 9999. + E_SOAK_TIME_REGISTER = 0x2729, // Soak Time (ADJ Level). Range: 1 to 9999. + E_WAIT_BAND_REGISTER = 0x272A, // Wait Band (ADJ Level). Range: 0 (OFF), 0.1 to 999.9 (Temp) or 0.01 to 99.99 (Analog). + E_REMOTE_SP_INPUT_SHIFT_REGISTER = 0x272B, // Remote SP Input Shift (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_REMOTE_SP_INPUT_SLOPE_COEFF_REGISTER = 0x272C, // Remote SP Input Slope Coefficient (ADJ Level). Range: 0.001 to 9.999. Uses 4 bytes (two 16-bit registers). Write low word. -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; + // --- Block 7: Advanced Parameters --- (Primarily 0x28xx - Mostly AFS Level) + E_INPUT_DIGITAL_FILTER_REGISTER = 0x2800, // Input Digital Filter (AFS Level). Range: 0.0 (OFF) to 999.9 s. Uses 4 bytes (two 16-bit registers). Write low word. + E_MOVING_AVERAGE_COUNT_REGISTER = 0x2804, // Moving Average Count (AFS Level). See OR_E5_MOVING_AVERAGE_COUNT. Range: 0 to 5. Default: 0. Uses 4 bytes (two 16-bit registers). Write low word. + E_SQRT_LOW_CUT_POINT_REGISTER = 0x2808, // Extraction of Square Root Low-cut Point (ADJ Level). Range: 0.0 to 100.0 %. Uses 4 bytes (two 16-bit registers). Write low word. + // Note: SQRT Enable register is 0x2E24 (was missing context) -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; + // --- Block 8: Operation Level Setpoints / Alarms --- (Primarily 0x29xx - ADJ Level Settings reflected in OP) + E_SP_0_REGISTER = 0x2900, // Set Point 0 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_VALUE_1_OP_REGISTER = 0x2902, // Alarm Value 1 (ADJ Level). Range: -1999 to 9999. Units depend on input. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_1_UPPER_OP_REGISTER = 0x2903, // Alarm Value Upper Limit 1 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_1_LOWER_OP_REGISTER = 0x2904, // Alarm Value Lower Limit 1 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_VALUE_2_OP_REGISTER = 0x2905, // Alarm Value 2 (ADJ Level). Range: -1999 to 9999. Units depend on input. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_2_UPPER_OP_REGISTER = 0x2906, // Alarm Value Upper Limit 2 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_2_LOWER_OP_REGISTER = 0x2907, // Alarm Value Lower Limit 2 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_VALUE_3_OP_REGISTER = 0x2908, // Alarm Value 3 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_3_UPPER_OP_REGISTER = 0x2909, // Alarm Value Upper Limit 3 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_3_LOWER_OP_REGISTER = 0x290A, // Alarm Value Lower Limit 3 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_VALUE_4_OP_REGISTER = 0x290B, // Alarm Value 4 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_4_UPPER_OP_REGISTER = 0x290C, // Alarm Value Upper Limit 4 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_ALARM_4_LOWER_OP_REGISTER = 0x290D, // Alarm Value Lower Limit 4 (ADJ Level). Range: -1999 to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_SP_1_REGISTER = 0x290E, // Set Point 1 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. + // Note: SP 2-7 follow every 14 (0xE) registers (e.g., SP2@0x290E+0xE = 0x291C) + E_SP_2_REGISTER = 0x291C, // Set Point 2 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. + E_SP_3_REGISTER = 0x292A, // Set Point 3 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. + E_SP_4_REGISTER = 0x2938, // Set Point 4 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. + E_SP_5_REGISTER = 0x2946, // Set Point 5 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. + E_SP_6_REGISTER = 0x2954, // Set Point 6 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. + E_SP_7_REGISTER = 0x2962, // Set Point 7 Setting (ADJ Level). Range: SP lower limit to SP upper limit. Uses 4 bytes (two 16-bit registers). Write low word. -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; + // --- Block 9: Adjustment Level PID / MV Limits --- (Primarily 0x2Axx - ADJ Level) + E_PROP_BAND_HEAT_REGISTER = 0x2A00, // Proportional Band (Heating/Primary) (ADJ Level). Range: 0.1 to 999.9 %. + E_INTEGRAL_TIME_HEAT_REGISTER = 0x2A01, // Integral Time (Heating/Primary) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s. + E_DERIVATIVE_TIME_HEAT_REGISTER = 0x2A02, // Derivative Time D (Heating/Primary) (ADJ Level). Range: 0 to 9999 s or 0.0 to 999.9 s. + E_MV_UPPER_LIMIT_REGISTER = 0x2A05, // MV Upper Limit (ADJ Level). Range: Std/PosProp: MV lower limit+0.1 to 105.0%; Heat/Cool: 0.0 to 105.0%. + E_MV_LOWER_LIMIT_REGISTER = 0x2A06, // MV Lower Limit (ADJ Level). Range: Std/PosProp: -5.0 to MV upper limit-0.1%; Heat/Cool: -105.0 to 0.0 %. Uses 4 bytes (two 16-bit registers). Write low word. -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; + // --- Block 10: Initial/Advanced Settings --- (Primarily 0x2C/0x2D/0x2E - IS/AFS Level) + E_INPUT_TYPE_REGISTER = 0x2C00, // Input Type (IS Level). See OR_E5_INPUT_TYPE. Uses 4 bytes. Write low word. + E_TEMPERATURE_UNIT_REGISTER = 0x2C01, // Temperature Unit (IS Level). See OR_E5_TEMPERATURE_UNIT. Default: 0 (°C). Uses 4 bytes. Write low word. + E_SCALING_LOWER_LIMIT_REGISTER = 0x2C09, // Scaling Lower Limit (AFS Level). Range -1999 to (Upper Limit - 1). Uses 4 bytes (two 16-bit registers). Write low word. + E_SCALING_UPPER_LIMIT_REGISTER = 0x2C0B, // Scaling Upper Limit (AFS Level). Range (Lower Limit + 1) to 9999. Uses 4 bytes (two 16-bit registers). Write low word. + E_DECIMAL_POINT_REGISTER = 0x2C0C, // Decimal Point Setting (AFS Level). See OR_E5_DECIMAL_POINT_POS. Range: 0 H to 3 H. Compare monitor 0x2410. Uses 4 bytes. Write low word. + E_REMOTE_SP_UPPER_LIMIT_REGISTER = 0x2C0D, // Remote SP Upper Limit (AFS Level). Range depends on scaling. Uses 4 bytes (two 16-bit registers). Write low word. + E_REMOTE_SP_LOWER_LIMIT_REGISTER = 0x2C0E, // Remote SP Lower Limit (AFS Level). Range depends on scaling. Uses 4 bytes (two 16-bit registers). Write low word. + E_PV_DECIMAL_POINT_DISPLAY_REGISTER = 0x2C0F, // PV Decimal Point Display (IS Level). See OR_E5_PV_DECIMAL_POINT_DISPLAY. Default: 0 (OFF). Uses 4 bytes. Write low word. -// Parameters for E_InvertDirectReverse (0x0E) -enum class E5C_InvertDirectReverse_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation - E_Invert = 0x01, // Reverse operation -}; + E_CONTROL_OUTPUT_1_SIGNAL_REGISTER = 0x2D03, // Control Output 1 Signal (IS Level). See OR_E5_CONTROL_OUTPUT_SIGNAL. Default: 0 (4-20mA). Uses 4 bytes. Write low word. + E_CONTROL_OUTPUT_2_SIGNAL_REGISTER = 0x2D04, // Control Output 2 Signal (IS Level). See OR_E5_CONTROL_OUTPUT_SIGNAL. Default: 0 (4-20mA). Uses 4 bytes. Write low word. + E_SP_UPPER_LIMIT_REGISTER = 0x2D0F, // SP Upper Limit (IS Level). Range depends on scaling. Uses 4 bytes (two 16-bit registers). Write low word. + E_SP_LOWER_LIMIT_REGISTER = 0x2D10, // SP Lower Limit (IS Level). Range depends on scaling. Uses 4 bytes (two 16-bit registers). Write low word. + E_CONTROL_TYPE_REGISTER = 0x2D11, // Standard or Heating/Cooling Control Type (IS Level). See OR_E5_CONTROL_TYPE. Default: 0 (Standard). Uses 4 bytes. Write low word. + E_DIRECT_REVERSE_OP_REGISTER = 0x2D12, // Direct/Reverse Operation (IS Level). See OR_E5_OPERATION_MODE enum. Default: 0 (Reverse). Uses 4 bytes. Write low word. + E_CLOSE_FLOATING_REGISTER = 0x2D13, // Close/Floating (Valve Mode) (IS Level). See OR_E5_CLOSE_FLOATING enum. Default: 1 (Close). Uses 4 bytes. Write low word. + E_PID_ON_OFF_REGISTER = 0x2D14, // PID ON/OFF (IS Level). See OR_E5_PID_ON_OFF enum. Default: 1 (PID). Uses 4 bytes. Write low word. + E_ST_REGISTER = 0x2D15, // ST (Self Tuning) ON/OFF (IS Level). See OR_E5_ST enum. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_PROGRAM_PATTERN_REGISTER = 0x2D16, // Program Pattern (IS Level). See OR_E5_PROGRAM_PATTERN enum. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_REMOTE_SP_INPUT_TYPE_REGISTER = 0x2D18, // Remote SP Input Type (AFS Level). See OR_E5_REMOTE_SP_INPUT_TYPE enum. Default: 0 (4-20mA). Uses 4 bytes. Write low word. + E_MIN_OUTPUT_ONOFF_BAND_REGISTER= 0x2D19, // Minimum Output ON/OFF Band (AFS Level). Range: 0.0 to 50.0 (H'0000 to H'01F4). Default: 5.0. Uses 4 bytes. Write low word. -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; + E_TRANSFER_OUTPUT_TYPE_REGISTER = 0x2E00, // Transfer Output Type (IS Level). See OR_E5_TRANSFER_OUTPUT_TYPE enum. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_TRANSFER_OUTPUT_SIGNAL_REGISTER= 0x2E01, // Transfer Output Signal (IS Level). See OR_E5_TRANSFER_OUTPUT_SIGNAL enum. Default: 0 (4-20mA). Uses 4 bytes. Write low word. + E_CONTROL_OUTPUT_1_ASSIGN_REGISTER = 0x2E06, // Control Output 1 Assignment (AFS Level). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Range: 0 to 22, -1 to -5. Default: 1 (Control Heat). Uses 4 bytes. Write low word (int16_t). + E_CONTROL_OUTPUT_2_ASSIGN_REGISTER = 0x2E07, // Control Output 2 Assignment (AFS Level). Range depends on output hardware (0-2 for current, 0-22 for others; also -1 to -5 for simple transfer). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word (int16_t). -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization + // --- Block 11: Event Inputs / Aux Outputs / Transfer Limits / Alarms Config --- (Primarily 0x2E/0x2F - IS/AFS/Adv Level) + E_EVENT_INPUT_ASSIGNMENT_1_REGISTER = 0x2E0A, // Event Input Assignment 1 (IS Level). See OR_E5_EVENT_INPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word. + E_EVENT_INPUT_ASSIGNMENT_2_REGISTER = 0x2E0B, // Event Input Assignment 2 (IS Level). See OR_E5_EVENT_INPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word. + E_EVENT_INPUT_ASSIGNMENT_3_REGISTER = 0x2E0C, // Event Input Assignment 3 (IS Level). See OR_E5_EVENT_INPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word. + E_EVENT_INPUT_ASSIGNMENT_4_REGISTER = 0x2E0D, // Event Input Assignment 4 (IS Level). See OR_E5_EVENT_INPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word. + E_EVENT_INPUT_ASSIGNMENT_5_REGISTER = 0x2E0E, // Event Input Assignment 5 (IS Level). See OR_E5_EVENT_INPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word. + E_EVENT_INPUT_ASSIGNMENT_6_REGISTER = 0x2E0F, // Event Input Assignment 6 (IS Level). See OR_E5_EVENT_INPUT_ASSIGNMENT. Default: 0 (None). Uses 4 bytes. Write low word. + E_AUXILIARY_OUTPUT_1_ASSIGN_REGISTER = 0x2E10, // Auxiliary Output 1 Assignment (AFS Level). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Range: 0 to 22. Default: 0 (None). Uses 4 bytes. Write low word. + E_AUXILIARY_OUTPUT_2_ASSIGN_REGISTER = 0x2E11, // Auxiliary Output 2 Assignment (AFS Level). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Range: 0 to 22. Default: 0 (None). Uses 4 bytes. Write low word. + E_AUXILIARY_OUTPUT_3_ASSIGN_REGISTER = 0x2E12, // Auxiliary Output 3 Assignment (AFS Level). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Range: 0 to 22. Default: 0 (None). Uses 4 bytes. Write low word. + E_AUXILIARY_OUTPUT_4_ASSIGN_REGISTER = 0x2E13, // Auxiliary Output 4 Assignment (AFS Level). See OR_E5_CONTROL_OUTPUT_ASSIGNMENT. Range: 0 to 22. Default: 0 (None). Uses 4 bytes. Write low word. + E_TRANSFER_OUTPUT_UPPER_LIMIT_REGISTER = 0x2E14, // Transfer Output Upper Limit (IS Level). Range: -1999 to 9999. Units depend on input type. Uses 4 bytes (two 16-bit regs). Write low word. + E_TRANSFER_OUTPUT_LOWER_LIMIT_REGISTER = 0x2E15, // Transfer Output Lower Limit (IS Level). Range: -1999 to 9999. Units depend on input type. Uses 4 bytes (two 16-bit regs). Write low word. + E_SIMPLE_TRANSFER_OUTPUT_1_UPPER_LIMIT_REGISTER = 0x2E16, // Simple Transfer Output 1 Upper Limit (IS Level). Range: -1999 to 9999. Used with Simple Transfer Assignments (-1 to -5 in 0x2E06/0x2E07). Uses 4 bytes (two 16-bit regs). Write low word. (*1 Simple Transfer function only for specific models/outputs) + E_SIMPLE_TRANSFER_OUTPUT_1_LOWER_LIMIT_REGISTER = 0x2E17, // Simple Transfer Output 1 Lower Limit (IS Level). Range: -1999 to 9999. Used with Simple Transfer Assignments (-1 to -5 in 0x2E06/0x2E07). Uses 4 bytes (two 16-bit regs). Write low word. (*1 Simple Transfer function only for specific models/outputs) + E_SQRT_ENABLE_REGISTER = 0x2E24, // Extraction of Square Root Enable (IS Level). See OR_E5_SQRT_ENABLE. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_TRAVEL_TIME_REGISTER = 0x2E30, // Travel Time (Used for Valve Control?) (IS Level?). Range: 1 to 999. Default: ??? Uses 4 bytes. Write low word. -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: 0.0 to 105.0) + E_ALARM_1_TYPE_REGISTER = 0x2F00, // Alarm 1 Type (AFS Level). See OR_E5_ALARM_TYPE. Default: ??? Uses 4 bytes. Write low word. + E_ALARM_1_LATCH_REGISTER = 0x2F01, // Alarm 1 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_ALARM_1_HYSTERESIS_REGISTER = 0x2F02, // Alarm 1 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word. + E_ALARM_2_TYPE_REGISTER = 0x2F03, // Alarm 2 Type (AFS Level). See OR_E5_ALARM_TYPE (LBA cannot be set). Default: ??? Uses 4 bytes. Write low word. + E_ALARM_2_LATCH_REGISTER = 0x2F04, // Alarm 2 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_ALARM_2_HYSTERESIS_REGISTER = 0x2F05, // Alarm 2 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word. + E_ALARM_3_TYPE_REGISTER = 0x2F06, // Alarm 3 Type (AFS Level). See OR_E5_ALARM_TYPE (LBA cannot be set). Default: ??? Uses 4 bytes. Write low word. + E_ALARM_3_LATCH_REGISTER = 0x2F07, // Alarm 3 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_ALARM_3_HYSTERESIS_REGISTER = 0x2F08, // Alarm 3 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word. + E_ALARM_4_TYPE_REGISTER = 0x2F09, // Alarm 4 Type (AFS Level). See OR_E5_ALARM_TYPE (LBA cannot be set). Default: ??? Uses 4 bytes. Write low word. + E_ALARM_4_LATCH_REGISTER = 0x2F0A, // Alarm 4 Latch (AFS Level). See OR_E5_ALARM_LATCH. Default: 0 (OFF). Uses 4 bytes. Write low word. + E_ALARM_4_HYSTERESIS_REGISTER = 0x2F0B, // Alarm 4 Hysteresis (IS Level). Range: 0.1 to 999.9 (temp) or 0.01 to 99.99 (analog). Uses 4 bytes. Write low word. + E_STANDBY_SEQUENCE_RESET_REGISTER = 0x2F0C, // Standby Sequence Reset Condition (AFS Level). See OR_E5_STANDBY_SEQUENCE_RESET. Default: ??? Uses 4 bytes. Write low word. + E_AUX_OUTPUT_1_OPEN_IN_ALARM_REGISTER = 0x2F0D, // Auxiliary Output 1 Open in Alarm (AFS Level). See OR_E5_AUX_OUTPUT_OPEN_IN_ALARM. Default: ??? Uses 4 bytes. Write low word. + E_AUXILIARY_OUTPUT_2_OPEN_IN_ALARM_REGISTER = 0x2F0E, // Auxiliary Output 2 Open in Alarm (AFS Level). See OR_E5_AUX_OUTPUT_OPEN_IN_ALARM. Uses 4 bytes. Write low word. + E_AUXILIARY_OUTPUT_3_OPEN_IN_ALARM_REGISTER = 0x2F10, // Auxiliary Output 3 Open in Alarm (AFS Level). See OR_E5_AUX_OUTPUT_OPEN_IN_ALARM. Uses 4 bytes. Write low word. + E_AUXILIARY_OUTPUT_4_OPEN_IN_ALARM_REGISTER = 0x2F11, // Auxiliary Output 4 Open in Alarm (AFS Level). See OR_E5_AUX_OUTPUT_OPEN_IN_ALARM. Uses 4 bytes. Write low word. + E_ALARM_1_ON_DELAY_REGISTER = 0x2F12, // Alarm 1 ON Delay (AFS Level?). Range: 0 to 999 (seconds?). Uses 4 bytes. Write low word. + E_ALARM_2_ON_DELAY_REGISTER = 0x2F13, // Alarm 2 ON Delay (AFS Level?). Range: 0 to 999 (seconds?). Uses 4 bytes. Write low word. + E_ALARM_3_ON_DELAY_REGISTER = 0x2F14, // Alarm 3 ON Delay (AFS Level?). Range: 0 to 999 (seconds?). Uses 4 bytes. Write low word. + E_ALARM_1_OFF_DELAY_REGISTER = 0x2F15, // Alarm 1 OFF Delay (AFS Level?). Range: 0 to 999 (seconds?). Uses 4 bytes. Write low word. + E_ALARM_2_OFF_DELAY_REGISTER = 0x2F16, // Alarm 2 OFF Delay (AFS Level?). Range: 0 to 999 (seconds?). Uses 4 bytes. Write low word. + E_ALARM_3_OFF_DELAY_REGISTER = 0x2F17, // Alarm 3 OFF Delay (AFS Level?). Range: 0 to 999 (seconds?). Uses 4 bytes. Write low word. + E_ALARM_4_OFF_DELAY_REGISTER = 0x2F18, // Alarm 4 OFF Delay (AFS Level?). Range: 0 to 999 (seconds?). Uses 4 bytes. Write low word. + // Note: Hysteresis range (0x2F02, 0x2F05, 0x2F08, 0x2F0B) is 1 to 9999 (representing 0.1-999.9 or 0.01-99.99) based on input type decimal point. - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables + // --- Block 12: Display / Miscellaneous --- (Primarily 0x30xx - Level varies) + E_PV_SP_1_DISPLAY_SELECT_REGISTER = 0x3000, // PV/SP No. 1 Display Selection (OP/ADJ Level?). See OR_E5_PV_SP_DISPLAY_SELECT. Uses 4 bytes. Write low word. + E_MV_DISPLAY_SELECT_REGISTER = 0x3001, // MV Display Selection (OP/ADJ Level?). See OR_E5_MV_DISPLAY_SELECT. Uses 4 bytes. Write low word. + E_AUTO_DISPLAY_RETURN_TIME_REGISTER = 0x3003, // Automatic Display Return Time (Level?). Range: 0 (OFF) to 99 (seconds?). Uses 4 bytes. Write low word. See OR_E5_AUTO_DISPLAY_RETURN. + E_DISPLAY_REFRESH_PERIOD_REGISTER = 0x3004, // Display Refresh Period (Level?). See OR_E5_DISPLAY_REFRESH_PERIOD. Uses 4 bytes. Write low word. + E_PV_SP_2_DISPLAY_SELECT_REGISTER = 0x3008, // PV/SP No. 2 Display Selection (OP/ADJ Level?). Uses OR_E5_PV_SP_DISPLAY_SELECT. Uses 4 bytes. Write low word. + E_DISPLAY_BRIGHTNESS_REGISTER = 0x300A, // Display Brightness (Level?). Range: 1 to 3. Uses 4 bytes. Write low word. + E_MV_DISPLAY_ENABLE_REGISTER = 0x300B, // MV Display Enable (Level?). 0=OFF, 1=ON. See OR_E5_ON_OFF_STATE. Uses 4 bytes. Write low word. + E_MOVE_TO_PROTECT_LEVEL_TIME_REGISTER= 0x300C, // Move to Protect Level Time (Level?). Range: 1 to 30 (minutes?). Uses 4 bytes. Write low word. + E_AUTO_MANUAL_SELECT_ADDITION_REGISTER = 0x300F, // Auto/Manual Select Addition (Level?). 0=OFF, 1=ON. See OR_E5_ON_OFF_STATE. Uses 4 bytes. Write low word. + E_PV_STATUS_DISPLAY_FUNC_REGISTER = 0x3011, // PV Status Display Function (Level?). See OR_E5_STATUS_DISPLAY_FUNC. Uses 4 bytes. Write low word. + E_SV_STATUS_DISPLAY_FUNC_REGISTER = 0x3012, // SV Status Display Function (Level?). Uses OR_E5_STATUS_DISPLAY_FUNC. Uses 4 bytes. Write low word. - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit +/-10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level / PID / Control Parameters (Addresses ~0x2700 - 0x27FF approx. from page 5-4 and 5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, 0.0 to 100.0) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values -2, -1, 0 or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values -2, -1, 0 or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting Level / Other (Addresses ~0x2800 - ...) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, 0.0 to 100.0) [Adjustment Level] - - // --- Operation Level Parameters (Duplicated Address? / Specific Uses) (Addresses ~0x2900 - 0x29FF) --- - // These seem related to parameters also available elsewhere, but accessible during 'Operation' or 'Adjustment' levels specifically. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, -1999 to 9999) [Operation Level] (May modify E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, -1999 to 9999) [Operation Level] (May modify E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ...) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed. - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. }; -// --- Special Values / Parameter Enums for specific registers --- +// --- Existing Value Enums --- -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values +/** + * @brief Defines a generic ON/OFF state for various registers. + */ +enum OR_E5_ON_OFF_STATE : uint16_t { - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. + E_OFF = 0, // State is OFF or Disabled + E_ON = 1 // State is ON or Enabled }; -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t +/** + * @brief Defines the possible values for the Operation/Adjustment Protect register (0x2500). + * Sets the protection level for operation and adjustment parameters. Protect Level. + */ +enum OR_E5_PROTECT_LEVEL : uint16_t { - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour + E_PROTECT_NONE = 0, // 0: No restrictions in operation and adjustment levels (Default) + E_PROTECT_ADJUSTMENT_LEVEL = 1, // 1: Move to adjustment level is prohibited + E_PROTECT_PV_SP_ONLY = 2, // 2: Display and change of only "PV" and "PV/SP" parameters is allowed + E_PROTECT_PV_PVSP_DISPLAY = 3 // 3: Display of only "PV" and "PV/SP" parameters is allowed }; -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t +/** + * @brief Defines the possible values for the Initial Setting/Communications Protect register (0x2501). + * Protects initial settings and communication parameters. Protect Level. + */ +enum OR_E5_INITIAL_PROTECT_LEVEL : uint16_t { - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. + E_INIT_PROTECT_ALLOWED = 0, // 0: Move to IS/Comm setting level allowed. (Move to AFS level allowed.) (Default) + E_INIT_PROTECT_AFS_NOT_DISPLAYED = 1, // 1: Move to IS/Comm setting level allowed. (Move to AFS level not displayed.) + E_INIT_PROTECT_PROHIBITED = 2 // 2: Move to IS/Comm setting level prohibited. }; -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value +/** + * @brief Defines the possible values for the Setting Change Protect register (0x2502). + * Enables or disables changing settings via the front panel. Protect Level. + */ +enum OR_E5_SETTING_CHANGE_PROTECT : uint16_t { - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. + E_SETTING_CHANGE_ALLOWED = E_OFF, // 0: OFF (Changing settings on controller display is allowed.) (Default) + E_SETTING_CHANGE_PROHIBITED = E_ON // 1: ON (Changing settings on controller display is prohibited.) }; -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t +/** + * @brief Defines the possible values for the PF Key Protect register (0x2503). + * Enables or disables the Programmable Function (PF) key. Protect Level. + */ +enum OR_E5_PF_KEY_PROTECT : uint16_t { - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. + E_PF_KEY_ENABLED = E_OFF, // 0: OFF (PF Key operation allowed) (Default) + E_PF_KEY_DISABLED = E_ON // 1: ON (PF Key operation prohibited) }; -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t +/** + * @brief Defines the possible values for the Parameter Mask Enable register (0x2506). + * Enables or disables the parameter mask function. Protect Level. + */ +enum OR_E5_PARAM_MASK_ENABLE : uint16_t { - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times + E_PARAM_MASK_DISABLED = E_OFF, // 0: OFF (Default) + E_PARAM_MASK_ENABLED = E_ON // 1: ON +}; + +/** + * @brief Defines the possible values for the Changed Parameters Only register (0x2507). + * Determines if only changed parameters are displayed or written. Protect Level. + */ +enum OR_E5_CHANGED_PARAMS_ONLY : uint16_t +{ + E_CHANGED_PARAMS_OFF = E_OFF, // 0: OFF (Default behavior) (Default) + E_CHANGED_PARAMS_ON = E_ON // 1: ON (Only show/write changed parameters) +}; + +/** + * @brief Defines the possible values for the Decimal Point registers (Setting 0x2C0C, Monitor 0x2410). + * Indicates the number of digits displayed after the decimal point for PV, SP etc. + * Level: Advanced Function Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_DECIMAL_POINT_POS : uint16_t // Values fit in 16 bits, matches write target +{ + E_DECIMAL_POS_0 = 0, // 0: No decimal point (e.g., 123) + E_DECIMAL_POS_1 = 1, // 1: One decimal place (e.g., 12.3) + E_DECIMAL_POS_2 = 2, // 2: Two decimal places (e.g., 1.23) + E_DECIMAL_POS_3 = 3 // 3: Three decimal places (e.g., 0.123) + // Default depends on Input Type +}; + +/** + * @brief Defines the possible values for Control Period registers (Heating 0x2708, Cooling 0x2709). + * Represents fixed time periods or a range. Values H'FFFE and H'FFFF interpreted as signed -2 and -1 respectively. + * Level: Initial Setting. + */ +enum OR_E5_CONTROL_PERIOD_VALUES : int16_t // Use signed type due to negative representations +{ + // Standard fixed periods + E_PERIOD_0_1_SEC = -2, // H'FFFE: 0.1 seconds + E_PERIOD_0_2_SEC = -1, // H'FFFF: 0.2 seconds + E_PERIOD_0_5_SEC = 0, // H'0000: 0.5 seconds + // 1 to 99 (H'0001 to H'0063): Represents 1 to 99 seconds directly + E_PERIOD_1_TO_99_SEC_MIN = 1, // Minimum value for 1-99 second range + E_PERIOD_1_TO_99_SEC_MAX = 99 // Maximum value for 1-99 second range + // Default depends on model/output type +}; + +/** + * @brief Defines the possible values for the SP Ramp Time Unit register (0x270C). + * Sets the time base for SP ramp rates. Level: Advanced Function Setting. + */ +enum OR_E5_SP_RAMP_TIME_UNIT : uint16_t +{ + E_UNIT_EU_PER_SECOND = 0, // 0: EU/second + E_UNIT_EU_PER_MINUTE = 1, // 1: EU/minute (Default) + E_UNIT_EU_PER_HOUR = 2 // 2: EU/hour + // EU = Engineering Units (depends on input type, e.g., °C, °F, %) +}; + +/** + * @brief Defines the possible values for the Moving Average Count register (0x2804). + * Sets the number of samples for the PV moving average calculation. Level: Advanced Function Setting. + * Uses 4 bytes, write low word. + */ +enum OR_E5_MOVING_AVERAGE_COUNT : uint16_t // Values fit in 16 bits, matches write target +{ + E_MOVING_AVG_OFF = 0, // 00: OFF (No moving average) (Default) + E_MOVING_AVG_2_TIMES = 1, // 01: 2 times + E_MOVING_AVG_4_TIMES = 2, // 02: 4 times + E_MOVING_AVG_8_TIMES = 3, // 03: 8 times + E_MOVING_AVG_16_TIMES= 4, // 04: 16 times + E_MOVING_AVG_32_TIMES= 5 // 05: 32 times +}; + +/** + * @brief Defines the possible values for the Input Type register (0x2C00). + * Selects the sensor or input signal type. Level: Initial Setting. + * Note: Values are based on H175 manual, specific ranges may vary. Uses 4 bytes, write low word. + */ +enum OR_E5_INPUT_TYPE : uint16_t // Values fit in 16 bits, matches write target +{ + E_INPUT_PT_MINUS_200_TO_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) + E_INPUT_PT_MINUS_199_9_TO_500_0C = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) + E_INPUT_PT_0_0_TO_100_0C = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) + E_INPUT_JPT_MINUS_199_9_TO_500_0C= 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) + E_INPUT_JPT_0_0_TO_100_0C = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) + E_INPUT_K_MINUS_200_TO_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) (Default for Thermocouple models) + E_INPUT_K_MINUS_20_0_TO_500_0C = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) + E_INPUT_J_MINUS_100_TO_850C = 7, // J (-100 to 850°C / -100 to 1500°F) + E_INPUT_J_MINUS_20_0_TO_400_0C = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) + E_INPUT_T_MINUS_200_TO_400C = 9, // T (-200 to 400°C / -300 to 700°F) + E_INPUT_T_MINUS_199_9_TO_400_0C = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) + E_INPUT_E_MINUS_200_TO_600C = 11, // E (-200 to 600°C / -300 to 1100°F) + E_INPUT_L_MINUS_100_TO_850C = 12, // L (-100 to 850°C / -100 to 1500°F) + E_INPUT_U_MINUS_200_TO_400C = 13, // U (-200 to 400°C / -300 to 700.0°F) + E_INPUT_U_MINUS_199_9_TO_400_0C = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) + E_INPUT_N_MINUS_200_TO_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) + E_INPUT_R_0_TO_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) + E_INPUT_S_0_TO_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) + E_INPUT_B_100_TO_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) + E_INPUT_W_0_TO_2300C = 19, // W (WRe5-26) (0 to 2,300°C / 0 to 3,200°F) + E_INPUT_PLII_0_TO_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) + + E_INPUT_IR_SENSOR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) + E_INPUT_IR_SENSOR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) + E_INPUT_IR_SENSOR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) + E_INPUT_IR_SENSOR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) + + E_INPUT_ANALOG_4_TO_20_MA = 25, // Analog Input: 4 to 20 mA (Default for Analog I/P models) + E_INPUT_ANALOG_0_TO_20_MA = 26, // Analog Input: 0 to 20 mA + E_INPUT_ANALOG_1_TO_5_V = 27, // Analog Input: 1 to 5 V + E_INPUT_ANALOG_0_TO_5_V = 28, // Analog Input: 0 to 5 V + E_INPUT_ANALOG_0_TO_10_V = 29, // Analog Input: 0 to 10 V + E_INPUT_ANALOG_0_TO_50_MV = 30 // Analog Input: 0 to 50 mV (* Selection possible only for E5CC-U v2.2+ May '14 or later) + // Default depends on controller model (e.g., E5CC-QQ is K, E5CC-AQ is 4-20mA) +}; + +/** + * @brief Defines the possible values for the Temperature Unit register (0x2C01). + * Selects Celsius or Fahrenheit display. Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_TEMPERATURE_UNIT : uint16_t // Values fit in 16 bits, matches write target +{ + E_UNIT_CELSIUS = 0, // 0: °C (Default) + E_UNIT_FAHRENHEIT = 1 // 1: °F +}; + +/** + * @brief Defines the possible values for PV Decimal Point Display register (0x2C0F). + * Enables/disables showing the decimal point in PV display. Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_PV_DECIMAL_POINT_DISPLAY : uint16_t // Values fit in 16 bits, matches write target +{ + E_PV_DECIMAL_DISPLAY_OFF = E_OFF, // 0: OFF (Decimal point determined by input type/setting is not shown) (Default) + E_PV_DECIMAL_DISPLAY_ON = E_ON // 1: ON (Decimal point is shown according to setting 0x2C0C) +}; + +/** + * @brief Defines the possible values for Control Output Signal registers (Output 1: 0x2D03, Output 2: 0x2D04). + * Selects the range for analog current outputs. Level: Initial Setting. Uses 4 bytes, write low word. + * Only applicable if the corresponding output is a current output. + */ +enum OR_E5_CONTROL_OUTPUT_SIGNAL : uint16_t // Values fit in 16 bits, matches write target +{ + E_OUTPUT_SIGNAL_4_TO_20_MA = 0, // 0: 4 to 20 mA (Default) + E_OUTPUT_SIGNAL_0_TO_20_MA = 1 // 1: 0 to 20 mA +}; + +/** + * @brief Defines the possible values for the Control Type register (0x2D11). + * Selects standard (heat OR cool) or heating/cooling control. Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_CONTROL_TYPE : uint16_t // Values fit in 16 bits, matches write target +{ + E_CONTROL_STANDARD = 0, // 0: Standard (PID or ON/OFF, single output - heating or cooling) (Default) + E_CONTROL_HEAT_AND_COOL = 1 // 1: Heating and cooling (Requires appropriate model/outputs) +}; + +/** + * @brief Defines the possible values for the Direct/Reverse Operation register (0x2D12). + * Sets the control action direction. Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_OPERATION_MODE : uint16_t // Values fit in 16 bits, matches write target +{ + E_OPERATION_REVERSE = 0, // 0: Reverse operation (e.g., Heating) (Default: Manual H175 says Reverse=Cool, Direct=Heat - Verify!) + E_OPERATION_DIRECT = 1 // 1: Direct operation (e.g., Cooling) +}; + +/** + * @brief Defines the possible values for the Close/Floating register (0x2D13). + * Used for valve control (Position Proportional Mode). Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_CLOSE_FLOATING : uint16_t // Values fit in 16 bits, matches write target +{ + E_VALVE_FLOATING = 0, // 0: Floating + E_VALVE_CLOSE = 1 // 1: Close (Default) +}; + +/** + * @brief Defines the possible values for the PID ON/OFF register (0x2D14). + * Selects between ON/OFF control and PID control. Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_PID_ON_OFF : uint16_t // Values fit in 16 bits, matches write target +{ + E_CONTROL_ON_OFF = 0, // 0: ON/OFF control + E_CONTROL_2_PID = 1 // 1: 2-PID control (Default) +}; + +/** + * @brief Defines the possible values for the ST (Self-Tuning) register (0x2D15). + * Enables or disables Self-Tuning. Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_ST : uint16_t // Values fit in 16 bits, matches write target +{ + E_ST_OFF = E_OFF, // 0: OFF (Default) + E_ST_ON = E_ON // 1: ON +}; + +/** + * @brief Defines the possible values for the Program Pattern register (0x2D16). + * Controls the program pattern execution state. Level: Initial Setting. Uses 4 bytes, write low word. + */ +enum OR_E5_PROGRAM_PATTERN : uint16_t // Values fit in 16 bits, matches write target +{ + E_PROGRAM_PATTERN_OFF = 0, // 0: OFF (Default) + E_PROGRAM_PATTERN_STOP = 1, // 1: STOP + E_PROGRAM_PATTERN_CONT = 2 // 2: CONT (Continue/Run) +}; + +/** + * @brief Defines the possible values for the Remote SP Input Type register (0x2D18). + * Selects the signal type for remote setpoint input. Level: Advanced Function Setting. Uses 4 bytes, write low word. + * Only applicable if the model supports remote SP input. + */ +enum OR_E5_REMOTE_SP_INPUT_TYPE : uint16_t // Values fit in 16 bits, matches write target +{ + E_REMOTE_INPUT_4_TO_20_MA = 0, // 0: 4 to 20 mA (Default) + E_REMOTE_INPUT_0_TO_20_MA = 1, // 1: 0 to 20 mA + E_REMOTE_INPUT_1_TO_5_V = 2, // 2: 1 to 5 V + E_REMOTE_INPUT_0_TO_5_V = 3, // 3: 0 to 5 V + E_REMOTE_INPUT_0_TO_10_V = 4 // 4: 0 to 10 V +}; + +/** + * @brief Defines the possible values for the Transfer Output Type register (0x2E00). + * Selects the variable to be output via the transfer output. Level: Initial Setting. Uses 4 bytes, write low word. + * Only applicable for models with a Transfer Output. + */ +enum OR_E5_TRANSFER_OUTPUT_TYPE : uint16_t // Values fit in 16 bits, matches write target +{ + E_TRANSFER_OFF = 0, // 0: OFF (Default) + E_TRANSFER_SET_POINT = 1, // 1: Set point + E_TRANSFER_SP_DURING_RAMP = 2, // 2: Set point during SP ramp + E_TRANSFER_PV = 3, // 3: PV (Process Value) + E_TRANSFER_MV_HEATING = 4, // 4: MV (heating) + E_TRANSFER_MV_COOLING = 5, // 5: MV (cooling) + E_TRANSFER_VALVE_OPENING = 6 // 6: Valve opening (*Only for Position-proportional Models.) +}; + +/** + * @brief Defines the possible values for the Transfer Output Signal register (0x2E01). + * Selects the analog signal range for the transfer output. Level: Initial Setting. Uses 4 bytes, write low word. + * Only applicable for models with a Transfer Output. + */ +enum OR_E5_TRANSFER_OUTPUT_SIGNAL : uint16_t // Values fit in 16 bits, matches write target +{ + E_TRANSFER_SIGNAL_4_TO_20_MA = 0, // 0: 4 to 20 mA (Default) + E_TRANSFER_SIGNAL_1_TO_5_V = 1 // 1: 1 to 5 V +}; + +/** + * @brief Defines the possible values for the Control Output Assignment registers (Output 1: 0x2E06, Output 2: 0x2E07) + * and Auxiliary Output Assignment registers (Aux 1: 0x2E10, Aux 2: 0x2E11, Aux 3: 0x2E12, Aux 4: 0x2E13). + * Assigns a function to the physical control/auxiliary outputs. Level: Advanced Function Setting. + * Availability of some options depends on hardware configuration (e.g., linear current output). + * Uses 4 bytes per register, write low word (int16_t). + */ +enum OR_E5_CONTROL_OUTPUT_ASSIGNMENT : int16_t // Use signed type for negative values. Values fit in 16 bits, matches write target. +{ + // Standard Positive Assignments (0 to 22) + E_OUTPUT_ASSIGN_NONE = 0, // 0: Not assigned (Default for Aux Outputs and some Control Output 2) + E_OUTPUT_ASSIGN_CONTROL_HEAT = 1, // 1: Control output (heating) (Default for Control Output 1) + E_OUTPUT_ASSIGN_CONTROL_COOL = 2, // 2: Control output (cooling) + E_OUTPUT_ASSIGN_ALARM_1 = 3, // 3: Alarm 1 output + E_OUTPUT_ASSIGN_ALARM_2 = 4, // 4: Alarm 2 output + E_OUTPUT_ASSIGN_ALARM_3 = 5, // 5: Alarm 3 output + E_OUTPUT_ASSIGN_ALARM_4 = 6, // 6: Alarm 4 output + E_OUTPUT_ASSIGN_HEATER_ALARM = 7, // 7: Heater alarm (Combined HB or HS - check model/config?) + E_OUTPUT_ASSIGN_HB_ALARM = 8, // 8: HB alarm (Heater Burnout) + E_OUTPUT_ASSIGN_HS_ALARM = 9, // 9: HS alarm (SSR Short) + E_OUTPUT_ASSIGN_INPUT_ERROR = 10, // 10: Input error output + E_OUTPUT_ASSIGN_RSP_INPUT_ERROR = 11, // 11: RSP input error output (Remote SP) + E_OUTPUT_ASSIGN_PROGRAM_END = 12, // 12: Program end output (P.END) (*1) + E_OUTPUT_ASSIGN_RUN = 13, // 13: RUN output + E_OUTPUT_ASSIGN_INTEGRATED_ALARM = 14, // 14: Integrated alarm output + E_OUTPUT_ASSIGN_WORK_BIT_1 = 15, // 15: Work bit 1 output + E_OUTPUT_ASSIGN_WORK_BIT_2 = 16, // 16: Work bit 2 output + E_OUTPUT_ASSIGN_WORK_BIT_3 = 17, // 17: Work bit 3 output + E_OUTPUT_ASSIGN_WORK_BIT_4 = 18, // 18: Work bit 4 output + E_OUTPUT_ASSIGN_WORK_BIT_5 = 19, // 19: Work bit 5 output + E_OUTPUT_ASSIGN_WORK_BIT_6 = 20, // 20: Work bit 6 output + E_OUTPUT_ASSIGN_WORK_BIT_7 = 21, // 21: Work bit 7 output + E_OUTPUT_ASSIGN_WORK_BIT_8 = 22, // 22: Work bit 8 output + + // Special Negative Assignments for Linear Current Output (*2) + E_OUTPUT_ASSIGN_SIMPLE_TRANSFER_MV_COOL = -5, // H'FFFF FFFB: Simple transfer MV (cooling) (*2) + E_OUTPUT_ASSIGN_SIMPLE_TRANSFER_MV_HEAT = -4, // H'FFFF FFFC: Simple transfer MV (heating) (*2) + E_OUTPUT_ASSIGN_SIMPLE_TRANSFER_PV = -3, // H'FFFF FFFD: Simple transfer PV (*2) + E_OUTPUT_ASSIGN_SIMPLE_TRANSFER_RAMP_SP = -2, // H'FFFF FFFE: Simple transfer ramp SP (*2) + E_OUTPUT_ASSIGN_SIMPLE_TRANSFER_SP = -1 // H'FFFF FFFF: Simple transfer SP (*2) + + // Notes from manual: + // (*1) P.END (program end output) can be set even when the program pattern is set to OFF, but the function will be disabled. + // (*2) Selection is possible only with the E5CC-U and E5GC and only when there is a control output that is a linear current output. + // (For E5CC-U, the Controller must have been manufactured in May 2014 or later (version 2.2).). + // Note for Control Output 2: When Control output 2 is a linear current output, only values 0 to 2 are permitted according to H175 p5-9. + // Check manual for restrictions on Auxiliary Outputs (may not support negative values or full positive range). +}; + +/** + * @brief Defines the possible functions assigned to Event Inputs (Registers 0x2E0A to 0x2E0F). + * Level: Initial Setting. Uses 4 bytes per register, write low word. + * Only applicable if the model has Event Inputs. + */ +enum OR_E5_EVENT_INPUT_ASSIGNMENT : uint16_t // Values fit in 16 bits, matches write target +{ + E_EVENT_NONE = 0, // 0: None (Default) + E_EVENT_RUN_STOP = 1, // 1: RUN/STOP + E_EVENT_AUTO_MANUAL_SWITCH = 2, // 2: Auto/Manual Switch + E_EVENT_PROGRAM_START = 3, // 3: Program Start (*1) + E_EVENT_DIRECT_REVERSE_OPERATION = 4, // 4: Direct/Reverse Operation switch + E_EVENT_SP_MODE_SWITCH = 5, // 5: SP Mode Switch (*2) + E_EVENT_AT_EXECUTE_CANCEL_100 = 6, // 6: 100% AT Execute/Cancel + E_EVENT_AT_EXECUTE_CANCEL_40 = 7, // 7: 40% AT Execute/Cancel + E_EVENT_SETTING_CHANGE_ENABLE_DISABLE = 8, // 8: Setting Change Enable/Disable + E_EVENT_COMM_WRITING_ENABLE_DISABLE = 9, // 9: Communications Writing Enable/Disable (*3) + E_EVENT_ALARM_LATCH_CANCEL = 10, // 10: Alarm Latch Cancel + E_EVENT_MULTI_SP_SWITCH_BIT_0 = 11, // 11: Multi-SP No. Switch, Bit 0 + E_EVENT_MULTI_SP_SWITCH_BIT_1 = 12, // 12: Multi-SP No. Switch, Bit 1 + E_EVENT_MULTI_SP_SWITCH_BIT_2 = 13 // 13: Multi-SP No. Switch, Bit 2 + + // Notes from manual H175 p5-10: + // (*1) PRST (program start) can be set even when the program pattern is set to OFF, but the function will be disabled. + // (*2) Selection is possible only if there is a remote SP input. + // (*3) Selection is possible only if external communications is supported. }; -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. +/** + * @brief Defines the possible values for the Extraction of Square Root Enable register (0x2E24). + * Enables or disables square root calculation on the input. Level: Initial Setting. + * Uses 4 bytes, write low word. + */ +enum OR_E5_SQRT_ENABLE : uint16_t // Values fit in 16 bits, matches write target +{ + E_SQRT_OFF = E_OFF, // 0: OFF (Default) + E_SQRT_ON = E_ON // 1: ON +}; + +/** + * @brief Defines the possible values for the Alarm Type registers (0x2F00, 0x2F03, 0x2F06, 0x2F09). + * Specifies the condition that triggers the alarm. Level: Advanced Function Setting. + * Uses 4 bytes, write low word. + */ +enum OR_E5_ALARM_TYPE : uint16_t // Values fit in 16 bits, matches write target +{ + E_ALARM_TYPE_ALARM_OFF = 0, // 0: Alarm function OFF + E_ALARM_TYPE_UPPER_LOWER_LIMIT = 1, // 1: Upper- and lower-limit alarm (*1) + E_ALARM_TYPE_UPPER_LIMIT = 2, // 2: Upper-limit alarm + E_ALARM_TYPE_LOWER_LIMIT = 3, // 3: Lower-limit alarm + E_ALARM_TYPE_UPPER_LOWER_RANGE = 4, // 4: Upper- and lower-limit range alarm (*1) + E_ALARM_TYPE_UPPER_LOWER_STANDBY = 5, // 5: Upper- and lower-limit alarm with standby sequence (*1, *2) + E_ALARM_TYPE_UPPER_LIMIT_STANDBY = 6, // 6: Upper-limit alarm with standby sequence (*2) + E_ALARM_TYPE_LOWER_LIMIT_STANDBY = 7, // 7: Lower-limit alarm with standby sequence (*2) + E_ALARM_TYPE_ABS_UPPER_LIMIT = 8, // 8: Absolute-value upper-limit alarm + E_ALARM_TYPE_ABS_LOWER_LIMIT = 9, // 9: Absolute-value lower-limit alarm + E_ALARM_TYPE_ABS_UPPER_STANDBY = 10, // 10: Absolute-value upper-limit alarm with standby sequence (*2) + E_ALARM_TYPE_ABS_LOWER_STANDBY = 11, // 11: Absolute-value lower-limit alarm with standby sequence (*2) + E_ALARM_TYPE_LBA = 12, // 12: LBA (Loop Burnout Alarm) (*3) + E_ALARM_TYPE_PV_CHANGE_RATE = 13, // 13: PV change rate alarm + E_ALARM_TYPE_SP_ABS_UPPER_LIMIT = 14, // 14: SP absolute-value upper-limit alarm + E_ALARM_TYPE_SP_ABS_LOWER_LIMIT = 15, // 15: SP absolute-value lower-limit alarm + E_ALARM_TYPE_MV_ABS_UPPER_LIMIT = 16, // 16: MV absolute-value upper-limit alarm (Use for Heating MV) + E_ALARM_TYPE_MV_ABS_LOWER_LIMIT = 17, // 17: MV absolute-value lower-limit alarm (Use for Heating MV) + E_ALARM_TYPE_RSP_ABS_UPPER_LIMIT = 18, // 18: RSP absolute-value upper-limit alarm (*4) + E_ALARM_TYPE_RSP_ABS_LOWER_LIMIT = 19, // 19: RSP absolute-value lower-limit alarm (*4) + E_ALARM_TYPE_MV_COOL_ABS_UPPER_LIMIT = 20, // 20: MV absolute-value upper-limit alarm (cooling) + E_ALARM_TYPE_MV_COOL_ABS_LOWER_LIMIT = 21, // 21: MV absolute-value lower-limit alarm (cooling) + + // NOTES based on H175 manual: + // (*1) Set upper and lower values individually. + // (*2) Alarm is suppressed until PV enters non-alarm range. See Standby Sequence Reset (0x2F0C). + // (*3) LBA cannot be set for Alarm 2, 3, or 4. + // (*4) Valid only with a remote SP input. +}; + +/** + * @brief Defines the possible values for the Alarm Latch registers (0x2F01, 0x2F04, 0x2F07, 0x2F0A). + * Determines if the alarm output remains ON even after the alarm condition clears. Level: Advanced Function Setting. + * Uses 4 bytes, write low word. + */ +enum OR_E5_ALARM_LATCH : uint16_t // Values fit in 16 bits, matches write target +{ + E_ALARM_LATCH_OFF = E_OFF, // 0: OFF (Default) + E_ALARM_LATCH_ON = E_ON // 1: ON +}; + +/** + * @brief Defines the possible values for the Standby Sequence Reset register (0x2F0C). + * Selects the condition for resetting the standby sequence for alarms with standby. Level: Advanced Function Setting. + * Uses 4 bytes, write low word. + */ +enum OR_E5_STANDBY_SEQUENCE_RESET : uint16_t // Values fit in 16 bits, matches write target +{ + E_STANDBY_RESET_CONDITION_A = 0, // 0: Condition A (Reset when Power ON or RUN/STOP switched from STOP to RUN) + E_STANDBY_RESET_CONDITION_B = 1 // 1: Condition B (Reset when Power ON, RUN/STOP switched from STOP to RUN, or Set Point changed) +}; + +/** + * @brief Defines the possible values for the Auxiliary Output Open in Alarm registers (Aux1: 0x2F0D, Aux2: 0x2F0E, Aux3: 0x2F10, Aux4: 0x2F11). + * Controls whether the specified Aux Output is energized (Close/ON) or de-energized (Open/OFF) when an alarm assigned to it occurs. Level: Advanced Function Setting. + * Uses 4 bytes per register, write low word. + */ +enum OR_E5_AUX_OUTPUT_OPEN_IN_ALARM : uint16_t // Values fit in 16 bits, matches write target +{ + // Terminology assumes standard relay behavior: Close=Energized/ON, Open=De-energized/OFF + E_AUX_OUTPUT_CLOSE_IN_ALARM = 0, // 0: Output is Energized (ON/Closed) when alarm condition is met + E_AUX_OUTPUT_OPEN_IN_ALARM = 1 // 1: Output is De-energized (OFF/Open) when alarm condition is met +}; + +/** + * @brief Defines the possible values for the PV/SP No. 1 Display Selection register (0x3000) + * and PV/SP No. 2 Display Selection register (0x3008). + * Selects the content displayed on the PV/SP display lines. Level: Operator/Adjustment? + * Uses 4 bytes per register, write low word. + */ +enum OR_E5_PV_SP_DISPLAY_SELECT : uint16_t // Values fit in 16 bits, matches write target +{ + E_DISP_NONE = 0, // 0: Nothing displayed + E_DISP_PV_SP = 1, // 1: PV/SP (Standard display) + E_DISP_PV = 2, // 2: PV only + E_DISP_PV_SP_CHAR = 3, // 3: PV/SP (character display, layout may differ) + E_DISP_PV_SP_MV = 4, // 4: PV/SP/MV (Manipulated Value) + E_DISP_PV_SP_MULTI_SP = 5, // 5: PV/SP/Multi-SP No. + E_DISP_PV_SP_SOAK_REMAIN = 6, // 6: PV/SP/Soak time remaining + E_DISP_PV_SP_RAMP_SP = 7, // 7: PV/SP/Ramp SP value + E_DISP_PV_SP_ALARM1_VAL = 8 // 8: PV/SP/Alarm value 1 +}; + +/** + * @brief Defines the possible values for the MV Display Selection register (0x3001). + * Selects which Manipulated Value (Heating or Cooling) is shown when MV is displayed. Level: Operator/Adjustment? + * Uses 4 bytes, write low word. + */ +enum OR_E5_MV_DISPLAY_SELECT : uint16_t // Values fit in 16 bits, matches write target +{ + E_MV_DISP_HEAT = 0, // 0: Display MV (heating) + E_MV_DISP_COOL = 1 // 1: Display MV (cooling) +}; + +/** + * @brief Defines the possible values for the Automatic Display Return Time register (0x3003). + * Sets the time after which the display returns to the default screen. Level: ? + * Uses 4 bytes, write low word. + */ +enum OR_E5_AUTO_DISPLAY_RETURN : uint16_t // Values fit in 16 bits, matches write target +{ + E_AUTO_RETURN_OFF = 0, // 0: Automatic return disabled + // 1 to 99: Time in seconds (e.g., 60 = return after 60 seconds) + E_AUTO_RETURN_MIN_TIME_S = 1, + E_AUTO_RETURN_MAX_TIME_S = 99 +}; + + +/** + * @brief Defines the possible values for the Display Refresh Period register (0x3004). + * Sets the refresh rate for the display. Level: ? + * Uses 4 bytes, write low word. + */ +enum OR_E5_DISPLAY_REFRESH_PERIOD : uint16_t // Values fit in 16 bits, matches write target +{ + E_REFRESH_OFF = 0, // 0: Refresh OFF (not typical, may mean slowest rate?) + E_REFRESH_0_25_S = 1, // 1: 0.25 seconds + E_REFRESH_0_5_S = 2, // 2: 0.5 seconds + E_REFRESH_1_0_S = 3 // 3: 1.0 second +}; + +/** + * @brief Defines the possible values for the PV Status Display Function register (0x3011) + * and SV Status Display Function register (0x3012). + * Selects which status information replaces the PV or SV display under certain conditions. Level: ? + * Uses 4 bytes per register, write low word. + */ +enum OR_E5_STATUS_DISPLAY_FUNC : uint16_t // Values fit in 16 bits, matches write target +{ + E_STAT_DISP_FUNC_OFF = 0, // 0: Status display function OFF + E_STAT_DISP_FUNC_MANUAL = 1, // 1: Display when in Manual Mode + E_STAT_DISP_FUNC_STOP = 2, // 2: Display when in Stop Mode + E_STAT_DISP_FUNC_ALARM_1 = 3, // 3: Display when Alarm 1 is ON + E_STAT_DISP_FUNC_ALARM_2 = 4, // 4: Display when Alarm 2 is ON + E_STAT_DISP_FUNC_ALARM_3 = 5, // 5: Display when Alarm 3 is ON + E_STAT_DISP_FUNC_ALARM_4 = 6, // 6: Display when Alarm 4 is ON + E_STAT_DISP_FUNC_ALARM_1_4_OR = 7, // 7: Display when Any Alarm (1-4) is ON + E_STAT_DISP_FUNC_HEATER_ALARM = 8, // 8: Display when Heater Alarm (HB/HS) is ON + E_STAT_DISP_FUNC_MESSAGE = 9 // 9: Status display message (*1 Selection possible only with the E5GC) +}; /* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; + * TODO: Define enums for Status Bits (Registers 0x2001, 0x2406, 0x2407(High Word), 0x2408, 0x2409(High Word)). + * The specific bit meanings need to be obtained from Section 5-2 ("Status Monitor Table") of the + * Omron E5xC Communications Manual (H175). + * Example bit assignments below are highly speculative and need verification. */ +// --- Placeholder Example Enums for Status Bits (NEEDS VERIFICATION and COMPLETION from H175 Section 5-2) --- /* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): Temp Sensor Disconnected (Specific models?) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - - -#include // Required for uint16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) -enum class E5C_InvertDirectReverse_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation - E_Invert = 0x01, // Reverse operation -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit +/-10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level / PID / Control Parameters (Addresses ~0x2700 - 0x27FF approx. from page 5-4 and 5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting Level / Initial Setting (Addresses ~0x2800 - 0x2DFF) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, See E5C_PVDecimalPointDisplay_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [] - - // --- Operation Level Parameters (Duplicated Address? / Specific Uses) (Addresses ~0x2900 - 0x29FF) --- - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ...) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed. - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50mV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XXX.XX) - E_DP_3 = 3, // Three decimal places (XXX.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) [Advanced Function Setting Level] -enum class E5C_PVDecimalPointDisplay_Param : uint16_t -{ - E_PVDP_OFF = 0, // PV Decimal Point Display OFF - E_PVDP_ON = 1, // PV Decimal Point Display ON -}; - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): Temp Sensor Disconnected (Specific models?) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit +/-10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level / PID / Control Parameters (Addresses ~0x2700 - 0x27FF approx. from page 5-4 and 5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting Level / Initial Setting (Addresses ~0x2800 - 0x2DFF) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, See E5C_PVDecimalPointDisplay_Param) [Advanced Function Setting Level] - - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, See E5C_ST_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0) [Advanced Function Setting Level] - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - - // --- Operation Level Parameters (Duplicated Address? / Specific Uses) (Addresses ~0x2900 - 0x29FF) --- - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ...) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed. - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XXX.XX) - E_DP_3 = 3, // Three decimal places (XXX.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) [Advanced Function Setting Level] -enum class E5C_PVDecimalPointDisplay_Param : uint16_t -{ - E_PVDP_OFF = 0, // PV Decimal Point Display OFF - E_PVDP_ON = 1, // PV Decimal Point Display ON -}; - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) [Initial Setting Level] -enum class E5C_ST_Param : uint16_t -{ - E_Off = 0, // Self-Tuning OFF - E_On = 1, // Self-Tuning ON -}; - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): Temp Sensor Disconnected (Specific models?) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2DFF, Ref Manual Page 5-5/5-6/5-7/5-8) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, See E5C_PVDecimalPointDisplay_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, See E5C_ST_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-9) - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] (Ref Manual Page 5-9) - - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue1=0x2104 configuration) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) [Advanced Function Setting Level] -enum class E5C_PVDecimalPointDisplay_Param : uint16_t -{ - E_PVDP_OFF = 0, // PV Decimal Point Display OFF - E_PVDP_ON = 1, // PV Decimal Point Display ON -}; - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) [Initial Setting Level] -enum class E5C_ST_Param : uint16_t -{ - E_Off = 0, // Self-Tuning OFF - E_On = 1, // Self-Tuning ON -}; - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06) and E_ControlOutput2Assignment (0x2E07) -// Ref Manual Page 5-9. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer - // Note: For OUT2assignment (0x2E07), only values 0-22 are typically valid. Check specific model manual. - // Note: For OUT2assignment linear current output, only values 0-2 may be valid (Not assigned, Heating Out, Cooling Out). Check manual. -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2DFF, Ref Manual Page 5-5/5-6/5-7/5-8) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, See E5C_PVDecimalPointDisplay_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, See E5C_ST_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-9) - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] (Ref Manual Page 5-9) - E_EventInputAssignment1 = 0x2E0A, // Event Input Assignment 1 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment2 = 0x2E0B, // Event Input Assignment 2 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment3 = 0x2E0C, // Event Input Assignment 3 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment4 = 0x2E0D, // Event Input Assignment 4 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment5 = 0x2E0E, // Event Input Assignment 5 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment6 = 0x2E0F, // Event Input Assignment 6 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_AuxiliaryOutput1Assignment = 0x2E10, // Auxiliary Output 1 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput2Assignment = 0x2E11, // Auxiliary Output 2 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput3Assignment = 0x2E12, // Auxiliary Output 3 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput4Assignment = 0x2E13, // Auxiliary Output 4 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_TransferOutputUpperLimit = 0x2E14, // Transfer Output Upper Limit (Writable, Range -1999 to 9999) [Initial Setting Level] (Ref Manual Page 5-10) - E_TransferOutputLowerLimit = 0x2E15, // Transfer Output Lower Limit (Writable, Range -1999 to 9999) [Initial Setting Level] (Ref Manual Page 5-10) - - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue1=0x2104 configuration) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) [Advanced Function Setting Level] -enum class E5C_PVDecimalPointDisplay_Param : uint16_t -{ - E_PVDP_OFF = 0, // PV Decimal Point Display OFF - E_PVDP_ON = 1, // PV Decimal Point Display ON -}; - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) [Initial Setting Level] -enum class E5C_ST_Param : uint16_t -{ - E_Off = 0, // Self-Tuning OFF - E_On = 1, // Self-Tuning ON -}; - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06), E_ControlOutput2Assignment (0x2E07) -// and Auxiliary Output Assignments (0x2E10 - 0x2E13) -// Ref Manual Page 5-9 and 5-10. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1 from page 5-9: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2 from page 5-9) - // Typically NOT applicable to Auxiliary Output Assignments (0x2E10-0x2E13) or OUT2 Assignment (0x2E07) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer -}; - -// Parameters for Event Input Assignments (0x2E0A - 0x2E0F) [Initial Setting Level] -// Ref Manual Page 5-10 -enum class E5C_EventInputAssignment_Param : uint16_t -{ - E_EV_None = 0, // None - E_EV_RunStop = 1, // RUN/STOP - E_EV_AutoManualSwitch = 2, // Auto/Manual Switch - E_EV_ProgramStart = 3, // Program Start (Note *1 from pg 5-10: only if prog pattern is OFF) - E_EV_DirectReverseOperation = 4, // Direct/Reverse Operation switch - E_EV_SPModeSwitch = 5, // SP Mode Switch (Local/Remote) (Note *2 from pg 5-10: only if remote SP input) - E_EV_ATExecuteCancel_100 = 6, // 100% AT Execute/Cancel - E_EV_ATExecuteCancel_40 = 7, // 40% AT Execute/Cancel - E_EV_SettingChangeEnableDisable = 8, // Setting Change Enable/Disable - E_EV_CommsWritingEnableDisable = 9, // Communications Writing Enable/Disable (Note *3 from pg 5-10: only if external comms supported) - E_EV_AlarmLatchCancel = 10, // Alarm Latch Cancel - E_EV_MultiSP_Switch_Bit0 = 11, // Multi-SP No. Switch, Bit 0 - E_EV_MultiSP_Switch_Bit1 = 12, // Multi-SP No. Switch, Bit 1 - E_EV_MultiSP_Switch_Bit2 = 13, // Multi-SP No. Switch, Bit 2 -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2DFF, Ref Manual Page 5-5/5-6/5-7/5-8) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, See E5C_PVDecimalPointDisplay_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, See E5C_ST_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-9) - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] (Ref Manual Page 5-9) - E_EventInputAssignment1 = 0x2E0A, // Event Input Assignment 1 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment2 = 0x2E0B, // Event Input Assignment 2 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment3 = 0x2E0C, // Event Input Assignment 3 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment4 = 0x2E0D, // Event Input Assignment 4 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment5 = 0x2E0E, // Event Input Assignment 5 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment6 = 0x2E0F, // Event Input Assignment 6 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_AuxiliaryOutput1Assignment = 0x2E10, // Auxiliary Output 1 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput2Assignment = 0x2E11, // Auxiliary Output 2 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput3Assignment = 0x2E12, // Auxiliary Output 3 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput4Assignment = 0x2E13, // Auxiliary Output 4 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_TRANSFER_OUTPUT_SCALED_UPPER_LIMIT = 0x2E14, // Transfer Output Scaled Upper Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] (Ref Manual Page 5-10) - E_TRANSFER_OUTPUT_SCALED_LOWER_LIMIT = 0x2E15, // Transfer Output Scaled Lower Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] (Ref Manual Page 5-10) - E_SIMPLE_TRANSFER_OUTPUT1_UPPER_LIMIT = 0x2E16, // Simple Transfer Output 1 Upper Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - E_SIMPLE_TRANSFER_OUTPUT1_LOWER_LIMIT = 0x2E17, // Simple Transfer Output 1 Lower Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue1=0x2104 configuration) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (May modify E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) [Advanced Function Setting Level] -enum class E5C_PVDecimalPointDisplay_Param : uint16_t -{ - E_PVDP_OFF = 0, // PV Decimal Point Display OFF - E_PVDP_ON = 1, // PV Decimal Point Display ON -}; - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) [Initial Setting Level] -enum class E5C_ST_Param : uint16_t -{ - E_Off = 0, // Self-Tuning OFF - E_On = 1, // Self-Tuning ON -}; - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06), E_ControlOutput2Assignment (0x2E07) -// and Auxiliary Output Assignments (0x2E10 - 0x2E13) -// Ref Manual Page 5-9 and 5-10. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1 from page 5-9: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2 from page 5-9) - // Typically NOT applicable to Auxiliary Output Assignments (0x2E10-0x2E13) or OUT2 Assignment (0x2E07) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer -}; - -// Parameters for Event Input Assignments (0x2E0A - 0x2E0F) [Initial Setting Level] -// Ref Manual Page 5-10 -enum class E5C_EventInputAssignment_Param : uint16_t -{ - E_EV_None = 0, // None - E_EV_RunStop = 1, // RUN/STOP - E_EV_AutoManualSwitch = 2, // Auto/Manual Switch - E_EV_ProgramStart = 3, // Program Start (Note *1 from pg 5-10: only if prog pattern is OFF) - E_EV_DirectReverseOperation = 4, // Direct/Reverse Operation switch - E_EV_SPModeSwitch = 5, // SP Mode Switch (Local/Remote) (Note *2 from pg 5-10: only if remote SP input) - E_EV_ATExecuteCancel_100 = 6, // 100% AT Execute/Cancel - E_EV_ATExecuteCancel_40 = 7, // 40% AT Execute/Cancel - E_EV_SettingChangeEnableDisable = 8, // Setting Change Enable/Disable - E_EV_CommsWritingEnableDisable = 9, // Communications Writing Enable/Disable (Note *3 from pg 5-10: only if external comms supported) - E_EV_AlarmLatchCancel = 10, // Alarm Latch Cancel - E_EV_MultiSP_Switch_Bit0 = 11, // Multi-SP No. Switch, Bit 0 - E_EV_MultiSP_Switch_Bit1 = 12, // Multi-SP No. Switch, Bit 1 - E_EV_MultiSP_Switch_Bit2 = 13, // Multi-SP No. Switch, Bit 2 -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2DFF, Ref Manual Page 5-5/5-6/5-7/5-8) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, See E5C_PVDecimalPointDisplay_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, See E5C_ST_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters Continued (Addresses ~0x2E00 - ..., Ref Manual Page 5-8 to 5-12) --- - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ExtractionSquareRootEnable = 0x2E24, // Extraction of Square Root Enable (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_TRAVEL_TIME = 0x2E30, // Travel Time (Position-proportional models?) (Writable, Range: 1 to 999) - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-9) - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] (Ref Manual Page 5-9) - E_EventInputAssignment1 = 0x2E0A, // Event Input Assignment 1 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment2 = 0x2E0B, // Event Input Assignment 2 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment3 = 0x2E0C, // Event Input Assignment 3 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment4 = 0x2E0D, // Event Input Assignment 4 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment5 = 0x2E0E, // Event Input Assignment 5 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_EventInputAssignment6 = 0x2E0F, // Event Input Assignment 6 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] (Ref Manual Page 5-10) - E_AuxiliaryOutput1Assignment = 0x2E10, // Auxiliary Output 1 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput2Assignment = 0x2E11, // Auxiliary Output 2 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput3Assignment = 0x2E12, // Auxiliary Output 3 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_AuxiliaryOutput4Assignment = 0x2E13, // Auxiliary Output 4 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] (Ref Manual Page 5-10) - E_TransferOutputUpperLimit = 0x2E14, // Transfer Output Upper Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] (Ref Manual Page 5-10) - E_TransferOutputLowerLimit = 0x2E15, // Transfer Output Lower Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] (Ref Manual Page 5-10) - E_SimpleTransferOutput1UpperLimit = 0x2E16, // Simple Transfer Output 1 Upper Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - E_SimpleTransferOutput1LowerLimit = 0x2E17, // Simple Transfer Output 1 Lower Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - - // --- Alarm Setup Parameters (Addresses ~0x2F00 - 0x2FFF, Ref Manual Page 5-12) --- - E_ALARM_1_TYPE = 0x2F00, // Alarm 1 Type (Writable, See E5C_AlarmType_Param) - E_ALARM_1_LATCH = 0x2F01, // Alarm 1 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_1_HYSTERESIS = 0x2F02, // Alarm 1 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_2_TYPE = 0x2F03, // Alarm 2 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) - E_ALARM_2_LATCH = 0x2F04, // Alarm 2 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_2_HYSTERESIS = 0x2F05, // Alarm 2 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_3_TYPE = 0x2F06, // Alarm 3 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) - E_ALARM_3_LATCH = 0x2F07, // Alarm 3 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_3_HYSTERESIS = 0x2F08, // Alarm 3 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_4_TYPE = 0x2F09, // Alarm 4 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) - E_ALARM_4_LATCH = 0x2F0A, // Alarm 4 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_4_HYSTERESIS = 0x2F0B, // Alarm 4 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_STANDBY_SEQUENCE_RESET = 0x2F0C, // Standby Sequence Reset Condition (Writable, See E5C_StandbySequenceReset_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_1_OPEN_IN_ALARM = 0x2F0D, // Auxiliary Output 1 Behaviour (Open/Close) if assigned to an Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Generic ON/OFF Parameter (Used by multiple registers) -enum class E5C_OnOff_Param : uint16_t -{ - E_Off = 0x00, - E_On = 0x01, -}; - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) -enum class E5C_PFKeyProtect_Param : uint16_t -{ - E_Off = 0x00, // PF Key Protection OFF - E_On = 0x01, // PF Key Protection ON -}; - -// Parameters for E_ParameterMaskEnable (0x2506) -enum class E5C_ParamMaskEnable_Param : uint16_t -{ - E_Off = 0x00, // Parameter Mask function OFF - E_On = 0x01, // Parameter Mask function ON -}; - -// Parameters for E_ChangedParametersOnly (0x2507) -enum class E5C_ChangedParamsOnly_Param : uint16_t -{ - E_Off = 0x00, // Display all parameters in adjustment level etc. - E_On = 0x01, // Display only parameters changed from default in adjustment level etc. -}; - - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) [Advanced Function Setting Level] -enum class E5C_PVDecimalPointDisplay_Param : uint16_t -{ - E_PVDP_OFF = 0, // PV Decimal Point Display OFF - E_PVDP_ON = 1, // PV Decimal Point Display ON -}; - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) [Initial Setting Level] -enum class E5C_ST_Param : uint16_t -{ - E_Off = 0, // Self-Tuning OFF - E_On = 1, // Self-Tuning ON -}; - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06), E_ControlOutput2Assignment (0x2E07) -// and Auxiliary Output Assignments (0x2E10 - 0x2E13) -// Ref Manual Page 5-9 and 5-10. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1 from page 5-9: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2 from page 5-9) - // Typically NOT applicable to Auxiliary Output Assignments (0x2E10-0x2E13) or OUT2 Assignment (0x2E07) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer -}; - -// Parameters for Event Input Assignments (0x2E0A - 0x2E0F) [Initial Setting Level] -// Ref Manual Page 5-10 -enum class E5C_EventInputAssignment_Param : uint16_t -{ - E_EV_None = 0, // None - E_EV_RunStop = 1, // RUN/STOP - E_EV_AutoManualSwitch = 2, // Auto/Manual Switch - E_EV_ProgramStart = 3, // Program Start (Note *1 from pg 5-10: only if prog pattern is OFF) - E_EV_DirectReverseOperation = 4, // Direct/Reverse Operation switch - E_EV_SPModeSwitch = 5, // SP Mode Switch (Local/Remote) (Note *2 from pg 5-10: only if remote SP input) - E_EV_ATExecuteCancel_100 = 6, // 100% AT Execute/Cancel - E_EV_ATExecuteCancel_40 = 7, // 40% AT Execute/Cancel - E_EV_SettingChangeEnableDisable = 8, // Setting Change Enable/Disable - E_EV_CommsWritingEnableDisable = 9, // Communications Writing Enable/Disable (Note *3 from pg 5-10: only if external comms supported) - E_EV_AlarmLatchCancel = 10, // Alarm Latch Cancel - E_EV_MultiSP_Switch_Bit0 = 11, // Multi-SP No. Switch, Bit 0 - E_EV_MultiSP_Switch_Bit1 = 12, // Multi-SP No. Switch, Bit 1 - E_EV_MultiSP_Switch_Bit2 = 13, // Multi-SP No. Switch, Bit 2 -}; - -// Parameters for Alarm Types (0x2F00, 0x2F03, 0x2F06, 0x2F09) -enum class E5C_AlarmType_Param : uint16_t -{ - E_AlarmFunctionOff = 0, // Alarm function OFF - E_UpperLowerLimit = 1, // Upper and lower-limit alarm - E_UpperLimit = 2, // Upper-limit alarm - E_LowerLimit = 3, // Lower-limit alarm - E_UpperLowerRange = 4, // Upper and lower-limit range alarm - E_UpperLowerLimitStandby = 5, // Upper and lower-limit alarm with standby sequence - E_UpperLimitStandby = 6, // Upper-limit alarm with standby sequence - E_LowerLimitStandby = 7, // Lower-limit alarm with standby sequence - E_AbsoluteUpperLimit = 8, // Absolute-value upper-limit alarm - E_AbsoluteLowerLimit = 9, // Absolute-value lower-limit alarm - E_AbsoluteUpperLimitStandby = 10, // Absolute-value upper-limit alarm with standby sequence - E_AbsoluteLowerLimitStandby = 11, // Absolute-value lower-limit alarm with standby sequence - E_LBA = 12, // LBA (Loop Burnout Alarm) (Not settable for Alarms 2, 3, 4) - E_PVChangeRate = 13, // PV change rate alarm - E_SPAbsoluteUpperLimit = 14, // SP absolute-value upper-limit alarm - E_SPAbsoluteLowerLimit = 15, // SP absolute-value lower-limit alarm - E_MVAbsoluteUpperLimit = 16, // MV absolute-value upper-limit alarm - E_MVAbsoluteLowerLimit = 17, // MV absolute-value lower-limit alarm - E_RSPAbsoluteUpperLimit = 18, // RSP absolute-value upper-limit alarm (Only with remote SP input) - E_RSPAbsoluteLowerLimit = 19, // RSP absolute-value lower-limit alarm (Only with remote SP input) -}; - -// Parameters for Standby Sequence Reset (0x2F0C) [Advanced Function Setting] -enum class E5C_StandbySequenceReset_Param : uint16_t -{ - E_ConditionA = 0, // Condition A (See manual for details) - E_ConditionB = 1, // Condition B (See manual for details) -}; - -// Parameters for Auxiliary Output Open/Close in Alarm (0x2F0D) [Advanced Function Setting] -enum class E5C_AuxOutputOpenInAlarm_Param : uint16_t -{ - E_CloseInAlarm = 0, // Output closes when the assigned alarm is ON - E_OpenInAlarm = 1, // Output opens when the assigned alarm is ON -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - - -// --- Generic Parameter Enums --- - -// Generic ON/OFF Parameter (Used by multiple registers) -enum class E5C_OnOff_Param : uint16_t -{ - E_Off = 0x00, - E_On = 0x01, -}; - - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, See E5C_PFKeyProtect_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, See E5C_ParamMaskEnable_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, See E5C_ChangedParamsOnly_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2FFF, Ref Manual Page 5-5 to 5-13) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, See E5C_PVDecimalPointDisplay_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, See E5C_ST_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ExtractionSquareRootEnable = 0x2E24, // Extraction of Square Root Enable (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_TRAVEL_TIME = 0x2E30, // Travel Time (Position-proportional models?) (Writable, Range: 1 to 999 s) [Initial Setting] - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] - E_EventInputAssignment1 = 0x2E0A, // Event Input Assignment 1 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment2 = 0x2E0B, // Event Input Assignment 2 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment3 = 0x2E0C, // Event Input Assignment 3 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment4 = 0x2E0D, // Event Input Assignment 4 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment5 = 0x2E0E, // Event Input Assignment 5 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment6 = 0x2E0F, // Event Input Assignment 6 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_AuxiliaryOutput1Assignment = 0x2E10, // Auxiliary Output 1 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput2Assignment = 0x2E11, // Auxiliary Output 2 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput3Assignment = 0x2E12, // Auxiliary Output 3 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput4Assignment = 0x2E13, // Auxiliary Output 4 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_TransferOutputUpperLimit = 0x2E14, // Transfer Output Upper Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_TransferOutputLowerLimit = 0x2E15, // Transfer Output Lower Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_SimpleTransferOutput1UpperLimit = 0x2E16, // Simple Transfer Output 1 Upper Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - E_SimpleTransferOutput1LowerLimit = 0x2E17, // Simple Transfer Output 1 Lower Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - - E_ALARM_1_TYPE = 0x2F00, // Alarm 1 Type (Writable, See E5C_AlarmType_Param) [Initial Setting] - E_ALARM_1_LATCH = 0x2F01, // Alarm 1 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_1_HYSTERESIS = 0x2F02, // Alarm 1 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_2_TYPE = 0x2F03, // Alarm 2 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_2_LATCH = 0x2F04, // Alarm 2 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_2_HYSTERESIS = 0x2F05, // Alarm 2 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_3_TYPE = 0x2F06, // Alarm 3 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_3_LATCH = 0x2F07, // Alarm 3 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_3_HYSTERESIS = 0x2F08, // Alarm 3 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_4_TYPE = 0x2F09, // Alarm 4 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_4_LATCH = 0x2F0A, // Alarm 4 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_4_HYSTERESIS = 0x2F0B, // Alarm 4 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_STANDBY_SEQUENCE_RESET = 0x2F0C, // Standby Sequence Reset Condition (Writable, See E5C_StandbySequenceReset_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_1_OPEN_IN_ALARM = 0x2F0D, // Auxiliary Output 1 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_2_OPEN_IN_ALARM = 0x2F0E, // Auxiliary Output 2 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_3_OPEN_IN_ALARM = 0x2F0F, // Auxiliary Output 3 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_4_OPEN_IN_ALARM = 0x2F10, // Auxiliary Output 4 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_ALARM_1_ON_DELAY = 0x2F11, // Alarm 1 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_ON_DELAY = 0x2F12, // Alarm 2 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_ON_DELAY = 0x2F13, // Alarm 3 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_ON_DELAY = 0x2F14, // Alarm 4 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_1_OFF_DELAY = 0x2F15, // Alarm 1 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_OFF_DELAY = 0x2F16, // Alarm 2 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_OFF_DELAY = 0x2F17, // Alarm 3 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_OFF_DELAY = 0x2F18, // Alarm 4 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - - // --- Display/Misc Settings (Addresses ~0x3000 - ..., Ref Manual Page 5-13) --- - E_PV_SP_NO1_DISPLAY_SELECTION = 0x3000, // PV/SP No. 1 Display Selection (Writable, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_MV_DISPLAY_SELECTION = 0x3001, // MV Display Selection (Writable, See E5C_MV_DisplaySelection_Param) [Initial Setting] - E_AUTO_DISPLAY_RETURN_TIME= 0x3003, // Automatic Display Return Time (Writable, Range 0=OFF, 1-99s) [Initial Setting] (See E5C_AutoDisplayReturnTime_SpecialVal) - E_DISPLAY_REFRESH_PERIOD = 0x3004, // Display Refresh Period (Writable, See E5C_DisplayRefreshPeriod_Param) [Initial Setting] - E_PV_SP_NO2_DISPLAY_SELECTION = 0x3008, // PV/SP No. 2 Display Selection (Writable, Range 0-8, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_DISPLAY_BRIGHTNESS = 0x300A, // Display Brightness (Writable, Range 1-3) [Initial Setting] - E_MV_DISPLAY = 0x300B, // MV Display ON/OFF (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_MOVE_TO_PROTECT_LEVEL_TIME = 0x300C, // Move to Protect Level Time (Writable, Range 1-30 s) [Initial Setting] - E_AUTO_MANUAL_SELECT_ADDITION = 0x300F, // Auto/Manual Select Addition (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_PV_STATUS_DISPLAY_FUNCTION = 0x3011, // PV Status Display Function (Writable, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - E_SV_STATUS_DISPLAY_FUNCTION = 0x3012, // SV Status Display Function (Writable, Range 0-9, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) - Reuse E5C_OnOff_Param -// enum class E5C_PFKeyProtect_Param : uint16_t { E_Off = 0x00, E_On = 0x01, }; // PF Key Protection - -// Parameters for E_ParameterMaskEnable (0x2506) - Reuse E5C_OnOff_Param -// enum class E5C_ParamMaskEnable_Param : uint16_t { E_Off = 0x00, E_On = 0x01, }; // Parameter Mask function - -// Parameters for E_ChangedParametersOnly (0x2507) - Reuse E5C_OnOff_Param -// enum class E5C_ChangedParamsOnly_Param : uint16_t { E_Off = 0x00, E_On = 0x01, }; // Display all/changed parameters - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) [Advanced Function Setting Level] - Reuse E5C_OnOff_Param -// enum class E5C_PVDecimalPointDisplay_Param : uint16_t { E_Off = 0, E_On = 1, }; // PV Decimal Point Display - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) [Initial Setting Level] - Reuse E5C_OnOff_Param -// enum class E5C_ST_Param : uint16_t { E_Off = 0, E_On = 1, }; // Self-Tuning - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06), E_ControlOutput2Assignment (0x2E07) -// and Auxiliary Output Assignments (0x2E10 - 0x2E13) -// Ref Manual Page 5-9 and 5-10. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1 from page 5-9: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2 from page 5-9) - // Typically NOT applicable to Auxiliary Output Assignments (0x2E10-0x2E13) or OUT2 Assignment (0x2E07) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer -}; - -// Parameters for Event Input Assignments (0x2E0A - 0x2E0F) [Initial Setting Level] -// Ref Manual Page 5-10 -enum class E5C_EventInputAssignment_Param : uint16_t -{ - E_EV_None = 0, // None - E_EV_RunStop = 1, // RUN/STOP - E_EV_AutoManualSwitch = 2, // Auto/Manual Switch - E_EV_ProgramStart = 3, // Program Start (Note *1 from pg 5-10: only if prog pattern is OFF) - E_EV_DirectReverseOperation = 4, // Direct/Reverse Operation switch - E_EV_SPModeSwitch = 5, // SP Mode Switch (Local/Remote) (Note *2 from pg 5-10: only if remote SP input) - E_EV_ATExecuteCancel_100 = 6, // 100% AT Execute/Cancel - E_EV_ATExecuteCancel_40 = 7, // 40% AT Execute/Cancel - E_EV_SettingChangeEnableDisable = 8, // Setting Change Enable/Disable - E_EV_CommsWritingEnableDisable = 9, // Communications Writing Enable/Disable (Note *3 from pg 5-10: only if external comms supported) - E_EV_AlarmLatchCancel = 10, // Alarm Latch Cancel - E_EV_MultiSP_Switch_Bit0 = 11, // Multi-SP No. Switch, Bit 0 - E_EV_MultiSP_Switch_Bit1 = 12, // Multi-SP No. Switch, Bit 1 - E_EV_MultiSP_Switch_Bit2 = 13, // Multi-SP No. Switch, Bit 2 -}; - -// Parameters for Alarm latch (0x2F01, 0x2F04, 0x2F07, 0x2F0A) - Use E5C_OnOff_Param - -// Parameters for Alarm Types (0x2F00, 0x2F03, 0x2F06, 0x2F09) -enum class E5C_AlarmType_Param : uint16_t -{ - E_AlarmFunctionOff = 0, // Alarm function OFF - E_UpperLowerLimit = 1, // Upper and lower-limit alarm - E_UpperLimit = 2, // Upper-limit alarm - E_LowerLimit = 3, // Lower-limit alarm - E_UpperLowerRange = 4, // Upper and lower-limit range alarm - E_UpperLowerLimitStandby = 5, // Upper and lower-limit alarm with standby sequence - E_UpperLimitStandby = 6, // Upper-limit alarm with standby sequence - E_LowerLimitStandby = 7, // Lower-limit alarm with standby sequence - E_AbsoluteUpperLimit = 8, // Absolute-value upper-limit alarm - E_AbsoluteLowerLimit = 9, // Absolute-value lower-limit alarm - E_AbsoluteUpperLimitStandby = 10, // Absolute-value upper-limit alarm with standby sequence - E_AbsoluteLowerLimitStandby = 11, // Absolute-value lower-limit alarm with standby sequence - E_LBA = 12, // LBA (Loop Burnout Alarm) (Not settable for Alarms 2, 3, 4) - E_PVChangeRate = 13, // PV change rate alarm - E_SPAbsoluteUpperLimit = 14, // SP absolute-value upper-limit alarm - E_SPAbsoluteLowerLimit = 15, // SP absolute-value lower-limit alarm - E_MVAbsoluteUpperLimit = 16, // MV absolute-value upper-limit alarm - E_MVAbsoluteLowerLimit = 17, // MV absolute-value lower-limit alarm - E_RSPAbsoluteUpperLimit = 18, // RSP absolute-value upper-limit alarm (Only with remote SP input) - E_RSPAbsoluteLowerLimit = 19, // RSP absolute-value lower-limit alarm (Only with remote SP input) -}; - -// Parameters for Standby Sequence Reset (0x2F0C) [Advanced Function Setting] -enum class E5C_StandbySequenceReset_Param : uint16_t -{ - E_ConditionA = 0, // Condition A (Reset when deviation enters non-alarm range OR power ON/Run mode start) - E_ConditionB = 1, // Condition B (Reset only when deviation enters non-alarm range) -}; - -// Parameters for Auxiliary Output Open/Close in Alarm (0x2F0D - 0x2F10) [Advanced Function Setting] -enum class E5C_AuxOutputOpenInAlarm_Param : uint16_t -{ - E_CloseInAlarm = 0, // Output CLOSES (becomes energized/active low depending on hardware) when the assigned alarm is ON - E_OpenInAlarm = 1, // Output OPENS (becomes de-energized/active high depending on hardware) when the assigned alarm is ON -}; - -// Parameters for PV/SP No. 1/2 Display Selection (0x3000, 0x3008) -enum class E5C_PVSP_DisplaySelection_Param : uint16_t -{ - E_NothingDisplayed = 0, - E_PV_SP = 1, // PV/SP (Normal display) - E_PV = 2, // PV Only - E_PV_SP_Char = 3, // PV/SP (Character display) - E_PV_SP_MV = 4, // PV/SP/Manipulated Value - E_PV_SP_MultiSP_No = 5, // PV/SP/Multi-SP No. - E_PV_SP_SoakTimeRemain = 6, // PV/SP/Soak time remain - E_PV_SP_RampSP = 7, // PV/SP/Ramp SP - E_PV_SP_AlarmValue1 = 8, // PV/SP/Alarm Value 1 -}; - -// Parameters for MV Display Selection (0x3001) -enum class E5C_MV_DisplaySelection_Param : uint16_t -{ - E_MV_Heating = 0, - E_MV_Cooling = 1, -}; - -// Special value for Auto Display Return Time (0x3003) -enum class E5C_AutoDisplayReturnTime_SpecialVal : uint16_t -{ - E_Off = 0, - // Values 1-99 represent seconds directly -}; - -// Parameters for Display Refresh Period (0x3004) -enum class E5C_DisplayRefreshPeriod_Param : uint16_t -{ - E_Off = 0, // No Refresh (?) - Check Manual for exact meaning - E_0_25s = 1, // 0.25 seconds - E_0_5s = 2, // 0.5 seconds - E_1_0s = 3, // 1.0 second -}; - -// Parameters for MV Display (0x300B) - Reuse E5C_OnOff_Param -// Parameters for Auto/Manual Select Addition (0x300F) - Reuse E5C_OnOff_Param - -// Parameters for PV/SV Status Display Function (0x3011, 0x3012) -enum class E5C_PV_StatusDisplayFunction_Param : uint16_t -{ - E_Off = 0, - E_Manual = 1, // Manual mode status - E_Stop = 2, // Stop status - E_Alarm1 = 3, // Alarm 1 status - E_Alarm2 = 4, // Alarm 2 status - E_Alarm3 = 5, // Alarm 3 status - E_Alarm4 = 6, // Alarm 4 status - E_Alarm1To4_OR_Status = 7, // OR of Alarm 1-4 status - E_HeaterAlarm = 8, // Heater alarm status (HB or HS) - E_StatusDisplayMsg = 9, // Status display message (E5GC only) -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - - -// --- Generic Parameter Enums --- - -// Generic ON/OFF Parameter (Used by multiple registers) -enum class E5C_OnOff_Param : uint16_t -{ - E_Off = 0x00, - E_On = 0x01, -}; - - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, Use E5C_OnOff_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, Use E5C_OnOff_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, Use E5C_OnOff_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2FFF, Ref Manual Page 5-5 to 5-13) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, Use E5C_OnOff_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, Use E5C_OnOff_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ExtractionSquareRootEnable = 0x2E24, // Extraction of Square Root Enable (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_TRAVEL_TIME = 0x2E30, // Travel Time (Position-proportional models?) (Writable, Range: 1 to 999 s) [Initial Setting] - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] - E_EventInputAssignment1 = 0x2E0A, // Event Input Assignment 1 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment2 = 0x2E0B, // Event Input Assignment 2 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment3 = 0x2E0C, // Event Input Assignment 3 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment4 = 0x2E0D, // Event Input Assignment 4 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment5 = 0x2E0E, // Event Input Assignment 5 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment6 = 0x2E0F, // Event Input Assignment 6 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_AuxiliaryOutput1Assignment = 0x2E10, // Auxiliary Output 1 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput2Assignment = 0x2E11, // Auxiliary Output 2 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput3Assignment = 0x2E12, // Auxiliary Output 3 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput4Assignment = 0x2E13, // Auxiliary Output 4 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_TransferOutputScaledUpperLimit = 0x2E14, // Transfer Output Scaled Upper Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_TransferOutputScaledLowerLimit = 0x2E15, // Transfer Output Scaled Lower Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_SimpleTransferOutput1UpperLimit = 0x2E16, // Simple Transfer Output 1 Upper Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - E_SimpleTransferOutput1LowerLimit = 0x2E17, // Simple Transfer Output 1 Lower Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - - E_ALARM_1_TYPE = 0x2F00, // Alarm 1 Type (Writable, See E5C_AlarmType_Param) [Initial Setting] - E_ALARM_1_LATCH = 0x2F01, // Alarm 1 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_1_HYSTERESIS = 0x2F02, // Alarm 1 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_2_TYPE = 0x2F03, // Alarm 2 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_2_LATCH = 0x2F04, // Alarm 2 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_2_HYSTERESIS = 0x2F05, // Alarm 2 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_3_TYPE = 0x2F06, // Alarm 3 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_3_LATCH = 0x2F07, // Alarm 3 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_3_HYSTERESIS = 0x2F08, // Alarm 3 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_4_TYPE = 0x2F09, // Alarm 4 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_4_LATCH = 0x2F0A, // Alarm 4 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_4_HYSTERESIS = 0x2F0B, // Alarm 4 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_STANDBY_SEQUENCE_RESET = 0x2F0C, // Standby Sequence Reset Condition (Writable, See E5C_StandbySequenceReset_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_1_OPEN_IN_ALARM = 0x2F0D, // Auxiliary Output 1 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_2_OPEN_IN_ALARM = 0x2F0E, // Auxiliary Output 2 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_3_OPEN_IN_ALARM = 0x2F0F, // Auxiliary Output 3 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_4_OPEN_IN_ALARM = 0x2F10, // Auxiliary Output 4 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_ALARM_1_ON_DELAY = 0x2F11, // Alarm 1 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_ON_DELAY = 0x2F12, // Alarm 2 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_ON_DELAY = 0x2F13, // Alarm 3 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_ON_DELAY = 0x2F14, // Alarm 4 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_1_OFF_DELAY = 0x2F15, // Alarm 1 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_OFF_DELAY = 0x2F16, // Alarm 2 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_OFF_DELAY = 0x2F17, // Alarm 3 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_OFF_DELAY = 0x2F18, // Alarm 4 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - - // --- Communications Settings / Display/Misc Settings (Addresses ~0x3000 - ..., Ref Manual Page 5-13/5-14) --- - E_PV_SP_NO1_DISPLAY_SELECTION = 0x3000, // PV/SP No. 1 Display Selection (Writable, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_MV_DISPLAY_SELECTION = 0x3001, // MV Display Selection (Writable, See E5C_MV_DisplaySelection_Param) [Initial Setting] - E_AUTO_DISPLAY_RETURN_TIME= 0x3003, // Automatic Display Return Time (Writable, Range 0=OFF, 1-99s) [Initial Setting] (See E5C_AutoDisplayReturnTime_SpecialVal) - E_DISPLAY_REFRESH_PERIOD = 0x3004, // Display Refresh Period (Writable, See E5C_DisplayRefreshPeriod_Param) [Initial Setting] - E_PV_SP_NO2_DISPLAY_SELECTION = 0x3008, // PV/SP No. 2 Display Selection (Writable, Range 0-8, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_DISPLAY_BRIGHTNESS = 0x300A, // Display Brightness (Writable, Range 1-3) [Initial Setting] - E_MV_DISPLAY = 0x300B, // MV Display ON/OFF (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_MOVE_TO_PROTECT_LEVEL_TIME = 0x300C, // Move to Protect Level Time (Writable, Range 1-30 s) [Initial Setting] - E_AUTO_MANUAL_SELECT_ADDITION = 0x300F, // Auto/Manual Select Addition (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_PV_STATUS_DISPLAY_FUNCTION = 0x3011, // PV Status Display Function (Writable, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - E_SV_STATUS_DISPLAY_FUNCTION = 0x3012, // SV Status Display Function (Writable, Range 0-9, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - - E_PROTOCOL_SETTING = 0x3100, // Protocol Setting (Writable, See E5C_ProtocolSetting_Param) [Communications Setting] - E_COMMUNICATIONS_UNIT_NO = 0x3101, // Communications Unit No. (Writable, Range 0-99) [Communications Setting] - E_COMMUNICATIONS_BAUD_RATE= 0x3102, // Communications Baud Rate (Writable, See E5C_BaudRate_Param) [Communications Setting] - E_COMMUNICATIONS_DATA_LENGTH = 0x3103, // Communications Data Length (Writable, See E5C_DataLength_Param) [Communications Setting] - E_COMMUNICATIONS_STOP_BITS= 0x3104, // Communications Stop Bits (Writable, See E5C_StopBits_Param) [Communications Setting] - E_COMMUNICATIONS_PARITY = 0x3105, // Communications Parity (Writable, See E5C_Parity_Param) [Communications Setting] - E_SEND_DATA_WAIT_TIME = 0x3106, // Send Data Wait Time (Writable, Range 0-99 ms?) [Communications Setting] - - // --- PF Key / Advanced Function Settings (Addresses ~0x3200 - ..., Ref Manual Page 5-14) --- - E_PF_SETTING = 0x3200, // PF Setting Assignment (Writable, See E5C_PF_Setting_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_1 = 0x3202, // Monitor/Setting Item 1 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_2 = 0x3203, // Monitor/Setting Item 2 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_3 = 0x3204, // Monitor/Setting Item 3 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_4 = 0x3205, // Monitor/Setting Item 4 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_5 = 0x3206, // Monitor/Setting Item 5 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) - Reuse E5C_OnOff_Param -// Parameters for E_ParameterMaskEnable (0x2506) - Reuse E5C_OnOff_Param -// Parameters for E_ChangedParametersOnly (0x2507) - Reuse E5C_OnOff_Param - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) - Reuse E5C_OnOff_Param - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) - Reuse E5C_OnOff_Param - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06), E_ControlOutput2Assignment (0x2E07) -// and Auxiliary Output Assignments (0x2E10 - 0x2E13) -// Ref Manual Page 5-9 and 5-10. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1 from page 5-9: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2 from page 5-9) - // Typically NOT applicable to Auxiliary Output Assignments (0x2E10-0x2E13) or OUT2 Assignment (0x2E07) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer -}; - -// Parameters for Event Input Assignments (0x2E0A - 0x2E0F) [Initial Setting Level] -// Ref Manual Page 5-10 -enum class E5C_EventInputAssignment_Param : uint16_t -{ - E_EV_None = 0, // None - E_EV_RunStop = 1, // RUN/STOP - E_EV_AutoManualSwitch = 2, // Auto/Manual Switch - E_EV_ProgramStart = 3, // Program Start (Note *1 from pg 5-10: only if prog pattern is OFF) - E_EV_DirectReverseOperation = 4, // Direct/Reverse Operation switch - E_EV_SPModeSwitch = 5, // SP Mode Switch (Local/Remote) (Note *2 from pg 5-10: only if remote SP input) - E_EV_ATExecuteCancel_100 = 6, // 100% AT Execute/Cancel - E_EV_ATExecuteCancel_40 = 7, // 40% AT Execute/Cancel - E_EV_SettingChangeEnableDisable = 8, // Setting Change Enable/Disable - E_EV_CommsWritingEnableDisable = 9, // Communications Writing Enable/Disable (Note *3 from pg 5-10: only if external comms supported) - E_EV_AlarmLatchCancel = 10, // Alarm Latch Cancel - E_EV_MultiSP_Switch_Bit0 = 11, // Multi-SP No. Switch, Bit 0 - E_EV_MultiSP_Switch_Bit1 = 12, // Multi-SP No. Switch, Bit 1 - E_EV_MultiSP_Switch_Bit2 = 13, // Multi-SP No. Switch, Bit 2 -}; - -// Parameters for Alarm Latch (0x2F01, 0x2F04, 0x2F07, 0x2F0A) - Reuse E5C_OnOff_Param - -// Parameters for Alarm Types (0x2F00, 0x2F03, 0x2F06, 0x2F09) -enum class E5C_AlarmType_Param : uint16_t -{ - E_AlarmFunctionOff = 0, // Alarm function OFF - E_UpperLowerLimit = 1, // Upper and lower-limit alarm - E_UpperLimit = 2, // Upper-limit alarm - E_LowerLimit = 3, // Lower-limit alarm - E_UpperLowerRange = 4, // Upper and lower-limit range alarm - E_UpperLowerLimitStandby = 5, // Upper and lower-limit alarm with standby sequence - E_UpperLimitStandby = 6, // Upper-limit alarm with standby sequence - E_LowerLimitStandby = 7, // Lower-limit alarm with standby sequence - E_AbsoluteUpperLimit = 8, // Absolute-value upper-limit alarm - E_AbsoluteLowerLimit = 9, // Absolute-value lower-limit alarm - E_AbsoluteUpperLimitStandby = 10, // Absolute-value upper-limit alarm with standby sequence - E_AbsoluteLowerLimitStandby = 11, // Absolute-value lower-limit alarm with standby sequence - E_LBA = 12, // LBA (Loop Burnout Alarm) (Not settable for Alarms 2, 3, 4) - E_PVChangeRate = 13, // PV change rate alarm - E_SPAbsoluteUpperLimit = 14, // SP absolute-value upper-limit alarm - E_SPAbsoluteLowerLimit = 15, // SP absolute-value lower-limit alarm - E_MVAbsoluteUpperLimit = 16, // MV absolute-value upper-limit alarm - E_MVAbsoluteLowerLimit = 17, // MV absolute-value lower-limit alarm - E_RSPAbsoluteUpperLimit = 18, // RSP absolute-value upper-limit alarm (Only with remote SP input) - E_RSPAbsoluteLowerLimit = 19, // RSP absolute-value lower-limit alarm (Only with remote SP input) -}; - -// Parameters for Standby Sequence Reset (0x2F0C) [Advanced Function Setting] -enum class E5C_StandbySequenceReset_Param : uint16_t -{ - E_ConditionA = 0, // Condition A (Reset when deviation enters non-alarm range OR power ON/Run mode start) - E_ConditionB = 1, // Condition B (Reset only when deviation enters non-alarm range) -}; - -// Parameters for Auxiliary Output Open/Close in Alarm (0x2F0D - 0x2F10) [Advanced Function Setting] -enum class E5C_AuxOutputOpenInAlarm_Param : uint16_t -{ - E_CloseInAlarm = 0, // Output CLOSES (becomes energized/active low depending on hardware) when the assigned alarm is ON - E_OpenInAlarm = 1, // Output OPENS (becomes de-energized/active high depending on hardware) when the assigned alarm is ON -}; - -// Parameters for PV/SP No. 1/2 Display Selection (0x3000, 0x3008) -enum class E5C_PVSP_DisplaySelection_Param : uint16_t -{ - E_NothingDisplayed = 0, - E_PV_SP = 1, // PV/SP (Normal display) - E_PV = 2, // PV Only - E_PV_SP_Char = 3, // PV/SP (Character display) - E_PV_SP_MV = 4, // PV/SP/Manipulated Value - E_PV_SP_MultiSP_No = 5, // PV/SP/Multi-SP No. - E_PV_SP_SoakTimeRemain = 6, // PV/SP/Soak time remain - E_PV_SP_RampSP = 7, // PV/SP/Ramp SP - E_PV_SP_AlarmValue1 = 8, // PV/SP/Alarm Value 1 -}; - -// Parameters for MV Display Selection (0x3001) -enum class E5C_MV_DisplaySelection_Param : uint16_t -{ - E_MV_Heating = 0, - E_MV_Cooling = 1, -}; - -// Special value for Auto Display Return Time (0x3003) -enum class E5C_AutoDisplayReturnTime_SpecialVal : uint16_t -{ - E_Off = 0, - // Values 1-99 represent seconds directly -}; - -// Parameters for Display Refresh Period (0x3004) -enum class E5C_DisplayRefreshPeriod_Param : uint16_t -{ - E_Off = 0, // No Refresh (?) - Check Manual for exact meaning - E_0_25s = 1, // 0.25 seconds - E_0_5s = 2, // 0.5 seconds - E_1_0s = 3, // 1.0 second -}; - -// Parameters for MV Display (0x300B) - Reuse E5C_OnOff_Param -// Parameters for Auto/Manual Select Addition (0x300F) - Reuse E5C_OnOff_Param - -// Parameters for PV/SV Status Display Function (0x3011, 0x3012) -enum class E5C_PV_StatusDisplayFunction_Param : uint16_t -{ - E_Off = 0, - E_Manual = 1, // Manual mode status - E_Stop = 2, // Stop status - E_Alarm1 = 3, // Alarm 1 status - E_Alarm2 = 4, // Alarm 2 status - E_Alarm3 = 5, // Alarm 3 status - E_Alarm4 = 6, // Alarm 4 status - E_Alarm1To4_OR_Status = 7, // OR of Alarm 1-4 status - E_HeaterAlarm = 8, // Heater alarm status (HB or HS) - E_StatusDisplayMsg = 9, // Status display message (E5GC only) -}; - - -// --- Communication Setting Parameters (from page 5-14) --- - -// Parameters for E_PROTOCOL_SETTING (0x3100) -enum class E5C_ProtocolSetting_Param : uint16_t -{ - E_CompoWayF = 0, - E_Modbus = 1, -}; - -// Parameters for E_COMMUNICATIONS_BAUD_RATE (0x3102) -enum class E5C_BaudRate_Param : uint16_t -{ - E_BR_9600 = 3, - E_BR_19200 = 4, - E_BR_38400 = 5, - E_BR_57600 = 6, -}; - -// Parameters for E_COMMUNICATIONS_DATA_LENGTH (0x3103) -enum class E5C_DataLength_Param : uint16_t -{ - E_DL_7_BITS = 7, - E_DL_8_BITS = 8, -}; - -// Parameters for E_COMMUNICATIONS_STOP_BITS (0x3104) -enum class E5C_StopBits_Param : uint16_t -{ - E_SB_1 = 1, - E_SB_2 = 2, -}; - -// Parameters for E_COMMUNICATIONS_PARITY (0x3105) -enum class E5C_Parity_Param : uint16_t -{ - E_None = 0, - E_Even = 1, - E_Odd = 2, -}; - -// Parameters for E_PF_SETTING (0x3200) [Advanced Function Setting] -enum class E5C_PF_Setting_Param : uint16_t -{ - E_Disabled = 0, // PF key function disabled - E_Run = 1, // RUN - E_Stop = 2, // STOP - E_RunStop = 3, // RUN/STOP toggle - E_ATExecuteCancel100 = 4, // Execute/cancel 100% AT - E_ATExecuteCancel40 = 5, // Execute/cancel 40% AT - E_AlarmLatchCancel = 6, // Cancel alarm latch - E_AutoManualSwitch = 7, // Auto/Manual switch - E_MonitorSettingItem = 8, // Switch Monitor/Setting Item - E_DigitShiftKey = 9, // Digit shift key -}; - -// Parameters for Monitor/Setting Items (0x3202 - 0x3206) [Advanced Function Setting] -// Used when E_PF_SETTING = E_MonitorSettingItem (8) -enum class E5C_MonitorSettingItem_Param : uint16_t -{ - E_ITEM_Disabled = 0, - E_ITEM_PV_SP_MultiSP = 1, - E_ITEM_PV_SP_MV = 2, - E_ITEM_PV_SP_SoakTimeRemain = 3, - E_ITEM_ProportionalBand = 4, - E_ITEM_IntegralTime = 5, - E_ITEM_DerivativeTime = 6, - E_ITEM_AlarmValue1 = 7, - E_ITEM_AlarmValueUpperLimit1 = 8, - E_ITEM_AlarmValueLowerLimit1 = 9, - E_ITEM_AlarmValue2 = 10, - E_ITEM_AlarmValueUpperLimit2 = 11, - E_ITEM_AlarmValueLowerLimit2 = 12, - E_ITEM_AlarmValue3 = 13, - E_ITEM_AlarmValueUpperLimit3 = 14, - E_ITEM_AlarmValueLowerLimit3 = 15, - E_ITEM_AlarmValue4 = 16, - E_ITEM_AlarmValueUpperLimit4 = 17, - E_ITEM_AlarmValueLowerLimit4 = 18, - E_ITEM_PV_SP_InternalSetPoint = 19, - E_ITEM_PV_SP_AlarmValue1_Alt = 20, // Different display? Name matches item 7 - E_ITEM_ProportionalBand_Cooling = 21, - E_ITEM_IntegralTime_Cooling = 22, - E_ITEM_DerivativeTime_Cooling = 23, -}; - - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - - -// --- Generic Parameter Enums --- - -// Generic ON/OFF Parameter (Used by multiple registers) -enum class E5C_OnOff_Param : uint16_t -{ - E_Off = 0x00, - E_On = 0x01, -}; - - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, Use E5C_OnOff_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, Use E5C_OnOff_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, Use E5C_OnOff_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2FFF, Ref Manual Page 5-5 to 5-13) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, Use E5C_OnOff_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, Use E5C_OnOff_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ExtractionSquareRootEnable = 0x2E24, // Extraction of Square Root Enable (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_TRAVEL_TIME = 0x2E30, // Travel Time (Position-proportional models?) (Writable, Range: 1 to 999 s) [Initial Setting] - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] - E_EventInputAssignment1 = 0x2E0A, // Event Input Assignment 1 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment2 = 0x2E0B, // Event Input Assignment 2 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment3 = 0x2E0C, // Event Input Assignment 3 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment4 = 0x2E0D, // Event Input Assignment 4 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment5 = 0x2E0E, // Event Input Assignment 5 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment6 = 0x2E0F, // Event Input Assignment 6 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_AuxiliaryOutput1Assignment = 0x2E10, // Auxiliary Output 1 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput2Assignment = 0x2E11, // Auxiliary Output 2 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput3Assignment = 0x2E12, // Auxiliary Output 3 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput4Assignment = 0x2E13, // Auxiliary Output 4 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_TransferOutputScaledUpperLimit = 0x2E14, // Transfer Output Scaled Upper Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_TransferOutputScaledLowerLimit = 0x2E15, // Transfer Output Scaled Lower Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_SimpleTransferOutput1UpperLimit = 0x2E16, // Simple Transfer Output 1 Upper Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - E_SimpleTransferOutput1LowerLimit = 0x2E17, // Simple Transfer Output 1 Lower Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - - E_ALARM_1_TYPE = 0x2F00, // Alarm 1 Type (Writable, See E5C_AlarmType_Param) [Initial Setting] - E_ALARM_1_LATCH = 0x2F01, // Alarm 1 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_1_HYSTERESIS = 0x2F02, // Alarm 1 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_2_TYPE = 0x2F03, // Alarm 2 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_2_LATCH = 0x2F04, // Alarm 2 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_2_HYSTERESIS = 0x2F05, // Alarm 2 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_3_TYPE = 0x2F06, // Alarm 3 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_3_LATCH = 0x2F07, // Alarm 3 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_3_HYSTERESIS = 0x2F08, // Alarm 3 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_4_TYPE = 0x2F09, // Alarm 4 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_4_LATCH = 0x2F0A, // Alarm 4 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_4_HYSTERESIS = 0x2F0B, // Alarm 4 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_STANDBY_SEQUENCE_RESET = 0x2F0C, // Standby Sequence Reset Condition (Writable, See E5C_StandbySequenceReset_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_1_OPEN_IN_ALARM = 0x2F0D, // Auxiliary Output 1 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_2_OPEN_IN_ALARM = 0x2F0E, // Auxiliary Output 2 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_3_OPEN_IN_ALARM = 0x2F0F, // Auxiliary Output 3 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_4_OPEN_IN_ALARM = 0x2F10, // Auxiliary Output 4 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_ALARM_1_ON_DELAY = 0x2F11, // Alarm 1 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_ON_DELAY = 0x2F12, // Alarm 2 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_ON_DELAY = 0x2F13, // Alarm 3 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_ON_DELAY = 0x2F14, // Alarm 4 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_1_OFF_DELAY = 0x2F15, // Alarm 1 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_OFF_DELAY = 0x2F16, // Alarm 2 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_OFF_DELAY = 0x2F17, // Alarm 3 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_OFF_DELAY = 0x2F18, // Alarm 4 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - - // --- Communications Settings / Display/Misc Settings (Addresses ~0x3000 - ..., Ref Manual Page 5-13/5-14) --- - E_PV_SP_NO1_DISPLAY_SELECTION = 0x3000, // PV/SP No. 1 Display Selection (Writable, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_MV_DISPLAY_SELECTION = 0x3001, // MV Display Selection (Writable, See E5C_MV_DisplaySelection_Param) [Initial Setting] - E_AUTO_DISPLAY_RETURN_TIME= 0x3003, // Automatic Display Return Time (Writable, Range 0=OFF, 1-99s) [Initial Setting] (See E5C_AutoDisplayReturnTime_SpecialVal) - E_DISPLAY_REFRESH_PERIOD = 0x3004, // Display Refresh Period (Writable, See E5C_DisplayRefreshPeriod_Param) [Initial Setting] - E_PV_SP_NO2_DISPLAY_SELECTION = 0x3008, // PV/SP No. 2 Display Selection (Writable, Range 0-8, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_DISPLAY_BRIGHTNESS = 0x300A, // Display Brightness (Writable, Range 1-3) [Initial Setting] - E_MV_DISPLAY = 0x300B, // MV Display ON/OFF (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_MOVE_TO_PROTECT_LEVEL_TIME = 0x300C, // Move to Protect Level Time (Writable, Range 1-30 s) [Initial Setting] - E_AUTO_MANUAL_SELECT_ADDITION = 0x300F, // Auto/Manual Select Addition (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_PV_STATUS_DISPLAY_FUNCTION = 0x3011, // PV Status Display Function (Writable, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - E_SV_STATUS_DISPLAY_FUNCTION = 0x3012, // SV Status Display Function (Writable, Range 0-9, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - - E_PROTOCOL_SETTING = 0x3100, // Protocol Setting (Writable, See E5C_ProtocolSetting_Param) [Communications Setting] - E_COMMUNICATIONS_UNIT_NO = 0x3101, // Communications Unit No. (Writable, Range 0-99) [Communications Setting] - E_COMMUNICATIONS_BAUD_RATE= 0x3102, // Communications Baud Rate (Writable, See E5C_BaudRate_Param) [Communications Setting] - E_COMMUNICATIONS_DATA_LENGTH = 0x3103, // Communications Data Length (Writable, See E5C_DataLength_Param) [Communications Setting] - E_COMMUNICATIONS_STOP_BITS= 0x3104, // Communications Stop Bits (Writable, See E5C_StopBits_Param) [Communications Setting] - E_COMMUNICATIONS_PARITY = 0x3105, // Communications Parity (Writable, See E5C_Parity_Param) [Communications Setting] - E_SEND_DATA_WAIT_TIME = 0x3106, // Send Data Wait Time (Writable, Range 0-99 ms) [Communications Setting] - - // --- PF Key / Advanced Function Settings (Addresses ~0x3200 - ..., Ref Manual Page 5-14) --- - E_PF_SETTING = 0x3200, // PF Setting Assignment (Writable, See E5C_PF_Setting_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_1 = 0x3202, // Monitor/Setting Item 1 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_2 = 0x3203, // Monitor/Setting Item 2 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_3 = 0x3204, // Monitor/Setting Item 3 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_4 = 0x3205, // Monitor/Setting Item 4 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_5 = 0x3206, // Monitor/Setting Item 5 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - - // --- Advanced Function Settings Continued (Addresses ~0x3300 - ..., Ref Manual Page 5-15) --- - E_SP_TRACKING = 0x3301, // SP Tracking (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_PV_DEAD_BAND = 0x3304, // PV Dead Band (Writeable, Range: H'0000 to H'270F or 0 to 9999) [Advanced Function Setting] - E_COLD_JUNCTION_COMPENSATION = 0x3305, // Cold Junction Compensation Method (Writeable, Use E5C_OnOff_Param. Note: Setting to OFF may require specific conditions) [Advanced Function Setting] - E_INTEGRAL_DERIVATIVE_TIME_UNIT = 0x3309, // Integral/Derivative Time Unit (Writeable, See E5C_IntegralDerivativeTimeUnit_Param) [Advanced Function Setting] - E_ALPHA = 0x330A, // Alpha (α) parameter (Writeable, Range: H'0000 to H'0064 or 0.00 to 1.00) [Advanced Function Setting] - E_MANUAL_OUTPUT_METHOD = 0x330C, // Manual Output Method (Writeable, See E5C_ManualOutputMethod_Param) [Advanced Function Setting] - E_MANUAL_MV_INITIAL_VALUE = 0x330D, // Manual MV Initial Value (Writeable, Range: -5.0 to 105.0 or -105.0 to 105.0, depends on control type) [Advanced Function Setting] - E_AT_CALCULATED_GAIN = 0x330F, // AT Calculated Gain value (Writeable, Range: H'0001 to H'0064 or 0.1 to 10.0) [Advanced Function Setting] - E_AT_HYSTERESIS = 0x3310, // AT Hysteresis (Writeable, Range: 0.1 to 999.9 Temp / 0.01 to 9.99 Analog) [Advanced Function Setting] - E_LIMIT_CYCLE_MV_AMPLITUDE= 0x3311, // Limit Cycle MV Amplitude (Writeable, Range: H'0032 to H'01F4 or 5.0 to 50.0) [Advanced Function Setting] - E_HEATER_BURNOUT_LATCH = 0x3314, // Heater Burnout Latch (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_HEATER_BURNOUT_HYSTERESIS = 0x3315, // Heater Burnout Hysteresis (Writeable, Range: H'0001 to H'01F4 or 0.1 to 50.0 A) [Advanced Function Setting] - E_HS_ALARM_LATCH = 0x3316, // HS Alarm Latch (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_HS_ALARM_HYSTERESIS = 0x3317, // HS Alarm Hysteresis (Writeable, Range: H'0001 to H'01F4 or 0.1 to 50.0 A) [Advanced Function Setting] - E_NUMBER_OF_MULTI_SP_POINTS = 0x331B, // Number of Multi-SP Points (Writeable, See E5C_NumberOfMultiSP_Param) [Advanced Function Setting] - E_HB_ON_OFF = 0x331C, // HB (Heater Break?) ON/OFF (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_INTEGRATED_ALARM_ASSIGNMENT = 0x331E, // Integrated Alarm Assignment (Bitmask) (Writeable, Range: H'0000 to H'00FF or 0 to 255) [Advanced Function Setting] - E_MV_AT_STOP_AND_ERROR_ADDITION = 0x3320, // MV at Stop and Error Addition (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ST_STABLE_RANGE = 0x3321, // ST Stable Range (Writeable, Range: H'0001 to H'270F or 0.1 to 999.9) [Advanced Function Setting] - E_RT_FLAG = 0x3322, // RT Flag ( unclear meaning, from "RT" ) (Writeable, Use E5C_OnOff_Param. Note: Valid only with temp input) [Advanced Function Setting] - E_HS_ALARM_USE = 0x3323, // HS Alarm Use (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_LBA_DETECTION_TIME = 0x3324, // LBA Detection Time (Writeable, Range: H'0000 to H'270F or 0 to 9999 s?) [Advanced Function Setting] - E_LBA_LEVEL = 0x3325, // LBA Level (Writeable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Advanced Function Setting] - E_LBA_BAND = 0x3326, // LBA Band (Writeable, Range: 0.0 to 999.9 Temp / 0.00 to 99.99 Analog) [Advanced Function Setting] - E_SOAK_TIME_UNIT = 0x3327, // Soak Time Unit (Writeable, See E5C_SoakTimeUnit_Param) [Advanced Function Setting] - E_ALARM_SP_SELECTION = 0x3328, // Alarm SP Selection (Writeable, See E5C_AlarmSPSelection_Param) [Advanced Function Setting] - E_REMOTE_SP_ENABLE = 0x3329, // Remote SP Enable (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_MANUAL_MV_LIMIT_ENABLE = 0x332B, // Manual MV Limit Enable (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_DIRECT_SETTING_POS_PROP_MV = 0x332C, // Direct Setting of Position Proportional MV (Writeable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_PV_RATE_OF_CHANGE_CALC_PERIOD = 0x332D, // PV Rate of Change Calculation Period (Writeable, Range: H'0001 to H'03E7 or 1 to 999) [Advanced Function Setting] - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) - Reuse E5C_OnOff_Param -// Parameters for E_ParameterMaskEnable (0x2506) - Reuse E5C_OnOff_Param -// Parameters for E_ChangedParametersOnly (0x2507) - Reuse E5C_OnOff_Param - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) - Reuse E5C_OnOff_Param - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) - Reuse E5C_OnOff_Param - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06), E_ControlOutput2Assignment (0x2E07) -// and Auxiliary Output Assignments (0x2E10 - 0x2E13) -// Ref Manual Page 5-9 and 5-10. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1 from page 5-9: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2 from page 5-9) - // Typically NOT applicable to Auxiliary Output Assignments (0x2E10-0x2E13) or OUT2 Assignment (0x2E07) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer -}; - -// Parameters for Event Input Assignments (0x2E0A - 0x2E0F) [Initial Setting Level] -// Ref Manual Page 5-10 -enum class E5C_EventInputAssignment_Param : uint16_t -{ - E_EV_None = 0, // None - E_EV_RunStop = 1, // RUN/STOP - E_EV_AutoManualSwitch = 2, // Auto/Manual Switch - E_EV_ProgramStart = 3, // Program Start (Note *1 from pg 5-10: only if prog pattern is OFF) - E_EV_DirectReverseOperation = 4, // Direct/Reverse Operation switch - E_EV_SPModeSwitch = 5, // SP Mode Switch (Local/Remote) (Note *2 from pg 5-10: only if remote SP input) - E_EV_ATExecuteCancel_100 = 6, // 100% AT Execute/Cancel - E_EV_ATExecuteCancel_40 = 7, // 40% AT Execute/Cancel - E_EV_SettingChangeEnableDisable = 8, // Setting Change Enable/Disable - E_EV_CommsWritingEnableDisable = 9, // Communications Writing Enable/Disable (Note *3 from pg 5-10: only if external comms supported) - E_EV_AlarmLatchCancel = 10, // Alarm Latch Cancel - E_EV_MultiSP_Switch_Bit0 = 11, // Multi-SP No. Switch, Bit 0 - E_EV_MultiSP_Switch_Bit1 = 12, // Multi-SP No. Switch, Bit 1 - E_EV_MultiSP_Switch_Bit2 = 13, // Multi-SP No. Switch, Bit 2 -}; - -// Parameters for Alarm Latch (0x2F01, 0x2F04, 0x2F07, 0x2F0A) - Use E5C_OnOff_Param - -// Parameters for Alarm Types (0x2F00, 0x2F03, 0x2F06, 0x2F09) -enum class E5C_AlarmType_Param : uint16_t -{ - E_AlarmFunctionOff = 0, // Alarm function OFF - E_UpperLowerLimit = 1, // Upper and lower-limit alarm - E_UpperLimit = 2, // Upper-limit alarm - E_LowerLimit = 3, // Lower-limit alarm - E_UpperLowerRange = 4, // Upper and lower-limit range alarm - E_UpperLowerLimitStandby = 5, // Upper and lower-limit alarm with standby sequence - E_UpperLimitStandby = 6, // Upper-limit alarm with standby sequence - E_LowerLimitStandby = 7, // Lower-limit alarm with standby sequence - E_AbsoluteUpperLimit = 8, // Absolute-value upper-limit alarm - E_AbsoluteLowerLimit = 9, // Absolute-value lower-limit alarm - E_AbsoluteUpperLimitStandby = 10, // Absolute-value upper-limit alarm with standby sequence - E_AbsoluteLowerLimitStandby = 11, // Absolute-value lower-limit alarm with standby sequence - E_LBA = 12, // LBA (Loop Burnout Alarm) (Not settable for Alarms 2, 3, 4) - E_PVChangeRate = 13, // PV change rate alarm - E_SPAbsoluteUpperLimit = 14, // SP absolute-value upper-limit alarm - E_SPAbsoluteLowerLimit = 15, // SP absolute-value lower-limit alarm - E_MVAbsoluteUpperLimit = 16, // MV absolute-value upper-limit alarm - E_MVAbsoluteLowerLimit = 17, // MV absolute-value lower-limit alarm - E_RSPAbsoluteUpperLimit = 18, // RSP absolute-value upper-limit alarm (Only with remote SP input) - E_RSPAbsoluteLowerLimit = 19, // RSP absolute-value lower-limit alarm (Only with remote SP input) -}; - -// Parameters for Standby Sequence Reset (0x2F0C) [Advanced Function Setting] -enum class E5C_StandbySequenceReset_Param : uint16_t -{ - E_ConditionA = 0, // Condition A (Reset when deviation enters non-alarm range OR power ON/Run mode start) - E_ConditionB = 1, // Condition B (Reset only when deviation enters non-alarm range) -}; - -// Parameters for Auxiliary Output Open/Close in Alarm (0x2F0D - 0x2F10) [Advanced Function Setting] -enum class E5C_AuxOutputOpenInAlarm_Param : uint16_t -{ - E_CloseInAlarm = 0, // Output CLOSES (becomes energized/active low depending on hardware) when the assigned alarm is ON - E_OpenInAlarm = 1, // Output OPENS (becomes de-energized/active high depending on hardware) when the assigned alarm is ON -}; - -// Parameters for PV/SP No. 1/2 Display Selection (0x3000, 0x3008) -enum class E5C_PVSP_DisplaySelection_Param : uint16_t -{ - E_NothingDisplayed = 0, - E_PV_SP = 1, // PV/SP (Normal display) - E_PV = 2, // PV Only - E_PV_SP_Char = 3, // PV/SP (Character display) - E_PV_SP_MV = 4, // PV/SP/Manipulated Value - E_PV_SP_MultiSP_No = 5, // PV/SP/Multi-SP No. - E_PV_SP_SoakTimeRemain = 6, // PV/SP/Soak time remain - E_PV_SP_RampSP = 7, // PV/SP/Ramp SP - E_PV_SP_AlarmValue1 = 8, // PV/SP/Alarm Value 1 -}; - -// Parameters for MV Display Selection (0x3001) -enum class E5C_MV_DisplaySelection_Param : uint16_t -{ - E_MV_Heating = 0, - E_MV_Cooling = 1, -}; - -// Special value for Auto Display Return Time (0x3003) -enum class E5C_AutoDisplayReturnTime_SpecialVal : uint16_t -{ - E_Off = 0, - // Values 1-99 represent seconds directly -}; - -// Parameters for Display Refresh Period (0x3004) -enum class E5C_DisplayRefreshPeriod_Param : uint16_t -{ - E_Off = 0, // No Refresh (?) - Check Manual for exact meaning - E_0_25s = 1, // 0.25 seconds - E_0_5s = 2, // 0.5 seconds - E_1_0s = 3, // 1.0 second -}; - -// Parameters for MV Display (0x300B) - Reuse E5C_OnOff_Param -// Parameters for Auto/Manual Select Addition (0x300F) - Reuse E5C_OnOff_Param - -// Parameters for PV/SV Status Display Function (0x3011, 0x3012) -enum class E5C_PV_StatusDisplayFunction_Param : uint16_t -{ - E_Off = 0, - E_Manual = 1, // Manual mode status - E_Stop = 2, // Stop status - E_Alarm1 = 3, // Alarm 1 status - E_Alarm2 = 4, // Alarm 2 status - E_Alarm3 = 5, // Alarm 3 status - E_Alarm4 = 6, // Alarm 4 status - E_Alarm1To4_OR_Status = 7, // OR of Alarm 1-4 status - E_HeaterAlarm = 8, // Heater alarm status (HB or HS) - E_StatusDisplayMsg = 9, // Status display message (E5GC only) -}; - - -// --- Communication Setting Parameters (from page 5-14) --- - -// Parameters for E_PROTOCOL_SETTING (0x3100) -enum class E5C_ProtocolSetting_Param : uint16_t -{ - E_CompoWayF = 0, - E_Modbus = 1, -}; - -// Parameters for E_COMMUNICATIONS_BAUD_RATE (0x3102) -enum class E5C_BaudRate_Param : uint16_t -{ - E_BR_9600 = 3, - E_BR_19200 = 4, - E_BR_38400 = 5, - E_BR_57600 = 6, -}; - -// Parameters for E_COMMUNICATIONS_DATA_LENGTH (0x3103) -enum class E5C_DataLength_Param : uint16_t -{ - E_DL_7_BITS = 7, - E_DL_8_BITS = 8, -}; - -// Parameters for E_COMMUNICATIONS_STOP_BITS (0x3104) -enum class E5C_StopBits_Param : uint16_t -{ - E_SB_1 = 1, - E_SB_2 = 2, -}; - -// Parameters for E_COMMUNICATIONS_PARITY (0x3105) -enum class E5C_Parity_Param : uint16_t -{ - E_None = 0, - E_Even = 1, - E_Odd = 2, -}; - -// Parameters for E_PF_SETTING (0x3200) [Advanced Function Setting] -enum class E5C_PF_Setting_Param : uint16_t -{ - E_Disabled = 0, // PF key function disabled - E_Run = 1, // RUN - E_Stop = 2, // STOP - E_RunStop = 3, // RUN/STOP toggle - E_ATExecuteCancel100 = 4, // Execute/cancel 100% AT - E_ATExecuteCancel40 = 5, // Execute/cancel 40% AT - E_AlarmLatchCancel = 6, // Cancel alarm latch - E_AutoManualSwitch = 7, // Auto/Manual switch - E_MonitorSettingItem = 8, // Switch Monitor/Setting Item - E_DigitShiftKey = 9, // Digit shift key -}; - -// Parameters for Monitor/Setting Items (0x3202 - 0x3206) [Advanced Function Setting] -// Used when E_PF_SETTING = E_MonitorSettingItem (8) -enum class E5C_MonitorSettingItem_Param : uint16_t -{ - E_ITEM_Disabled = 0, - E_ITEM_PV_SP_MultiSP = 1, - E_ITEM_PV_SP_MV = 2, - E_ITEM_PV_SP_SoakTimeRemain = 3, - E_ITEM_ProportionalBand = 4, - E_ITEM_IntegralTime = 5, - E_ITEM_DerivativeTime = 6, - E_ITEM_AlarmValue1 = 7, - E_ITEM_AlarmValueUpperLimit1 = 8, - E_ITEM_AlarmValueLowerLimit1 = 9, - E_ITEM_AlarmValue2 = 10, - E_ITEM_AlarmValueUpperLimit2 = 11, - E_ITEM_AlarmValueLowerLimit2 = 12, - E_ITEM_AlarmValue3 = 13, - E_ITEM_AlarmValueUpperLimit3 = 14, - E_ITEM_AlarmValueLowerLimit3 = 15, - E_ITEM_AlarmValue4 = 16, - E_ITEM_AlarmValueUpperLimit4 = 17, - E_ITEM_AlarmValueLowerLimit4 = 18, - E_ITEM_PV_SP_InternalSetPoint = 19, - E_ITEM_PV_SP_AlarmValue1_Alt = 20, // Different display? Name matches item 7 - E_ITEM_ProportionalBand_Cooling = 21, - E_ITEM_IntegralTime_Cooling = 22, - E_ITEM_DerivativeTime_Cooling = 23, -}; - - -// --- Parameter Enums Added from Page 5-15 --- - -// Parameters for E_INTEGRAL_DERIVATIVE_TIME_UNIT (0x3309) -enum class E5C_IntegralDerivativeTimeUnit_Param : uint16_t -{ - E_Unit_1_Sec = 0, - E_Unit_0_1_Sec = 1, -}; - -// Parameters for E_MANUAL_OUTPUT_METHOD (0x330C) -enum class E5C_ManualOutputMethod_Param : uint16_t -{ - E_Hold = 0, // Hold last value - E_Init = 1, // Use Manual MV Initial Value (0x330D) -}; - -// Parameters for E_NUMBER_OF_MULTI_SP_POINTS (0x331B) -enum class E5C_NumberOfMultiSP_Param : uint16_t -{ - E_MultiSP_Off = 1, // Multi-SP function disabled - E_MultiSP_2 = 2, // 2 SPs enabled (SP0, SP1) - E_MultiSP_3 = 3, // 3 SPs enabled (SP0-SP2) - E_MultiSP_4 = 4, // 4 SPs enabled (SP0-SP3) - E_MultiSP_5 = 5, // 5 SPs enabled (SP0-SP4) - E_MultiSP_6 = 6, // 6 SPs enabled (SP0-SP5) - E_MultiSP_7 = 7, // 7 SPs enabled (SP0-SP6) - E_MultiSP_8 = 8, // 8 SPs enabled (SP0-SP7) -}; - -// Parameters for E_SOAK_TIME_UNIT (0x3327) -enum class E5C_SoakTimeUnit_Param : uint16_t -{ - E_Minutes = 0, - E_Hours = 1, - E_Seconds = 2, // Note: E5GC only -}; - -// Parameters for E_ALARM_SP_SELECTION (0x3328) -enum class E5C_AlarmSPSelection_Param : uint16_t -{ - E_SetPointDuringSPRamp = 0, - E_SetPoint = 1, -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP - - -#ifndef E5C_MODBUS_REGISTERS_HPP -#define E5C_MODBUS_REGISTERS_HPP - -#include // Required for uint16_t and int16_t - -// --- E5C Modbus Command Codes --- -// Represents the Command Codes used for various operations on the E5C device. -// These codes are typically written to a specific command register (often 0x0000) via Modbus. -enum class E5C_CommandCode : uint16_t -{ - E_CommunicationsWriting = 0x00, // Controls Modbus communications writing (enable/disable) - E_RunStop = 0x01, // Starts or stops control operation - E_MultiSP = 0x02, // Selects the target Set Point (SP) number (0-7) - E_ATExecuteCancel = 0x03, // Executes or cancels Auto-Tuning (AT) - E_WriteMode = 0x04, // Selects the write mode (Backup or RAM only) - E_SaveRAMData = 0x05, // Saves data from RAM to non-volatile memory (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_SoftwareReset = 0x06, // Performs a software reset (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToSetupArea1 = 0x07, // Moves operation to Setup Area 1 (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_MoveToProtectLevel = 0x08, // Moves operation to the Protect Level (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AutoManualSwitch = 0x09, // Switches between Automatic and Manual control mode - E_ParameterInitialization = 0x0B, // Initializes parameters to default values (Related Info: E5C_COMMAND_PARAM_DEFAULT) - E_AlarmLatchCancel = 0x0C, // Cancels specified latched alarms - E_SPMode = 0x0D, // Selects Set Point (SP) mode (Local or Remote) - E_InvertDirectReverse = 0x0E, // Selects direct or reverse operation (Invert/Not Invert) via Command - E_ProgramStart = 0x11, // Starts or resets a program pattern -}; - -// --- Parameter Enums for Specific Command Codes --- -// These enums define the valid "Related Information" values (data) sent with specific commands. - -// Parameters for E_CommunicationsWriting (0x00) -enum class E5C_CommWrite_Param : uint16_t -{ - E_OffDisabled = 0x00, - E_OnEnabled = 0x01, -}; - -// Parameters for E_RunStop (0x01) -enum class E5C_RunStop_Param : uint16_t -{ - E_Run = 0x00, - E_Stop = 0x01, -}; - -// Parameters for E_MultiSP (0x02) -enum class E5C_MultiSP_Param : uint16_t -{ - E_SetPoint0 = 0x00, - E_SetPoint1 = 0x01, - E_SetPoint2 = 0x02, - E_SetPoint3 = 0x03, - E_SetPoint4 = 0x04, - E_SetPoint5 = 0x05, - E_SetPoint6 = 0x06, - E_SetPoint7 = 0x07, -}; - -// Parameters for E_ATExecuteCancel (0x03) -enum class E5C_ATExecuteCancel_Param : uint16_t -{ - E_ATCancel = 0x00, // Cancel Auto-Tuning - E_ATExecute100Pct = 0x01, // Execute 100% Auto-Tuning - E_ATEexecute40Pct = 0x02, // Execute 40% Auto-Tuning -}; - -// Parameters for E_WriteMode (0x04) -enum class E5C_WriteMode_Param : uint16_t -{ - E_Backup = 0x00, // Writes are backed up to non-volatile memory - E_RAMWriteMode = 0x01, // Writes affect RAM only -}; - -// Parameters for E_AutoManualSwitch (0x09) -enum class E5C_AutoManualSwitch_Param : uint16_t -{ - E_AutomaticMode = 0x00, - E_ManualMode = 0x01, -}; - -// Parameters for E_AlarmLatchCancel (0x0C) -enum class E5C_AlarmLatchCancel_Param : uint16_t -{ - E_Alarm1LatchCancel = 0x00, - E_Alarm2LatchCancel = 0x01, - E_Alarm3LatchCancel = 0x02, - E_HBAlarmLatchCancel = 0x03, // Heater Break alarm latch cancel - E_HSAlarmLatchCancel = 0x04, // Heater Short alarm latch cancel (?) - E_Alarm4LatchCancel = 0x05, // Alarm 4 latch cancel (?) - E_AllAlarmLatchCancel = 0x0F, // Cancel all latched alarms -}; - -// Parameters for E_SPMode (0x0D) -enum class E5C_SPMode_Param : uint16_t -{ - E_LocalSPMode = 0x00, - E_RemoteSPMode = 0x01, -}; - -// Parameters for E_InvertDirectReverse (0x0E) - Command based -enum class E5C_InvertDirectReverseCmd_Param : uint16_t -{ - E_NotInvert = 0x00, // Direct operation (Command parameter) - E_Invert = 0x01, // Reverse operation (Command parameter) -}; - -// Parameters for E_ProgramStart (0x11) -enum class E5C_ProgramStart_Param : uint16_t -{ - E_Reset = 0x00, // Reset the program/pattern - E_Start = 0x01, // Start the program/pattern -}; - -// Constant for commands where the related information is always 0x0000 -constexpr uint16_t E5C_COMMAND_PARAM_DEFAULT = 0x0000; -// This value should be used as the data when issuing commands like: -// - E_SaveRAMData -// - E_SoftwareReset -// - E_MoveToSetupArea1 -// - E_MoveToProtectLevel (Command, not the register 0x2504) -// - E_ParameterInitialization - - -// --- Generic Parameter Enums --- - -// Generic ON/OFF Parameter (Used by multiple registers) -enum class E5C_OnOff_Param : uint16_t -{ - E_Off = 0x00, - E_On = 0x01, -}; - - -// --- E5C Modbus Variable Area Registers (Holding Registers - Two-Byte Mode Addresses) --- -// Represents the addresses for reading/writing various parameters and status values. -// Based on the "Variable Area (Setting Range) List" sections of the Communications Manual (H175). -// Note: Addresses are based on the "Two-byte mode" column. -// Note: Ranges and accessibility levels (Operation, Adjustment, Initial, Advanced) are indicated where available. -enum class E5C_HoldingRegister : uint16_t -{ - // --- Operation Level Monitors (Addresses ~0x2000 - 0x20FF, Manual Page 5-1) --- - E_PV = 0x2000, // Process Value (Read-Only) - E_Status1 = 0x2001, // Status 1 (Bitfield, Read-Only, see manual section 5-2. Note *1, *2 apply) - E_InternalSetPoint = 0x2002, // Internal Set Point (Read-Only? Note *1 applies) - E_HeaterCurrent1Value = 0x2003, // Heater Current 1 Value Monitor (Read-Only, Range: 0.0 to 55.0 A) - E_MV_MonitorHeating = 0x2004, // Manipulated Value Monitor (Heating Output) (Read-Only, %: Range -5.0 to 105.0 or 0.0 to 105.0) - E_MV_MonitorCooling = 0x2005, // Manipulated Value Monitor (Cooling Output) (Read-Only, %: Range 0.0 to 105.0) - - // --- Primary Setting Parameters (Addresses ~0x2100 - 0x21FF, Manual Page 5-1) --- - E_SetPoint = 0x2103, // Set Point (SP) value (Writable & Readable, Primary SP setting, likely the *active* SP or SP0 in non-MultiSP mode) - E_AlarmValue1 = 0x2104, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit1 = 0x2105, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit1 = 0x2106, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValue2 = 0x2107, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueUpperLimit2 = 0x2108, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - E_AlarmValueLowerLimit2 = 0x2109, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Main Setting] - // Add other registers from 0x21xx range if needed from other tables - - // --- Status/Monitor Parameters (Addresses ~0x2400 - 0x24FF, Manual Page 5-2) --- - E_PV_StatusArea = 0x2402, // Process Value (Read-Only status copy) - E_InternalSetPoint_StatusArea = 0x2403, // Internal Set Point (Read-Only status copy, Note *1) - E_MultiSP_NoMonitor = 0x2404, // Multi-SP No. Monitor (Which SP is currently active: 0 to 7, Read-Only) - E_Status1_StatusArea = 0x2406, // Status 1 (Read-Only status copy, Bitfield, Note *1, *2 apply) - E_StatusWord3_Leftmost = 0x2407, // Status Word 3 / Leftmost bits (Part of a larger status? Read-Only, Note *3 applies) - E_Status2_LowerWord = 0x2408, // Status 2 (Rightmost 16 bits / Lower Word. Read-Only, Bitfield, Note *1, *2 apply) - E_Status2_UpperWord = 0x2409, // Status 2 (Leftmost 16 bits / Upper Word. Read-Only, Bitfield, Note *1, *3 apply) - E_DecimalPointMonitor = 0x2410, // Decimal Point Monitor (Position for PV/SP display: 0 to 3, Read-Only) - // Add other registers from 0x24xx range if needed - - // --- Protect Level Parameters (Addresses ~0x2500 - 0x25FF, Ref Manual Page 5-3) --- - E_OperationAdjustmentProtect = 0x2500, // Sets Operation/Adjustment Protection Level (Writable, See E5C_OperationProtect_Param) - E_InitialSettingCommsProtect = 0x2501, // Sets Initial Setting/Communications Protection Level (Writable, See E5C_InitialProtect_Param) - E_SettingChangeProtect = 0x2502, // Enable/Disable Setting Change Protect via front panel (Writable, See E5C_SettingChangeProtect_Param) - E_PF_KeyProtect = 0x2503, // Enable/Disable PF Key Protect (Writable, Use E5C_OnOff_Param) - E_MoveToProtectLevelSetting = 0x2504, // Sets the password value needed to move to protect level (Writable, Range: -1999 to 9999 or FFFF831 to 270F) - E_PasswordToMoveToProtectLevel = 0x2505, // Write the password here to attempt moving to the protect level (Write-Only? Monitor value always 0) - E_ParameterMaskEnable = 0x2506, // Enable/Disable Parameter Mask (Writable, Use E5C_OnOff_Param) (Monitor value always 0) - E_ChangedParametersOnly = 0x2507, // Control Change Parameters setting (Writable, Use E5C_OnOff_Param) - - // --- Manual Control / Operation Level Parameters (Addresses ~0x2600 - 0x26FF, Ref Manual Page 5-3) --- - E_ManualMV = 0x2600, // Manual Manipulated Value (Writable in Manual Mode) (%: Ranges vary by model/setting) - E_SetPoint_OperationLevel = 0x2601, // Set Point visible/settable in Operation Level (Writable, Range: SP lower to SP upper limit) (Likely mirrors E_SetPoint=0x2103 but accessible differently) - E_RemoteSPMonitor = 0x2602, // Remote SP Monitor (Read-Only, Range: Remote SP lower limit -10% FS to Remote SP upper limit +10% FS) - E_HeaterCurrent1ValueMonitor_OpLevel = 0x2604, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) (Likely same value as 0x2003) - E_MVMonitorHeating_OpLevel = 0x2605, // MV Monitor (Heating) (Read-Only, %: -5.0 to 105.0 or 0.0 to 105.0) (Likely same value as 0x2004) - E_MVMonitorCooling_OpLevel = 0x2606, // MV Monitor (Cooling) (Read-Only, %: 0.0 to 105.0) (Likely same value as 0x2005) - E_ValveOpeningMonitor = 0x2607, // Valve Opening Monitor (Read-Only, %: -10.0 to 110.0) - - // --- Adjustment Level Parameters (Addresses ~0x2700 - 0x27FF, Ref Manual Page 5-4/5-5) --- - E_ProportionalBandCooling = 0x2701, // Proportional Band (Cooling) (Writable, Range: 0.1 to 999.9) [Adjustment Level] - E_IntegralTimeCooling = 0x2702, // Integral Time (Cooling) (Writable, Range: 0 to 9999 s / 0.0 to 999.9 s depending on derivative unit) [Adjustment Level] - E_DerivativeTimeCooling = 0x2703, // Derivative Time (Cooling) (Writable, Same range as Integral) [Adjustment Level] - E_DeadBand = 0x2704, // Dead Band (Writable, Range: -199.9 to 999.9 for temp input / -19.99 to 99.99 for analog input) [Adjustment Level] - E_ManualResetValue = 0x2705, // Manual Reset Value (Writable, Range: 0.0 to 100.0 %) [Adjustment Level] - E_HysteresisHeating = 0x2706, // Hysteresis (Heating) (Writable, Range: 0.1 to 999.9 for temp input / 0.01 to 99.99 for analog input) [Adjustment Level] - E_HysteresisCooling = 0x2707, // Hysteresis (Cooling) (Writable, Same range as Heating) [Adjustment Level] - E_ControlPeriodHeating = 0x2708, // Control Period (Heating) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_ControlPeriodCooling = 0x2709, // Control Period (Cooling) (Writable, Special values or 1 to 99 s) [Initial Setting Level] (See E5C_ControlPeriod_SpecialVal) - E_PositionPropDeadBand = 0x270A, // Position Proportional Dead Band (Writable, Range: 0.1 to 10.0) [Adjustment Level] - E_OpenCloseHysteresis = 0x270B, // Open/Close Hysteresis (Writable, Range: 0.1 to 20.0) [Adjustment Level] - E_SPRampTimeUnit = 0x270C, // SP Ramp Time Unit (Writable) [Advanced Function Setting Level] (See E5C_SPRampTimeUnit_Param) - E_SPRampSetValue = 0x270D, // SP Ramp Set Value (Writable, 0=OFF or 1 to 9999 in units from 0x270C) [Adjustment Level] (See E5C_SPRampSetValue_SpecialVal) - E_SPRampFallValue = 0x270E, // SP Ramp Fall Value (Writable, -1=Same as Set, 0=OFF or 1 to 9999) [Adjustment Level] (See E5C_SPRampFallValue_SpecialVal) - E_MVAtStop = 0x270F, // MV (%) at Stop (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVAtPVError = 0x2711, // MV (%) at PV Error (Writable, Range: -5.0 to 105.0 / -105.0 to 105.0 varies) [Advanced Function Setting Level] - E_MVChangeRateLimit = 0x2713, // MV Change Rate Limit (Writable, 0.0=OFF or 0.1 to 100.0 %/s) [Advanced Function Setting Level] - E_PVInputSlopeCoeff = 0x2718, // PV Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - E_HeaterCurrent1ValueMonitor_Adv = 0x271A, // Heater Current 1 Value Monitor (Read-Only, 0.0 to 55.0 A) [ Seems redundant, matches 0x2003/0x2604] - E_HeaterBurnoutDetection1 = 0x271B, // Heater Burnout Detection 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent1Monitor = 0x271C, // Leakage Current 1 Monitor (Read-Only, 0.0 to 55.0? Units not specified, likely mA) [Operation Level] - E_HSAlarm1 = 0x271D, // HS (Heater Short?) Alarm 1 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_ProcessValueInputShift = 0x2723, // Process Value Input Shift (Writable, Range: -1999 to 9999) [Adjustment Level] - E_HeaterCurrent2ValueMonitor = 0x2724, // Heater Current 2 Value Monitor (Read-Only, 0.0 to 55.0 A) [Operation Level] - E_HeaterBurnoutDetection2 = 0x2725, // Heater Burnout Detection 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_LeakageCurrent2Monitor = 0x2726, // Leakage Current 2 Monitor (Read-Only, 0.0 to 55.0 mA?) [Operation Level] - E_HSAlarm2 = 0x2727, // HS (Heater Short?) Alarm 2 Setting (Writable, 0.0=OFF or 0.1 to 50.0 A) [Adjustment Level] - E_SoakTimeRemain = 0x2728, // Soak Time Remain (Read-Only?, Range: 0 to 9999) [Operation Level] - E_SoakTime = 0x2729, // Soak Time (Writable, Range: 1 to 9999) [Adjustment Level] - E_WaitBand = 0x272A, // Wait Band (Writable, 0=OFF, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Adjustment Level] (See E5C_WaitBand_SpecialVal) - E_RemoteSPInputShift = 0x272B, // Remote SP Input Shift (Writable, Range: -1999 to 9999) [Advanced Function Setting Level] - E_RemoteSPInputSlopeCoeff = 0x272C, // Remote SP Input Slope Coefficient (Writable, Range: 0.001 to 9.999) [Advanced Function Setting Level] - - // --- Advanced Function Setting / Initial Setting Level Parameters (Addresses ~0x2800 - 0x2FFF, Ref Manual Page 5-5 to 5-13) --- - E_InputDigitalFilter = 0x2800, // Input Digital Filter (Writable, Range: 0.0 to 999.9) [Advanced Function Setting Level] - E_MovingAverageCount = 0x2804, // Moving Average Count (Writable) [Advanced Function Setting Level] (See E5C_MovingAverageCount_Param) - E_ExtractionOfSquareRootLowCutPoint = 0x2808, // Extraction of Square Root Low-cut Point (%) (Writable, Range: 0.0 to 100.0) [Adjustment Level] - - E_InputType = 0x2C00, // Input Type selection (Writable, See E5C_InputType_Param) [Initial Setting Level] - E_TemperatureUnit = 0x2C01, // Temperature Unit selection (Writable, See E5C_TemperatureUnit_Param) [Initial Setting Level] - E_ScalingLowerLimit = 0x2C09, // Scaling Lower Limit (Writable, Range: -1999 to Scaling Upper Limit - 1) [Advanced Function Setting Level] - E_ScalingUpperLimit = 0x2C0B, // Scaling Upper Limit (Writable, Range: Scaling Lower Limit + 1 to 9999) [Advanced Function Setting Level] - E_DecimalPoint = 0x2C0C, // Decimal Point position for PV/SP (Writable, 0-3) [Advanced Function Setting Level] (See E5C_DecimalPoint_Param) - E_RemoteSPUpperLimit = 0x2C0D, // Remote SP Upper Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_RemoteSPLowerLimit = 0x2C0E, // Remote SP Lower Limit (Writable, Range depends on input type/scaling) [Advanced Function Setting Level] - E_PVDecimalPointDisplay = 0x2C0F, // PV Decimal Point Display ON/OFF (Writable, Use E5C_OnOff_Param) [Advanced Function Setting Level] - - E_ControlOutput1Signal = 0x2D03, // Control Output 1 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_ControlOutput2Signal = 0x2D04, // Control Output 2 Signal Type (Writable, See E5C_ControlOutputSignal_Param) [Initial Setting Level] (Only for Linear Output Models) - E_SPUpperLimit = 0x2D0F, // SP Upper Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_SPLowerLimit = 0x2D10, // SP Lower Limit (Writable, Range depends on input type/scaling) [Initial Setting Level] - E_StandardOrHeatingCooling= 0x2D11, // Control Mode: Standard or Heating/Cooling (Writable, See E5C_ControlMode_Param) [Initial Setting Level] - E_DirectReverseOperation = 0x2D12, // Direct/Reverse operation setting (Writable, See E5C_DirectReverseOperation_Param) [Initial Setting Level] (Different from Command 0x0E) - E_CloseFloating = 0x2D13, // Close/Floating (position-proportional control) (Writable, See E5C_CloseFloating_Param) [Initial Setting Level] (Only for Position-proportional Models) - E_PidOnOff = 0x2D14, // PID/ON-OFF Control Selection (Writable, See E5C_PidOnOff_Param) [Initial Setting Level] - E_ST_Setting = 0x2D15, // Self-Tuning ON/OFF (Writable, Use E5C_OnOff_Param) [Initial Setting Level] - E_ProgramPattern = 0x2D16, // Program Pattern Execution State (Writable, See E5C_ProgramPattern_Param) [Initial Setting Level] - E_RemoteSPInputType = 0x2D18, // Remote SP Input range selection (Writable, See E5C_RemoteSPInputType_Param) [Advanced Function Setting Level] - E_MinimumOutputOnOffBand = 0x2D19, // Minimum Output ON/OFF Band (Writable, Range: 0.0 to 50.0 %) [Advanced Function Setting Level] - - E_TransferOutputType = 0x2E00, // Transfer Output Type (Writable, See E5C_TransferOutputType_Param) [Initial Setting Level] - E_TransferOutputSignal = 0x2E01, // Transfer Output Signal Range (Writable, See E5C_TransferOutputSignal_Param) [Initial Setting Level] - E_ExtractionSquareRootEnable = 0x2E24, // Extraction of Square Root Enable (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_TRAVEL_TIME = 0x2E30, // Travel Time (Position-proportional models?) (Writable, Range: 1 to 999 s) [Initial Setting] - E_ControlOutput1Assignment = 0x2E06, // Assign function to Control Output 1 (Writable, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_ControlOutput2Assignment = 0x2E07, // Assign function to Control Output 2 (Writable, See E5C_ControlOutputAssignment_Param, Note restrictions) [Advanced Function Setting] - E_EventInputAssignment1 = 0x2E0A, // Event Input Assignment 1 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment2 = 0x2E0B, // Event Input Assignment 2 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment3 = 0x2E0C, // Event Input Assignment 3 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment4 = 0x2E0D, // Event Input Assignment 4 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment5 = 0x2E0E, // Event Input Assignment 5 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_EventInputAssignment6 = 0x2E0F, // Event Input Assignment 6 (Writable, See E5C_EventInputAssignment_Param) [Initial Setting Level] - E_AuxiliaryOutput1Assignment = 0x2E10, // Auxiliary Output 1 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput2Assignment = 0x2E11, // Auxiliary Output 2 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput3Assignment = 0x2E12, // Auxiliary Output 3 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_AuxiliaryOutput4Assignment = 0x2E13, // Auxiliary Output 4 Assignment (Writable, Range 0-22, See E5C_ControlOutputAssignment_Param) [Advanced Function Setting] - E_TransferOutputScaledUpperLimit = 0x2E14, // Transfer Output Scaled Upper Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_TransferOutputScaledLowerLimit = 0x2E15, // Transfer Output Scaled Lower Limit (for selected Transfer Output Type) (Writable, Range -1999 to 9999) [Initial Setting Level] - E_SimpleTransferOutput1UpperLimit = 0x2E16, // Simple Transfer Output 1 Upper Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - E_SimpleTransferOutput1LowerLimit = 0x2E17, // Simple Transfer Output 1 Lower Limit (Writable, Range: -1999 to 9999) [Initial Setting Level] (Note *1: E5CC-U/E5GC linear current output only, v2.2+) - - E_ALARM_1_TYPE = 0x2F00, // Alarm 1 Type (Writable, See E5C_AlarmType_Param) [Initial Setting] - E_ALARM_1_LATCH = 0x2F01, // Alarm 1 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_1_HYSTERESIS = 0x2F02, // Alarm 1 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_2_TYPE = 0x2F03, // Alarm 2 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_2_LATCH = 0x2F04, // Alarm 2 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_2_HYSTERESIS = 0x2F05, // Alarm 2 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_3_TYPE = 0x2F06, // Alarm 3 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_3_LATCH = 0x2F07, // Alarm 3 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_3_HYSTERESIS = 0x2F08, // Alarm 3 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_ALARM_4_TYPE = 0x2F09, // Alarm 4 Type (Writable, See E5C_AlarmType_Param, Note: LBA_12 cannot be set) [Initial Setting] - E_ALARM_4_LATCH = 0x2F0A, // Alarm 4 Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ALARM_4_HYSTERESIS = 0x2F0B, // Alarm 4 Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog) [Initial Setting] - E_STANDBY_SEQUENCE_RESET = 0x2F0C, // Standby Sequence Reset Condition (Writable, See E5C_StandbySequenceReset_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_1_OPEN_IN_ALARM = 0x2F0D, // Auxiliary Output 1 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_2_OPEN_IN_ALARM = 0x2F0E, // Auxiliary Output 2 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_3_OPEN_IN_ALARM = 0x2F0F, // Auxiliary Output 3 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_AUXILIARY_OUTPUT_4_OPEN_IN_ALARM = 0x2F10, // Auxiliary Output 4 Behaviour in Alarm (Writable, See E5C_AuxOutputOpenInAlarm_Param) [Advanced Function Setting] - E_ALARM_1_ON_DELAY = 0x2F11, // Alarm 1 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_ON_DELAY = 0x2F12, // Alarm 2 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_ON_DELAY = 0x2F13, // Alarm 3 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_ON_DELAY = 0x2F14, // Alarm 4 ON delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_1_OFF_DELAY = 0x2F15, // Alarm 1 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_2_OFF_DELAY = 0x2F16, // Alarm 2 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_3_OFF_DELAY = 0x2F17, // Alarm 3 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - E_ALARM_4_OFF_DELAY = 0x2F18, // Alarm 4 OFF delay (Writable, Range: 0 to 999 s) [Initial Setting] - - // --- Communications Settings / Display/Misc Settings (Addresses ~0x3000 - ..., Ref Manual Page 5-13/5-14) --- - E_PV_SP_NO1_DISPLAY_SELECTION = 0x3000, // PV/SP No. 1 Display Selection (Writable, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_MV_DISPLAY_SELECTION = 0x3001, // MV Display Selection (Writable, See E5C_MV_DisplaySelection_Param) [Initial Setting] - E_AUTO_DISPLAY_RETURN_TIME= 0x3003, // Automatic Display Return Time (Writable, Range 0=OFF, 1-99s) [Initial Setting] (See E5C_AutoDisplayReturnTime_SpecialVal) - E_DISPLAY_REFRESH_PERIOD = 0x3004, // Display Refresh Period (Writable, See E5C_DisplayRefreshPeriod_Param) [Initial Setting] - E_PV_SP_NO2_DISPLAY_SELECTION = 0x3008, // PV/SP No. 2 Display Selection (Writable, Range 0-8, See E5C_PVSP_DisplaySelection_Param) [Initial Setting] - E_DISPLAY_BRIGHTNESS = 0x300A, // Display Brightness (Writable, Range 1-3) [Initial Setting] - E_MV_DISPLAY = 0x300B, // MV Display ON/OFF (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_MOVE_TO_PROTECT_LEVEL_TIME = 0x300C, // Move to Protect Level Time (Writable, Range 1-30 s) [Initial Setting] - E_AUTO_MANUAL_SELECT_ADDITION = 0x300F, // Auto/Manual Select Addition (Writable, Use E5C_OnOff_Param) [Initial Setting] - E_PV_STATUS_DISPLAY_FUNCTION = 0x3011, // PV Status Display Function (Writable, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - E_SV_STATUS_DISPLAY_FUNCTION = 0x3012, // SV Status Display Function (Writable, Range 0-9, See E5C_PV_StatusDisplayFunction_Param) [Initial Setting] - - E_PROTOCOL_SETTING = 0x3100, // Protocol Setting (Writable, See E5C_ProtocolSetting_Param) [Communications Setting] - E_COMMUNICATIONS_UNIT_NO = 0x3101, // Communications Unit No. (Writable, Range 0-99) [Communications Setting] - E_COMMUNICATIONS_BAUD_RATE= 0x3102, // Communications Baud Rate (Writable, See E5C_BaudRate_Param) [Communications Setting] - E_COMMUNICATIONS_DATA_LENGTH = 0x3103, // Communications Data Length (Writable, See E5C_DataLength_Param) [Communications Setting] - E_COMMUNICATIONS_STOP_BITS= 0x3104, // Communications Stop Bits (Writable, See E5C_StopBits_Param) [Communications Setting] - E_COMMUNICATIONS_PARITY = 0x3105, // Communications Parity (Writable, See E5C_Parity_Param) [Communications Setting] - E_SEND_DATA_WAIT_TIME = 0x3106, // Send Data Wait Time (Writable, Range 0-99 ms) [Communications Setting] - - // --- PF Key / Advanced Function Settings (Addresses ~0x3200 - ..., Ref Manual Page 5-14) --- - E_PF_SETTING = 0x3200, // PF Setting Assignment (Writable, See E5C_PF_Setting_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_1 = 0x3202, // Monitor/Setting Item 1 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_2 = 0x3203, // Monitor/Setting Item 2 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_3 = 0x3204, // Monitor/Setting Item 3 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_4 = 0x3205, // Monitor/Setting Item 4 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - E_MONITOR_SETTING_ITEM_5 = 0x3206, // Monitor/Setting Item 5 (for PF Setting = 8) (Writable, Range 0-23, See E5C_MonitorSettingItem_Param) [Advanced Function Setting] - - // --- Advanced Function Settings Continued (Addresses ~0x3300 - ..., Ref Manual Page 5-15 / 5-16) --- - E_SP_TRACKING = 0x3301, // SP Tracking (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_PV_DEAD_BAND = 0x3304, // PV Dead Band (Writable, Range: H'0000 to H'270F or 0 to 9999) [Advanced Function Setting] - E_COLD_JUNCTION_COMPENSATION = 0x3305, // Cold Junction Compensation Method (Writable, Use E5C_OnOff_Param. Note: Setting to OFF may require specific conditions) [Advanced Function Setting] - E_INTEGRAL_DERIVATIVE_TIME_UNIT = 0x3309, // Integral/Derivative Time Unit (Writable, See E5C_IntegralDerivativeTimeUnit_Param) [Advanced Function Setting] - E_ALPHA = 0x330A, // Alpha (α) parameter (Writable, Range: H'0000 to H'0064 or 0.00 to 1.00, scaled by 100x?) [Advanced Function Setting] - E_MANUAL_OUTPUT_METHOD = 0x330C, // Manual Output Method (Writable, See E5C_ManualOutputMethod_Param) [Advanced Function Setting] - E_MANUAL_MV_INITIAL_VALUE = 0x330D, // Manual MV Initial Value (Writable, Range: -5.0 to 105.0 or -105.0 to 105.0, depends on control type, scaled by 10x?) [Advanced Function Setting] - E_AT_CALCULATED_GAIN = 0x330F, // AT Calculated Gain value (Writable, Range: H'0001 to H'0064 or 0.1 to 10.0, scaled by 10x?) [Advanced Function Setting] - E_AT_HYSTERESIS = 0x3310, // AT Hysteresis (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 9.99 Analog, scaled?) [Advanced Function Setting] - E_LIMIT_CYCLE_MV_AMPLITUDE= 0x3311, // Limit Cycle MV Amplitude (Writable, Range: H'0032 to H'01F4 or 5.0 to 50.0 %, scaled by 10x?) [Advanced Function Setting] - E_HEATER_BURNOUT_LATCH = 0x3314, // Heater Burnout Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_HEATER_BURNOUT_HYSTERESIS = 0x3315, // Heater Burnout Hysteresis (Writable, Range: H'0001 to H'01F4 or 0.1 to 50.0 A, scaled by 10x?) [Advanced Function Setting] - E_HS_ALARM_LATCH = 0x3316, // HS Alarm Latch (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_HS_ALARM_HYSTERESIS = 0x3317, // HS Alarm Hysteresis (Writable, Range: H'0001 to H'01F4 or 0.1 to 50.0 A, scaled by 10x?) [Advanced Function Setting] - E_NUMBER_OF_MULTI_SP_POINTS = 0x331B, // Number of Multi-SP Points (Writable, See E5C_NumberOfMultiSP_Param) [Advanced Function Setting] - E_HB_ON_OFF = 0x331C, // HB (Heater Break?) ON/OFF (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_INTEGRATED_ALARM_ASSIGNMENT = 0x331E, // Integrated Alarm Assignment (Bitmask) (Writable, Range: H'0000 to H'00FF or 0 to 255) [Advanced Function Setting] - E_MV_AT_STOP_AND_ERROR_ADDITION = 0x3320, // MV at Stop and Error Addition (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_ST_STABLE_RANGE = 0x3321, // ST Stable Range (Writable, Range: H'0001 to H'270F or 0.1 to 999.9, scaled?) [Advanced Function Setting] - E_RT_FLAG = 0x3322, // RT Flag ( unclear meaning, from "RT" ) (Writable, Use E5C_OnOff_Param. Note: Valid only with temp input) [Advanced Function Setting] - E_HS_ALARM_USE = 0x3323, // HS Alarm Use (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_LBA_DETECTION_TIME = 0x3324, // LBA Detection Time (Writable, Range: H'0000 to H'270F or 0 to 9999 s?) [Advanced Function Setting] - E_LBA_LEVEL = 0x3325, // LBA Level (Writable, Range: 0.1 to 999.9 Temp / 0.01 to 99.99 Analog, scaled?) [Advanced Function Setting] - E_LBA_BAND = 0x3326, // LBA Band (Writable, Range: 0.0 to 999.9 Temp / 0.00 to 99.99 Analog, scaled?) [Advanced Function Setting] - E_SOAK_TIME_UNIT = 0x3327, // Soak Time Unit (Writable, See E5C_SoakTimeUnit_Param) [Advanced Function Setting] - E_ALARM_SP_SELECTION = 0x3328, // Alarm SP Selection (Writable, See E5C_AlarmSPSelection_Param) [Advanced Function Setting] - E_REMOTE_SP_ENABLE = 0x3329, // Remote SP Enable (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_MANUAL_MV_LIMIT_ENABLE = 0x332B, // Manual MV Limit Enable (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_DIRECT_SETTING_POS_PROP_MV = 0x332C, // Direct Setting of Position Proportional MV (Writable, Use E5C_OnOff_Param) [Advanced Function Setting] - E_PV_RATE_OF_CHANGE_CALC_PERIOD = 0x332D, // PV Rate of Change Calculation Period (Writable, Range: H'0001 to H'03E7 or 1 to 999) [Advanced Function Setting] - E_HEATING_COOLING_TUNING_METHOD = 0x332E, // Heating/Cooling Tuning Method (Writable, See E5C_HeatingCoolingTuningMethod_Param) [Advanced Function Setting] - E_LCT_COOLING_OUTPUT_MIN_ON_TIME = 0x3335, // LCT Cooling Output Minimum ON Time (Writable, Range: H'0001 to H'000A or 0.1 to 1.0, scaled by 10x? Note: Not supported on version 2.0 or earlier) [Advanced Function Setting] - - // --- Operation Level Parameters (Duplicated Addresses? / Specific Uses) (Addresses ~0x2900 - 0x29FF, Ref Manual Page 5-6/5-7) --- - // These allow setting SPs and Alarm values within the Operation or Adjustment levels, potentially overriding the base settings (0x21xx) when active. - E_SP0_OperationLevel = 0x2900, // SP 0 Setting (Writable, Range: SP lower limit to SP upper limit) [Operation Level] (Likely same as E_SetPoint when SP 0 is selected) - E_AlarmValue1_OperationLevel = 0x2902, // Alarm Value 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue1=0x2104) - E_AlarmValueUpperLimit1_OperationLevel = 0x2903, // Alarm Value Upper Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit1=0x2105) - E_AlarmValueLowerLimit1_OperationLevel = 0x2904, // Alarm Value Lower Limit 1 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit1=0x2106) - E_AlarmValue2_OperationLevel = 0x2905, // Alarm Value 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValue2=0x2107) - E_AlarmValueUpperLimit2_OperationLevel = 0x2906, // Alarm Value Upper Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueUpperLimit2=0x2108) - E_AlarmValueLowerLimit2_OperationLevel = 0x2907, // Alarm Value Lower Limit 2 (Writable, Range: -1999 to 9999) [Operation Level] (Overrides E_AlarmValueLowerLimit2=0x2109) - E_AlarmValue3 = 0x2908, // Alarm Value 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit3 = 0x2909, // Alarm Value Upper Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit3 = 0x290A, // Alarm Value Lower Limit 3 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValue4 = 0x290B, // Alarm Value 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueUpperLimit4 = 0x290C, // Alarm Value Upper Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_AlarmValueLowerLimit4 = 0x290D, // Alarm Value Lower Limit 4 (Writable, Range: -1999 to 9999) [Operation Level] - E_SP1_Setting = 0x290E, // SP 1 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 1) - E_SP2_Setting = 0x291C, // SP 2 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 2) - E_SP3_Setting = 0x292A, // SP 3 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 3) - E_SP4_Setting = 0x2938, // SP 4 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 4) - E_SP5_Setting = 0x2946, // SP 5 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 5) - E_SP6_Setting = 0x2954, // SP 6 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 6) - E_SP7_Setting = 0x2962, // SP 7 Setting (Writable, Range: SP lower limit to SP upper limit) [Adjustment Level] (Value for MultiSP selection 7) - - // --- Adjustment Level PID / MV Limits (Addresses ~0x2A00 - ..., Ref Manual Page 5-7) --- - E_ProportionalBand = 0x2A00, // Proportional Band (Heating, Standard, or Close Position Control) (Writable, Range: 0.1 to 999.9, scaled?) [Adjustment Level] - E_IntegralTime = 0x2A01, // Integral Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_DerivativeTime = 0x2A02, // Derivative Time (Heating, Standard, or Close Position Control) (Writable, Range depends on time unit setting) [Adjustment Level] - E_MVUpperLimit = 0x2A05, // MV Upper Limit (%) (Writable, Range depends on control type, see manual, scaled by 10x?) [Adjustment Level] - E_MVLowerLimit = 0x2A06, // MV Lower Limit (%) (Writable, Range depends on control type, see manual, scaled by 10x?) [Adjustment Level] - - // NOTE on Status Registers (e.g., E_Status1, E_Status2_LowerWord, E_Status2_UpperWord): - // These are bitfields. Refer to the E5C Communications Manual Section 5-2 "Status" - // for details on individual bit meanings. Explicit enums for these bits can be added if needed (See examples below). - // Note *1: Not displayed on the Controller display. - // Note *2: In 2-byte mode, the rightmost 16 bits are usually read. - // Note *3: In 2-byte mode, the leftmost 16 bits are usually read. - // This suggests Status 2 (E_Status2_LowerWord/E_Status2_UpperWord) and potentially StatusWord3 (E_StatusWord3_Leftmost) - // might be parts of larger 32-bit status values if the controller supported 4-byte mode reads. -}; - -// --- Parameter Enums for Specific Holding Register Settings --- - -// Parameters for E_OperationAdjustmentProtect (0x2500) -enum class E5C_OperationProtect_Param : uint16_t -{ - E_NoRestrictions = 0x00, // No restrictions in operation and adjustment levels - E_AdjustLevelProhibited = 0x01, // Move to adjustment level is prohibited - E_DisplayChangePV_PVSP = 0x02, // Display and change of only "PV" and "PV/SP" allowed - E_DisplayOnlyPV_PVSP = 0x03, // Display of only "PV" and "PV/SP" allowed -}; - -// Parameters for E_InitialSettingCommsProtect (0x2501) -enum class E5C_InitialProtect_Param : uint16_t -{ - E_MoveToInitialAllowedAdvDisplayed = 0x00, // Move to initial/comms allowed. Adv func displayed. - E_MoveToInitialAllowedAdvNotDisplayed= 0x01, // Move to initial/comms allowed. Adv func not displayed. - E_MoveToInitialProhibited = 0x02, // Move to initial/comms prohibited. -}; - -// Parameters for E_SettingChangeProtect (0x2502) -enum class E5C_SettingChangeProtect_Param : uint16_t -{ - E_OffChangeAllowed = 0x00, // OFF (Changing settings via front panel allowed) - E_OnChangeProhibited = 0x01, // ON (Changing settings via front panel prohibited) -}; - -// Parameters for E_PF_KeyProtect (0x2503) - Reuse E5C_OnOff_Param -// Parameters for E_ParameterMaskEnable (0x2506) - Reuse E5C_OnOff_Param -// Parameters for E_ChangedParametersOnly (0x2507) - Reuse E5C_OnOff_Param - -// --- Special Values / Parameter Enums for specific registers --- - -// Special values for E_ControlPeriodHeating (0x2708) and E_ControlPeriodCooling (0x2709) -// Note: Positive values 1 to 99 represent seconds directly. Use raw integers for those. -enum class E5C_ControlPeriod_SpecialVal : int16_t // Use signed type for negative values -{ - E_Period_0_1_Sec = -2, // Represents 0.1 seconds - E_Period_0_2_Sec = -1, // Represents 0.2 seconds - E_Period_0_5_Sec = 0, // Represents 0.5 seconds - // Values 1..99 are direct seconds, do not add them here. Must be written as int16_t. -}; - -// Parameters for E_SPRampTimeUnit (0x270C) -enum class E5C_SPRampTimeUnit_Param : uint16_t -{ - E_EU_Per_Second = 0, // Unit is Engineering Unit / second - E_EU_Per_Minute = 1, // Unit is Engineering Unit / minute - E_EU_Per_Hour = 2, // Unit is Engineering Unit / hour -}; - -// Special value for E_SPRampSetValue (0x270D) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampSetValue_SpecialVal : uint16_t -{ - E_Off = 0, // SP Ramp Set is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as uint16_t. -}; - -// Special values for E_SPRampFallValue (0x270E) -// Note: Positive values 1 to 9999 represent the rate directly. Use raw integers for those. -enum class E5C_SPRampFallValue_SpecialVal : int16_t // Use signed type for negative value -{ - E_SameAsSet = -1, // Fall rate is same as Set rate (defined by 0x270D) - E_Off = 0, // SP Ramp Fall is OFF - // Values 1..9999 are direct rates, do not add them here. Must be written as int16_t. -}; - -// Special value for E_WaitBand (0x272A) -// Note: Positive values represent the band width directly (needs scaling based on Temp/Analog input). -// Use raw values for setting the width. -enum class E5C_WaitBand_SpecialVal : uint16_t -{ - E_Off = 0, // Wait Band function is OFF - // Other values represent the actual width. -}; - -// Parameters for E_MovingAverageCount (0x2804) -enum class E5C_MovingAverageCount_Param : uint16_t -{ - E_Off = 0, // Moving Average OFF - E_2_Times = 1, // Moving Average Count: 2 times - E_4_Times = 2, // Moving Average Count: 4 times - E_8_Times = 3, // Moving Average Count: 8 times - E_16_Times= 4, // Moving Average Count: 16 times - E_32_Times= 5, // Moving Average Count: 32 times -}; - -// Parameters for E_InputType (0x2C00) [Initial Setting Level] -enum class E5C_InputType_Param : uint16_t -{ - E_Pt_neg200_850C = 0, // Pt (-200 to 850°C / -300 to 1500°F) - E_Pt_neg199_500C_1DP = 1, // Pt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_Pt_0_100C_1DP = 2, // Pt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_JPt_neg199_500C_1DP = 3, // JPt (-199.9 to 500.0°C / -199.9 to 900.0°F) - E_JPt_0_100C_1DP = 4, // JPt (0.0 to 100.0°C / 0.0 to 210.0°F) - E_K_neg200_1300C = 5, // K (-200 to 1300°C / -300 to 2300°F) - E_K_neg20_500C_1DP = 6, // K (-20.0 to 500.0°C / 0.0 to 900.0°F) - E_J_neg100_850C = 7, // J (-100 to 850°C / -100 to 1500°F) - E_J_neg20_400C_1DP = 8, // J (-20.0 to 400.0°C / 0.0 to 750.0°F) - E_T_neg200_400C = 9, // T (-200 to 400°C / -300 to 700°F) - E_T_neg199_400C_1DP = 10, // T (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_E_neg200_600C = 11, // E (-200 to 600°C / -300 to 1100°F) - E_L_neg100_850C = 12, // L (-100 to 850°C / -100 to 1500°F) - E_U_neg200_400C = 13, // U (-200 to 400°C / -300 to 700°F) - E_U_neg199_400C_1DP = 14, // U (-199.9 to 400.0°C / -199.9 to 700.0°F) - E_N_neg200_1300C = 15, // N (-200 to 1300°C / -300 to 2300°F) - E_R_0_1700C = 16, // R (0 to 1700°C / 0 to 3000°F) - E_S_0_1700C = 17, // S (0 to 1700°C / 0 to 3000°F) - E_B_100_1800C = 18, // B (100 to 1800°C / 300 to 3200°F) - E_W_0_2300C = 19, // W (0 to 2,300°C / 0 to 3,200°F) - E_PLII_0_1300C = 20, // PLII (0 to 1,300°C / 0 to 2,300°F) - E_IR_K_140F_60C = 21, // Infrared temperature sensor (K 140°F/60°C) - E_IR_K_240F_120C = 22, // Infrared temperature sensor (K 240°F/120°C) - E_IR_K_280F_140C = 23, // Infrared temperature sensor (K 280°F/140°C) - E_IR_K_440F_220C = 24, // Infrared temperature sensor (K 440°F/220°C) - E_Analog_4_20MA = 25, // 4 to 20 mA - E_Analog_0_20MA = 26, // 0 to 20 mA - E_Analog_1_5V = 27, // 1 to 5 V - E_Analog_0_5V = 28, // 0 to 5 V - E_Analog_0_10V = 29, // 0 to 10 V - E_Analog_0_50MV = 30, // 0 to 50 mV (Only E5CC-U v2.2+ May 2014 or later) -}; - -// Parameters for E_TemperatureUnit (0x2C01) [Initial Setting Level] -enum class E5C_TemperatureUnit_Param : uint16_t -{ - E_Celsius = 0, // °C - E_Fahrenheit = 1, // °F -}; - -// Parameters for E_DecimalPoint (0x2C0C) [Advanced Function Setting Level] -enum class E5C_DecimalPoint_Param : uint16_t -{ - E_DP_0 = 0, // No decimal point (XXXX) - E_DP_1 = 1, // One decimal place (XXX.X) - E_DP_2 = 2, // Two decimal places (XX.XX) - E_DP_3 = 3, // Three decimal places (X.XXX) -}; - -// Parameters for E_PVDecimalPointDisplay (0x2C0F) - Reuse E5C_OnOff_Param - -// Parameters for E_ControlOutput1Signal (0x2D03) and E_ControlOutput2Signal (0x2D04) [Initial Setting Level] -// Applicable for models with Linear Current Output -enum class E5C_ControlOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, // 4 to 20 mA - E_0_20MA = 1, // 0 to 20 mA - // Note: Check manual if voltage options exist for these registers on specific models -}; - -// Parameters for E_StandardOrHeatingCooling (0x2D11) [Initial Setting Level] -enum class E5C_ControlMode_Param : uint16_t -{ - E_Standard = 0, // Standard control (Heating OR Cooling, depending on wiring/config) - E_HeatingAndCooling = 1, // Heating and Cooling control -}; - -// Parameters for E_DirectReverseOperation (0x2D12) [Initial Setting Level] -enum class E5C_DirectReverseOperation_Param : uint16_t -{ - E_ReverseOperation = 0, // PID Reverse operation (e.g., heating - MV increases as PV decreases) - E_DirectOperation = 1, // PID Direct operation (e.g., cooling - MV increases as PV increases) -}; - -// Parameters for E_CloseFloating (0x2D13) [Initial Setting Level] -// Only for Position-proportional Models -enum class E5C_CloseFloating_Param : uint16_t -{ - E_Floating = 0, - E_Close = 1, -}; - -// Parameters for E_PidOnOff (0x2D14) [Initial Setting Level] -enum class E5C_PidOnOff_Param : uint16_t -{ - E_ONOFF_CONTROL = 0, // Use ON/OFF control - E_PID_CONTROL = 1, // Use 2-PID control (or standard PID if 2-PID not applicable) -}; - -// Parameters for E_ST_Setting (0x2D15) - Reuse E5C_OnOff_Param - -// Parameters for E_ProgramPattern (0x2D16) [Initial Setting Level] -enum class E5C_ProgramPattern_Param : uint16_t -{ - E_Off = 0, // Program Pattern function OFF (normal control) - E_Stop = 1, // Program Pattern STOP (reset or initial state) - E_Cont = 2, // Program Pattern CONTINUE (running) -}; - -// Parameters for E_RemoteSPInputType (0x2D18) [Advanced Function Setting Level] -enum class E5C_RemoteSPInputType_Param : uint16_t -{ - E_4_20MA = 0, - E_0_20MA = 1, - E_1_5V = 2, - E_0_5V = 3, - E_0_10V = 4, -}; - -// Parameters for E_TransferOutputType (0x2E00) [Initial Setting Level] -enum class E5C_TransferOutputType_Param : uint16_t -{ - E_Off = 0, // Transfer Output OFF - E_SetPoint = 1, // Output Set Point value - E_SetPointRamp = 2, // Output Set Point during SP ramp - E_PV = 3, // Output Process Value - E_MV_Heating = 4, // Output Manipulated Value (Heating) - E_MV_Cooling = 5, // Output Manipulated Value (Cooling) - E_ValveOpening = 6, // Output Valve Opening (% - Only for Position-proportional Models) -}; - -// Parameters for E_TransferOutputSignal (0x2E01) [Initial Setting Level] -enum class E5C_TransferOutputSignal_Param : uint16_t -{ - E_4_20MA = 0, - E_1_5V = 1, -}; - -// Parameters for E_ControlOutput1Assignment (0x2E06), E_ControlOutput2Assignment (0x2E07) -// and Auxiliary Output Assignments (0x2E10 - 0x2E13) -// Ref Manual Page 5-9 and 5-10. [Advanced Function Setting Level] -enum class E5C_ControlOutputAssignment_Param : int16_t // Use signed type for negative values -{ - E_ASSIGN_NotAssigned = 0, - E_ASSIGN_ControlOutputHeating = 1, - E_ASSIGN_ControlOutputCooling = 2, - E_ASSIGN_Alarm1 = 3, - E_ASSIGN_Alarm2 = 4, - E_ASSIGN_Alarm3 = 5, - E_ASSIGN_Alarm4 = 6, - E_ASSIGN_HeaterAlarm = 7, // General heater alarm? (Could be HB or HS depending on config) - E_ASSIGN_HB_Alarm = 8, // Heater Break alarm - E_ASSIGN_HS_Alarm = 9, // Heater Short alarm - E_ASSIGN_InputError = 10, // PV Input Error - E_ASSIGN_RSP_InputError = 11, // Remote SP input error - E_ASSIGN_ProgramEndOutput = 12, // Note *1 from page 5-9: P.END can only be set if Program Pattern (0x2D16) is set to OFF - E_ASSIGN_RUN_Output = 13, // Indicates RUN state - E_ASSIGN_IntegratedAlarm = 14, // OR combination of selected alarms - E_ASSIGN_WorkBit1 = 15, - E_ASSIGN_WorkBit2 = 16, - E_ASSIGN_WorkBit3 = 17, - E_ASSIGN_WorkBit4 = 18, - E_ASSIGN_WorkBit5 = 19, - E_ASSIGN_WorkBit6 = 20, - E_ASSIGN_WorkBit7 = 21, - E_ASSIGN_WorkBit8 = 22, - - // Special values for Linear Current Output (Only for OUT1 on E5CC-U/E5GC May 2014+ / v2.2+ models, see Note *2 from page 5-9) - // Typically NOT applicable to Auxiliary Output Assignments (0x2E10-0x2E13) or OUT2 Assignment (0x2E07) - E_ASSIGN_SimpleTransfer_MV_Cooling = -5, // (FFFF FFFB) Simple MV transfer (cooling) - E_ASSIGN_SimpleTransfer_MV_Heating = -4, // (FFFF FFFC) Simple MV transfer (heating) - E_ASSIGN_SimpleTransfer_PV = -3, // (FFFF FFFD) Simple PV transfer - E_ASSIGN_SimpleTransfer_Ramp_SP = -2, // (FFFF FFFE) Simple SP transfer (during ramp) - E_ASSIGN_SimpleTransfer_SP = -1 // (FFFF FFFF) Simple SP transfer -}; - -// Parameters for Event Input Assignments (0x2E0A - 0x2E0F) [Initial Setting Level] -// Ref Manual Page 5-10 -enum class E5C_EventInputAssignment_Param : uint16_t -{ - E_EV_None = 0, // None - E_EV_RunStop = 1, // RUN/STOP - E_EV_AutoManualSwitch = 2, // Auto/Manual Switch - E_EV_ProgramStart = 3, // Program Start (Note *1 from pg 5-10: only if prog pattern is OFF) - E_EV_DirectReverseOperation = 4, // Direct/Reverse Operation switch - E_EV_SPModeSwitch = 5, // SP Mode Switch (Local/Remote) (Note *2 from pg 5-10: only if remote SP input) - E_EV_ATExecuteCancel_100 = 6, // 100% AT Execute/Cancel - E_EV_ATExecuteCancel_40 = 7, // 40% AT Execute/Cancel - E_EV_SettingChangeEnableDisable = 8, // Setting Change Enable/Disable - E_EV_CommsWritingEnableDisable = 9, // Communications Writing Enable/Disable (Note *3 from pg 5-10: only if external comms supported) - E_EV_AlarmLatchCancel = 10, // Alarm Latch Cancel - E_EV_MultiSP_Switch_Bit0 = 11, // Multi-SP No. Switch, Bit 0 - E_EV_MultiSP_Switch_Bit1 = 12, // Multi-SP No. Switch, Bit 1 - E_EV_MultiSP_Switch_Bit2 = 13, // Multi-SP No. Switch, Bit 2 -}; - -// Parameters for Alarm Latch (0x2F01, 0x2F04, 0x2F07, 0x2F0A) - Use E5C_OnOff_Param - -// Parameters for Alarm Types (0x2F00, 0x2F03, 0x2F06, 0x2F09) -enum class E5C_AlarmType_Param : uint16_t -{ - E_AlarmFunctionOff = 0, // Alarm function OFF - E_UpperLowerLimit = 1, // Upper and lower-limit alarm - E_UpperLimit = 2, // Upper-limit alarm - E_LowerLimit = 3, // Lower-limit alarm - E_UpperLowerRange = 4, // Upper and lower-limit range alarm - E_UpperLowerLimitStandby = 5, // Upper and lower-limit alarm with standby sequence - E_UpperLimitStandby = 6, // Upper-limit alarm with standby sequence - E_LowerLimitStandby = 7, // Lower-limit alarm with standby sequence - E_AbsoluteUpperLimit = 8, // Absolute-value upper-limit alarm - E_AbsoluteLowerLimit = 9, // Absolute-value lower-limit alarm - E_AbsoluteUpperLimitStandby = 10, // Absolute-value upper-limit alarm with standby sequence - E_AbsoluteLowerLimitStandby = 11, // Absolute-value lower-limit alarm with standby sequence - E_LBA = 12, // LBA (Loop Burnout Alarm) (Not settable for Alarms 2, 3, 4) - E_PVChangeRate = 13, // PV change rate alarm - E_SPAbsoluteUpperLimit = 14, // SP absolute-value upper-limit alarm - E_SPAbsoluteLowerLimit = 15, // SP absolute-value lower-limit alarm - E_MVAbsoluteUpperLimit = 16, // MV absolute-value upper-limit alarm - E_MVAbsoluteLowerLimit = 17, // MV absolute-value lower-limit alarm - E_RSPAbsoluteUpperLimit = 18, // RSP absolute-value upper-limit alarm (Only with remote SP input) - E_RSPAbsoluteLowerLimit = 19, // RSP absolute-value lower-limit alarm (Only with remote SP input) -}; - -// Parameters for Standby Sequence Reset (0x2F0C) [Advanced Function Setting] -enum class E5C_StandbySequenceReset_Param : uint16_t -{ - E_ConditionA = 0, // Condition A (Reset when deviation enters non-alarm range OR power ON/Run mode start) - E_ConditionB = 1, // Condition B (Reset only when deviation enters non-alarm range) -}; - -// Parameters for Auxiliary Output Open/Close in Alarm (0x2F0D - 0x2F10) [Advanced Function Setting] -enum class E5C_AuxOutputOpenInAlarm_Param : uint16_t -{ - E_CloseInAlarm = 0, // Output CLOSES (becomes energized/active low depending on hardware) when the assigned alarm is ON - E_OpenInAlarm = 1, // Output OPENS (becomes de-energized/active high depending on hardware) when the assigned alarm is ON -}; - -// Parameters for PV/SP No. 1/2 Display Selection (0x3000, 0x3008) -enum class E5C_PVSP_DisplaySelection_Param : uint16_t -{ - E_NothingDisplayed = 0, - E_PV_SP = 1, // PV/SP (Normal display) - E_PV = 2, // PV Only - E_PV_SP_Char = 3, // PV/SP (Character display) - E_PV_SP_MV = 4, // PV/SP/Manipulated Value - E_PV_SP_MultiSP_No = 5, // PV/SP/Multi-SP No. - E_PV_SP_SoakTimeRemain = 6, // PV/SP/Soak time remain - E_PV_SP_RampSP = 7, // PV/SP/Ramp SP - E_PV_SP_AlarmValue1 = 8, // PV/SP/Alarm Value 1 -}; - -// Parameters for MV Display Selection (0x3001) -enum class E5C_MV_DisplaySelection_Param : uint16_t -{ - E_MV_Heating = 0, - E_MV_Cooling = 1, -}; - -// Special value for Auto Display Return Time (0x3003) -enum class E5C_AutoDisplayReturnTime_SpecialVal : uint16_t -{ - E_Off = 0, - // Values 1-99 represent seconds directly -}; - -// Parameters for Display Refresh Period (0x3004) -enum class E5C_DisplayRefreshPeriod_Param : uint16_t -{ - E_Off = 0, // No Refresh (?) - Check Manual for exact meaning - E_0_25s = 1, // 0.25 seconds - E_0_5s = 2, // 0.5 seconds - E_1_0s = 3, // 1.0 second -}; - -// Parameters for MV Display (0x300B) - Reuse E5C_OnOff_Param -// Parameters for Auto/Manual Select Addition (0x300F) - Reuse E5C_OnOff_Param - -// Parameters for PV/SV Status Display Function (0x3011, 0x3012) -enum class E5C_PV_StatusDisplayFunction_Param : uint16_t -{ - E_Off = 0, - E_Manual = 1, // Manual mode status - E_Stop = 2, // Stop status - E_Alarm1 = 3, // Alarm 1 status - E_Alarm2 = 4, // Alarm 2 status - E_Alarm3 = 5, // Alarm 3 status - E_Alarm4 = 6, // Alarm 4 status - E_Alarm1To4_OR_Status = 7, // OR of Alarm 1-4 status - E_HeaterAlarm = 8, // Heater alarm status (HB or HS) - E_StatusDisplayMsg = 9, // Status display message (E5GC only) -}; - - -// --- Communication Setting Parameters (from page 5-14) --- - -// Parameters for E_PROTOCOL_SETTING (0x3100) -enum class E5C_ProtocolSetting_Param : uint16_t -{ - E_CompoWayF = 0, - E_Modbus = 1, -}; - -// Parameters for E_COMMUNICATIONS_BAUD_RATE (0x3102) -enum class E5C_BaudRate_Param : uint16_t -{ - E_BR_9600 = 3, - E_BR_19200 = 4, - E_BR_38400 = 5, - E_BR_57600 = 6, - // Note: Lower baud rates might be available on older models -}; - -// Parameters for E_COMMUNICATIONS_DATA_LENGTH (0x3103) -enum class E5C_DataLength_Param : uint16_t -{ - E_DL_7_BITS = 7, - E_DL_8_BITS = 8, -}; - -// Parameters for E_COMMUNICATIONS_STOP_BITS (0x3104) -enum class E5C_StopBits_Param : uint16_t -{ - E_SB_1 = 1, - E_SB_2 = 2, -}; - -// Parameters for E_COMMUNICATIONS_PARITY (0x3105) -enum class E5C_Parity_Param : uint16_t -{ - E_None = 0, - E_Even = 1, - E_Odd = 2, -}; - -// Parameters for E_PF_SETTING (0x3200) [Advanced Function Setting] -enum class E5C_PF_Setting_Param : uint16_t -{ - E_Disabled = 0, // PF key function disabled - E_Run = 1, // RUN - E_Stop = 2, // STOP - E_RunStop = 3, // RUN/STOP toggle - E_ATExecuteCancel100 = 4, // Execute/cancel 100% AT - E_ATExecuteCancel40 = 5, // Execute/cancel 40% AT - E_AlarmLatchCancel = 6, // Cancel alarm latch - E_AutoManualSwitch = 7, // Auto/Manual switch - E_MonitorSettingItem = 8, // Switch Monitor/Setting Item - E_DigitShiftKey = 9, // Digit shift key -}; - -// Parameters for Monitor/Setting Items (0x3202 - 0x3206) [Advanced Function Setting] -// Used when E_PF_SETTING = E_MonitorSettingItem (8) -enum class E5C_MonitorSettingItem_Param : uint16_t -{ - E_ITEM_Disabled = 0, - E_ITEM_PV_SP_MultiSP = 1, - E_ITEM_PV_SP_MV = 2, - E_ITEM_PV_SP_SoakTimeRemain = 3, - E_ITEM_ProportionalBand = 4, - E_ITEM_IntegralTime = 5, - E_ITEM_DerivativeTime = 6, - E_ITEM_AlarmValue1 = 7, - E_ITEM_AlarmValueUpperLimit1 = 8, - E_ITEM_AlarmValueLowerLimit1 = 9, - E_ITEM_AlarmValue2 = 10, - E_ITEM_AlarmValueUpperLimit2 = 11, - E_ITEM_AlarmValueLowerLimit2 = 12, - E_ITEM_AlarmValue3 = 13, - E_ITEM_AlarmValueUpperLimit3 = 14, - E_ITEM_AlarmValueLowerLimit3 = 15, - E_ITEM_AlarmValue4 = 16, - E_ITEM_AlarmValueUpperLimit4 = 17, - E_ITEM_AlarmValueLowerLimit4 = 18, - E_ITEM_PV_SP_InternalSetPoint = 19, - E_ITEM_PV_SP_AlarmValue1_Alt = 20, // Different display? Name matches item 7 - E_ITEM_ProportionalBand_Cooling = 21, - E_ITEM_IntegralTime_Cooling = 22, - E_ITEM_DerivativeTime_Cooling = 23, -}; - - -// --- Parameter Enums Added from Page 5-15 / 5-16 --- - -// Parameters for E_INTEGRAL_DERIVATIVE_TIME_UNIT (0x3309) -enum class E5C_IntegralDerivativeTimeUnit_Param : uint16_t -{ - E_Unit_1_Sec = 0, // Seconds (e.g., Integral/Derivative times are 0-9999 s) - E_Unit_0_1_Sec = 1, // 0.1 Seconds (e.g., Integral/Derivative times are 0.0-999.9 s) -}; - -// Parameters for E_MANUAL_OUTPUT_METHOD (0x330C) -enum class E5C_ManualOutputMethod_Param : uint16_t -{ - E_Hold = 0, // Hold last value when switching to Manual - E_Init = 1, // Use Manual MV Initial Value (0x330D) when switching to Manual -}; - -// Parameters for E_NUMBER_OF_MULTI_SP_POINTS (0x331B) -enum class E5C_NumberOfMultiSP_Param : uint16_t -{ - E_MultiSP_Off = 1, // Multi-SP function disabled - E_MultiSP_2 = 2, // 2 SPs enabled (SP0, SP1) - E_MultiSP_3 = 3, // 3 SPs enabled (SP0-SP2) - E_MultiSP_4 = 4, // 4 SPs enabled (SP0-SP3) - E_MultiSP_5 = 5, // 5 SPs enabled (SP0-SP4) - E_MultiSP_6 = 6, // 6 SPs enabled (SP0-SP5) - E_MultiSP_7 = 7, // 7 SPs enabled (SP0-SP6) - E_MultiSP_8 = 8, // 8 SPs enabled (SP0-SP7) -}; - -// Parameters for E_SOAK_TIME_UNIT (0x3327) -enum class E5C_SoakTimeUnit_Param : uint16_t -{ - E_Minutes = 0, - E_Hours = 1, - E_Seconds = 2, // Note: E5GC only -}; - -// Parameters for E_ALARM_SP_SELECTION (0x3328) -enum class E5C_AlarmSPSelection_Param : uint16_t -{ - E_SetPointDuringSPRamp = 0, // Alarm calculation based on SP during ramp - E_SetPoint = 1, // Alarm calculation based on final SP target -}; - -// Parameters for E_HEATING_COOLING_TUNING_METHOD (0x332E) -enum class E5C_HeatingCoolingTuningMethod_Param : uint16_t -{ - E_SAME_AS_HEATING = 0, // Same as heating control (Default) - E_LINEAR = 1, // Linear - E_AIR_COOLING = 2, // Air cooling - E_WATER_COOLING = 3, // Water cooling -}; - - -// --- Enums for Status Register Bits (Refer to Manual Section 5-2) --- -// These are *examples* and need to be carefully verified against the specific E5C model manual. -// Define these if you need to decode individual status bits from registers like E_Status1, E_Status2_LowerWord, etc. - -/* -// Example bits for E_Status1 (0x2001) / E_Status1_StatusArea (0x2406) -enum class E5C_Status1_Bits : uint16_t -{ - E_S1_Alarm1_Output = (1 << 0), // Bit 0: Alarm 1 Output Status (0: OFF, 1: ON) - E_S1_Alarm2_Output = (1 << 1), // Bit 1: Alarm 2 Output Status - E_S1_Alarm3_Output = (1 << 2), // Bit 2: Alarm 3 Output Status - E_S1_Alarm4_Output = (1 << 3), // Bit 3: Alarm 4 Output Status (?) - E_S1_HeaterBurnout1 = (1 << 4), // Bit 4: Heater Burnout 1 Status - E_S1_HeaterBurnout2 = (1 << 5), // Bit 5: Heater Burnout 2 Status - E_S1_RunMode = (1 << 8), // Bit 8: RUN/STOP Status (0: STOP, 1: RUN) - E_S1_AutoTuning = (1 << 9), // Bit 9: AT Execution Status (0: OFF, 1: ON) - E_S1_TaskOperating = (1 << 10), // Bit 10: Task Operating Status (Programs) - E_S1_CommWritingDisabled= (1 << 11), // Bit 11: Communications Writing Disabled Status - E_S1_ManualMode = (1 << 12), // Bit 12: Auto/Manual Mode Status (0: Auto, 1: Manual) - E_S1_RemoteSP_Mode = (1 << 13), // Bit 13: SP Mode (0: Local, 1: Remote) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -/* -// Example bits for E_Status2_LowerWord (0x2408) -enum class E5C_Status2Lower_Bits : uint16_t -{ - E_S2L_RAM_Error = (1 << 0), // Bit 0: RAM Error - E_S2L_MemoryError = (1 << 1), // Bit 1: Memory Error (Non-volatile) - E_S2L_ADC_Error = (1 << 2), // Bit 2: A/D Converter Error - E_S2L_InputTypeError = (1 << 3), // Bit 3: Input Type Error - E_S2L_WatchdogTimeout = (1 << 4), // Bit 4: Watchdog Timer Timeout - E_S2L_OverrunError = (1 << 5), // Bit 5: Overrun Error (Communications?) - E_S2L_FramingError = (1 << 6), // Bit 6: Framing Error (Communications?) - E_S2L_ParityError = (1 << 7), // Bit 7: Parity Error (Communications?) - E_S2L_CommsTimeoutError = (1 << 8), // Bit 8: Communications Timeout Error - E_S2L_CommsError = (1 << 9), // Bit 9: Communications Error (General?) - E_S2L_CommsBufferOverrun = (1 << 10),// Bit 10: Communications Buffer Overrun Error - E_S2L_PowerSupplyFreqError = (1 << 11),// Bit 11: Power Supply Frequency Error - // ... add other relevant bits based on manual section 5-2 -}; - */ - -/* -// Example bits for E_Status2_UpperWord (0x2409) - Note: Bit numbering starts from 16 conceptually -enum class E5C_Status2Upper_Bits : uint16_t -{ - E_S2U_PV_InputError = (1 << 0), // Bit 16 (0 in upper word): PV Input Error (Over/Under Range or Disconnect) - E_S2U_RemoteSPInputError = (1 << 1), // Bit 17 (1 in upper word): Remote SP Input Error (Over/Under Range) - E_S2U_MVOutputError = (1 << 2), // Bit 18 (2 in upper word): MV Output Error - E_S2U_ExternalDIError = (1 << 3), // Bit 19 (3 in upper word): Error via External DI (Digital Input) - E_S2U_HeaterShortAlarm1 = (1 << 4), // Bit 20 (4 in upper word): HS (Heater Short) Alarm 1 Status - E_S2U_HeaterShortAlarm2 = (1 << 5), // Bit 21 (5 in upper word): HS (Heater Short) Alarm 2 Status - // E_S2U_TempSensorDisconnected= (1 << 6), // Bit 22 (6 in upper word): (Not explicitly listed, PV Input Error likely covers this) - // ... add other relevant bits based on manual section 5-2 -}; -*/ - -#endif // E5C_MODBUS_REGISTERS_HPP +enum OR_E5_STATUS_LOW_WORD_BITS : uint16_t // Example for 0x2001, 0x2406, 0x2408 (Low 16 bits of Status/Status2) +{ + // Based loosely on E5_S1 example, NEEDS VERIFICATION + E_SLW_HEATER_OVERCURRENT = 0, // Example: Bit 0? Heater OverCurrent? (GUESS) + E_SLW_HEATER_CURRENTHOLD = 1, // Example: Bit 1? Heater CurrentHold? (GUESS) + E_SLW_AD_CONVERTER_ERROR = 2, // Example: Bit 2? AD Converter Error? (GUESS) + // ---- Further Bits needed based on H175 Section 5-2 Table ---- + E_SLW_RUN_STOP_STATUS = 4, // Example: Bit 4? 0=RUN, 1=STOP? (GUESS) Needs Check + E_SLW_AUTO_MANUAL_STATUS = 5, // Example: Bit 5? 0=Auto, 1=Manual? (GUESS) Needs Check + E_SLW_AT_EXECUTING_STATUS = 6, // Example: Bit 6? 0=Not Executing, 1=Executing? (GUESS) Needs Check + E_SLW_COMM_WRITE_STATUS = 7, // Example: Bit 7? 0=Disabled, 1=Enabled? (GUESS) Needs Check + E_SLW_ALARM_1_OUTPUT_STATUS= 8, // Example: Bit 8? Alarm 1 Output ON? (GUESS) Needs Check + E_SLW_ALARM_2_OUTPUT_STATUS= 9, // Example: Bit 9? Alarm 2 Output ON? (GUESS) Needs Check + E_SLW_ALARM_3_OUTPUT_STATUS= 10, // Example: Bit 10? Alarm 3 Output ON? (GUESS) Needs Check + E_SLW_ALARM_4_OUTPUT_STATUS= 11, // Example: Bit 11? Alarm 4 Output ON? (GUESS) Needs Check + E_SLW_PV_INPUT_ERROR_FLAG = 15 // Example: Bit 15? PV Sensor Input Error? (GUESS) Needs Check +}; + +enum OR_E5_STATUS_HIGH_WORD_BITS : uint16_t // Example for 0x2407, 0x2409 (High 16 bits of Status/Status2) +{ + // ----- Bits needed based on H175 Section 5-2 Table ---- + E_SHW_HB_ALARM_OUTPUT_STATUS = 0, // Example: Bit 0 (of High Word) -> Bit 16 Overall? HB Alarm Output ON? (GUESS) Needs Check + E_SHW_HS_ALARM_OUTPUT_STATUS = 1, // Example: Bit 1 (of High Word) -> Bit 17 Overall? HS Alarm Output ON? (GUESS) Needs Check + E_SHW_REMOTE_SP_ERROR_FLAG = 15 // Example: Bit 15 (of High Word) -> Bit 31 Overall? Remote SP Input Error? (GUESS) Needs Check + // ... etc ... Needs Check +}; +*/ \ No newline at end of file diff --git a/packages/kbot/tests/pdf/sako_manual.md b/packages/kbot/tests/pdf/sako_manual.md index 7b693e3f..e90bd80d 100644 --- a/packages/kbot/tests/pdf/sako_manual.md +++ b/packages/kbot/tests/pdf/sako_manual.md @@ -1,6 +1,3 @@ - -## Parameters (if provided) - ### P0 Standard Function Parameters (Page 13) | parameter | description | parameter group | range | default | @@ -9,8 +6,6 @@ | P0-02 | Command source selection | P0 | 0: Operation panel control (LED off)
1: Terminal control (LED on)
2: Communication control (LED blinking) | 0 | -## Parameters (if provided) - ### Function Parameters (Page 14) | parameter | description | parameter group | range | default | @@ -21,7 +16,7 @@ | P0-06 | Selection of Y range of auxiliary frequency source in superposition | P0 | 0% ~ 150% | 100% | -## Parameters (if provided) + ### P0 Standard Function Parameters - Page 15 @@ -36,7 +31,7 @@ -## Parameters (if provided) + ### Columns @@ -64,7 +59,7 @@ | P0-23 | Retentive of digital setting frequency upon power failure | P0 | 0: Not retentive, 1: Retentive | 0 | -## Parameters (if provided) + ### Columns @@ -84,7 +79,7 @@ -## Parameters (if provided) + ### P1 Motor Parameters (Page 18) @@ -100,7 +95,7 @@ | P1-37 | Auto-tuning selection | P1 Motor Parameters | 0: No auto-tuning
1. Asynchronous motor static auto-tuning
2: Asynchronous motor complete auto-tuning | 0 | -## Parameters (if provided) + ### P2 Vector Control Parameters - Page 19 @@ -118,7 +113,7 @@ -## Parameters (if provided) + ### Columns @@ -146,7 +141,7 @@ -## Parameters (if provided) + ### P3 V/F Control Parameters - Page 21 @@ -166,7 +161,7 @@ | P3-11 | VF oscillation suppression gain | P3 V/F Control Parameters | 0 ~ 100 | Model dependent | -## Parameters (if provided) + ### P4 Input Terminals - Page 22 @@ -179,7 +174,7 @@ -## Parameters (if provided) + ### P4 Input Terminals (Page 23) @@ -190,7 +185,7 @@ -## Parameters (if provided) + ### P4 Input Terminals (Page 24) @@ -214,7 +209,7 @@ -## Parameters (if provided) + ### Function Codes (Page 25) @@ -231,7 +226,7 @@ -## Parameters (if provided) + ### P4 Input Terminals - Page 26 @@ -245,7 +240,7 @@ | P4-39 AI1 input voltage/ current selection | 0: Voltage input
1: Current input | P4 Input Terminals | 0 / 1 | 0 | -## Parameters (if provided) + ### Columns @@ -264,7 +259,7 @@ -## Parameters (if provided) + ### P5 Output Terminals - Page 28 @@ -274,7 +269,7 @@ -## Parameters (if provided) + ### P5 Output Terminals (Page 29) @@ -291,7 +286,7 @@ -## Parameters (if provided) + ### P6 Start/Stop Control Parameters (Page 30) @@ -307,7 +302,7 @@ -## Parameters (if provided) + ### Function Codes (Page 31) @@ -325,7 +320,7 @@ -## Parameters (if provided) + ### P7 Operation Panel and Display - Page 32 @@ -337,7 +332,7 @@ -## Parameters (if provided) + ### P7 Operation Panel and Display - Page 33 @@ -348,7 +343,7 @@ -## Parameters (if provided) + ### P7 Operation Panel and Display - Page 34 @@ -364,13 +359,13 @@ | P7-14 | Accumulative power consumption | P7 Operation Panel and Display | 0 ~ 65535 kwh | - | -## Error Codes (if provided) +## Error Codes Skipping Number Page : Nothing found -## Parameters (if provided) + ### P8 Auxiliary Functions - Page 35 @@ -393,7 +388,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### P8 Auxiliary Functions (Page 36) @@ -416,7 +411,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### P8 Auxiliary Functions (Page 37) @@ -438,7 +433,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### P8 Auxiliary Functions page 38 @@ -459,8 +454,6 @@ Skipping Number Page : Nothing found | P8-54 | Output power correction coefficient | P8 Auxiliary Functions | 0.00% ~ 200.0% | 100.0% | -## Parameters (if provided) - ### P9 Fault and Protection Parameters - Page 39 | parameter | description | parameter group | range | default | @@ -475,7 +468,6 @@ Skipping Number Page : Nothing found -## Parameters (if provided) ### Columns @@ -493,7 +485,7 @@ Skipping Number Page : Nothing found | P9-15 | 2nd fault type | P9 Fault and Protection | Displays fault code (See Error Codes) | - | | P9-16 | 3rd (latest) fault type | P9 Fault and Protection | Displays fault code (See Error Codes) | - | -## Error Codes (if provided) +## Error Codes ### Columns @@ -543,7 +535,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### P9 Fault and Protection page 41 @@ -571,7 +563,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### Columns @@ -595,7 +587,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### Columns @@ -621,7 +613,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### PA PID Function Parameters (Page 44) @@ -637,7 +629,7 @@ Skipping Number Page : Nothing found | PA-07 | Differential time Td1 | PA PID Function | 0.000s ~ 10.000s | 0.000s | -## Parameters (if provided) + ### Columns @@ -660,7 +652,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### Columns @@ -685,7 +677,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### PB Swing Frequency, Fixed Length and Count Parameters (Page 47) @@ -704,7 +696,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### PC Multi-Reference and Simple PLC Function Page 48 @@ -730,7 +722,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### PC Multi-Reference and Simple PLC Function Parameters (Page 49) @@ -750,7 +742,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### Columns @@ -773,13 +765,13 @@ Skipping Number Page : Nothing found ### PC Multi-Reference and Simple PLC Function - Page 50 -## Error Codes (if provided) +## Error Codes Skipping Number Page : Nothing found -## Parameters (if provided) + ### Columns @@ -806,7 +798,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### Columns @@ -824,7 +816,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### PD Communication Parameters (Page 53) @@ -839,7 +831,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### PP Function Code Management : Page 54 @@ -861,7 +853,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### AD Torque Control Parameters - Page 55 @@ -877,7 +869,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### AS Control Optimization Parameters (Page 56) @@ -895,7 +887,7 @@ Skipping Number Page : Nothing found | AS-09 Overvoltage threshold | Overvoltage threshold | AS Control Optimization | 200.0V ~ 2500.0V | Model dependant | -## Parameters (if provided) + ### U0 Monitoring Parameters - Page 57 @@ -928,7 +920,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### U0 Monitoring Parameters (Page 58) @@ -959,11 +951,11 @@ Skipping Number Page : Nothing found | U0-65 | Torque upper limit | U0 Monitoring Parameters | | 0.1% | -## Parameters (if provided) + Skipping Number Page : Nothing found -## Error Codes (if provided) +## Error Codes ### Troubleshooting List - Page 59 @@ -973,7 +965,7 @@ Skipping Number Page : Nothing found -## Parameters (if provided) + ### Columns @@ -988,7 +980,7 @@ Skipping Number Page : Nothing found ### Page 60 - No Parameters Found -## Error Codes (if provided) +## Error Codes ### Columns @@ -1009,7 +1001,7 @@ Skipping Number Page : Nothing found Skipping Number Page : Nothing found -## Error Codes (if provided) +## Error Codes ### Troubleshooting List Page 61 @@ -1023,7 +1015,7 @@ Skipping Number Page : Nothing found -## Error Codes (if provided) +## Error Codes ### Troubleshooting List - Page 62 @@ -1044,7 +1036,7 @@ Skipping Number Page : Nothing found Skipping Number Page : Nothing found -## Error Codes (if provided) +## Error Codes ### Troubleshooting List Page 63 @@ -1061,7 +1053,7 @@ Skipping Number Page : Nothing found | Err27 | User-defined fault 1 | -## Error Codes (if provided) +## Error Codes ### Troubleshooting List Page 64 @@ -1082,7 +1074,7 @@ Skipping Number Page : Nothing found Skipping Number Page : Nothing found -## Error Codes (if provided) +## Error Codes ### Troubleshooting page 66